]> git.mxchange.org Git - friendica.git/blobdiff - object/Item.php
add a comment as explanation for #3737
[friendica.git] / object / Item.php
index ab36069c078ebea1f8fbfbadb8f4ec31cc1d9d44..495a4100cf355e0570449cb7922cc71aeab32dd4 100644 (file)
@@ -1,7 +1,6 @@
 <?php
-if (class_exists('Item')) {
+if(class_exists('Item'))
        return;
-}
 
 require_once('object/BaseObject.php');
 require_once('include/text.php');
@@ -69,6 +68,11 @@ class Item extends BaseObject {
                                        continue;
                                }
 
+                               // You can always comment on Diaspora items
+                               if (($item['network'] == NETWORK_DIASPORA) && (local_user() == $item['uid'])) {
+                                       $item['writable'] = true;
+                               }
+
                                $item['pagedrop'] = $data['pagedrop'];
                                $child = new Item($item);
                                $this->add_child($child);
@@ -92,7 +96,12 @@ class Item extends BaseObject {
 
                $item = $this->get_data();
                $edited = false;
-               if (strcmp($item['created'], $item['edited'])<>0) {
+               // If the time between "created" and "editet" differes we add 
+               // a notices that the post was editet.
+               // Note: In some networks reshared items seem to have (sometimes) a difference
+               // between creation time and edit time of a second. Thats why we add the notice
+               // only if the difference is more than 1 second.
+               if (abs(strtotime($item['created']) - strtotime($item['edited'])) > 1) {
                        $edited = array(
                                'label'    => t('This entry was edited'),
                                'date'     => datetime_convert('UTC', date_default_timezone_get(), $item['edited'], 'r'),
@@ -113,7 +122,7 @@ class Item extends BaseObject {
 
                $conv = $this->get_conversation();
 
-               $lock = ((($item['private'] == 1) || (($item['uid'] == local_user()) && (strlen($item['allow_cid']) || strlen($item['allow_gid']) 
+               $lock = ((($item['private'] == 1) || (($item['uid'] == local_user()) && (strlen($item['allow_cid']) || strlen($item['allow_gid'])
                        || strlen($item['deny_cid']) || strlen($item['deny_gid']))))
                        ? t('Private Message')
                        : false);
@@ -159,7 +168,7 @@ class Item extends BaseObject {
                        $profile_link = zrl($profile_link);
                }
 
-               if (!isset($item['author-thumb']) OR ($item['author-thumb'] == "")) {
+               if (!isset($item['author-thumb']) || ($item['author-thumb'] == "")) {
                        $author_contact = get_contact_details_by_url($item['author-link'], $conv->get_profile_owner());
                        if ($author_contact["thumb"]) {
                                $item['author-thumb'] = $author_contact["thumb"];
@@ -168,7 +177,7 @@ class Item extends BaseObject {
                        }
                }
 
-               if (!isset($item['owner-thumb']) OR ($item['owner-thumb'] == "")) {
+               if (!isset($item['owner-thumb']) || ($item['owner-thumb'] == "")) {
                        $owner_contact = get_contact_details_by_url($item['owner-link'], $conv->get_profile_owner());
                        if ($owner_contact["thumb"]) {
                                $item['owner-thumb'] = $owner_contact["thumb"];
@@ -181,20 +190,19 @@ class Item extends BaseObject {
                call_hooks('render_location',$locate);
                $location = ((strlen($locate['html'])) ? $locate['html'] : render_location_dummy($locate));
 
-               $searchpath = "search?tag=";
-               $tags = array();
+               $tags=array();
                $hashtags = array();
                $mentions = array();
 
 
-               /*foreach (explode(',',$item['tag']) as $tag){
+               /*foreach(explode(',',$item['tag']) as $tag){
                        $tag = trim($tag);
                        if ($tag!="") {
                                $t = bbcode($tag);
                                $tags[] = $t;
-                               if ($t[0] == '#')
+                               if($t[0] == '#')
                                        $hashtags[] = $t;
-                               elseif ($t[0] == '@')
+                               elseif($t[0] == '@')
                                        $mentions[] = $t;
                        }
                }*/
@@ -243,23 +251,20 @@ class Item extends BaseObject {
                                        'classundo' => (($item['starred']) ? "" : "hidden"),
                                        'starred'   =>  t('starred'),
                                );
-                               $r = q("SELECT `ignored` FROM `thread` WHERE `uid` = %d AND `iid` = %d LIMIT 1",
-                                       intval($item['uid']),
-                                       intval($item['id'])
-                               );
+                               $r = dba::select('thread', array('ignored'), array('uid' => $item['uid'], 'iid' => $item['id']), array('limit' => 1));
                                if (dbm::is_result($r)) {
                                        $ignore = array(
                                                'do'        => t("ignore thread"),
                                                'undo'      => t("unignore thread"),
                                                'toggle'    => t("toggle ignore status"),
-                                               'classdo'   => (($r[0]['ignored']) ? "hidden" : ""),
-                                               'classundo' => (($r[0]['ignored']) ? "" : "hidden"),
+                                               'classdo'   => (($r['ignored']) ? "hidden" : ""),
+                                               'classundo' => (($r['ignored']) ? "" : "hidden"),
                                                'ignored'   =>  t('ignored'),
                                        );
                                }
 
                                $tagger = '';
-                               if (feature_enabled($conv->get_profile_owner(),'commtag')) {
+                               if(feature_enabled($conv->get_profile_owner(),'commtag')) {
                                        $tagger = array(
                                                'add'   => t("add tag"),
                                                'class' => "",
@@ -311,28 +316,16 @@ class Item extends BaseObject {
                // Disable features that aren't available in several networks
 
                /// @todo Add NETWORK_DIASPORA when it will pass this information
-               if (!in_array($item["item_network"], array(NETWORK_DFRN)) AND isset($buttons["dislike"])) {
+               if (!in_array($item["item_network"], array(NETWORK_DFRN)) && isset($buttons["dislike"])) {
                        unset($buttons["dislike"],$isevent);
                        $tagger = '';
                }
 
-               if (($item["item_network"] == NETWORK_FEED) AND isset($buttons["like"])) {
+               if (($item["item_network"] == NETWORK_FEED) && isset($buttons["like"])) {
                        unset($buttons["like"]);
                }
 
-               if (($item["item_network"] == NETWORK_MAIL) AND isset($buttons["like"])) {
-                       unset($buttons["like"]);
-               }
-
-               // Diaspora isn't able to do likes on comments - but Hubzilla does
-               /// @todo When Diaspora will pass this information we will remove these lines
-               if (($item["item_network"] == NETWORK_DIASPORA) AND ($indent == 'comment') AND
-                       !Diaspora::is_redmatrix($item["owner-link"]) AND isset($buttons["like"])) {
-                       unset($buttons["like"]);
-               }
-
-               // Facebook can like comments - but it isn't programmed in the connector yet.
-               if (($item["item_network"] == NETWORK_FACEBOOK) AND ($indent == 'comment') AND isset($buttons["like"])) {
+               if (($item["item_network"] == NETWORK_MAIL) && isset($buttons["like"])) {
                        unset($buttons["like"]);
                }
 
@@ -398,6 +391,9 @@ class Item extends BaseObject {
                        'edited'          => $edited,
                        'network'         => $item["item_network"],
                        'network_name'    => network_to_name($item['item_network'], $profile_link),
+                       'received'        => $item['received'],
+                       'commented'       => $item['commented'],
+                       'created_date'    => $item['created'],
                );
 
                $arr = array('item' => $item, 'output' => $tmp_item);
@@ -504,7 +500,7 @@ class Item extends BaseObject {
         */
        protected function set_parent($item) {
                $parent = $this->get_parent();
-               if ($parent) {
+               if($parent) {
                        $parent->remove_child($this);
                }
                $this->parent = $item;
@@ -735,9 +731,9 @@ class Item extends BaseObject {
                $conv = $this->get_conversation();
                $this->wall_to_wall = false;
 
-               if ($this->is_toplevel()) {
-                       if ($conv->get_mode() !== 'profile') {
-                               if ($this->get_data_value('wall') AND !$this->get_data_value('self')) {
+               if($this->is_toplevel()) {
+                       if($conv->get_mode() !== 'profile') {
+                               if($this->get_data_value('wall') && !$this->get_data_value('self')) {
                                        // On the network page, I am the owner. On the display page it will be the profile owner.
                                        // This will have been stored in $a->page_contact by our calling page.
                                        // Put this person as the wall owner of the wall-to-wall notice.
@@ -746,7 +742,7 @@ class Item extends BaseObject {
                                        $this->owner_photo = $a->page_contact['thumb'];
                                        $this->owner_name = $a->page_contact['name'];
                                        $this->wall_to_wall = true;
-                               } elseif ($this->get_data_value('owner-link')) {
+                               } elseif($this->get_data_value('owner-link')) {
 
                                        $owner_linkmatch = (($this->get_data_value('owner-link')) && link_compare($this->get_data_value('owner-link'),$this->get_data_value('author-link')));
                                        $alias_linkmatch = (($this->get_data_value('alias')) && link_compare($this->get_data_value('alias'),$this->get_data_value('author-link')));
@@ -755,20 +751,20 @@ class Item extends BaseObject {
                                        if ((! $owner_linkmatch) && (! $alias_linkmatch) && (! $owner_namematch)) {
 
                                                // The author url doesn't match the owner (typically the contact)
-                                               // and also doesn't match the contact alias. 
-                                               // The name match is a hack to catch several weird cases where URLs are 
+                                               // and also doesn't match the contact alias.
+                                               // The name match is a hack to catch several weird cases where URLs are
                                                // all over the park. It can be tricked, but this prevents you from
                                                // seeing "Bob Smith to Bob Smith via Wall-to-wall" and you know darn
-                                               // well that it's the same Bob Smith. 
+                                               // well that it's the same Bob Smith.
 
-                                               // But it could be somebody else with the same name. It just isn't highly likely. 
+                                               // But it could be somebody else with the same name. It just isn't highly likely.
 
 
                                                $this->owner_photo = $this->get_data_value('owner-avatar');
                                                $this->owner_name = $this->get_data_value('owner-name');
                                                $this->wall_to_wall = true;
                                                // If it is our contact, use a friendly redirect link
-                                               if ((link_compare($this->get_data_value('owner-link'),$this->get_data_value('url'))) 
+                                               if ((link_compare($this->get_data_value('owner-link'),$this->get_data_value('url')))
                                                        && ($this->get_data_value('network') === NETWORK_DFRN)) {
                                                        $this->owner_url = $this->get_redirect_url();
                                                } else {
@@ -808,5 +804,3 @@ class Item extends BaseObject {
        }
 
 }
-/// @TODO These are discouraged and should be removed:
-?>