X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=twitter%2Ftwitter.php;h=18625f8b8ff634ec684bca80f4433b4f1d3ae838;hb=2ca621a92a40fba62f8e9acf7eba3a47a5d2ed7b;hp=176cb22b8102452603dbb26b0a7aa5033b63df0e;hpb=3492cdb07740762d2066a07267c07b73a1f69882;p=friendica-addons.git
diff --git a/twitter/twitter.php b/twitter/twitter.php
index 176cb22b..18625f8b 100644
--- a/twitter/twitter.php
+++ b/twitter/twitter.php
@@ -78,15 +78,17 @@ use Friendica\Core\Protocol;
use Friendica\Core\Renderer;
use Friendica\Core\Worker;
use Friendica\Database\DBA;
+use Friendica\DI;
use Friendica\Model\Contact;
use Friendica\Model\Conversation;
use Friendica\Model\Group;
use Friendica\Model\Item;
use Friendica\Model\ItemContent;
use Friendica\Model\User;
-use Friendica\Object\Image;
+use Friendica\Protocol\Activity;
use Friendica\Util\ConfigFileLoader;
use Friendica\Util\DateTimeFormat;
+use Friendica\Util\Images;
use Friendica\Util\Network;
use Friendica\Util\Strings;
@@ -109,7 +111,7 @@ function twitter_install()
Hook::register('expire' , __FILE__, 'twitter_expire');
Hook::register('prepare_body' , __FILE__, 'twitter_prepare_body');
Hook::register('check_item_notification', __FILE__, 'twitter_check_item_notification');
- Logger::log("installed twitter");
+ Logger::info("installed twitter");
}
function twitter_uninstall()
@@ -154,7 +156,7 @@ function twitter_check_item_notification(App $a, array &$notification_data)
function twitter_follow(App $a, array &$contact)
{
- Logger::log("twitter_follow: Check if contact is twitter contact. " . $contact["url"], Logger::DEBUG);
+ Logger::info('Check if contact is twitter contact', ['url' => $contact["url"]]);
if (!strstr($contact["url"], "://twitter.com") && !strstr($contact["url"], "@twitter.com")) {
return;
@@ -239,7 +241,7 @@ function twitter_settings_post(App $a)
} else {
if (isset($_POST['twitter-pin'])) {
// if the user supplied us with a PIN from Twitter, let the magic of OAuth happen
- Logger::log('got a Twitter PIN');
+ Logger::notice('got a Twitter PIN');
$ckey = Config::get('twitter', 'consumerkey');
$csecret = Config::get('twitter', 'consumersecret');
// the token and secret for which the PIN was generated were hidden in the settings
@@ -262,7 +264,7 @@ function twitter_settings_post(App $a)
info($e->getMessage());
}
// reload the Addon Settings page, if we don't do it see Bug #42
- $a->internalRedirect('settings/connectors');
+ DI::baseUrl()->redirect('settings/connectors');
} else {
// if no PIN is supplied in the POST variables, the user has changed the setting
// to post a tweet for every new __public__ posting to the wall
@@ -286,7 +288,7 @@ function twitter_settings(App $a, &$s)
if (!local_user()) {
return;
}
- $a->page['htmlhead'] .= '' . "\r\n";
+ DI::page()['htmlhead'] .= '' . "\r\n";
/* * *
* 1) Check that we have global consumer key & secret
* 2) If no OAuthtoken & stuff is present, generate button to get some
@@ -428,7 +430,7 @@ function twitter_hook_fork(App $a, array &$b)
if (PConfig::get($post['uid'], 'twitter', 'import')) {
// Don't fork if it isn't a reply to a twitter post
if (($post['parent'] != $post['id']) && !Item::exists(['id' => $post['parent'], 'network' => Protocol::TWITTER])) {
- Logger::log('No twitter parent found for item ' . $post['id']);
+ Logger::notice('No twitter parent found', ['item' => $post['id']]);
$b['execute'] = false;
return;
}
@@ -556,11 +558,11 @@ function twitter_post_hook(App $a, array &$b)
}
}
- if (($b['verb'] == ACTIVITY_POST) && $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) {
+ if ($b['verb'] == Activity::LIKE) {
Logger::log("twitter_post_hook: parameter 2 " . substr($b["thr-parent"], 9), Logger::DEBUG);
if ($b['deleted']) {
twitter_action($a, $b["uid"], substr($b["thr-parent"], 9), "unlike");
@@ -623,14 +625,14 @@ function twitter_post_hook(App $a, array &$b)
$b['body'] = twitter_update_mentions($b['body']);
$msgarr = ItemContent::getPlaintextPost($b, $max_char, true, 8);
- Logger::info('Got plaintext', $msgarr);
+ Logger::info('Got plaintext', ['id' => $b['id'], 'message' => $msgarr]);
$msg = $msgarr["text"];
if (($msg == "") && isset($msgarr["title"])) {
$msg = Plaintext::shorten($msgarr["title"], $max_char - 50);
}
- if (($msgarr['url'] == $b['plink']) && !empty($msgarr['images']) && (count($msgarr['images']) <= 4)) {
+ if (!empty($msgarr['url']) && ($msgarr['url'] == $b['plink']) && !empty($msgarr['images']) && (count($msgarr['images']) <= 4)) {
$url_added = false;
} elseif (isset($msgarr["url"]) && ($msgarr["type"] != "photo")) {
$msg .= "\n" . $msgarr["url"];
@@ -640,6 +642,7 @@ function twitter_post_hook(App $a, array &$b)
}
if (empty($msg)) {
+ Logger::info('Empty message', ['id' => $b['id']]);
return;
}
@@ -647,6 +650,7 @@ function twitter_post_hook(App $a, array &$b)
$post = [];
if (!empty($msgarr['images'])) {
+ Logger::info('Got images', ['id' => $b['id'], 'images' => $msgarr['images']]);
try {
$media_ids = [];
foreach ($msgarr['images'] as $image) {
@@ -659,6 +663,7 @@ function twitter_post_hook(App $a, array &$b)
$tempfile = tempnam(get_temppath(), 'cache');
file_put_contents($tempfile, $img_str);
+ Logger::info('Uploading', ['id' => $b['id'], 'image' => $image['url']]);
$media = $connection->upload('media/upload', ['media' => $tempfile]);
unlink($tempfile);
@@ -670,10 +675,10 @@ function twitter_post_hook(App $a, array &$b)
$data = ['media_id' => $media->media_id_string,
'alt_text' => ['text' => substr($image['description'], 0, 420)]];
$ret = $cb->media_metadata_create($data);
- Logger::info('Metadata create', ['data' => $data, 'return' => json_encode($ret)]);
+ Logger::info('Metadata create', ['id' => $b['id'], 'data' => $data, 'return' => json_encode($ret)]);
}
} else {
- throw new Exception('Failed upload of ' . $image['url']);
+ throw new Exception('Failed upload', ['id' => $b['id'], 'image' => $image['url']]);
}
}
$post['media_ids'] = implode(',', $media_ids);
@@ -681,7 +686,7 @@ function twitter_post_hook(App $a, array &$b)
unset($post['media_ids']);
}
} catch (Exception $e) {
- Logger::log('Exception when trying to send to Twitter: ' . $e->getMessage());
+ Logger::info('Exception when trying to send to Twitter', ['id' => $b['id'], 'message' => $e->getMessage()]);
}
}
@@ -693,17 +698,17 @@ function twitter_post_hook(App $a, array &$b)
$url = 'statuses/update';
$result = $connection->post($url, $post);
- Logger::log('twitter_post send, result: ' . print_r($result, true), Logger::DEBUG);
+ Logger::info('twitter_post send', ['id' => $b['id'], 'result' => $result]);
if (!empty($result->source)) {
Config::set("twitter", "application_name", strip_tags($result->source));
}
if (!empty($result->errors)) {
- Logger::log('Send to Twitter failed: "' . print_r($result->errors, true) . '"');
+ Logger::info('Send to Twitter failed', ['id' => $b['id'], 'error' => $result->errors]);
Worker::defer();
} elseif ($iscomment) {
- Logger::log('twitter_post: Update extid ' . $result->id_str . " for post id " . $b['id']);
+ Logger::info('Update extid', ['id' => $b['id'], 'extid' => $result->id_str]);
Item::update(['extid' => "twitter::" . $result->id_str], ['id' => $b['id']]);
}
}
@@ -742,16 +747,16 @@ function twitter_cron(App $a)
if ($last) {
$next = $last + ($poll_interval * 60);
if ($next > time()) {
- Logger::log('twitter: poll intervall not reached');
+ Logger::notice('twitter: poll intervall not reached');
return;
}
}
- Logger::log('twitter: cron_start');
+ Logger::notice('twitter: cron_start');
$r = q("SELECT * FROM `pconfig` WHERE `cat` = 'twitter' AND `k` = 'mirror_posts' AND `v` = '1'");
if (DBA::isResult($r)) {
foreach ($r as $rr) {
- Logger::log('twitter: fetching for user ' . $rr['uid']);
+ Logger::notice('Fetching', ['user' => $rr['uid']]);
Worker::add(['priority' => PRIORITY_MEDIUM, 'force_priority' => true], "addon/twitter/twitter_sync.php", 1, (int) $rr['uid']);
}
}
@@ -769,12 +774,12 @@ function twitter_cron(App $a)
if ($abandon_days != 0) {
$user = q("SELECT `login_date` FROM `user` WHERE uid=%d AND `login_date` >= '%s'", $rr['uid'], $abandon_limit);
if (!DBA::isResult($user)) {
- Logger::log('abandoned account: timeline from user ' . $rr['uid'] . ' will not be imported');
+ Logger::notice('abandoned account: timeline from user will not be imported', ['user' => $rr['uid']]);
continue;
}
}
- Logger::log('twitter: importing timeline from user ' . $rr['uid']);
+ Logger::notice('importing timeline', ['user' => $rr['uid']]);
Worker::add(['priority' => PRIORITY_MEDIUM, 'force_priority' => true], "addon/twitter/twitter_sync.php", 2, (int) $rr['uid']);
/*
// To-Do
@@ -793,7 +798,7 @@ function twitter_cron(App $a)
}
}
- Logger::log('twitter: cron_end');
+ Logger::notice('twitter: cron_end');
Config::set('twitter', 'last_poll', time());
}
@@ -812,17 +817,17 @@ function twitter_expire(App $a)
}
DBA::close($r);
- Logger::log('twitter_expire: expire_start');
+ Logger::notice('twitter_expire: expire_start');
$r = q("SELECT * FROM `pconfig` WHERE `cat` = 'twitter' AND `k` = 'import' AND `v` = '1' ORDER BY RAND()");
if (DBA::isResult($r)) {
foreach ($r as $rr) {
- Logger::log('twitter_expire: user ' . $rr['uid']);
+ Logger::notice('twitter_expire', ['user' => $rr['uid']]);
Item::expire($rr['uid'], $days, Protocol::TWITTER, true);
}
}
- Logger::log('twitter_expire: expire_end');
+ Logger::notice('twitter_expire: expire_end');
}
function twitter_prepare_body(App $a, array &$b)
@@ -834,7 +839,7 @@ function twitter_prepare_body(App $a, array &$b)
if ($b["preview"]) {
$max_char = 280;
$item = $b["item"];
- $item["plink"] = $a->getBaseURL() . "/display/" . $item["guid"];
+ $item["plink"] = DI::baseUrl()->get() . "/display/" . $item["guid"];
$condition = ['uri' => $item["thr-parent"], 'uid' => local_user()];
$orig_post = Item::selectFirst(['author-link'], $condition);
@@ -935,7 +940,7 @@ function twitter_fetchtimeline(App $a, $uid)
$application_name = Config::get('twitter', 'application_name');
if ($application_name == "") {
- $application_name = $a->getHostName();
+ $application_name = DI::baseUrl()->getHostname();
}
$has_picture = false;
@@ -956,12 +961,12 @@ function twitter_fetchtimeline(App $a, $uid)
try {
$items = $connection->get('statuses/user_timeline', $parameters);
} catch (TwitterOAuthException $e) {
- Logger::log('Error fetching timeline for user ' . $uid . ': ' . $e->getMessage());
+ Logger::notice('Error fetching timeline', ['user' => $uid, 'message' => $e->getMessage()]);
return;
}
if (!is_array($items)) {
- Logger::log('No items for user ' . $uid, Logger::INFO);
+ Logger::notice('No items', ['user' => $uid]);
return;
}
@@ -1006,7 +1011,7 @@ function twitter_fix_avatar($avatar)
{
$new_avatar = str_replace("_normal.", ".", $avatar);
- $info = Image::getInfoFromURL($new_avatar);
+ $info = Images::getInfoFromURLCached($new_avatar);
if (!$info) {
$new_avatar = $avatar;
}
@@ -1141,7 +1146,7 @@ function twitter_expand_entities(App $a, $body, $item, $picture)
$tags_arr = [];
foreach ($item->entities->hashtags AS $hashtag) {
- $url = '#[url=' . $a->getBaseURL() . '/search?tag=' . $hashtag->text . ']' . $hashtag->text . '[/url]';
+ $url = '#[url=' . DI::baseUrl()->get() . '/search?tag=' . $hashtag->text . ']' . $hashtag->text . '[/url]';
$tags_arr['#' . $hashtag->text] = $url;
$body = str_replace('#' . $hashtag->text, $url, $body);
}
@@ -1274,7 +1279,7 @@ function twitter_expand_entities(App $a, $body, $item, $picture)
}
$basetag = str_replace('_', ' ', substr($tag, 1));
- $url = '#[url=' . $a->getBaseURL() . '/search?tag=' . $basetag . ']' . $basetag . '[/url]';
+ $url = '#[url=' . DI::baseUrl()->get() . '/search?tag=' . $basetag . ']' . $basetag . '[/url]';
$body = str_replace($tag, $url, $body);
$tags_arr['#' . $basetag] = $url;
} elseif (strpos($tag, '@') === 0) {
@@ -1340,7 +1345,7 @@ function twitter_media_entities($post, array &$postarray)
$media[$medium->url] .= "\n[img]" . $medium->media_url_https . '[/img]';
}
- $postarray['object-type'] = ACTIVITY_OBJ_IMAGE;
+ $postarray['object-type'] = Activity\ObjectType::IMAGE;
break;
case 'video':
case 'animated_gif':
@@ -1351,7 +1356,7 @@ function twitter_media_entities($post, array &$postarray)
$media[$medium->url] .= "\n[img]" . $medium->media_url_https . '[/img]';
}
- $postarray['object-type'] = ACTIVITY_OBJ_VIDEO;
+ $postarray['object-type'] = Activity\ObjectType::VIDEO;
if (is_array($medium->video_info->variants)) {
$bitrate = 0;
// We take the video with the highest bitrate
@@ -1408,11 +1413,11 @@ function twitter_createpost(App $a, $uid, $post, array $self, $create_user, $onl
$postarray['thr-parent'] = $parent_item['uri'];
$postarray['parent-uri'] = $parent_item['parent-uri'];
$postarray['parent'] = $parent_item['parent'];
- $postarray['object-type'] = ACTIVITY_OBJ_COMMENT;
+ $postarray['object-type'] = Activity\ObjectType::COMMENT;
} else {
$postarray['thr-parent'] = $postarray['uri'];
$postarray['parent-uri'] = $postarray['uri'];
- $postarray['object-type'] = ACTIVITY_OBJ_NOTE;
+ $postarray['object-type'] = Activity\ObjectType::NOTE;
}
// Is it me?
@@ -1437,7 +1442,7 @@ function twitter_createpost(App $a, $uid, $post, array $self, $create_user, $onl
$create_user = false;
} else {
$postarray['parent-uri'] = $postarray['uri'];
- $postarray['object-type'] = ACTIVITY_OBJ_NOTE;
+ $postarray['object-type'] = Activity\ObjectType::NOTE;
}
if ($contactid == 0) {
@@ -1457,7 +1462,7 @@ function twitter_createpost(App $a, $uid, $post, array $self, $create_user, $onl
$postarray['contact-id'] = $contactid;
- $postarray['verb'] = ACTIVITY_POST;
+ $postarray['verb'] = Activity::POST;
$postarray['author-name'] = $postarray['owner-name'];
$postarray['author-link'] = $postarray['owner-link'];
$postarray['author-avatar'] = $postarray['owner-avatar'];
@@ -1480,7 +1485,7 @@ function twitter_createpost(App $a, $uid, $post, array $self, $create_user, $onl
// When the post contains links then use the correct object type
if (count($post->entities->urls) > 0) {
- $postarray['object-type'] = ACTIVITY_OBJ_BOOKMARK;
+ $postarray['object-type'] = Activity\ObjectType::BOOKMARK;
}
// Search for media links
@@ -1518,9 +1523,9 @@ function twitter_createpost(App $a, $uid, $post, array $self, $create_user, $onl
Item::insert($retweet);
// CHange the other post into a reshare activity
- $postarray['verb'] = ACTIVITY2_ANNOUNCE;
+ $postarray['verb'] = Activity::ANNOUNCE;
$postarray['gravity'] = GRAVITY_ACTIVITY;
- $postarray['object-type'] = ACTIVITY_OBJ_NOTE;
+ $postarray['object-type'] = Activity\ObjectType::NOTE;
$postarray['thr-parent'] = $retweet['uri'];
$postarray['parent-uri'] = $retweet['uri'];
@@ -1628,7 +1633,7 @@ function twitter_fetchhometimeline(App $a, $uid)
$application_name = Config::get('twitter', 'application_name');
if ($application_name == "") {
- $application_name = $a->getHostName();
+ $application_name = DI::baseUrl()->getHostname();
}
$connection = new TwitterOAuth($ckey, $csecret, $otoken, $osecret);