]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/twitapisearchatom.php
Regression fix for Recaptcha on SSL registration page; their API is served on a diffe...
[quix0rs-gnu-social.git] / actions / twitapisearchatom.php
index 3678213c3a9dbddd34050b9a4936b3f49d6a573f..51e8a8881bf2730646da314f0ebcb16729465c07 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Laconica, the distributed open-source microblogging tool
+ * StatusNet, the distributed open-source microblogging tool
  *
  * Action for showing Twitter-like Atom search results
  *
  * 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 2008-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);
 }
 
-require_once INSTALLDIR.'/lib/twitterapi.php';
-
 /**
  * Action for outputting search results in Twitter compatible Atom
  * format.
@@ -41,15 +39,15 @@ require_once INSTALLDIR.'/lib/twitterapi.php';
  * RSS10Action.
  *
  * @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/
  *
- * @see      TwitterapiAction
+ * @see      ApiAction
  */
 
-class TwitapisearchatomAction extends TwitterapiAction
+class TwitapisearchatomAction extends ApiAction
 {
 
     var $cnt;
@@ -71,7 +69,7 @@ class TwitapisearchatomAction extends TwitterapiAction
      * @see Action::__construct
      */
 
-    function __construct($output='php://output', $indent=true)
+    function __construct($output='php://output', $indent=null)
     {
         parent::__construct($output, $indent);
     }
@@ -161,7 +159,7 @@ class TwitapisearchatomAction extends TwitterapiAction
         // lcase it for comparison
         $q = strtolower($this->query);
 
-        $search_engine = $notice->getSearchEngine('identica_notices');
+        $search_engine = $notice->getSearchEngine('notice');
         $search_engine->set_sort_mode('chron');
         $search_engine->limit(($this->page - 1) * $this->rpp,
             $this->rpp + 1, true);
@@ -208,7 +206,14 @@ class TwitapisearchatomAction extends TwitterapiAction
         $this->showFeed();
 
         foreach ($notices as $n) {
-            $this->showEntry($n);
+
+            $profile = $n->getProfile();
+
+            // Don't show notices from deleted users
+
+            if (!empty($profile)) {
+                $this->showEntry($n);
+            }
         }
 
         $this->endAtom();
@@ -227,7 +232,7 @@ class TwitapisearchatomAction extends TwitterapiAction
         $server   = common_config('site', 'server');
         $sitename = common_config('site', 'name');
 
-        // XXX: Use xmlns:laconica instead?
+        // XXX: Use xmlns:statusnet instead?
 
         $this->elementStart('feed',
             array('xmlns' => 'http://www.w3.org/2005/Atom',
@@ -238,7 +243,7 @@ class TwitapisearchatomAction extends TwitterapiAction
                              'xmlns:twitter' => 'http://api.twitter.com/',
                              'xml:lang' => 'en-US')); // XXX Other locales ?
 
-        $taguribase = common_config('integration', 'taguri');
+        $taguribase = TagURI::base();
         $this->element('id', null, "tag:$taguribase:search/$server");
 
         $site_uri = common_path(false);
@@ -322,7 +327,7 @@ class TwitapisearchatomAction extends TwitterapiAction
 
         $this->elementStart('entry');
 
-        $taguribase = common_config('integration', 'taguri');
+        $taguribase = TagURI::base();
 
         $this->element('id', null, "tag:$taguribase:$notice->id");
         $this->element('published', null, common_date_w3dtf($notice->created));
@@ -337,10 +342,24 @@ class TwitapisearchatomAction extends TwitterapiAction
                                      'rel' => 'related',
                                      'href' => $profile->avatarUrl()));
 
-        // TODO: Here is where we'd put in a link to an atom feed for threads
+        // @todo: Here is where we'd put in a link to an atom feed for threads
+
+        $source = null;
+
+        $ns = $notice->getSource();
+        if ($ns) {
+            if (!empty($ns->name) && !empty($ns->url)) {
+                $source = '<a href="'
+                  . htmlspecialchars($ns->url)
+                  . '" rel="nofollow">'
+                  . htmlspecialchars($ns->name)
+                  . '</a>';
+            } else {
+                $source = $ns->code;
+            }
+        }
 
-        $this->element("twitter:source", null,
-            htmlentities($this->source_link($notice->source)));
+        $this->element("twitter:source", null, $source);
 
         $this->elementStart('author');