]> git.mxchange.org Git - friendica-addons.git/blobdiff - twitter/twitter.php
The settings for the application name are removed since they will be filled automatic...
[friendica-addons.git] / twitter / twitter.php
index b200344521ab6708eb8cc07128a61751af545c86..8d7e21fbbfd083e9209cfdbf90e84beef8953a61 100644 (file)
@@ -438,6 +438,9 @@ function twitter_post_hook(&$a,&$b) {
                return;
 
        // if post comes from twitter don't send it back
+       if($b['extid'] == NETWORK_TWITTER)
+               return;
+
        if($b['app'] == "Twitter")
                return;
 
@@ -503,6 +506,10 @@ function twitter_post_hook(&$a,&$b) {
                        unlink($tempfile);
 
                        logger('twitter_post_with_media send, result: ' . print_r($result, true), LOGGER_DEBUG);
+
+                       if ($result->source)
+                               set_config("twitter", "application_name", strip_tags($result->source));
+
                        if ($result->errors OR $result->error) {
                                logger('Send to Twitter failed: "' . print_r($result->errors, true) . '"');
 
@@ -528,6 +535,10 @@ function twitter_post_hook(&$a,&$b) {
 
                        $result = $tweet->post($url, $post);
                        logger('twitter_post send, result: ' . print_r($result, true), LOGGER_DEBUG);
+
+                       if ($result->source)
+                               set_config("twitter", "application_name", strip_tags($result->source));
+
                        if ($result->errors) {
                                logger('Send to Twitter failed: "' . print_r($result->errors, true) . '"');
 
@@ -561,7 +572,7 @@ function twitter_plugin_admin_post(&$a){
        $applicationname = ((x($_POST, 'applicationname')) ? notags(trim($_POST['applicationname'])):'');
        set_config('twitter','consumerkey',$consumerkey);
        set_config('twitter','consumersecret',$consumersecret);
-       set_config('twitter','application_name',$applicationname);
+       //set_config('twitter','application_name',$applicationname);
        info( t('Settings updated.'). EOL );
 }
 function twitter_plugin_admin(&$a, &$o){
@@ -572,7 +583,7 @@ function twitter_plugin_admin(&$a, &$o){
                                                                // name, label, value, help, [extra values]
                '$consumerkey' => array('consumerkey', t('Consumer key'),  get_config('twitter', 'consumerkey' ), ''),
                '$consumersecret' => array('consumersecret', t('Consumer secret'),  get_config('twitter', 'consumersecret' ), ''),
-               '$applicationname' => array('applicationname', t('Name of the Twitter Application'), get_config('twitter','application_name'),t('set this to avoid mirroring postings from ~friendica back to ~friendica'))
+               //'$applicationname' => array('applicationname', t('Name of the Twitter Application'), get_config('twitter','application_name'),t('Set this to the exact name you gave the app on twitter.com/apps to avoid mirroring postings from ~friendica back to ~friendica'))
        ));
 }
 
@@ -600,10 +611,23 @@ function twitter_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` = 'twitter' 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('twitter: importing timeline from user '.$rr['uid']);
                        twitter_fetchhometimeline($a, $rr["uid"]);
 
@@ -735,7 +759,7 @@ function twitter_fetchtimeline($a, $uid) {
                if ($first_time)
                        continue;
 
-               if (!strpos($post->source, $application_name)) {
+               if (!stristr($post->source, $application_name)) {
                        $_SESSION["authenticated"] = true;
                        $_SESSION["uid"] = $uid;
 
@@ -743,7 +767,9 @@ function twitter_fetchtimeline($a, $uid) {
                        $_REQUEST["type"] = "wall";
                        $_REQUEST["api_source"] = true;
                        $_REQUEST["profile_uid"] = $uid;
-                       $_REQUEST["source"] = "Twitter";
+                       //$_REQUEST["source"] = "Twitter";
+                       $_REQUEST["source"] = $post->source;
+                       $_REQUEST["extid"] = NETWORK_TWITTER;
 
                        //$_REQUEST["date"] = $post->created_at;
 
@@ -890,6 +916,16 @@ function twitter_queue_hook(&$a,&$b) {
 }
 
 function twitter_fetch_contact($uid, $contact, $create_user) {
+       require_once("include/Photo.php");
+
+       if ($contact->id_str == "")
+               return(-1);
+
+       $avatar = str_replace("_normal.", ".", $contact->profile_image_url_https);
+
+       $info = get_photo_info($avatar);
+       if (!$info)
+               $avatar = $contact->profile_image_url_https;
 
        // Check if the unique contact is existing
        // To-Do: only update once a while
@@ -901,12 +937,18 @@ function twitter_fetch_contact($uid, $contact, $create_user) {
                        dbesc(normalise_link("https://twitter.com/".$contact->screen_name)),
                        dbesc($contact->name),
                        dbesc($contact->screen_name),
-                       dbesc($contact->profile_image_url_https));
+                       dbesc($avatar));
        else
                q("UPDATE unique_contacts SET name = '%s', nick = '%s', avatar = '%s' WHERE url = '%s'",
                        dbesc($contact->name),
                        dbesc($contact->screen_name),
-                       dbesc($contact->profile_image_url_https),
+                       dbesc($avatar),
+                       dbesc(normalise_link("https://twitter.com/".$contact->screen_name)));
+
+       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("https://twitter.com/".$contact->screen_name)));
 
        $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `alias` = '%s' LIMIT 1",
@@ -925,7 +967,7 @@ function twitter_fetch_contact($uid, $contact, $create_user) {
                q("INSERT INTO `contact` ( `uid`, `created`, `url`, `nurl`, `addr`, `alias`, `notify`, `poll`,
                                        `name`, `nick`, `photo`, `network`, `rel`, `priority`,
                                        `writable`, `blocked`, `readonly`, `pending` )
-                                       VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, %d, 0, 0, 0 ) ",
+                                       VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, %d, 0, 0, 0) ",
                        intval($uid),
                        dbesc(datetime_convert()),
                        dbesc("https://twitter.com/".$contact->screen_name),
@@ -936,7 +978,7 @@ function twitter_fetch_contact($uid, $contact, $create_user) {
                        dbesc("twitter::".$contact->id_str),
                        dbesc($contact->name),
                        dbesc($contact->screen_name),
-                       dbesc($contact->profile_image_url_https),
+                       dbesc($avatar),
                        dbesc(NETWORK_TWITTER),
                        intval(CONTACT_IS_FRIEND),
                        intval(1),
@@ -964,7 +1006,7 @@ function twitter_fetch_contact($uid, $contact, $create_user) {
 
                require_once("Photo.php");
 
-               $photos = import_profile_photo($contact->profile_image_url_https,$uid,$contact_id);
+               $photos = import_profile_photo($avatar,$uid,$contact_id);
 
                q("UPDATE `contact` SET `photo` = '%s',
                                        `thumb` = '%s',
@@ -982,6 +1024,15 @@ function twitter_fetch_contact($uid, $contact, $create_user) {
                        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.
 
@@ -996,7 +1047,7 @@ function twitter_fetch_contact($uid, $contact, $create_user) {
 
                        require_once("Photo.php");
 
-                       $photos = import_profile_photo($contact->profile_image_url_https, $uid, $r[0]['id']);
+                       $photos = import_profile_photo($avatar, $uid, $r[0]['id']);
 
                        q("UPDATE `contact` SET `photo` = '%s',
                                                `thumb` = '%s',
@@ -1023,6 +1074,15 @@ function twitter_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'])
+                               );
                }
        }