diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/ConversationObject.php | 5 | ||||
-rwxr-xr-x | include/items.php | 21 |
2 files changed, 20 insertions, 6 deletions
diff --git a/include/ConversationObject.php b/include/ConversationObject.php index 5157dad05..bf4300cb1 100644 --- a/include/ConversationObject.php +++ b/include/ConversationObject.php @@ -154,7 +154,10 @@ class Conversation extends BaseObject { $item->set_commentable(false); } elseif(($this->observer) && (! $item->is_commentable())) { - $item->set_commentable(can_comment_on_post($this->observer['xchan_hash'],$item->data)); + if((array_key_exists('owner',$item->data)) && ($item->data['owner']['abook_flags'] & ABOOK_FLAG_SELF)) + $item->set_commentable(perm_is_allowed($this->profile_owner,$this->observer['xchan_hash'],'post_comments')); + else + $item->set_commentable(can_comment_on_post($this->observer['xchan_hash'],$item->data)); } $item->set_conversation($this); diff --git a/include/items.php b/include/items.php index 79229acfe..b58b4415e 100755 --- a/include/items.php +++ b/include/items.php @@ -83,9 +83,20 @@ function collect_recipients($item,&$private) { } - +/** + * @function can_comment_on_post($observer_xchan,$item); + * + * This function examines the comment_policy attached to an item and decides if the current observer has + * sufficient privileges to comment. This will normally be called on a remote site where perm_is_allowed() + * will not be suitable because the post owner does not have a local channel_id. + * Generally we should look at the item - in particular the author['book_flags'] and see if ABOOK_FLAG_SELF is set. + * If it is, you should be able to use perm_is_allowed( ... 'post_comments'), and if it isn't you need to call + * can_comment_on_post() function can_comment_on_post($observer_xchan,$item) { + +// logger('can_comment_on_post: comment_policy: ' . $item['comment_policy'], LOGGER_DEBUG); + if(! $observer_xchan) return false; if($item['comment_policy'] === 'none') @@ -98,10 +109,10 @@ function can_comment_on_post($observer_xchan,$item) { return true; break; case 'public': - # We don't allow public comments yet, until a policy - # for dealing with anonymous comments is in place with - # a means to moderate comments. Until that time, return - # false. + // We don't allow public comments yet, until a policy + // for dealing with anonymous comments is in place with + // a means to moderate comments. Until that time, return + // false. return false; break; case 'contacts': |