]> git.mxchange.org Git - friendica-addons.git/blobdiff - statusnet/statusnet.php
Merge pull request #242 from annando/master
[friendica-addons.git] / statusnet / statusnet.php
index c3591356b6237c035b79edea23bc934b58e8a533..6713842ef9c60965819bf816123ef705f85927eb 100644 (file)
@@ -532,6 +532,9 @@ function statusnet_post_hook(&$a,&$b) {
                return;
 
        // if posts comes from statusnet don't send it back
+       if($b['extid'] == NETWORK_STATUSNET)
+               return;
+
        if($b['app'] == "StatusNet")
                return;
 
@@ -755,9 +758,23 @@ function statusnet_cron($a,$b) {
                }
        }
 
+       $abandon_days = intval(get_config('system','account_abandon_days'));
+       if ($abandon_days < 1)
+               $abandon_days = 0;
+
+       $abandon_limit = date("Y-m-d H:i:s", time() - $abandon_days * 86400);
+
        $r = q("SELECT * FROM `pconfig` WHERE `cat` = 'statusnet' AND `k` = 'import' AND `v` = '1' ORDER BY RAND()");
        if(count($r)) {
                foreach($r as $rr) {
+                       if ($abandon_days != 0) {
+                               $user = q("SELECT `login_date` FROM `user` WHERE uid=%d AND `login_date` >= '%s'", $rr['uid'], $abandon_limit);
+                               if (!count($user)) {
+                                       logger('abandoned account: timeline from user '.$rr['uid'].' will not be imported');
+                                       continue;
+                               }
+                       }
+
                        logger('statusnet: importing timeline from user '.$rr['uid']);
                        statusnet_fetchhometimeline($a, $rr["uid"]);
                }
@@ -821,7 +838,7 @@ function statusnet_fetchtimeline($a, $uid) {
                if ($post->in_reply_to_status_id != "")
                        continue;
 
-               if (!strpos($post->source, $application_name)) {
+               if (!stristr($post->source, $application_name)) {
                        $_SESSION["authenticated"] = true;
                        $_SESSION["uid"] = $uid;
 
@@ -829,7 +846,9 @@ function statusnet_fetchtimeline($a, $uid) {
                        $_REQUEST["type"] = "wall";
                        $_REQUEST["api_source"] = true;
                        $_REQUEST["profile_uid"] = $uid;
-                       $_REQUEST["source"] = "StatusNet";
+                       //$_REQUEST["source"] = "StatusNet";
+                       $_REQUEST["source"] = $post->source;
+                       $_REQUEST["extid"] = NETWORK_STATUSNET;
 
                        //$_REQUEST["date"] = $post->created_at;
 
@@ -872,6 +891,9 @@ function statusnet_address($contact) {
 }
 
 function statusnet_fetch_contact($uid, $contact, $create_user) {
+       if ($contact->statusnet_profile_url == "")
+               return(-1);
+
        // Check if the unique contact is existing
        // To-Do: only update once a while
         $r = q("SELECT id FROM unique_contacts WHERE url='%s' LIMIT 1",
@@ -890,6 +912,12 @@ function statusnet_fetch_contact($uid, $contact, $create_user) {
                        dbesc($contact->profile_image_url),
                        dbesc(normalise_link($contact->statusnet_profile_url)));
 
+       if (DB_UPDATE_VERSION >= "1177")
+               q("UPDATE `unique_contacts` SET `location` = '%s', `about` = '%s' WHERE url = '%s'",
+                       dbesc($contact->location),
+                       dbesc($contact->description),
+                       dbesc(normalise_link($contact->statusnet_profile_url)));
+
        $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `alias` = '%s' LIMIT 1",
                intval($uid), dbesc(normalise_link($contact->statusnet_profile_url)));
 
@@ -950,19 +978,24 @@ function statusnet_fetch_contact($uid, $contact, $create_user) {
                q("UPDATE `contact` SET `photo` = '%s',
                                        `thumb` = '%s',
                                        `micro` = '%s',
-                                       `name-date` = '%s',
-                                       `uri-date` = '%s',
                                        `avatar-date` = '%s'
                                WHERE `id` = %d",
                        dbesc($photos[0]),
                        dbesc($photos[1]),
                        dbesc($photos[2]),
                        dbesc(datetime_convert()),
-                       dbesc(datetime_convert()),
-                       dbesc(datetime_convert()),
                        intval($contact_id)
                );
 
+               if (DB_UPDATE_VERSION >= "1177")
+                       q("UPDATE `contact` SET `location` = '%s',
+                                               `about` = '%s'
+                                       WHERE `id` = %d",
+                               dbesc($contact->location),
+                               dbesc($contact->description),
+                               intval($contact_id)
+                       );
+
        } else {
                // update profile photos once every two weeks as we have no notification of when they change.
 
@@ -971,7 +1004,7 @@ function statusnet_fetch_contact($uid, $contact, $create_user) {
 
                // check that we have all the photos, this has been known to fail on occasion
 
-               if((! $r[0]['photo']) || (! $r[0]['thumb']) || (! $r[0]['micro']) || ($update_photo)) {
+               if((!$r[0]['photo']) || (!$r[0]['thumb']) || (!$r[0]['micro']) || ($update_photo)) {
 
                        logger("statusnet_fetch_contact: Updating contact ".$contact->screen_name, LOGGER_DEBUG);
 
@@ -1004,6 +1037,15 @@ function statusnet_fetch_contact($uid, $contact, $create_user) {
                                dbesc($contact->screen_name),
                                intval($r[0]['id'])
                        );
+
+                       if (DB_UPDATE_VERSION >= "1177")
+                               q("UPDATE `contact` SET `location` = '%s',
+                                                       `about` = '%s'
+                                               WHERE `id` = %d",
+                                       dbesc($contact->location),
+                                       dbesc($contact->description),
+                                       intval($r[0]['id'])
+                               );
                }
        }
 
@@ -1338,7 +1380,16 @@ function statusnet_fetchhometimeline($a, $uid) {
        $items = $connection->get('statuses/home_timeline', $parameters);
 
        if (!is_array($items)) {
-               logger("statusnet_fetchhometimeline: Error fetching home timeline: ".print_r($items, true), LOGGER_DEBUG);
+               if (is_object($items) AND isset($items->error))
+                       $errormsg = $items->error;
+               elseif (is_object($items))
+                       $errormsg = print_r($items, true);
+               elseif (is_string($items) OR is_float($items) OR is_int($items))
+                       $errormsg = $items;
+               else
+                       $errormsg = "Unknown error";
+
+               logger("statusnet_fetchhometimeline: Error fetching home timeline: ".$errormsg, LOGGER_DEBUG);
                return;
        }