]> git.mxchange.org Git - friendica.git/blobdiff - object/Conversation.php
Merge branch 'threaded_items' of github.com:CyberDomovoy/friendica into threaded_items
[friendica.git] / object / Conversation.php
index 0ce016649bc110c02bd3ba7baa23ff7fd0e7d32c..b9b0cb74c200af24d35ec01c95252183dcd7542d 100644 (file)
@@ -15,11 +15,65 @@ require_once('include/text.php');
 class Conversation extends BaseObject {
        private $threads = array();
        private $mode = null;
+       private $writeable = false;
+       private $profile_owner = 0;
 
        public function __construct($mode) {
+               $this->set_mode($mode);
+       }
+
+       /**
+        * 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->writeable = true;
+                               break;
+                       case 'profile':
+                               $this->profile_owner = $a->profile['profile_uid'];
+                               $this->writeable = can_write_wall($a,$this->profile_owner);
+                               break;
+                       case 'display':
+                               $this->profile_owner = $a->profile['uid'];
+                               $this->writeable = 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 writeable
+        */
+       public function is_writeable() {
+               return $this->writeable;
+       }
+
+       /**
+        * Get profile owner
+        */
+       public function get_profile_owner() {
+               return $this->profile_owner;
+       }
+
        /**
         * Add a thread to the conversation
         *
@@ -37,6 +91,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);
        }
@@ -50,13 +117,13 @@ class Conversation extends BaseObject {
         *              _ 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;