aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Zotlabs/Lib/ThreadItem.php4
-rw-r--r--Zotlabs/Module/Channel.php12
-rw-r--r--Zotlabs/Module/Display.php8
-rw-r--r--Zotlabs/Module/Hq.php6
-rw-r--r--Zotlabs/Module/Network.php11
-rw-r--r--Zotlabs/Module/Pubstream.php8
-rw-r--r--include/conversation.php13
-rw-r--r--include/items.php25
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"
+ );
+}