]> git.mxchange.org Git - friendica-addons.git/blobdiff - twitter/twitter.php
DE wppost update to the strings
[friendica-addons.git] / twitter / twitter.php
index f00767036d195534e83a256d656b0ca9c9086ed6..916e37240dd7b6ec7e12142c633f537ddb6ecbb4 100644 (file)
@@ -506,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) . '"');
 
@@ -531,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) . '"');
 
@@ -564,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){
@@ -575,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 the exact name you gave the app on twitter.com/apps 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'))
        ));
 }
 
@@ -725,6 +733,7 @@ function twitter_fetchtimeline($a, $uid) {
 
        require_once('mod/item.php');
        require_once('include/items.php');
+       require_once('mod/share.php');
 
        require_once('library/twitteroauth.php');
        $connection = new TwitterOAuth($ckey,$csecret,$otoken,$osecret);
@@ -790,11 +799,20 @@ function twitter_fetchtimeline($a, $uid) {
                                $converted = twitter_expand_entities($a, $_REQUEST['body'], $post->retweeted_status, true, $picture);
                                $_REQUEST['body'] = $converted["body"];
 
-                               $_REQUEST['body'] = "[share author='".$post->retweeted_status->user->name.
-                                       "' profile='https://twitter.com/".$post->retweeted_status->user->screen_name.
-                                       "' avatar='".$post->retweeted_status->user->profile_image_url_https.
-                                       "' link='https://twitter.com/".$post->retweeted_status->user->screen_name."/status/".$post->retweeted_status->id_str."']".
-                                       $_REQUEST['body'];
+                               if (function_exists("share_header"))
+                                       $_REQUEST['body'] = share_header($post->retweeted_status->user->name, "https://twitter.com/".$post->retweeted_status->user->screen_name,
+                                                                       $post->retweeted_status->user->profile_image_url_https, "",
+                                                                       datetime_convert('UTC','UTC',$post->retweeted_status->created_at),
+                                                                       "https://twitter.com/".$post->retweeted_status->user->screen_name."/status/".$post->retweeted_status->id_str).
+                                                               $_REQUEST['body'];
+                               else
+                                       $_REQUEST['body'] = "[share author='".$post->retweeted_status->user->name.
+                                               "' profile='https://twitter.com/".$post->retweeted_status->user->screen_name.
+                                               "' avatar='".$post->retweeted_status->user->profile_image_url_https.
+                                               "' posted='".datetime_convert('UTC','UTC',$post->retweeted_status->created_at).
+                                               "' link='https://twitter.com/".$post->retweeted_status->user->screen_name."/status/".$post->retweeted_status->id_str."']".
+                                               $_REQUEST['body'];
+
                                $_REQUEST['body'] .= "[/share]";
                        } else {
                                $_REQUEST["body"] = $post->text;
@@ -1438,6 +1456,7 @@ function twitter_createpost($a, $uid, $post, $self, $create_user, $only_existing
                        $postarray['body'] = "[share author='".$post->retweeted_status->user->name.
                                "' profile='https://twitter.com/".$post->retweeted_status->user->screen_name.
                                "' avatar='".$post->retweeted_status->user->profile_image_url_https.
+                               "' posted='".datetime_convert('UTC','UTC',$post->retweeted_status->created_at).
                                "' link='https://twitter.com/".$post->retweeted_status->user->screen_name."/status/".$post->retweeted_status->id_str."']".
                                $postarray['body'];
                        $postarray['body'] .= "[/share]";
@@ -1523,15 +1542,69 @@ function twitter_checknotification($a, $uid, $own_id, $top_item, $postarray) {
        }
 }
 
+function twitter_fetchparentposts($a, $uid, $post, $connection, $self, $own_id) {
+       logger("twitter_fetchparentposts: Fetching for user ".$uid." and post ".$post->id_str, LOGGER_DEBUG);
+
+       $posts = array();
+
+       while ($post->in_reply_to_status_id_str != "") {
+               $parameters = array("trim_user" => false, "id" => $post->in_reply_to_status_id_str);
+
+               $post = $connection->get('statuses/show', $parameters);
+
+               if (!count($post)) {
+                       logger("twitter_fetchparentposts: Can't fetch post ".$parameters->id, LOGGER_DEBUG);
+                       break;
+               }
+
+               $r = q("SELECT * FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
+                               dbesc("twitter::".$post->id_str),
+                               intval($uid)
+                       );
+
+               if (count($r))
+                       break;
+               
+               $posts[] = $post;
+       }
+
+       logger("twitter_fetchparentposts: Fetching ".count($posts)." parents", LOGGER_DEBUG);
+
+       $posts = array_reverse($posts);
+
+       if (count($posts)) {
+               foreach ($posts as $post) {
+                       $postarray = twitter_createpost($a, $uid, $post, $self, false, false);
+
+                       if (trim($postarray['body']) == "")
+                               continue;
+
+                       $item = item_store($postarray);
+                       $postarray["id"] = $item;
+
+                       logger('twitter_fetchparentpost: User '.$self["nick"].' posted parent timeline item '.$item);
+
+                       if ($item != 0)
+                               twitter_checknotification($a, $uid, $own_id, $item, $postarray);
+               }
+       }
+}
+
 function twitter_fetchhometimeline($a, $uid) {
        $ckey    = get_config('twitter', 'consumerkey');
        $csecret = get_config('twitter', 'consumersecret');
        $otoken  = get_pconfig($uid, 'twitter', 'oauthtoken');
        $osecret = get_pconfig($uid, 'twitter', 'oauthsecret');
        $create_user = get_pconfig($uid, 'twitter', 'create_user');
+       $mirror_posts = get_pconfig($uid, 'twitter', 'mirror_posts');
 
        logger("twitter_fetchhometimeline: Fetching for user ".$uid, LOGGER_DEBUG);
 
+       $application_name  = get_config('twitter', 'application_name');
+
+       if ($application_name == "")
+               $application_name = $a->get_hostname();
+
        require_once('library/twitteroauth.php');
        require_once('include/items.php');
 
@@ -1598,12 +1671,26 @@ function twitter_fetchhometimeline($a, $uid) {
                        if ($first_time)
                                continue;
 
+                       if (stristr($post->source, $application_name) && $post->user->screen_name == $own_id) {
+                               logger("twitter_fetchhometimeline: Skip previously sended post", LOGGER_DEBUG);
+                               continue;
+                       }
+
+                       if ($mirror_posts && $post->user->screen_name == $own_id && $post->in_reply_to_status_id_str == "") {
+                               logger("twitter_fetchhometimeline: Skip post that will be mirrored", LOGGER_DEBUG);
+                               continue;
+                       }
+
+                       if ($post->in_reply_to_status_id_str != "")
+                               twitter_fetchparentposts($a, $uid, $post, $connection, $self, $own_id);
+
                        $postarray = twitter_createpost($a, $uid, $post, $self, $create_user, true);
 
                        if (trim($postarray['body']) == "")
                                continue;
 
                        $item = item_store($postarray);
+                       $postarray["id"] = $item;
 
                        logger('twitter_fetchhometimeline: User '.$self["nick"].' posted home timeline item '.$item);
 
@@ -1641,12 +1728,16 @@ function twitter_fetchhometimeline($a, $uid) {
                        if ($first_time)
                                continue;
 
+                       if ($post->in_reply_to_status_id_str != "")
+                               twitter_fetchparentposts($a, $uid, $post, $connection, $self, $own_id);
+
                        $postarray = twitter_createpost($a, $uid, $post, $self, false, false);
 
                        if (trim($postarray['body']) == "")
                                continue;
 
                        $item = item_store($postarray);
+                       $postarray["id"] = $item;
 
                        if (!isset($postarray["parent"]) OR ($postarray["parent"] == 0))
                                $postarray["parent"] = $item;