]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/noticelist.php
Merge branch '0.9.x' of git://gitorious.org/statusnet/mainline into 0.9.x
[quix0rs-gnu-social.git] / lib / noticelist.php
index 507413da76ea2b3c5503e7954b9a6673e105fe35..4e5623ded60fee5ae43b52866b249af488025cec 100644 (file)
@@ -178,9 +178,12 @@ class NoticeListItem extends Widget
     function show()
     {
         $this->showStart();
-        $this->showNotice();
-        $this->showNoticeInfo();
-        $this->showNoticeOptions();
+        if (Event::handle('StartShowNoticeItem', array($this))) {
+            $this->showNotice();
+            $this->showNoticeInfo();
+            $this->showNoticeOptions();
+            Event::handle('EndShowNoticeItem', array($this));
+        }
         $this->showEnd();
     }
 
@@ -196,6 +199,7 @@ class NoticeListItem extends Widget
     {
         $this->out->elementStart('div', 'entry-content');
         $this->showNoticeLink();
+        $this->showNoticeLocation();
         $this->showNoticeSource();
         $this->showContext();
         $this->out->elementEnd('div');
@@ -261,7 +265,7 @@ class NoticeListItem extends Widget
         $attrs = array('href' => $this->profile->profileurl,
                        'class' => 'url');
         if (!empty($this->profile->fullname)) {
-            $attrs['title'] = $this->profile->fullname . ' (' . $this->profile->nickname . ') ';
+            $attrs['title'] = $this->profile->fullname . ' (' . $this->profile->nickname . ')';
         }
         $this->out->elementStart('a', $attrs);
         $this->showAvatar();
@@ -343,7 +347,7 @@ class NoticeListItem extends Widget
      * show the link to the main page for the notice
      *
      * Displays a link to the page for a notice, with "relative" time. Tries to
-     * get remote notice URLs correct, but doesn't always succeed.
+     * get remote notice URLs correct, but does not always succeed.
      *
      * @return void
      */
@@ -366,6 +370,44 @@ class NoticeListItem extends Widget
         $this->out->elementEnd('a');
     }
 
+    /**
+     * show the notice location
+     *
+     * shows the notice location in the correct language.
+     *
+     * If an URL is available, makes a link. Otherwise, just a span.
+     *
+     * @return void
+     */
+
+    function showNoticeLocation()
+    {
+        $id = $this->notice->id;
+
+        $location = $this->notice->getLocation();
+
+        if (empty($location)) {
+            return;
+        }
+
+        $name = $location->getName();
+
+        if (empty($name)) {
+            // XXX: Could be a translation issue. Fall back to... something?
+            return;
+        }
+
+        $url  = $location->getUrl();
+
+        if (empty($url)) {
+            $this->out->element('span', array('class' => 'location'), $name);
+        } else {
+            $this->out->element('a', array('class' => 'location',
+                                           'href' => $url),
+                                $name);
+        }
+    }
+
     /**
      * Show the source of the notice
      *
@@ -441,7 +483,7 @@ class NoticeListItem extends Widget
      * show a link to reply to the current notice
      *
      * Should either do the reply in the current notice form (if available), or
-     * link out to the notice-posting form. A little flakey, doesn't always work.
+     * link out to the notice-posting form. A little flakey, does not always work.
      *
      * @return void
      */
@@ -469,7 +511,10 @@ class NoticeListItem extends Widget
     function showDeleteLink()
     {
         $user = common_current_user();
-        if ($user && $this->notice->profile_id == $user->id) {
+
+        if (!empty($user) &&
+            ($this->notice->profile_id == $user->id || $user->hasRight(Right::DELETEOTHERSNOTICE))) {
+
             $deleteurl = common_local_url('deletenotice',
                                           array('notice' => $this->notice->id));
             $this->out->element('a', array('href' => $deleteurl,