]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/jsonsearchresultslist.php
Merge branch 'testing' into 0.9.x
[quix0rs-gnu-social.git] / lib / jsonsearchresultslist.php
index 171e1db4d62ee7e1285e09f1705a789147d35bd9..0d72ddf7ab48184e41c371407ae9efefe6c940ea 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Laconica, the distributed open-source microblogging tool
+ * StatusNet, the distributed open-source microblogging tool
  *
  * widget for displaying a list of notices
  *
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  * @category  Search
- * @package   Laconica
- * @author    Zach Copley <zach@controlyourself.ca>
- * @copyright 2008-2009 Control Yourself, Inc.
+ * @package   StatusNet
+ * @author    Zach Copley <zach@status.net>
+ * @copyright 2009 StatusNet, Inc.
  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link      http://laconi.ca/
+ * @link      http://status.net/
  */
 
-if (!defined('LACONICA')) {
+if (!defined('STATUSNET') && !defined('LACONICA')) {
     exit(1);
 }
 
@@ -35,10 +35,10 @@ if (!defined('LACONICA')) {
  * widget-like class for showing JSON search results
  *
  * @category Search
- * @package  Laconica
- * @author   Zach Copley <zach@controlyourself.ca>
+ * @package  StatusNet
+ * @author   Zach Copley <zach@status.net>
  * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link     http://laconi.ca/
+ * @link     http://status.net/
  *
  */
 
@@ -62,14 +62,19 @@ class JSONSearchResultsList
     /**
      * constructor
      *
-     * @param Notice $notice stream of notices from DB_DataObject
+     * @param Notice $notice   stream of notices from DB_DataObject
+     * @param string $query    the original search query
+     * @param int    $rpp      the number of results to display per page
+     * @param int    $page     a page offset
+     * @param int    $since_id only display notices newer than this
      */
 
     function __construct($notice, $query, $rpp, $page, $since_id = 0)
     {
         $this->notice           = $notice;
         $this->query            = urlencode($query);
-        $this->results_per_page = $this->rpp = $rpp;
+        $this->results_per_page = $rpp;
+        $this->rpp              = $rpp;
         $this->page             = $page;
         $this->since_id         = $since_id;
         $this->results          = array();
@@ -78,12 +83,13 @@ class JSONSearchResultsList
     /**
      * show the list of search results
      *
-     * @return int count of the search results listed.
+     * @return int $count of the search results listed.
      */
 
     function show()
     {
         $cnt = 0;
+        $this->max_id = 0;
 
         $time_start = microtime(true);
 
@@ -99,11 +105,17 @@ class JSONSearchResultsList
                 break;
             }
 
-            $item = new ResultItem($this->notice);
-            array_push($this->results, $item);
+            $profile = $this->notice->getProfile();
+
+            // Don't show notices from deleted users
+
+            if (!empty($profile)) {
+                $item = new ResultItem($this->notice);
+                array_push($this->results, $item);
+            }
         }
 
-        $time_end = microtime(true);
+        $time_end           = microtime(true);
         $this->completed_in = $time_end - $time_start;
 
         // Set other attrs
@@ -141,10 +153,10 @@ class JSONSearchResultsList
  * widget for displaying a single JSON search result
  *
  * @category UI
- * @package  Laconica
- * @author   Zach Copley <zach@controlyourself.ca>
+ * @package  StatusNet
+ * @author   Zach Copley <zach@status.net>
  * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link     http://laconi.ca/
+ * @link     http://status.net/
  * @see      JSONSearchResultsList
  */
 
@@ -197,11 +209,11 @@ class ResultItem
 
     function buildResult()
     {
-        $this->text = $this->notice->content;
+        $this->text      = $this->notice->content;
         $replier_profile = null;
 
         if ($this->notice->reply_to) {
-            $reply = Notice::staticGet(intval($notice->reply_to));
+            $reply = Notice::staticGet(intval($this->notice->reply_to));
             if ($reply) {
                 $replier_profile = $reply->getProfile();
             }
@@ -209,22 +221,25 @@ class ResultItem
 
         $this->to_user_id = ($replier_profile) ?
             intval($replier_profile->id) : null;
-        $this->to_user = ($replier_profile) ?
+        $this->to_user    = ($replier_profile) ?
             $replier_profile->nickname : null;
-        $this->from_user = $this->profile->nickname;
-        $this->id = $this->notice->id;
+
+        $this->from_user    = $this->profile->nickname;
+        $this->id           = $this->notice->id;
         $this->from_user_id = $this->profile->id;
 
         $user = User::staticGet('id', $this->profile->id);
-        $this->iso_language_code = $this->user->language;
+
+        $this->iso_language_code = $user->language;
 
         $this->source = $this->getSourceLink($this->notice->source);
 
         $avatar = $this->profile->getAvatar(AVATAR_STREAM_SIZE);
+
         $this->profile_image_url = ($avatar) ?
             $avatar->displayUrl() : Avatar::defaultImage(AVATAR_STREAM_SIZE);
 
-        $this->created_at = date('r', $this->notice->created);
+        $this->created_at = common_date_rfc2822($this->notice->created);
     }
 
     /**
@@ -233,27 +248,30 @@ class ResultItem
      * Either the name (and link) of the API client that posted the notice,
      * or one of other other channels.
      *
-     * @return string the source of the Notice
+     * @param string $source the source of the Notice
+     *
+     * @return string a fully rendered source of the Notice
      */
 
-     function getSourceLink($source)
-     {
-         $source_name = _($source);
-         switch ($source) {
-          case 'web':
-          case 'xmpp':
-          case 'mail':
-          case 'omb':
-          case 'api':
-             break;
-          default:
-             $ns = Notice_source::staticGet($source);
-             if ($ns) {
-                 $source_name = '<a href="' . $ns->url . '">' . $ns->name . '</a>';
-             }
-             break;
-         }
-         return $source_name;
-     }
+    function getSourceLink($source)
+    {
+        $source_name = _($source);
+        switch ($source) {
+        case 'web':
+        case 'xmpp':
+        case 'mail':
+        case 'omb':
+        case 'api':
+            break;
+        default:
+            $ns = Notice_source::staticGet($source);
+            if ($ns) {
+                $source_name = '<a href="' . $ns->url . '">' . $ns->name . '</a>';
+            }
+            break;
+        }
+
+        return $source_name;
+    }
 
 }