]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/twitterapi.php
send mail when @-replies are received
[quix0rs-gnu-social.git] / lib / twitterapi.php
index 3122caf12ec1282ea3eff0d2225649123e2c284f..a4d183fcd05e3c3739185755fc7e4be40a5d49ea 100644 (file)
 
 if (!defined('LACONICA')) { exit(1); }
 
-class TwitterapiAction extends Action {
+class TwitterapiAction extends Action
+{
 
     var $auth_user;
 
-    function handle($args) {
+    function handle($args)
+    {
         parent::handle($args);
     }
-
-    function twitter_user_array($profile, $get_notice=false) {
+    
+    function twitter_user_array($profile, $get_notice=false)
+    {
 
         $twitter_user = array();
 
         $twitter_user['name'] = $profile->getBestName();
         $twitter_user['followers_count'] = $this->count_subscriptions($profile);
         $twitter_user['screen_name'] = $profile->nickname;
-        $twitter_user['description'] = ($profile->bio) ? $profile->bio : NULL;
-        $twitter_user['location'] = ($profile->location) ? $profile->location : NULL;
+        $twitter_user['description'] = ($profile->bio) ? $profile->bio : null;
+        $twitter_user['location'] = ($profile->location) ? $profile->location : null;
         $twitter_user['id'] = intval($profile->id);
 
         $avatar = $profile->getAvatar(AVATAR_STREAM_SIZE);
 
-        $twitter_user['profile_image_url'] = ($avatar) ? common_avatar_display_url($avatar) : common_default_avatar(AVATAR_STREAM_SIZE);
+        $twitter_user['profile_image_url'] = ($avatar) ? $avatar->displayUrl() : Avatar::defaultImage(AVATAR_STREAM_SIZE);
         $twitter_user['protected'] = 'false'; # not supported by Laconica yet
-        $twitter_user['url'] = ($profile->homepage) ? $profile->homepage : NULL;
+        $twitter_user['url'] = ($profile->homepage) ? $profile->homepage : null;
 
         if ($get_notice) {
             $notice = $profile->getCurrentNotice();
@@ -55,7 +58,8 @@ class TwitterapiAction extends Action {
         return $twitter_user;
     }
 
-    function twitter_status_array($notice, $include_user=true) {
+    function twitter_status_array($notice, $include_user=true)
+    {
 
         $profile = $notice->getProfile();
 
@@ -63,10 +67,10 @@ class TwitterapiAction extends Action {
         $twitter_status['text'] = $notice->content;
         $twitter_status['truncated'] = 'false'; # Not possible on Laconica
         $twitter_status['created_at'] = $this->date_twitter($notice->created);
-        $twitter_status['in_reply_to_status_id'] = ($notice->reply_to) ? intval($notice->reply_to) : NULL;
+        $twitter_status['in_reply_to_status_id'] = ($notice->reply_to) ? intval($notice->reply_to) : null;
         $twitter_status['source'] = $this->source_link($notice->source);
         $twitter_status['id'] = intval($notice->id);
-        $twitter_status['in_reply_to_user_id'] = ($notice->reply_to) ? $this->replier_by_reply(intval($notice->reply_to)) : NULL;
+        $twitter_status['in_reply_to_user_id'] = ($notice->reply_to) ? $this->replier_by_reply(intval($notice->reply_to)) : null;
 
         if (isset($this->auth_user)) {
             $twitter_status['favorited'] = ($this->auth_user->hasFave($notice)) ? 'true' : 'false';
@@ -83,7 +87,8 @@ class TwitterapiAction extends Action {
         return $twitter_status;
     }
 
-    function twitter_rss_entry_array($notice) {
+    function twitter_rss_entry_array($notice)
+    {
 
         $profile = $notice->getProfile();
 
@@ -107,7 +112,8 @@ class TwitterapiAction extends Action {
         return $entry;
     }
 
-    function twitter_rss_dmsg_array($message) {
+    function twitter_rss_dmsg_array($message)
+    {
 
         $server = common_config('site', 'server');
         $entry = array();
@@ -129,7 +135,8 @@ class TwitterapiAction extends Action {
         return $entry;
     }
 
-    function twitter_dmsg_array($message) {
+    function twitter_dmsg_array($message)
+    {
 
         $twitter_dm = array();
 
@@ -149,90 +156,100 @@ class TwitterapiAction extends Action {
         return $twitter_dm;
     }
 
-    function show_twitter_xml_status($twitter_status) {
-        common_element_start('status');
+    function show_twitter_xml_status($twitter_status)
+    {
+        $this->elementStart('status');
         foreach($twitter_status as $element => $value) {
             switch ($element) {
             case 'user':
                 $this->show_twitter_xml_user($twitter_status['user']);
                 break;
             case 'text':
-                common_element($element, NULL, common_xml_safe_str($value));
+                $this->element($element, null, common_xml_safe_str($value));
                 break;
             default:
-                common_element($element, NULL, $value);
+                $this->element($element, null, $value);
             }
         }
-        common_element_end('status');
+        $this->elementEnd('status');
     }
 
-    function show_twitter_xml_user($twitter_user, $role='user') {
-        common_element_start($role);
+    function show_twitter_xml_user($twitter_user, $role='user')
+    {
+        $this->elementStart($role);
         foreach($twitter_user as $element => $value) {
             if ($element == 'status') {
                 $this->show_twitter_xml_status($twitter_user['status']);
             } else {
-                common_element($element, NULL, $value);
+                $this->element($element, null, $value);
             }
         }
-        common_element_end($role);
-    }
-
-    function show_twitter_rss_item($entry) {
-        common_element_start('item');
-        common_element('title', NULL, $entry['title']);
-        common_element('description', NULL, $entry['description']);
-        common_element('pubDate', NULL, $entry['pubDate']);
-        common_element('guid', NULL, $entry['guid']);
-        common_element('link', NULL, $entry['link']);
-        common_element_end('item');
-    }
-
-    function show_twitter_atom_entry($entry) {
-        common_element_start('entry');
-        common_element('title', NULL, $entry['title']);
-        common_element('content', array('type' => 'html'), $entry['content']);
-        common_element('id', NULL, $entry['id']);
-        common_element('published', NULL, $entry['published']);
-        common_element('updated', NULL, $entry['updated']);
-        common_element('link', array('href' => $entry['link'], 'rel' => 'alternate', 'type' => 'text/html'), NULL);
-        common_element_end('entry');
-    }
-
-    function show_json_objects($objects) {
+        $this->elementEnd($role);
+    }
+
+    function show_twitter_rss_item($entry)
+    {
+        $this->elementStart('item');
+        $this->element('title', null, $entry['title']);
+        $this->element('description', null, $entry['description']);
+        $this->element('pubDate', null, $entry['pubDate']);
+        $this->element('guid', null, $entry['guid']);
+        $this->element('link', null, $entry['link']);
+        $this->elementEnd('item');
+    }
+
+    function show_twitter_atom_entry($entry)
+    {
+        $this->elementStart('entry');
+        $this->element('title', null, $entry['title']);
+        $this->element('content', array('type' => 'html'), $entry['content']);
+        $this->element('id', null, $entry['id']);
+        $this->element('published', null, $entry['published']);
+        $this->element('updated', null, $entry['updated']);
+        $this->element('link', array('href' => $entry['link'], 'rel' => 'alternate', 'type' => 'text/html'), null);
+        $this->elementEnd('entry');
+    }
+
+    function show_json_objects($objects)
+    {
         print(json_encode($objects));
     }
 
-    function show_single_xml_status($notice) {
+    function show_single_xml_status($notice)
+    {
         $this->init_document('xml');
         $twitter_status = $this->twitter_status_array($notice);
         $this->show_twitter_xml_status($twitter_status);
         $this->end_document('xml');
     }
 
-    function show_single_json_status($notice) {
+    function show_single_json_status($notice)
+    {
         $this->init_document('json');
         $status = $this->twitter_status_array($notice);
         $this->show_json_objects($status);
         $this->end_document('json');
     }
 
-    function show_single_xml_dmsg($message) {
+    function show_single_xml_dmsg($message)
+    {
         $this->init_document('xml');
         $dmsg = $this->twitter_dmsg_array($message);
         $this->show_twitter_xml_dmsg($dmsg);
         $this->end_document('xml');
     }
 
-    function show_single_json_dmsg($message) {
+    function show_single_json_dmsg($message)
+    {
         $this->init_document('json');
         $dmsg = $this->twitter_dmsg_array($message);
         $this->show_json_objects($dmsg);
         $this->end_document('json');
     }
 
-    function show_twitter_xml_dmsg($twitter_dm) {
-        common_element_start('direct_message');
+    function show_twitter_xml_dmsg($twitter_dm)
+    {
+        $this->elementStart('direct_message');
         foreach($twitter_dm as $element => $value) {
             switch ($element) {
             case 'sender':
@@ -240,19 +257,20 @@ class TwitterapiAction extends Action {
                 $this->show_twitter_xml_user($value, $element);
                 break;
             case 'text':
-                common_element($element, NULL, common_xml_safe_str($value));
+                $this->element($element, null, common_xml_safe_str($value));
                 break;
             default:
-                common_element($element, NULL, $value);
+                $this->element($element, null, $value);
             }
         }
-        common_element_end('direct_message');
+        $this->elementEnd('direct_message');
     }
 
-    function show_xml_timeline($notice) {
+    function show_xml_timeline($notice)
+    {
 
         $this->init_document('xml');
-        common_element_start('statuses', array('type' => 'array'));
+        $this->elementStart('statuses', array('type' => 'array'));
 
         if (is_array($notice)) {
             foreach ($notice as $n) {
@@ -266,27 +284,28 @@ class TwitterapiAction extends Action {
             }
         }
 
-        common_element_end('statuses');
+        $this->elementEnd('statuses');
         $this->end_document('xml');
     }
 
-    function show_rss_timeline($notice, $title, $link, $subtitle, $suplink=NULL) {
+    function show_rss_timeline($notice, $title, $link, $subtitle, $suplink=null)
+    {
 
         $this->init_document('rss');
 
-        common_element_start('channel');
-        common_element('title', NULL, $title);
-        common_element('link', NULL, $link);
+        $this->elementStart('channel');
+        $this->element('title', null, $title);
+        $this->element('link', null, $link);
         if (!is_null($suplink)) {
             # For FriendFeed's SUP protocol
-            common_element('link', array('xmlns' => 'http://www.w3.org/2005/Atom',
+            $this->element('link', array('xmlns' => 'http://www.w3.org/2005/Atom',
                                          'rel' => 'http://api.friendfeed.com/2008/03#sup',
                                          'href' => $suplink,
                                          'type' => 'application/json'));
         }
-        common_element('description', NULL, $subtitle);
-        common_element('language', NULL, 'en-us');
-        common_element('ttl', NULL, '40');
+        $this->element('description', null, $subtitle);
+        $this->element('language', null, 'en-us');
+        $this->element('ttl', null, '40');
 
         if (is_array($notice)) {
             foreach ($notice as $n) {
@@ -300,24 +319,25 @@ class TwitterapiAction extends Action {
             }
         }
 
-        common_element_end('channel');
+        $this->elementEnd('channel');
         $this->end_twitter_rss();
     }
 
-    function show_atom_timeline($notice, $title, $id, $link, $subtitle=NULL, $suplink=NULL) {
+    function show_atom_timeline($notice, $title, $id, $link, $subtitle=null, $suplink=null)
+    {
 
         $this->init_document('atom');
 
-        common_element('title', NULL, $title);
-        common_element('id', NULL, $id);
-        common_element('link', array('href' => $link, 'rel' => 'alternate', 'type' => 'text/html'), NULL);
+        $this->element('title', null, $title);
+        $this->element('id', null, $id);
+        $this->element('link', array('href' => $link, 'rel' => 'alternate', 'type' => 'text/html'), null);
         if (!is_null($suplink)) {
             # For FriendFeed's SUP protocol
-            common_element('link', array('rel' => 'http://api.friendfeed.com/2008/03#sup',
+            $this->element('link', array('rel' => 'http://api.friendfeed.com/2008/03#sup',
                                          'href' => $suplink,
                                          'type' => 'application/json'));
         }
-        common_element('subtitle', NULL, $subtitle);
+        $this->element('subtitle', null, $subtitle);
 
         if (is_array($notice)) {
             foreach ($notice as $n) {
@@ -335,7 +355,8 @@ class TwitterapiAction extends Action {
 
     }
 
-    function show_json_timeline($notice) {
+    function show_json_timeline($notice)
+    {
 
         $this->init_document('json');
 
@@ -360,12 +381,14 @@ class TwitterapiAction extends Action {
 
     // Anyone know what date format this is?
     // Twitter's dates look like this: "Mon Jul 14 23:52:38 +0000 2008" -- Zach
-    function date_twitter($dt) {
+    function date_twitter($dt)
+    {
         $t = strtotime($dt);
         return date("D M d G:i:s O Y", $t);
     }
 
-    function replier_by_reply($reply_id) {
+    function replier_by_reply($reply_id)
+    {
         $notice = Notice::staticGet($reply_id);
         if ($notice) {
             $profile = $notice->getProfile();
@@ -377,11 +400,12 @@ class TwitterapiAction extends Action {
         } else {
             common_debug("Can't get notice: $reply_id", __FILE__);
         }
-        return NULL;
+        return null;
     }
 
     // XXX: Candidate for a general utility method somewhere?
-    function count_subscriptions($profile) {
+    function count_subscriptions($profile)
+    {
 
         $count = 0;
         $sub = new Subscription();
@@ -396,11 +420,12 @@ class TwitterapiAction extends Action {
         }
     }
 
-    function init_document($type='xml') {
+    function init_document($type='xml')
+    {
         switch ($type) {
          case 'xml':
             header('Content-Type: application/xml; charset=utf-8');
-            common_start_xml();
+            $this->startXML();
             break;
          case 'json':
             header('Content-Type: application/json; charset=utf-8');
@@ -427,10 +452,11 @@ class TwitterapiAction extends Action {
         return;
     }
 
-    function end_document($type='xml') {
+    function end_document($type='xml')
+    {
         switch ($type) {
          case 'xml':
-            common_end_xml();
+            $this->endXML();
             break;
          case 'json':
 
@@ -453,7 +479,8 @@ class TwitterapiAction extends Action {
         return;
     }
 
-    function client_error($msg, $code = 400, $content_type = 'json') {
+    function client_error($msg, $code = 400, $content_type = 'json')
+    {
 
         static $status = array(400 => 'Bad Request',
                                401 => 'Unauthorized',
@@ -487,10 +514,10 @@ class TwitterapiAction extends Action {
 
         if ($content_type == 'xml') {
             $this->init_document('xml');
-            common_element_start('hash');
-            common_element('error', NULL, $msg);
-            common_element('request', NULL, $_SERVER['REQUEST_URI']);
-            common_element_end('hash');
+            $this->elementStart('hash');
+            $this->element('error', null, $msg);
+            $this->element('request', null, $_SERVER['REQUEST_URI']);
+            $this->elementEnd('hash');
             $this->end_document('xml');
         } else {
             $this->init_document('json');
@@ -501,27 +528,32 @@ class TwitterapiAction extends Action {
 
     }
 
-    function init_twitter_rss() {
-        common_start_xml();
-        common_element_start('rss', array('version' => '2.0'));
+    function init_twitter_rss()
+    {
+        $this->startXML();
+        $this->elementStart('rss', array('version' => '2.0'));
     }
 
-    function end_twitter_rss() {
-        common_element_end('rss');
-        common_end_xml();
+    function end_twitter_rss()
+    {
+        $this->elementEnd('rss');
+        $this->endXML();
     }
 
-    function init_twitter_atom() {
-        common_start_xml();
-        common_element_start('feed', array('xmlns' => 'http://www.w3.org/2005/Atom', 'xml:lang' => 'en-US'));
+    function init_twitter_atom()
+    {
+        $this->startXML();
+        $this->elementStart('feed', array('xmlns' => 'http://www.w3.org/2005/Atom', 'xml:lang' => 'en-US'));
     }
 
-    function end_twitter_atom() {
-        common_end_xml();
-        common_element_end('feed');
+    function end_twitter_atom()
+    {
+        $this->endXML();
+        $this->elementEnd('feed');
     }
 
-    function show_profile($profile, $content_type='xml', $notice=NULL) {
+    function show_profile($profile, $content_type='xml', $notice=null)
+    {
         $profile_array = $this->twitter_user_array($profile, true);
         switch ($content_type) {
          case 'xml':
@@ -537,7 +569,8 @@ class TwitterapiAction extends Action {
         return;
     }
 
-    function get_user($id, $apidata=NULL) {
+    function get_user($id, $apidata=null)
+    {
         if (!$id) {
             return $apidata['user'];
         } else if (is_numeric($id)) {
@@ -548,7 +581,8 @@ class TwitterapiAction extends Action {
         }
     }
 
-    function get_profile($id) {
+    function get_profile($id)
+    {
         if (is_numeric($id)) {
             return Profile::staticGet($id);
         } else {
@@ -556,12 +590,13 @@ class TwitterapiAction extends Action {
             if ($user) {
                 return $user->getProfile();
             } else {
-                return NULL;
+                return null;
             }
         }
     }
 
-    function source_link($source) {
+    function source_link($source)
+    {
         $source_name = _($source);
         switch ($source) {
          case 'web':
@@ -580,7 +615,8 @@ class TwitterapiAction extends Action {
         return $source_name;
     }
 
-    function show_extended_profile($user, $apidata) {
+    function show_extended_profile($user, $apidata)
+    {
 
         $this->auth_user = $apidata['user'];
 
@@ -654,4 +690,4 @@ class TwitterapiAction extends Action {
 
     }
 
-}
\ No newline at end of file
+}