]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/apisearchatom.php
Merge remote-tracking branch 'upstream/master' into social-master
[quix0rs-gnu-social.git] / actions / apisearchatom.php
index 6743e92c84648ed8e3c13b862915cc59e9125557..c1aa43483e4549b1cc04b2b45d48997e301a78a8 100644 (file)
@@ -31,8 +31,6 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
     exit(1);
 }
 
-require_once INSTALLDIR.'/lib/apiprivateauth.php';
-
 /**
  * Action for outputting search results in Twitter compatible Atom
  * format.
@@ -90,10 +88,8 @@ class ApiSearchAtomAction extends ApiPrivateAuthAction
      *
      * @return boolean success
      */
-    function prepare($args)
+    function prepare(array $args=array())
     {
-        common_debug("in apisearchatom prepare()");
-
         parent::prepare($args);
 
         $this->query = $this->trimmed('q');
@@ -114,7 +110,7 @@ class ApiSearchAtomAction extends ApiPrivateAuthAction
             $this->page = 1;
         }
 
-        // TODO: Suppport since_id -- we need to tweak the backend
+        // TODO: Suppport max_id -- we need to tweak the backend
         // Search classes to support it.
 
         $this->since_id = $this->trimmed('since_id');
@@ -132,7 +128,7 @@ class ApiSearchAtomAction extends ApiPrivateAuthAction
      *
      * @return void
      */
-    function handle($args)
+    function handle(array $args=array())
     {
         parent::handle($args);
         common_debug("In apisearchatom handle()");
@@ -171,12 +167,22 @@ class ApiSearchAtomAction extends ApiPrivateAuthAction
 
         if ($this->cnt > 0) {
             while ($notice->fetch()) {
+                // Check scope of notice to current profile (including guests)
+                if (!$notice->isCurrentProfileInScope()) {
+                    // Not in scope
+                    continue;
+                }
+
                 ++$cnt;
 
                 if (!$this->max_id) {
                     $this->max_id = $notice->id;
                 }
 
+                if ($this->since_id && $notice->id <= $this->since_id) {
+                    break;
+                }
+
                 if ($cnt > $this->rpp) {
                     break;
                 }
@@ -339,7 +345,7 @@ class ApiSearchAtomAction extends ApiPrivateAuthAction
         $source = null;
 
         $ns = $notice->getSource();
-        if ($ns) {
+        if ($ns instanceof Notice_source) {
             if (!empty($ns->name) && !empty($ns->url)) {
                 $source = '<a href="'
                    . htmlspecialchars($ns->url)