diff options
-rw-r--r-- | Zotlabs/Lib/ThreadItem.php | 4 | ||||
-rw-r--r-- | Zotlabs/Module/Channel.php | 12 | ||||
-rw-r--r-- | Zotlabs/Module/Display.php | 8 | ||||
-rw-r--r-- | Zotlabs/Module/Hq.php | 6 | ||||
-rw-r--r-- | Zotlabs/Module/Network.php | 11 | ||||
-rw-r--r-- | Zotlabs/Module/Pubstream.php | 8 | ||||
-rw-r--r-- | include/conversation.php | 13 | ||||
-rw-r--r-- | include/items.php | 25 |
8 files changed, 46 insertions, 41 deletions
diff --git a/Zotlabs/Lib/ThreadItem.php b/Zotlabs/Lib/ThreadItem.php index 9f5d3a350..a4a9407f4 100644 --- a/Zotlabs/Lib/ThreadItem.php +++ b/Zotlabs/Lib/ThreadItem.php @@ -222,9 +222,7 @@ class ThreadItem { $response_verbs[] = 'answer'; } - if (!feature_enabled($conv->get_profile_owner(),'dislike')) { - unset($conv_responses['dislike']); - } + $response_verbs[] = 'comment'; $responses = get_responses($conv_responses,$response_verbs,$this,$item); diff --git a/Zotlabs/Module/Channel.php b/Zotlabs/Module/Channel.php index f3855b7e8..d8b503b37 100644 --- a/Zotlabs/Module/Channel.php +++ b/Zotlabs/Module/Channel.php @@ -410,14 +410,7 @@ class Channel extends Controller { if ($r) { $parents_str = ids_to_querystr($r, 'item_id'); - $r = q("SELECT item.*, item.id AS item_id - FROM item - WHERE item.uid = %d $item_normal - AND item.parent IN ( %s ) - $sql_extra ", - intval(App::$profile['profile_uid']), - dbesc($parents_str) - ); + $r = items_by_parent_ids($parents_str, $sql_extra); xchan_query($r); $items = fetch_post_tags($r, true); @@ -434,11 +427,8 @@ class Channel extends Controller { $items = []; } - - $mode = (($search) ? 'search' : 'channel'); - if ((!$update) && (!$load)) { // This is ugly, but we can't pass the profile_uid through the session to the ajax updater, diff --git a/Zotlabs/Module/Display.php b/Zotlabs/Module/Display.php index 090e0c92e..227e47e64 100644 --- a/Zotlabs/Module/Display.php +++ b/Zotlabs/Module/Display.php @@ -290,11 +290,9 @@ class Display extends Controller { if($r) { $parents_str = ids_to_querystr($r,'item_id'); if($parents_str) { - $items = q("SELECT item.*, item.id AS item_id - FROM item - WHERE parent in ( %s ) $sql_extra $item_normal ", - dbesc($parents_str) - ); + + $items = items_by_parent_ids($parents_str, $sql_extra); + xchan_query($items); $items = fetch_post_tags($items,true); $items = conv_sort($items,'created'); diff --git a/Zotlabs/Module/Hq.php b/Zotlabs/Module/Hq.php index 3a6eb7e69..235ff28d7 100644 --- a/Zotlabs/Module/Hq.php +++ b/Zotlabs/Module/Hq.php @@ -199,11 +199,7 @@ class Hq extends \Zotlabs\Web\Controller { } if($r) { - $items = q("SELECT item.*, item.id AS item_id - FROM item - WHERE parent = '%s' $item_normal $sql_extra", - dbesc($r[0]['item_id']) - ); + $items = items_by_parent_ids($r[0]['item_id'], $sql_extra); xchan_query($items,true,(($sys_item) ? local_channel() : 0)); $items = fetch_post_tags($items,true); diff --git a/Zotlabs/Module/Network.php b/Zotlabs/Module/Network.php index a311dea3a..f32a85068 100644 --- a/Zotlabs/Module/Network.php +++ b/Zotlabs/Module/Network.php @@ -375,10 +375,10 @@ class Network extends \Zotlabs\Web\Controller { } if ($dm) { - $sql_extra .= ' AND item_private = 2 '; + $sql_extra .= ' AND item.item_private = 2 '; } else { - $sql_extra .= ' AND item_private IN (0, 1) '; + $sql_extra .= ' AND item.item_private IN (0, 1) '; } @@ -510,11 +510,8 @@ class Network extends \Zotlabs\Web\Controller { if($r) { $parents_str = ids_to_querystr($r, 'item_id'); - $items = dbq("SELECT item.*, item.id AS item_id FROM item - WHERE true $uids $item_normal - AND item.parent IN ( $parents_str ) - $sql_extra " - ); + + $items = items_by_parent_ids($parents_str, $sql_extra); xchan_query($items, true); $items = fetch_post_tags($items, true); diff --git a/Zotlabs/Module/Pubstream.php b/Zotlabs/Module/Pubstream.php index 234e73792..1f349ae1c 100644 --- a/Zotlabs/Module/Pubstream.php +++ b/Zotlabs/Module/Pubstream.php @@ -183,6 +183,7 @@ class Pubstream extends \Zotlabs\Web\Controller { $sql_extra .= protect_sprintf(term_query('item', $hashtags, TERM_HASHTAG, TERM_COMMUNITYTAG)); $sql_extra_order = " ORDER BY item.created DESC "; $thread_top = ''; + } $net_query2 = (($net) ? " and xchan_network = '" . protect_sprintf(dbesc($net)) . "' " : ''); @@ -253,12 +254,7 @@ class Pubstream extends \Zotlabs\Web\Controller { $parents_str = ids_to_querystr($r,'item_id'); - $items = dbq("SELECT item.*, item.id AS item_id FROM item - WHERE true $uids $item_normal - AND item.parent IN ( $parents_str ) - $sql_extra $sql_extra_order" - ); - + $items = items_by_parent_ids($parents_str, $sql_extra); // use effective_uid param of xchan_query to help sort out comment permission // for sys_channel owned items. diff --git a/include/conversation.php b/include/conversation.php index 2f1de770b..9603bed94 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -986,6 +986,9 @@ function builtin_activity_puller($item, &$conv_responses) { case 'dislike': $verb = ['Dislike', ACTIVITY_DISLIKE]; break; + case 'comment': + $verb = ['Create']; + break; case 'attendyes': $verb = ['Accept', ACTIVITY_ATTEND]; break; @@ -1541,12 +1544,11 @@ function get_responses($conv_responses,$response_verbs,$ob,$item) { continue; } - $ret[$v] = []; - $ret[$v]['count'] = $conv_responses[$v][$item['mid']] ?? 0; - $ret[$v]['list'] = ((isset($conv_responses[$v][$item['mid']])) ? $conv_responses[$v][$item['mid'] . '-l'] : ''); + $ret[$v]['count'] = $item[$v . '_count'] ?? 0; + $ret[$v]['list'] = ''; // ((isset($conv_responses[$v][$item['mid']])) ? $conv_responses[$v][$item['mid'] . '-l'] : ''); $ret[$v]['button'] = get_response_button_text($v, $ret[$v]['count']); $ret[$v]['title'] = $conv_responses[$v]['title'] ?? ''; - $ret[$v]['modal'] = (($ret[$v]['count'] > MAX_LIKERS) ? true : false); + $ret[$v]['modal'] = false; // (($ret[$v]['count'] > MAX_LIKERS) ? true : false); } //logger('ret: ' . print_r($ret,true)); @@ -1565,6 +1567,9 @@ function get_response_button_text($v,$count) { case 'dislike': return ['label' => tt('Dislike','Dislikes',$count,'noun'), 'icon' => 'hand-thumbs-down', 'class' => 'dislike', 'onclick' => 'dolike']; break; + case 'comment': + return ['label' => tt('Comment','Comments',$count,'noun'), 'icon' => 'chat', 'class' => 'comment', 'onclick' => '']; + break; case 'attendyes': return ['label' => tt('Attending','Attending',$count,'noun'), 'icon' => 'calendar-check', 'class' => 'attendyes', 'onclick' => 'dolike']; break; diff --git a/include/items.php b/include/items.php index 0016e3ec0..56d5864e8 100644 --- a/include/items.php +++ b/include/items.php @@ -5351,3 +5351,28 @@ function set_activity_mid($string) { return str_replace(z_root() . '/item/', z_root() . '/activity/', $string); } +function items_by_parent_ids($ids, $sql_extra = '') { + $item_normal = item_normal(); + + return dbq( + "SELECT + item.*, + COUNT(CASE c.verb WHEN 'Like' THEN 1 END) AS like_count, + COUNT(CASE c.verb WHEN 'Dislike' THEN 1 END) AS dislike_count, + COUNT(CASE c.verb WHEN 'Announce' THEN 1 END) AS announce_count, + COUNT(CASE WHEN c.verb IN ('Create','Update') THEN 1 END) AS comment_count + FROM item + LEFT JOIN item c + ON c.parent = item.parent + AND c.item_thread_top = 0 + AND c.thr_parent = item.mid + WHERE item.parent in ($ids) + AND ( + item.verb NOT IN ('Like', 'Dislike', 'Announce') + OR (item.verb = 'Announce' AND item.item_thread_top = 1) + ) + AND item.parent_mid = item.thr_parent + $item_normal + GROUP BY item.id" + ); +} |