X-Git-Url: https://git.mxchange.org/?p=friendica-addons.git;a=blobdiff_plain;f=statusnet%2Fstatusnet.php;h=c54ff55f6c923ce65d4b4e3051bf2d770144884c;hp=4b36859c1e4574a77d83e0c807d63d28142d7222;hb=3268eecd722126c532f9cef18b8657c10046a89e;hpb=6e6f64a5374772aca891464ebb08e70aac53c12c diff --git a/statusnet/statusnet.php b/statusnet/statusnet.php index 4b36859c..c54ff55f 100644 --- a/statusnet/statusnet.php +++ b/statusnet/statusnet.php @@ -33,143 +33,58 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ -/* - * We have to alter the TwitterOAuth class a little bit to work with any GNU Social - * installation abroad. Basically it's only make the API path variable and be happy. - * - * Thank you guys for the Twitter compatible API! - */ - define('STATUSNET_DEFAULT_POLL_INTERVAL', 5); // given in minutes -require_once 'library/twitteroauth.php'; +require_once __DIR__ . DIRECTORY_SEPARATOR . 'library' . DIRECTORY_SEPARATOR . 'statusnetoauth.php'; require_once 'include/enotify.php'; +use Codebird\Codebird; +use CodebirdSN\CodebirdSN; use Friendica\App; +use Friendica\Content\OEmbed; +use Friendica\Content\Text\BBCode; +use Friendica\Content\Text\Plaintext; +use Friendica\Core\Addon; use Friendica\Core\Config; +use Friendica\Core\L10n; use Friendica\Core\PConfig; use Friendica\Model\GContact; use Friendica\Model\Group; +use Friendica\Model\Item; use Friendica\Model\Photo; use Friendica\Model\User; - -class StatusNetOAuth extends TwitterOAuth -{ - function get_maxlength() - { - $config = $this->get($this->host . 'statusnet/config.json'); - return $config->site->textlimit; - } - - function accessTokenURL() - { - return $this->host . 'oauth/access_token'; - } - - function authenticateURL() - { - return $this->host . 'oauth/authenticate'; - } - - function authorizeURL() - { - return $this->host . 'oauth/authorize'; - } - - function requestTokenURL() - { - return $this->host . 'oauth/request_token'; - } - - function __construct($apipath, $consumer_key, $consumer_secret, $oauth_token = NULL, $oauth_token_secret = NULL) - { - parent::__construct($consumer_key, $consumer_secret, $oauth_token, $oauth_token_secret); - $this->host = $apipath; - } - - /** - * Make an HTTP request - * - * @return API results - * - * Copied here from the twitteroauth library and complemented by applying the proxy settings of friendica - */ - function http($url, $method, $postfields = NULL) - { - $this->http_info = array(); - $ci = curl_init(); - /* Curl settings */ - $prx = Config::get('system', 'proxy'); - if (strlen($prx)) { - curl_setopt($ci, CURLOPT_HTTPPROXYTUNNEL, 1); - curl_setopt($ci, CURLOPT_PROXY, $prx); - $prxusr = Config::get('system', 'proxyuser'); - if (strlen($prxusr)) { - curl_setopt($ci, CURLOPT_PROXYUSERPWD, $prxusr); - } - } - curl_setopt($ci, CURLOPT_USERAGENT, $this->useragent); - curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, $this->connecttimeout); - curl_setopt($ci, CURLOPT_TIMEOUT, $this->timeout); - curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE); - curl_setopt($ci, CURLOPT_HTTPHEADER, array('Expect:')); - curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, $this->ssl_verifypeer); - curl_setopt($ci, CURLOPT_HEADERFUNCTION, array($this, 'getHeader')); - curl_setopt($ci, CURLOPT_HEADER, FALSE); - - switch ($method) { - case 'POST': - curl_setopt($ci, CURLOPT_POST, TRUE); - if (!empty($postfields)) { - curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields); - } - break; - case 'DELETE': - curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'DELETE'); - if (!empty($postfields)) { - $url = "{$url}?{$postfields}"; - } - } - - curl_setopt($ci, CURLOPT_URL, $url); - $response = curl_exec($ci); - $this->http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE); - $this->http_info = array_merge($this->http_info, curl_getinfo($ci)); - $this->url = $url; - curl_close($ci); - return $response; - } -} +use Friendica\Util\DateTimeFormat; +use Friendica\Util\Network; function statusnet_install() { // we need some hooks, for the configuration and for sending tweets - register_hook('connector_settings', 'addon/statusnet/statusnet.php', 'statusnet_settings'); - register_hook('connector_settings_post', 'addon/statusnet/statusnet.php', 'statusnet_settings_post'); - register_hook('notifier_normal', 'addon/statusnet/statusnet.php', 'statusnet_post_hook'); - register_hook('post_local', 'addon/statusnet/statusnet.php', 'statusnet_post_local'); - register_hook('jot_networks', 'addon/statusnet/statusnet.php', 'statusnet_jot_nets'); - register_hook('cron', 'addon/statusnet/statusnet.php', 'statusnet_cron'); - register_hook('prepare_body', 'addon/statusnet/statusnet.php', 'statusnet_prepare_body'); - register_hook('check_item_notification', 'addon/statusnet/statusnet.php', 'statusnet_check_item_notification'); + Addon::registerHook('connector_settings', 'addon/statusnet/statusnet.php', 'statusnet_settings'); + Addon::registerHook('connector_settings_post', 'addon/statusnet/statusnet.php', 'statusnet_settings_post'); + Addon::registerHook('notifier_normal', 'addon/statusnet/statusnet.php', 'statusnet_post_hook'); + Addon::registerHook('post_local', 'addon/statusnet/statusnet.php', 'statusnet_post_local'); + Addon::registerHook('jot_networks', 'addon/statusnet/statusnet.php', 'statusnet_jot_nets'); + Addon::registerHook('cron', 'addon/statusnet/statusnet.php', 'statusnet_cron'); + Addon::registerHook('prepare_body', 'addon/statusnet/statusnet.php', 'statusnet_prepare_body'); + Addon::registerHook('check_item_notification', 'addon/statusnet/statusnet.php', 'statusnet_check_item_notification'); logger("installed GNU Social"); } function statusnet_uninstall() { - unregister_hook('connector_settings', 'addon/statusnet/statusnet.php', 'statusnet_settings'); - unregister_hook('connector_settings_post', 'addon/statusnet/statusnet.php', 'statusnet_settings_post'); - unregister_hook('notifier_normal', 'addon/statusnet/statusnet.php', 'statusnet_post_hook'); - unregister_hook('post_local', 'addon/statusnet/statusnet.php', 'statusnet_post_local'); - unregister_hook('jot_networks', 'addon/statusnet/statusnet.php', 'statusnet_jot_nets'); - unregister_hook('cron', 'addon/statusnet/statusnet.php', 'statusnet_cron'); - unregister_hook('prepare_body', 'addon/statusnet/statusnet.php', 'statusnet_prepare_body'); - unregister_hook('check_item_notification', 'addon/statusnet/statusnet.php', 'statusnet_check_item_notification'); + Addon::unregisterHook('connector_settings', 'addon/statusnet/statusnet.php', 'statusnet_settings'); + Addon::unregisterHook('connector_settings_post', 'addon/statusnet/statusnet.php', 'statusnet_settings_post'); + Addon::unregisterHook('notifier_normal', 'addon/statusnet/statusnet.php', 'statusnet_post_hook'); + Addon::unregisterHook('post_local', 'addon/statusnet/statusnet.php', 'statusnet_post_local'); + Addon::unregisterHook('jot_networks', 'addon/statusnet/statusnet.php', 'statusnet_jot_nets'); + Addon::unregisterHook('cron', 'addon/statusnet/statusnet.php', 'statusnet_cron'); + Addon::unregisterHook('prepare_body', 'addon/statusnet/statusnet.php', 'statusnet_prepare_body'); + Addon::unregisterHook('check_item_notification', 'addon/statusnet/statusnet.php', 'statusnet_check_item_notification'); // old setting - remove only - unregister_hook('post_local_end', 'addon/statusnet/statusnet.php', 'statusnet_post_hook'); - unregister_hook('plugin_settings', 'addon/statusnet/statusnet.php', 'statusnet_settings'); - unregister_hook('plugin_settings_post', 'addon/statusnet/statusnet.php', 'statusnet_settings_post'); + Addon::unregisterHook('post_local_end', 'addon/statusnet/statusnet.php', 'statusnet_post_hook'); + Addon::unregisterHook('addon_settings', 'addon/statusnet/statusnet.php', 'statusnet_settings'); + Addon::unregisterHook('addon_settings_post', 'addon/statusnet/statusnet.php', 'statusnet_settings_post'); } function statusnet_check_item_notification(App $a, &$notification_data) @@ -188,7 +103,7 @@ function statusnet_jot_nets(App $a, &$b) $statusnet_defpost = PConfig::get(local_user(), 'statusnet', 'post_by_default'); $selected = ((intval($statusnet_defpost) == 1) ? ' checked="checked" ' : ''); $b .= '
' - . t('Post to GNU Social') . '
'; + . L10n::t('Post to GNU Social') . ''; } } @@ -229,25 +144,25 @@ function statusnet_settings_post(App $a, $post) foreach ($globalsn as $asn) { if ($asn['apiurl'] == $_POST['statusnet-preconf-apiurl']) { $apibase = $asn['apiurl']; - $c = fetch_url($apibase . 'statusnet/version.xml'); + $c = Network::fetchUrl($apibase . 'statusnet/version.xml'); if (strlen($c) > 0) { PConfig::set(local_user(), 'statusnet', 'consumerkey', $asn['consumerkey']); PConfig::set(local_user(), 'statusnet', 'consumersecret', $asn['consumersecret']); PConfig::set(local_user(), 'statusnet', 'baseapi', $asn['apiurl']); //PConfig::set(local_user(), 'statusnet', 'application_name', $asn['applicationname'] ); } else { - notice(t('Please contact your site administrator.
The provided API URL is not valid.') . EOL . $asn['apiurl'] . EOL); + notice(L10n::t('Please contact your site administrator.
The provided API URL is not valid.') . EOL . $asn['apiurl'] . EOL); } } } - goaway($a->get_baseurl() . '/settings/connectors'); + goaway('settings/connectors'); } else { if (isset($_POST['statusnet-consumersecret'])) { // check if we can reach the API of the GNU Social server // we'll check the API Version for that, if we don't get one we'll try to fix the path but will // resign quickly after this one try to fix the path ;-) $apibase = $_POST['statusnet-baseapi']; - $c = fetch_url($apibase . 'statusnet/version.xml'); + $c = Network::fetchUrl($apibase . 'statusnet/version.xml'); if (strlen($c) > 0) { // ok the API path is correct, let's save the settings PConfig::set(local_user(), 'statusnet', 'consumerkey', $_POST['statusnet-consumerkey']); @@ -257,7 +172,7 @@ function statusnet_settings_post(App $a, $post) } else { // the API path is not correct, maybe missing trailing / ? $apibase = $apibase . '/'; - $c = fetch_url($apibase . 'statusnet/version.xml'); + $c = Network::fetchUrl($apibase . 'statusnet/version.xml'); if (strlen($c) > 0) { // ok the API path is now correct, let's save the settings PConfig::set(local_user(), 'statusnet', 'consumerkey', $_POST['statusnet-consumerkey']); @@ -265,10 +180,10 @@ function statusnet_settings_post(App $a, $post) PConfig::set(local_user(), 'statusnet', 'baseapi', $apibase); } else { // still not the correct API base, let's do noting - notice(t('We could not contact the GNU Social API with the Path you entered.') . EOL); + notice(L10n::t('We could not contact the GNU Social API with the Path you entered.') . EOL); } } - goaway($a->get_baseurl() . '/settings/connectors'); + goaway('settings/connectors'); } else { if (isset($_POST['statusnet-pin'])) { // if the user supplied us with a PIN from GNU Social, let the magic of OAuth happen @@ -286,7 +201,7 @@ function statusnet_settings_post(App $a, $post) PConfig::set(local_user(), 'statusnet', 'post', 1); PConfig::set(local_user(), 'statusnet', 'post_taglinks', 1); // reload the Addon Settings page, if we don't do it see Bug #42 - goaway($a->get_baseurl() . '/settings/connectors'); + goaway('settings/connectors'); } else { // if no PIN is supplied in the POST variables, the user has changed the setting // to post a dent for every new __public__ posting to the wall @@ -299,7 +214,7 @@ function statusnet_settings_post(App $a, $post) if (!intval($_POST['statusnet-mirror'])) PConfig::delete(local_user(), 'statusnet', 'lastid'); - info(t('GNU Social settings updated.') . EOL); + info(L10n::t('GNU Social settings updated.') . EOL); } } } @@ -330,7 +245,7 @@ function statusnet_settings(App $a, &$s) $mirrorenabled = PConfig::get(local_user(), 'statusnet', 'mirror_posts'); $mirrorchecked = (($mirrorenabled) ? ' checked="checked" ' : ''); $import = PConfig::get(local_user(), 'statusnet', 'import'); - $importselected = array("", "", ""); + $importselected = ["", "", ""]; $importselected[$import] = ' selected="selected"'; //$importenabled = PConfig::get(local_user(),'statusnet','import'); //$importchecked = (($importenabled) ? ' checked="checked" ' : ''); @@ -340,11 +255,11 @@ function statusnet_settings(App $a, &$s) $css = (($enabled) ? '' : '-disabled'); $s .= ''; - $s .= '

' . t('GNU Social Import/Export/Mirror') . '

'; + $s .= '

' . L10n::t('GNU Social Import/Export/Mirror') . '

'; $s .= '
'; $s .= '
'; @@ -567,19 +482,21 @@ function statusnet_post_hook(App $a, &$b) $nicknameplain = "@" . $nick; logger("statusnet_post_hook: comparing " . $nickname . " and " . $nicknameplain . " with " . $b["body"], LOGGER_DEBUG); - if ((strpos($b["body"], $nickname) === false) && (strpos($b["body"], $nicknameplain) === false)) + if ((strpos($b["body"], $nickname) === false) && (strpos($b["body"], $nicknameplain) === false)) { $b["body"] = $nickname . " " . $b["body"]; + } logger("statusnet_post_hook: parent found " . print_r($orig_post, true), LOGGER_DEBUG); } else { $iscomment = false; - if ($b['private'] || !strstr($b['postopts'], 'statusnet')) + if ($b['private'] || !strstr($b['postopts'], 'statusnet')) { return; + } // Dont't post if the post doesn't belong to us. // This is a check for forum postings - $self = dba::select('contact', array('id'), array('uid' => $b['uid'], 'self' => true), array('limit' => 1)); + $self = dba::selectFirst('contact', ['id'], ['uid' => $b['uid'], 'self' => true]); if ($b['contact-id'] != $self['id']) { return; } @@ -627,44 +544,36 @@ function statusnet_post_hook(App $a, &$b) return; } - require_once 'include/bbcode.php'; $dent = new StatusNetOAuth($api, $ckey, $csecret, $otoken, $osecret); $max_char = $dent->get_maxlength(); // max. length for a dent PConfig::set($b['uid'], 'statusnet', 'max_char', $max_char); $tempfile = ""; - require_once "include/plaintext.php"; - require_once "include/network.php"; - $msgarr = plaintext($a, $b, $max_char, true, 7); + $msgarr = BBCode::toPlaintext($b, $max_char, true, 7); $msg = $msgarr["text"]; if (($msg == "") && isset($msgarr["title"])) - $msg = shortenmsg($msgarr["title"], $max_char - 50); + $msg = Plaintext::shorten($msgarr["title"], $max_char - 50); $image = ""; if (isset($msgarr["url"]) && ($msgarr["type"] != "photo")) { - if ((strlen($msgarr["url"]) > 20) && - ((strlen($msg . " \n" . $msgarr["url"]) > $max_char))) { - $msg .= " \n" . short_link($msgarr["url"]); - } else { - $msg .= " \n" . $msgarr["url"]; - } + $msg .= " \n" . $msgarr["url"]; } elseif (isset($msgarr["image"]) && ($msgarr["type"] != "video")) { $image = $msgarr["image"]; } if ($image != "") { - $img_str = fetch_url($image); + $img_str = Network::fetchUrl($image); $tempfile = tempnam(get_temppath(), "cache"); file_put_contents($tempfile, $img_str); - $postdata = array("status" => $msg, "media[]" => $tempfile); + $postdata = ["status" => $msg, "media[]" => $tempfile]; } else { - $postdata = array("status" => $msg); + $postdata = ["status" => $msg]; } - // and now dent it :-) + // and now send it :-) if (strlen($msg)) { if ($iscomment) { $postdata["in_reply_to_status_id"] = substr($orig_post["uri"], $hostlength); @@ -672,7 +581,7 @@ function statusnet_post_hook(App $a, &$b) } // New code that is able to post pictures - require_once "addon/statusnet/codebird.php"; + require_once __DIR__ . DIRECTORY_SEPARATOR . 'library' . DIRECTORY_SEPARATOR . 'codebirdsn.php'; $cb = \CodebirdSN\CodebirdSN::getInstance(); $cb->setAPIEndpoint($api); $cb->setConsumerKey($ckey, $csecret); @@ -690,11 +599,7 @@ function statusnet_post_hook(App $a, &$b) logger('Send to GNU Social failed: "' . $result->error . '"'); } elseif ($iscomment) { logger('statusnet_post: Update extid ' . $result->id . " for post id " . $b['id']); - q("UPDATE `item` SET `extid` = '%s', `body` = '%s' WHERE `id` = %d", - dbesc($hostname . "::" . $result->id), - dbesc($result->text), - intval($b['id']) - ); + Item::update(['extid' => $hostname . "::" . $result->id, 'body' => $result->text], ['id' => $b['id']]); } } if ($tempfile != "") { @@ -703,9 +608,9 @@ function statusnet_post_hook(App $a, &$b) } } -function statusnet_plugin_admin_post(App $a) +function statusnet_addon_admin_post(App $a) { - $sites = array(); + $sites = []; foreach ($_POST['sitename'] as $id => $sitename) { $sitename = trim($sitename); @@ -722,50 +627,50 @@ function statusnet_plugin_admin_post(App $a) $key != "" && !x($_POST['delete'][$id])) { - $sites[] = Array( + $sites[] = [ 'sitename' => $sitename, 'apiurl' => $apiurl, 'consumersecret' => $secret, 'consumerkey' => $key, //'applicationname' => $applicationname - ); + ]; } } $sites = Config::set('statusnet', 'sites', $sites); } -function statusnet_plugin_admin(App $a, &$o) +function statusnet_addon_admin(App $a, &$o) { $sites = Config::get('statusnet', 'sites'); - $sitesform = array(); + $sitesform = []; if (is_array($sites)) { foreach ($sites as $id => $s) { - $sitesform[] = Array( - 'sitename' => Array("sitename[$id]", "Site name", $s['sitename'], ""), - 'apiurl' => Array("apiurl[$id]", "Api url", $s['apiurl'], t("Base API Path \x28remember the trailing /\x29")), - 'secret' => Array("secret[$id]", "Secret", $s['consumersecret'], ""), - 'key' => Array("key[$id]", "Key", $s['consumerkey'], ""), + $sitesform[] = [ + 'sitename' => ["sitename[$id]", "Site name", $s['sitename'], ""], + 'apiurl' => ["apiurl[$id]", "Api url", $s['apiurl'], L10n::t("Base API Path \x28remember the trailing /\x29")], + 'secret' => ["secret[$id]", "Secret", $s['consumersecret'], ""], + 'key' => ["key[$id]", "Key", $s['consumerkey'], ""], //'applicationname' => Array("applicationname[$id]", "Application name", $s['applicationname'], ""), - 'delete' => Array("delete[$id]", "Delete", False, "Check to delete this preset"), - ); + 'delete' => ["delete[$id]", "Delete", False, "Check to delete this preset"], + ]; } } /* empty form to add new site */ $id++; - $sitesform[] = Array( - 'sitename' => Array("sitename[$id]", t("Site name"), "", ""), - 'apiurl' => Array("apiurl[$id]", "Api url", "", t("Base API Path \x28remember the trailing /\x29")), - 'secret' => Array("secret[$id]", t("Consumer Secret"), "", ""), - 'key' => Array("key[$id]", t("Consumer Key"), "", ""), - //'applicationname' => Array("applicationname[$id]", t("Application name"), "", ""), - ); + $sitesform[] = [ + 'sitename' => ["sitename[$id]", L10n::t("Site name"), "", ""], + 'apiurl' => ["apiurl[$id]", "Api url", "", L10n::t("Base API Path \x28remember the trailing /\x29")], + 'secret' => ["secret[$id]", L10n::t("Consumer Secret"), "", ""], + 'key' => ["key[$id]", L10n::t("Consumer Key"), "", ""], + //'applicationname' => Array("applicationname[$id]", L10n::t("Application name"), "", ""), + ]; $t = get_markup_template("admin.tpl", "addon/statusnet/"); - $o = replace_macros($t, array( - '$submit' => t('Save Settings'), + $o = replace_macros($t, [ + '$submit' => L10n::t('Save Settings'), '$sites' => $sitesform, - )); + ]); } function statusnet_prepare_body(App $a, &$b) @@ -780,7 +685,6 @@ function statusnet_prepare_body(App $a, &$b) $max_char = 140; } - require_once "include/plaintext.php"; $item = $b["item"]; $item["plink"] = $a->get_baseurl() . "/display/" . $a->user["nickname"] . "/" . $item["parent"]; @@ -805,7 +709,7 @@ function statusnet_prepare_body(App $a, &$b) } } - $msgarr = plaintext($a, $item, $max_char, true, 7); + $msgarr = BBCode::toPlaintext($item, $max_char, true, 7); $msg = $msgarr["text"]; if (isset($msgarr["url"]) && ($msgarr["type"] != "photo")) { @@ -851,7 +755,7 @@ function statusnet_cron(App $a, $b) $abandon_days = 0; } - $abandon_limit = date("Y-m-d H:i:s", time() - $abandon_days * 86400); + $abandon_limit = date(DateTimeFormat::MYSQL, time() - $abandon_days * 86400); $r = q("SELECT * FROM `pconfig` WHERE `cat` = 'statusnet' AND `k` = 'import' AND `v` ORDER BY RAND()"); if (count($r)) { @@ -899,7 +803,7 @@ function statusnet_fetchtimeline(App $a, $uid) $connection = new StatusNetOAuth($api, $ckey, $csecret, $otoken, $osecret); - $parameters = array("exclude_replies" => true, "trim_user" => true, "contributor_details" => false, "include_rts" => false); + $parameters = ["exclude_replies" => true, "trim_user" => true, "contributor_details" => false, "include_rts" => false]; $first_time = ($lastid == ""); @@ -1003,11 +907,11 @@ function statusnet_fetch_contact($uid, $contact, $create_user) return -1; } - GContact::update(array("url" => $contact->statusnet_profile_url, + GContact::update(["url" => $contact->statusnet_profile_url, "network" => NETWORK_STATUSNET, "photo" => $contact->profile_image_url, "name" => $contact->name, "nick" => $contact->screen_name, "location" => $contact->location, "about" => $contact->description, - "addr" => statusnet_address($contact), "generation" => 3)); + "addr" => statusnet_address($contact), "generation" => 3]); $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `alias` = '%s' AND `network` = '%s'LIMIT 1", intval($uid), dbesc(normalise_link($contact->statusnet_profile_url)), dbesc(NETWORK_STATUSNET)); @@ -1027,7 +931,7 @@ function statusnet_fetch_contact($uid, $contact, $create_user) `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(DateTimeFormat::utcNow()), dbesc($contact->statusnet_profile_url), dbesc(normalise_link($contact->statusnet_profile_url)), dbesc(statusnet_address($contact)), @@ -1068,13 +972,13 @@ function statusnet_fetch_contact($uid, $contact, $create_user) dbesc($photos[0]), dbesc($photos[1]), dbesc($photos[2]), - dbesc(datetime_convert()), + dbesc(DateTimeFormat::utcNow()), intval($contact_id) ); } else { // update profile photos once every two weeks as we have no notification of when they change. - //$update_photo = (($r[0]['avatar-date'] < datetime_convert('','','now -2 days')) ? true : false); - $update_photo = ($r[0]['avatar-date'] < datetime_convert('', '', 'now -12 hours')); + //$update_photo = (($r[0]['avatar-date'] < DateTimeFormat::convert('now -2 days', '', '', )) ? true : false); + $update_photo = ($r[0]['avatar-date'] < DateTimeFormat::utc('now -12 hours')); // check that we have all the photos, this has been known to fail on occasion if ((!$r[0]['photo']) || (!$r[0]['thumb']) || (!$r[0]['micro']) || ($update_photo)) { @@ -1099,9 +1003,9 @@ function statusnet_fetch_contact($uid, $contact, $create_user) dbesc($photos[0]), dbesc($photos[1]), dbesc($photos[2]), - dbesc(datetime_convert()), - dbesc(datetime_convert()), - dbesc(datetime_convert()), + dbesc(DateTimeFormat::utcNow()), + dbesc(DateTimeFormat::utcNow()), + dbesc(DateTimeFormat::utcNow()), dbesc($contact->statusnet_profile_url), dbesc(normalise_link($contact->statusnet_profile_url)), dbesc(statusnet_address($contact)), @@ -1125,9 +1029,9 @@ function statusnet_fetchuser(App $a, $uid, $screen_name = "", $user_id = "") $otoken = PConfig::get($uid, 'statusnet', 'oauthtoken'); $osecret = PConfig::get($uid, 'statusnet', 'oauthsecret'); - require_once "addon/statusnet/codebird.php"; + require_once __DIR__ . DIRECTORY_SEPARATOR . 'library' . DIRECTORY_SEPARATOR . 'codebirdsn.php'; - $cb = \Codebird\Codebird::getInstance(); + $cb = \CodebirdSN\CodebirdSN::getInstance(); $cb->setConsumerKey($ckey, $csecret); $cb->setToken($otoken, $osecret); @@ -1140,7 +1044,7 @@ function statusnet_fetchuser(App $a, $uid, $screen_name = "", $user_id = "") return; } - $parameters = array(); + $parameters = []; if ($screen_name != "") { $parameters["screen_name"] = $screen_name; @@ -1171,7 +1075,7 @@ function statusnet_createpost(App $a, $uid, $post, $self, $create_user, $only_ex $api = PConfig::get($uid, 'statusnet', 'baseapi'); $hostname = preg_replace("=https?://([\w\.]*)/.*=ism", "$1", $api); - $postarray = array(); + $postarray = []; $postarray['network'] = NETWORK_STATUSNET; $postarray['gravity'] = 0; $postarray['uid'] = $uid; @@ -1192,7 +1096,7 @@ function statusnet_createpost(App $a, $uid, $post, $self, $create_user, $only_ex ); if (count($r)) { - return array(); + return []; } $contactid = 0; @@ -1241,7 +1145,7 @@ function statusnet_createpost(App $a, $uid, $post, $self, $create_user, $only_ex $postarray['owner-link'] = $r[0]["url"]; $postarray['owner-avatar'] = $r[0]["photo"]; } else { - return array(); + return []; } } // Don't create accounts of people who just comment something @@ -1260,7 +1164,7 @@ function statusnet_createpost(App $a, $uid, $post, $self, $create_user, $only_ex if (($contactid == 0) && !$only_existing_contact) { $contactid = $self['id']; } elseif ($contactid <= 0) { - return array(); + return []; } $postarray['contact-id'] = $contactid; @@ -1288,8 +1192,8 @@ function statusnet_createpost(App $a, $uid, $post, $self, $create_user, $only_ex $postarray['body'] = $converted["body"]; $postarray['tag'] = $converted["tags"]; - $postarray['created'] = datetime_convert('UTC', 'UTC', $content->created_at); - $postarray['edited'] = datetime_convert('UTC', 'UTC', $content->created_at); + $postarray['created'] = DateTimeFormat::utc($content->created_at); + $postarray['edited'] = DateTimeFormat::utc($content->created_at); if (is_string($content->place->name)) { $postarray["location"] = $content->place->name; @@ -1358,7 +1262,7 @@ function statusnet_checknotification(App $a, $uid, $own_url, $top_item, $postarr $conv_parent = $conv['parent']; - notification(array( + notification([ 'type' => NOTIFY_COMMENT, 'notify_flags' => $user[0]['notify-flags'], 'language' => $user[0]['language'], @@ -1366,14 +1270,14 @@ function statusnet_checknotification(App $a, $uid, $own_url, $top_item, $postarr 'to_email' => $user[0]['email'], 'uid' => $user[0]['uid'], 'item' => $postarray, - 'link' => $a->get_baseurl() . '/display/' . urlencode(get_item_guid($top_item)), + 'link' => $a->get_baseurl() . '/display/' . urlencode(Item::getGuidById($top_item)), 'source_name' => $postarray['author-name'], 'source_link' => $postarray['author-link'], 'source_photo' => $postarray['author-avatar'], 'verb' => ACTIVITY_POST, 'otype' => 'item', 'parent' => $conv_parent, - )); + ]); // only send one notification break; @@ -1383,7 +1287,7 @@ function statusnet_checknotification(App $a, $uid, $own_url, $top_item, $postarr function statusnet_fetchhometimeline(App $a, $uid, $mode = 1) { - $conversations = array(); + $conversations = []; $ckey = PConfig::get($uid, 'statusnet', 'consumerkey'); $csecret = PConfig::get($uid, 'statusnet', 'consumersecret'); @@ -1397,7 +1301,6 @@ function statusnet_fetchhometimeline(App $a, $uid, $mode = 1) logger("statusnet_fetchhometimeline: Fetching for user " . $uid, LOGGER_DEBUG); - require_once 'library/twitteroauth.php'; require_once 'include/items.php'; $connection = new StatusNetOAuth($api, $ckey, $csecret, $otoken, $osecret); @@ -1432,7 +1335,7 @@ function statusnet_fetchhometimeline(App $a, $uid, $mode = 1) return; } - $parameters = array("exclude_replies" => false, "trim_user" => false, "contributor_details" => true, "include_rts" => true); + $parameters = ["exclude_replies" => false, "trim_user" => false, "contributor_details" => true, "include_rts" => true]; //$parameters["count"] = 200; if ($mode == 1) { @@ -1490,7 +1393,7 @@ function statusnet_fetchhometimeline(App $a, $uid, $mode = 1) continue; } - $item = item_store($postarray); + $item = Item::insert($postarray); $postarray["id"] = $item; logger('statusnet_fetchhometimeline: User ' . $self["nick"] . ' posted home timeline item ' . $item); @@ -1545,7 +1448,7 @@ function statusnet_fetchhometimeline(App $a, $uid, $mode = 1) continue; } - $item = item_store($postarray); + $item = Item::insert($postarray); $postarray["id"] = $item; logger('statusnet_fetchhometimeline: User ' . $self["nick"] . ' posted mention timeline item ' . $item); @@ -1566,7 +1469,7 @@ function statusnet_fetchhometimeline(App $a, $uid, $mode = 1) if (($item != 0) && !function_exists("check_item_notification")) { require_once 'include/enotify.php'; - notification(array( + notification([ 'type' => NOTIFY_TAGSELF, 'notify_flags' => $u[0]['notify-flags'], 'language' => $u[0]['language'], @@ -1574,14 +1477,14 @@ function statusnet_fetchhometimeline(App $a, $uid, $mode = 1) 'to_email' => $u[0]['email'], 'uid' => $u[0]['uid'], 'item' => $postarray, - 'link' => $a->get_baseurl() . '/display/' . urlencode(get_item_guid($item)), + 'link' => $a->get_baseurl() . '/display/' . urlencode(Item::getGuidById($item)), 'source_name' => $postarray['author-name'], 'source_link' => $postarray['author-link'], 'source_photo' => $postarray['author-avatar'], 'verb' => ACTIVITY_TAG, 'otype' => 'item', 'parent' => $parent_id, - )); + ]); } } } @@ -1598,8 +1501,6 @@ function statusnet_complete_conversation(App $a, $uid, $self, $create_user, $nic $osecret = PConfig::get($uid, 'statusnet', 'oauthsecret'); $own_url = PConfig::get($uid, 'statusnet', 'own_url'); - require_once 'library/twitteroauth.php'; - $connection = new StatusNetOAuth($api, $ckey, $csecret, $otoken, $osecret); $parameters["count"] = 200; @@ -1608,14 +1509,14 @@ function statusnet_complete_conversation(App $a, $uid, $self, $create_user, $nic if (is_array($items)) { $posts = array_reverse($items); - foreach ($posts AS $post) { + foreach ($posts as $post) { $postarray = statusnet_createpost($a, $uid, $post, $self, false, false); if (trim($postarray['body']) == "") { continue; } - $item = item_store($postarray); + $item = Item::insert($postarray); $postarray["id"] = $item; logger('statusnet_complete_conversation: User ' . $self["nick"] . ' posted home timeline item ' . $item); @@ -1629,9 +1530,7 @@ function statusnet_complete_conversation(App $a, $uid, $self, $create_user, $nic function statusnet_convertmsg(App $a, $body, $no_tags = false) { - require_once "include/oembed.php"; require_once "include/items.php"; - require_once "include/network.php"; $body = preg_replace("=\[url\=https?://([0-9]*).([0-9]*).([0-9]*).([0-9]*)/([0-9]*)\](.*?)\[\/url\]=ism", "$1.$2.$3.$4/$5", $body); @@ -1649,11 +1548,11 @@ function statusnet_convertmsg(App $a, $body, $no_tags = false) logger("statusnet_convertmsg: expanding url " . $match[1], LOGGER_DEBUG); - $expanded_url = original_url($match[1]); + $expanded_url = Network::finalUrl($match[1]); logger("statusnet_convertmsg: fetching data for " . $expanded_url, LOGGER_DEBUG); - $oembed_data = oembed_fetch_url($expanded_url, true); + $oembed_data = OEmbed::fetchURL($expanded_url, true); logger("statusnet_convertmsg: fetching data: done", LOGGER_DEBUG); @@ -1673,7 +1572,7 @@ function statusnet_convertmsg(App $a, $body, $no_tags = false) } elseif ($oembed_data->type != "link") { $body = str_replace($search, "[url=" . $expanded_url . "]" . $expanded_url . "[/url]", $body); } else { - $img_str = fetch_url($expanded_url, true, $redirects, 4); + $img_str = Network::fetchUrl($expanded_url, true, $redirects, 4); $tempfile = tempnam(get_temppath(), "cache"); file_put_contents($tempfile, $img_str); @@ -1709,7 +1608,7 @@ function statusnet_convertmsg(App $a, $body, $no_tags = false) } if ($no_tags) { - return array("body" => $body, "tags" => ""); + return ["body" => $body, "tags" => ""]; } $str_tags = ''; @@ -1737,7 +1636,7 @@ function statusnet_convertmsg(App $a, $body, $no_tags = false) } } - return array("body" => $body, "tags" => $str_tags); + return ["body" => $body, "tags" => $str_tags]; } function statusnet_fetch_own_contact(App $a, $uid) @@ -1752,8 +1651,6 @@ function statusnet_fetch_own_contact(App $a, $uid) $contact_id = 0; if ($own_url == "") { - require_once 'library/twitteroauth.php'; - $connection = new StatusNetOAuth($api, $ckey, $csecret, $otoken, $osecret); // Fetching user data