From ae9a9191f3e8f179ba38c9aad7ad6cee6603238e Mon Sep 17 00:00:00 2001 From: Mario Date: Wed, 18 May 2022 08:47:45 +0000 Subject: implement starring of pubstream items --- Zotlabs/Lib/ThreadItem.php | 2 +- Zotlabs/Module/Starred.php | 37 ++++++++++++++++++++++++++----------- 2 files changed, 27 insertions(+), 12 deletions(-) (limited to 'Zotlabs') diff --git a/Zotlabs/Lib/ThreadItem.php b/Zotlabs/Lib/ThreadItem.php index e43264c0d..a02c1415e 100644 --- a/Zotlabs/Lib/ThreadItem.php +++ b/Zotlabs/Lib/ThreadItem.php @@ -284,7 +284,7 @@ class ThreadItem { if($this->is_toplevel()) { // FIXME check this permission - if(($conv->get_profile_owner() == local_channel()) && (! array_key_exists('real_uid',$item))) { + if($conv->get_profile_owner() === local_channel() || intval($item['item_private']) === 0) { $star = array( 'toggle' => t("Toggle Star Status"), diff --git a/Zotlabs/Module/Starred.php b/Zotlabs/Module/Starred.php index 2d7063669..a9542f590 100644 --- a/Zotlabs/Module/Starred.php +++ b/Zotlabs/Module/Starred.php @@ -1,31 +1,46 @@ 1) $message_id = intval(argv(1)); if(! $message_id) killme(); - - $r = q("SELECT item_starred FROM item WHERE uid = %d AND id = %d LIMIT 1", + + $sys = get_sys_channel(); + + $r = q("SELECT * FROM item WHERE (uid = %d OR uid = %d) AND id = %d + and item_type in (0,6,7) and item_deleted = 0 and item_unpublished = 0 + and item_delayed = 0 and item_pending_remove = 0 and item_blocked = 0 LIMIT 1", intval(local_channel()), + intval($sys['channel_id']), intval($message_id) ); - if(! count($r)) + + if ($r) { + if ($r[0]['uid'] === $sys['channel_id']) { + $r = [ copy_of_pubitem(App::get_channel(), $r[0]['mid']) ]; + } + } + + if(!$r) killme(); - + + // reset $message_id to the fetched copy of message if applicable + $message_id = $r[0]['id']; + $item_starred = (intval($r[0]['item_starred']) ? 0 : 1); - + $r = q("UPDATE item SET item_starred = %d WHERE uid = %d and id = %d", intval($item_starred), intval(local_channel()), @@ -38,8 +53,8 @@ class Starred extends \Zotlabs\Web\Controller { if($r) { xchan_query($r); $sync_item = fetch_post_tags($r); - Libsync::build_sync_packet(local_channel(),[ - 'item' => [ + Libsync::build_sync_packet(local_channel(),[ + 'item' => [ encode_item($sync_item[0],true) ] ]); @@ -49,5 +64,5 @@ class Starred extends \Zotlabs\Web\Controller { echo json_encode(array('result' => $item_starred)); killme(); } - + } -- cgit v1.2.3