X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=twitter%2Ftwitter.php;h=19577b47605cdcd23cc2f081d3ac68f1f8ba6153;hb=8fa3f2415a3f3906f5fdadd1601ec6830ecce3c9;hp=934b8d3cec03a9fda1f5ef3ace3a9c022e212d62;hpb=0eb9a106df7c3db6c8d94bfb471fc24627977339;p=friendica-addons.git diff --git a/twitter/twitter.php b/twitter/twitter.php index 934b8d3c..19577b47 100644 --- a/twitter/twitter.php +++ b/twitter/twitter.php @@ -32,7 +32,7 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ - + /* Twitter Plugin for Friendica * * Author: Tobias Diekershoff @@ -118,7 +118,7 @@ function twitter_follow($a, &$contact) { logger("twitter_follow: Check if contact is twitter contact. ".$contact["url"], LOGGER_DEBUG); - if (!strstr($contact["url"], "://twitter.com") AND !strstr($contact["url"], "@twitter.com")) + if (!strstr($contact["url"], "://twitter.com") && !strstr($contact["url"], "@twitter.com")) return; // contact seems to be a twitter contact, so continue @@ -161,7 +161,7 @@ function twitter_jot_nets(&$a,&$b) { if(intval($tw_post) == 1) { $tw_defpost = get_pconfig(local_user(),'twitter','post_by_default'); $selected = ((intval($tw_defpost) == 1) ? ' checked="checked" ' : ''); - $b .= '
' + $b .= '
' . t('Post to Twitter') . '
'; } } @@ -327,7 +327,7 @@ function twitter_settings(&$a,&$s) { $s .= ''; $s .= ''; $s .= '
'; - $s .= '
'; + $s .= '
'; } } $s .= '
'; @@ -405,7 +405,7 @@ function twitter_post_hook(&$a,&$b) { logger("twitter_post_hook: parameter ".print_r($b, true), LOGGER_DATA); // Looking if its a reply to a twitter post - if ((substr($b["parent-uri"], 0, 9) != "twitter::") AND (substr($b["extid"], 0, 9) != "twitter::") AND (substr($b["thr-parent"], 0, 9) != "twitter::")) { + if ((substr($b["parent-uri"], 0, 9) != "twitter::") && (substr($b["extid"], 0, 9) != "twitter::") && (substr($b["thr-parent"], 0, 9) != "twitter::")) { logger("twitter_post_hook: no twitter post ".$b["parent"]); return; } @@ -428,18 +428,18 @@ function twitter_post_hook(&$a,&$b) { $nicknameplain = "@".$nicknameplain; logger("twitter_post_hook: comparing ".$nickname." and ".$nicknameplain." with ".$b["body"], LOGGER_DEBUG); - if ((strpos($b["body"], $nickname) === false) AND (strpos($b["body"], $nicknameplain) === false)) + if ((strpos($b["body"], $nickname) === false) && (strpos($b["body"], $nicknameplain) === false)) $b["body"] = $nickname." ".$b["body"]; logger("twitter_post_hook: parent found ".print_r($orig_post, true), LOGGER_DATA); } else { $iscomment = false; - if($b['private'] OR !strstr($b['postopts'],'twitter')) + if($b['private'] || !strstr($b['postopts'],'twitter')) return; } - if (($b['verb'] == ACTIVITY_POST) AND $b['deleted']) + if (($b['verb'] == ACTIVITY_POST) && $b['deleted']) twitter_action($a, $b["uid"], substr($orig_post["uri"], 9), "delete"); if($b['verb'] == ACTIVITY_LIKE) { @@ -487,19 +487,19 @@ function twitter_post_hook(&$a,&$b) { $msgarr = plaintext($a, $b, $max_char, true, 8); $msg = $msgarr["text"]; - if (($msg == "") AND isset($msgarr["title"])) + if (($msg == "") && isset($msgarr["title"])) $msg = shortenmsg($msgarr["title"], $max_char - 50); $image = ""; - if (isset($msgarr["url"]) AND ($msgarr["type"] != "photo")) + if (isset($msgarr["url"]) && ($msgarr["type"] != "photo")) $msg .= "\n".$msgarr["url"]; - if (isset($msgarr["image"]) AND ($msgarr["type"] != "video")) + if (isset($msgarr["image"]) && ($msgarr["type"] != "video")) $image = $msgarr["image"]; // and now tweet it :-) - if(strlen($msg) and ($image != "")) { + if(strlen($msg) && ($image != "")) { $img_str = fetch_url($image); $tempfile = tempnam(get_temppath(), "cache"); @@ -528,7 +528,7 @@ function twitter_post_hook(&$a,&$b) { if ($result->source) set_config("twitter", "application_name", strip_tags($result->source)); - if ($result->errors OR $result->error) { + if ($result->errors || $result->error) { logger('Send to Twitter failed: "' . print_r($result->errors, true) . '"'); // Workaround: Remove the picture link so that the post can be reposted without it @@ -544,7 +544,7 @@ function twitter_post_hook(&$a,&$b) { } } - if(strlen($msg) and ($image == "")) { + if(strlen($msg) && ($image == "")) { $url = 'statuses/update'; $post = array('status' => $msg); @@ -625,7 +625,12 @@ function twitter_cron($a,$b) { if(count($r)) { foreach($r as $rr) { logger('twitter: fetching for user '.$rr['uid']); - twitter_fetchtimeline($a, $rr['uid']); + + if (get_config("system", "worker")) { + proc_run(PRIORITY_MEDIUM, "addon/twitter/twitter_sync.php", 1, $rr['uid']); + } else { + twitter_fetchtimeline($a, $rr['uid']); + } } } @@ -647,8 +652,12 @@ function twitter_cron($a,$b) { } logger('twitter: importing timeline from user '.$rr['uid']); - twitter_fetchhometimeline($a, $rr["uid"]); + if (get_config("system", "worker")) { + proc_run(PRIORITY_MEDIUM, "addon/twitter/twitter_sync.php", 2, $rr['uid']); + } else { + twitter_fetchhometimeline($a, $rr["uid"]); + } /* // To-Do // check for new contacts once a day @@ -679,7 +688,15 @@ function twitter_expire($a,$b) { if ($days == 0) return; - $r = q("DELETE FROM `item` WHERE `deleted` AND `network` = '%s'", dbesc(NETWORK_TWITTER)); + if (method_exists('dba', 'delete')) { + $r = dba::select('item', array('id'), array('deleted' => true, 'network' => NETWORK_TWITTER)); + while ($row = dba::fetch($r)) { + dba::delete('item', array('id' => $row['id'])); + } + dba::close($r); + } else { + $r = q("DELETE FROM `item` WHERE `deleted` AND `network` = '%s'", dbesc(NETWORK_TWITTER)); + } require_once("include/items.php"); @@ -717,7 +734,7 @@ function twitter_prepare_body(&$a,&$b) { $nickname = "@[url=".$orig_post["author-link"]."]".$nicknameplain."[/url]"; $nicknameplain = "@".$nicknameplain; - if ((strpos($item["body"], $nickname) === false) AND (strpos($item["body"], $nicknameplain) === false)) + if ((strpos($item["body"], $nickname) === false) && (strpos($item["body"], $nicknameplain) === false)) $item["body"] = $nickname." ".$item["body"]; } @@ -725,7 +742,7 @@ function twitter_prepare_body(&$a,&$b) { $msgarr = plaintext($a, $item, $max_char, true, 8); $msg = $msgarr["text"]; - if (isset($msgarr["url"]) AND ($msgarr["type"] != "photo")) + if (isset($msgarr["url"]) && ($msgarr["type"] != "photo")) $msg .= " ".$msgarr["url"]; if (isset($msgarr["image"])) @@ -858,7 +875,7 @@ function twitter_queue_hook(&$a,&$b) { logger('twitter_queue: run'); - $r = q("SELECT `user`.* FROM `user` LEFT JOIN `contact` on `contact`.`uid` = `user`.`uid` + $r = q("SELECT `user`.* FROM `user` LEFT JOIN `contact` on `contact`.`uid` = `user`.`uid` WHERE `contact`.`self` = 1 AND `contact`.`id` = %d LIMIT 1", intval($x['cid']) ); @@ -874,7 +891,7 @@ function twitter_queue_hook(&$a,&$b) { $success = false; - if ($ckey AND $csecret AND $otoken AND $osecret) { + if ($ckey && $csecret && $otoken && $osecret) { logger('twitter_queue: able to post'); @@ -926,54 +943,29 @@ function twitter_fetch_contact($uid, $contact, $create_user) { $avatar = twitter_fix_avatar($contact->profile_image_url_https); - if (function_exists("update_gcontact")) - update_gcontact(array("url" => "https://twitter.com/".$contact->screen_name, - "network" => NETWORK_TWITTER, "photo" => $avatar, "hide" => true, - "name" => $contact->name, "nick" => $contact->screen_name, - "location" => $contact->location, "about" => $contact->description, - "addr" => $contact->screen_name."@twitter.com", "generation" => 2)); - else { - // Old Code - $r = q("SELECT id FROM unique_contacts WHERE url='%s' LIMIT 1", - dbesc(normalise_link("https://twitter.com/".$contact->screen_name))); - - if (count($r) == 0) - q("INSERT INTO unique_contacts (url, name, nick, avatar) VALUES ('%s', '%s', '%s', '%s')", - dbesc(normalise_link("https://twitter.com/".$contact->screen_name)), - dbesc($contact->name), - dbesc($contact->screen_name), - 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($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))); - } + update_gcontact(array("url" => "https://twitter.com/".$contact->screen_name, + "network" => NETWORK_TWITTER, "photo" => $avatar, "hide" => true, + "name" => $contact->name, "nick" => $contact->screen_name, + "location" => $contact->location, "about" => $contact->description, + "addr" => $contact->screen_name."@twitter.com", "generation" => 2)); $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `alias` = '%s' LIMIT 1", intval($uid), dbesc("twitter::".$contact->id_str)); - if(!count($r) AND !$create_user) + if(!count($r) && !$create_user) return(0); - if (count($r) AND ($r[0]["readonly"] OR $r[0]["blocked"])) { + if (count($r) && ($r[0]["readonly"] || $r[0]["blocked"])) { logger("twitter_fetch_contact: Contact '".$r[0]["nick"]."' is blocked or readonly.", LOGGER_DEBUG); return(-1); } if(!count($r)) { // create contact record - q("INSERT INTO `contact` ( `uid`, `created`, `url`, `nurl`, `addr`, `alias`, `notify`, `poll`, + 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) ", + `location`, `about`, `writable`, `blocked`, `readonly`, `pending`) + VALUES (%d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', '%s', %d, 0, 0, 0)", intval($uid), dbesc(datetime_convert()), dbesc("https://twitter.com/".$contact->screen_name), @@ -988,6 +980,8 @@ function twitter_fetch_contact($uid, $contact, $create_user) { dbesc(NETWORK_TWITTER), intval(CONTACT_IS_FRIEND), intval(1), + dbesc($contact->location), + dbesc($contact->description), intval(1) ); @@ -1012,33 +1006,25 @@ function twitter_fetch_contact($uid, $contact, $create_user) { require_once("Photo.php"); - $photos = import_profile_photo($avatar,$uid,$contact_id); - - 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) - ); + $photos = import_profile_photo($avatar, $uid, $contact_id, true); - if (DB_UPDATE_VERSION >= "1177") - q("UPDATE `contact` SET `location` = '%s', - `about` = '%s' + if ($photos) { + q("UPDATE `contact` SET `photo` = '%s', + `thumb` = '%s', + `micro` = '%s', + `name-date` = '%s', + `uri-date` = '%s', + `avatar-date` = '%s' WHERE `id` = %d", - dbesc($contact->location), - dbesc($contact->description), + dbesc($photos[0]), + dbesc($photos[1]), + dbesc($photos[2]), + dbesc(datetime_convert()), + dbesc(datetime_convert()), + dbesc(datetime_convert()), intval($contact_id) ); - + } } else { // update profile photos once every two weeks as we have no notification of when they change. @@ -1053,42 +1039,39 @@ function twitter_fetch_contact($uid, $contact, $create_user) { require_once("Photo.php"); - $photos = import_profile_photo($avatar, $uid, $r[0]['id']); - - q("UPDATE `contact` SET `photo` = '%s', - `thumb` = '%s', - `micro` = '%s', - `name-date` = '%s', - `uri-date` = '%s', - `avatar-date` = '%s', - `url` = '%s', - `nurl` = '%s', - `addr` = '%s', - `name` = '%s', - `nick` = '%s' - WHERE `id` = %d", - dbesc($photos[0]), - dbesc($photos[1]), - dbesc($photos[2]), - dbesc(datetime_convert()), - dbesc(datetime_convert()), - dbesc(datetime_convert()), - dbesc("https://twitter.com/".$contact->screen_name), - dbesc(normalise_link("https://twitter.com/".$contact->screen_name)), - dbesc($contact->screen_name."@twitter.com"), - dbesc($contact->name), - dbesc($contact->screen_name), - intval($r[0]['id']) - ); - - if (DB_UPDATE_VERSION >= "1177") - q("UPDATE `contact` SET `location` = '%s', + $photos = import_profile_photo($avatar, $uid, $r[0]['id'], true); + + if ($photos) { + q("UPDATE `contact` SET `photo` = '%s', + `thumb` = '%s', + `micro` = '%s', + `name-date` = '%s', + `uri-date` = '%s', + `avatar-date` = '%s', + `url` = '%s', + `nurl` = '%s', + `addr` = '%s', + `name` = '%s', + `nick` = '%s', + `location` = '%s', `about` = '%s' WHERE `id` = %d", + dbesc($photos[0]), + dbesc($photos[1]), + dbesc($photos[2]), + dbesc(datetime_convert()), + dbesc(datetime_convert()), + dbesc(datetime_convert()), + dbesc("https://twitter.com/".$contact->screen_name), + dbesc(normalise_link("https://twitter.com/".$contact->screen_name)), + dbesc($contact->screen_name."@twitter.com"), + dbesc($contact->name), + dbesc($contact->screen_name), dbesc($contact->location), dbesc($contact->description), intval($r[0]['id']) ); + } } } @@ -1152,14 +1135,14 @@ function twitter_expand_entities($a, $body, $item, $no_tags = false, $picture) { $plain = str_replace($url->url, '', $plain); - if ($url->url AND $url->expanded_url AND $url->display_url) { + if ($url->url && $url->expanded_url && $url->display_url) { $expanded_url = original_url($url->expanded_url); $oembed_data = oembed_fetch_url($expanded_url); // Quickfix: Workaround for URL with "[" and "]" in it - if (strpos($expanded_url, "[") OR strpos($expanded_url, "]")) + if (strpos($expanded_url, "[") || strpos($expanded_url, "]")) $expanded_url = $url->url; if ($type == "") @@ -1175,7 +1158,7 @@ function twitter_expand_entities($a, $body, $item, $no_tags = false, $picture) { $body = str_replace($url->url, $footerlink, $body); //} elseif (($oembed_data->type == "photo") AND isset($oembed_data->url) AND !$dontincludemedia) { - } elseif (($oembed_data->type == "photo") AND isset($oembed_data->url)) { + } elseif (($oembed_data->type == "photo") && isset($oembed_data->url)) { $body = str_replace($url->url, "[url=".$expanded_url."][img]".$oembed_data->url."[/img][/url]", $body); @@ -1210,18 +1193,18 @@ function twitter_expand_entities($a, $body, $item, $no_tags = false, $picture) { if ($footerurl != "") $footer = add_page_info($footerurl, false, $picture); - if (($footerlink != "") AND (trim($footer) != "")) { + if (($footerlink != "") && (trim($footer) != "")) { $removedlink = trim(str_replace($footerlink, "", $body)); - if (($removedlink == "") OR strstr($body, $removedlink)) + if (($removedlink == "") || strstr($body, $removedlink)) $body = $removedlink; $body .= $footer; } - if (($footer == "") AND ($picture != "")) + if (($footer == "") && ($picture != "")) $body .= "\n\n[img]".$picture."[/img]\n"; - elseif (($footer == "") AND ($picture == "")) + elseif (($footer == "") && ($picture == "")) $body = add_page_info_to_body($body); if ($no_tags) @@ -1301,7 +1284,7 @@ function twitter_media_entities($post, &$postarray) { // When the post links to an external page, we only take one picture. // We only do this when there is exactly one media. - if ((count($post->entities->urls) > 0) AND (count($post->extended_entities->media) == 1)) { + if ((count($post->entities->urls) > 0) && (count($post->extended_entities->media) == 1)) { $picture = ""; foreach($post->extended_entities->media AS $medium) { if (isset($medium->media_url_https)) { @@ -1328,7 +1311,7 @@ function twitter_media_entities($post, &$postarray) { $bitrate = 0; // We take the video with the highest bitrate foreach ($medium->video_info->variants AS $variant) { - if (($variant->content_type == "video/mp4") AND ($variant->bitrate >= $bitrate)) { + if (($variant->content_type == "video/mp4") && ($variant->bitrate >= $bitrate)) { $media[$medium->url] = "\n[video]".$variant->url."[/video]"; $bitrate = $variant->bitrate; } @@ -1434,7 +1417,7 @@ function twitter_createpost($a, $uid, $post, $self, $create_user, $only_existing $postarray['owner-avatar'] = twitter_fix_avatar($post->user->profile_image_url_https); } - if(($contactid == 0) AND !$only_existing_contact) { + if(($contactid == 0) && !$only_existing_contact) { $contactid = $self['id']; } elseif ($contactid <= 0) { logger("Contact ID is zero or less than zero.", LOGGER_DEBUG); @@ -1503,7 +1486,7 @@ function twitter_createpost($a, $uid, $post, $self, $create_user, $only_existing $postarray = $retweet; } - if (is_object($post->quoted_status) AND !$noquote) { + if (is_object($post->quoted_status) && !$noquote) { $quoted = twitter_createpost($a, $uid, $post->quoted_status, $self, false, false, true); $postarray['body'] = $statustext; @@ -1554,7 +1537,7 @@ function twitter_checknotification($a, $uid, $own_id, $top_item, $postarray) { foreach($myconv as $conv) { // now if we find a match, it means we're in this conversation - if(!link_compare($conv['author-link'],$user[0]["url"]) AND !link_compare($conv['author-link'],$own_user[0]["url"])) + if(!link_compare($conv['author-link'],$user[0]["url"]) && !link_compare($conv['author-link'],$own_user[0]["url"])) continue; require_once('include/enotify.php'); @@ -1626,7 +1609,7 @@ function twitter_fetchparentposts($a, $uid, $post, $connection, $self, $own_id) logger('twitter_fetchparentpost: User '.$self["nick"].' posted parent timeline item '.$item); - if ($item AND !function_exists("check_item_notification")) + if ($item && !function_exists("check_item_notification")) twitter_checknotification($a, $uid, $own_id, $item, $postarray); } } @@ -1738,7 +1721,7 @@ function twitter_fetchhometimeline($a, $uid) { logger('twitter_fetchhometimeline: User '.$self["nick"].' posted home timeline item '.$item); - if ($item AND !function_exists("check_item_notification")) + if ($item && !function_exists("check_item_notification")) twitter_checknotification($a, $uid, $own_id, $item, $postarray); } @@ -1783,10 +1766,10 @@ function twitter_fetchhometimeline($a, $uid) { $item = item_store($postarray); $postarray["id"] = $item; - if ($item AND function_exists("check_item_notification")) + if ($item && function_exists("check_item_notification")) check_item_notification($item, $uid, NOTIFY_TAGSELF); - if (!isset($postarray["parent"]) OR ($postarray["parent"] == 0)) + if (!isset($postarray["parent"]) || ($postarray["parent"] == 0)) $postarray["parent"] = $item; logger('twitter_fetchhometimeline: User '.$self["nick"].' posted mention timeline item '.$item); @@ -1803,7 +1786,7 @@ function twitter_fetchhometimeline($a, $uid) { } else $parent_id = $postarray['parent']; - if (($item != 0) AND !function_exists("check_item_notification")) { + if (($item != 0) && !function_exists("check_item_notification")) { require_once('include/enotify.php'); notification(array( 'type' => NOTIFY_TAGSELF,