]> 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 1919e28cf536293bcaad3c7d41cdf2e0933bea1c..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;
 
@@ -892,6 +918,9 @@ 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);
@@ -916,6 +945,12 @@ function twitter_fetch_contact($uid, $contact, $create_user) {
                        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",
                intval($uid), dbesc("twitter::".$contact->id_str));
 
@@ -932,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),
@@ -989,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.
 
@@ -1030,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'])
+                               );
                }
        }