]> git.mxchange.org Git - friendica.git/blobdiff - object/Item.php
Merge pull request #3827 from annando/hubzilla-webfinger
[friendica.git] / object / Item.php
index 8340009a9b0b7899c2c632fac2bdbe34c1593754..4f89ea804c92eac4cdf3361a16a890b7e2e262ec 100644 (file)
@@ -38,9 +38,9 @@ class Item extends BaseObject {
                $this->set_template('wall');
                $this->toplevel = ($this->get_id() == $this->get_data_value('parent'));
 
-               if(is_array($_SESSION['remote'])) {
-                       foreach($_SESSION['remote'] as $visitor) {
-                               if($visitor['cid'] == $this->get_data_value('contact-id')) {
+               if (is_array($_SESSION['remote'])) {
+                       foreach ($_SESSION['remote'] as $visitor) {
+                               if ($visitor['cid'] == $this->get_data_value('contact-id')) {
                                        $this->visiting = true;
                                        break;
                                }
@@ -68,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);
@@ -91,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 "edited" differs we add
+               // a notice that the post was edited.
+               // 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 (strtotime($item['edited']) - strtotime($item['created']) > 1) {
                        $edited = array(
                                'label'    => t('This entry was edited'),
                                'date'     => datetime_convert('UTC', date_default_timezone_get(), $item['edited'], 'r'),
@@ -112,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);
@@ -158,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"];
@@ -167,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"];
@@ -180,7 +190,6 @@ class Item extends BaseObject {
                call_hooks('render_location',$locate);
                $location = ((strlen($locate['html'])) ? $locate['html'] : render_location_dummy($locate));
 
-               $searchpath = "search?tag=";
                $tags=array();
                $hashtags = array();
                $mentions = array();
@@ -242,17 +251,14 @@ 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'),
                                        );
                                }
@@ -287,32 +293,6 @@ class Item extends BaseObject {
 
                localize_item($item);
 
-               if ($item["postopts"] and !get_config("system", "suppress_language")) {
-                       //$langdata = explode(";", $item["postopts"]);
-                       //$langstr = substr($langdata[0], 5)." (".round($langdata[1]*100, 1)."%)";
-                       $langstr = "";
-                       if (substr($item["postopts"], 0, 5) == "lang=") {
-                               $postopts = substr($item["postopts"], 5);
-
-                               $languages = explode(":", $postopts);
-
-                               if (sizeof($languages) == 1) {
-                                       $languages = array();
-                                       $languages[] = $postopts;
-                               }
-
-                               foreach ($languages as $language) {
-                                       $langdata = explode(";", $language);
-                                       if ($langstr != "") {
-                                               $langstr .= ", ";
-                                       }
-
-                                       //$langstr .= $langdata[0]." (".round($langdata[1]*100, 1)."%)";
-                                       $langstr .= round($langdata[1]*100, 1)."% ".$langdata[0];
-                               }
-                       }
-               }
-
                $body = prepare_body($item,true);
 
                list($categories, $folders) = get_cats_and_terms($item);
@@ -336,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"])) {
-                       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"])) {
+               if (($item["item_network"] == NETWORK_FEED) && 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"]);
                }
 
@@ -420,10 +388,12 @@ class Item extends BaseObject {
                        'previewing'      => ($conv->is_preview() ? ' preview ' : ''),
                        'wait'            => t('Please wait'),
                        'thread_level'    => $thread_level,
-                       'postopts'        => $langstr,
                        '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);
@@ -763,7 +733,7 @@ class Item extends BaseObject {
 
                if($this->is_toplevel()) {
                        if($conv->get_mode() !== 'profile') {
-                               if($this->get_data_value('wall') AND !$this->get_data_value('self')) {
+                               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.
@@ -781,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 {
@@ -834,5 +804,3 @@ class Item extends BaseObject {
        }
 
 }
-/// @TODO These are discouraged and should be removed:
-?>