X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=object%2FConversation.php;h=8b838f7d006c510284500c13aeae559b0c28ce4b;hb=a8aa99210206295aceeeb18f04bcf3650fe5a754;hp=0ce016649bc110c02bd3ba7baa23ff7fd0e7d32c;hpb=75d355a2aa23a208864e40e3901b3fa431887dc7;p=friendica.git diff --git a/object/Conversation.php b/object/Conversation.php index 0ce016649b..8b838f7d00 100644 --- a/object/Conversation.php +++ b/object/Conversation.php @@ -15,17 +15,80 @@ require_once('include/text.php'); class Conversation extends BaseObject { private $threads = array(); private $mode = null; + private $writable = false; + private $profile_owner = 0; + private $preview = false; - public function __construct($mode) { + public function __construct($mode, $preview) { + $this->set_mode($mode); + $this->preview = $preview; + } + + /** + * Set the mode we'll be displayed on + */ + private function set_mode($mode) { + if($this->get_mode() == $mode) + return; + + $a = $this->get_app(); + + switch($mode) { + case 'network': + case 'notes': + $this->profile_owner = local_user(); + $this->writable = true; + break; + case 'profile': + $this->profile_owner = $a->profile['profile_uid']; + $this->writable = can_write_wall($a,$this->profile_owner); + break; + case 'display': + $this->profile_owner = $a->profile['uid']; + $this->writable = can_write_wall($a,$this->profile_owner); + break; + default: + logger('[ERROR] Conversation::set_mode : Unhandled mode ('. $mode .').', LOGGER_DEBUG); + return false; + break; + } $this->mode = $mode; } + /** + * Get mode + */ + public function get_mode() { + return $this->mode; + } + + /** + * Check if page is writable + */ + public function is_writable() { + return $this->writable; + } + + /** + * Check if page is a preview + */ + public function is_preview() { + return $this->preview; + } + + /** + * Get profile owner + */ + public function get_profile_owner() { + return $this->profile_owner; + } + /** * Add a thread to the conversation * * Returns: - * _ The inserted item on success - * _ false on failure + * _ The inserted item on success + * _ false on failure */ public function add_thread($item) { $item_id = $item->get_id(); @@ -37,6 +100,19 @@ class Conversation extends BaseObject { logger('[WARN] Conversation::add_thread : Thread already exists ('. $item->get_id() .').', LOGGER_DEBUG); return false; } + + /* + * Only add will be displayed + */ + if($item->get_data_value('network') === NETWORK_MAIL && local_user() != $item->get_data_value('uid')) { + logger('[WARN] Conversation::add_thread : Thread is a mail ('. $item->get_id() .').', LOGGER_DEBUG); + return false; + } + if($item->get_data_value('verb') === ACTIVITY_LIKE || $item->get_data_value('verb') === ACTIVITY_DISLIKE) { + logger('[WARN] Conversation::add_thread : Thread is a (dis)like ('. $item->get_id() .').', LOGGER_DEBUG); + return false; + } + $item->set_conversation($this); $this->threads[] = $item; return end($this->threads); } @@ -47,16 +123,16 @@ class Conversation extends BaseObject { * We should find a way to avoid using those arguments (at least most of them) * * Returns: - * _ The data requested on success - * _ false on failure + * _ The data requested on success + * _ false on failure */ - public function get_template_data($cmnt_tpl) { + public function get_template_data($alike, $dlike) { $result = array(); foreach($this->threads as $item) { - if($item->get_network() === NETWORK_MAIL && local_user() != $item->get_uid()) + if($item->get_data_value('network') === NETWORK_MAIL && local_user() != $item->get_data_value('uid')) continue; - $item_data = $item->get_template_data($cmnt_tpl, $this->mode); + $item_data = $item->get_template_data($alike, $dlike); if(!$item_data) { logger('[ERROR] Conversation::get_template_data : Failed to get item template data ('. $item->get_id() .').', LOGGER_DEBUG); return false; @@ -71,8 +147,8 @@ class Conversation extends BaseObject { * Get a thread based on its item id * * Returns: - * _ The found item on success - * _ false on failure + * _ The found item on success + * _ false on failure */ private function get_thread($id) { foreach($this->threads as $item) {