X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=statusnet%2Fstatusnet.php;h=0ed0f55c048d4040a5567e4d792e2bdf11dbc3b2;hb=7509ce88b934a321369f5eeb5eb2b371b222878d;hp=42c31d7581e403e4f529b5abb33f91a08338a477;hpb=2454a963e094ec34fb42e72a0c988898f9bd1bde;p=friendica-addons.git diff --git a/statusnet/statusnet.php b/statusnet/statusnet.php index 42c31d75..0ed0f55c 100644 --- a/statusnet/statusnet.php +++ b/statusnet/statusnet.php @@ -36,79 +36,84 @@ define('STATUSNET_DEFAULT_POLL_INTERVAL', 5); // given in minutes require_once __DIR__ . DIRECTORY_SEPARATOR . 'library' . DIRECTORY_SEPARATOR . 'statusnetoauth.php'; -require_once 'include/enotify.php'; use CodebirdSN\CodebirdSN; use Friendica\App; use Friendica\Content\OEmbed; use Friendica\Content\Text\HTML; use Friendica\Content\Text\Plaintext; -use Friendica\Core\Addon; -use Friendica\Core\Config; -use Friendica\Core\L10n; -use Friendica\Core\PConfig; +use Friendica\Core\Hook; +use Friendica\Core\Logger; use Friendica\Core\Protocol; +use Friendica\Core\Renderer; use Friendica\Database\DBA; +use Friendica\DI; use Friendica\Model\Contact; -use Friendica\Model\GContact; use Friendica\Model\Group; use Friendica\Model\Item; use Friendica\Model\ItemContent; use Friendica\Model\Photo; use Friendica\Model\User; +use Friendica\Protocol\Activity; use Friendica\Util\DateTimeFormat; use Friendica\Util\Network; +use Friendica\Util\Strings; function statusnet_install() { // we need some hooks, for the configuration and for sending tweets - 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"); + Hook::register('connector_settings', 'addon/statusnet/statusnet.php', 'statusnet_settings'); + Hook::register('connector_settings_post', 'addon/statusnet/statusnet.php', 'statusnet_settings_post'); + Hook::register('notifier_normal', 'addon/statusnet/statusnet.php', 'statusnet_post_hook'); + Hook::register('hook_fork', 'addon/statusnet/statusnet.php', 'statusnet_hook_fork'); + Hook::register('post_local', 'addon/statusnet/statusnet.php', 'statusnet_post_local'); + Hook::register('jot_networks', 'addon/statusnet/statusnet.php', 'statusnet_jot_nets'); + Hook::register('cron', 'addon/statusnet/statusnet.php', 'statusnet_cron'); + Hook::register('prepare_body', 'addon/statusnet/statusnet.php', 'statusnet_prepare_body'); + Hook::register('check_item_notification', 'addon/statusnet/statusnet.php', 'statusnet_check_item_notification'); + Logger::log("installed GNU Social"); } function statusnet_uninstall() { - 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'); + Hook::unregister('connector_settings', 'addon/statusnet/statusnet.php', 'statusnet_settings'); + Hook::unregister('connector_settings_post', 'addon/statusnet/statusnet.php', 'statusnet_settings_post'); + Hook::unregister('notifier_normal', 'addon/statusnet/statusnet.php', 'statusnet_post_hook'); + Hook::unregister('hook_fork', 'addon/statusnet/statusnet.php', 'statusnet_hook_fork'); + Hook::unregister('post_local', 'addon/statusnet/statusnet.php', 'statusnet_post_local'); + Hook::unregister('jot_networks', 'addon/statusnet/statusnet.php', 'statusnet_jot_nets'); + Hook::unregister('cron', 'addon/statusnet/statusnet.php', 'statusnet_cron'); + Hook::unregister('prepare_body', 'addon/statusnet/statusnet.php', 'statusnet_prepare_body'); + Hook::unregister('check_item_notification', 'addon/statusnet/statusnet.php', 'statusnet_check_item_notification'); // old setting - remove only - 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'); + Hook::unregister('post_local_end', 'addon/statusnet/statusnet.php', 'statusnet_post_hook'); + Hook::unregister('addon_settings', 'addon/statusnet/statusnet.php', 'statusnet_settings'); + Hook::unregister('addon_settings_post', 'addon/statusnet/statusnet.php', 'statusnet_settings_post'); } function statusnet_check_item_notification(App $a, &$notification_data) { - if (PConfig::get($notification_data["uid"], 'statusnet', 'post')) { - $notification_data["profiles"][] = PConfig::get($notification_data["uid"], 'statusnet', 'own_url'); + if (DI::pConfig()->get($notification_data["uid"], 'statusnet', 'post')) { + $notification_data["profiles"][] = DI::pConfig()->get($notification_data["uid"], 'statusnet', 'own_url'); } } -function statusnet_jot_nets(App $a, &$b) +function statusnet_jot_nets(App $a, array &$jotnets_fields) { if (!local_user()) { return; } - $statusnet_post = PConfig::get(local_user(), 'statusnet', 'post'); - if (intval($statusnet_post) == 1) { - $statusnet_defpost = PConfig::get(local_user(), 'statusnet', 'post_by_default'); - $selected = ((intval($statusnet_defpost) == 1) ? ' checked="checked" ' : ''); - $b .= '
' - . L10n::t('Post to GNU Social') . '
'; + if (DI::pConfig()->get(local_user(), 'statusnet', 'post')) { + $jotnets_fields[] = [ + 'type' => 'checkbox', + 'field' => [ + 'statusnet_enable', + DI::l10n()->t('Post to GNU Social'), + DI::pConfig()->get(local_user(), 'statusnet', 'post_by_default') + ] + ]; } } @@ -118,7 +123,7 @@ function statusnet_settings_post(App $a, $post) return; } // don't check GNU Social settings if GNU Social submit button is not clicked - if (!x($_POST, 'statusnet-submit')) { + if (empty($_POST['statusnet-submit'])) { return; } @@ -126,18 +131,18 @@ function statusnet_settings_post(App $a, $post) /* * * * if the GNU Social-disconnect checkbox is set, clear the GNU Social configuration */ - PConfig::delete(local_user(), 'statusnet', 'consumerkey'); - PConfig::delete(local_user(), 'statusnet', 'consumersecret'); - PConfig::delete(local_user(), 'statusnet', 'post'); - PConfig::delete(local_user(), 'statusnet', 'post_by_default'); - PConfig::delete(local_user(), 'statusnet', 'oauthtoken'); - PConfig::delete(local_user(), 'statusnet', 'oauthsecret'); - PConfig::delete(local_user(), 'statusnet', 'baseapi'); - PConfig::delete(local_user(), 'statusnet', 'lastid'); - PConfig::delete(local_user(), 'statusnet', 'mirror_posts'); - PConfig::delete(local_user(), 'statusnet', 'import'); - PConfig::delete(local_user(), 'statusnet', 'create_user'); - PConfig::delete(local_user(), 'statusnet', 'own_url'); + DI::pConfig()->delete(local_user(), 'statusnet', 'consumerkey'); + DI::pConfig()->delete(local_user(), 'statusnet', 'consumersecret'); + DI::pConfig()->delete(local_user(), 'statusnet', 'post'); + DI::pConfig()->delete(local_user(), 'statusnet', 'post_by_default'); + DI::pConfig()->delete(local_user(), 'statusnet', 'oauthtoken'); + DI::pConfig()->delete(local_user(), 'statusnet', 'oauthsecret'); + DI::pConfig()->delete(local_user(), 'statusnet', 'baseapi'); + DI::pConfig()->delete(local_user(), 'statusnet', 'lastid'); + DI::pConfig()->delete(local_user(), 'statusnet', 'mirror_posts'); + DI::pConfig()->delete(local_user(), 'statusnet', 'import'); + DI::pConfig()->delete(local_user(), 'statusnet', 'create_user'); + DI::pConfig()->delete(local_user(), 'statusnet', 'own_url'); } else { if (isset($_POST['statusnet-preconf-apiurl'])) { /* * * @@ -145,22 +150,22 @@ function statusnet_settings_post(App $a, $post) * use them. All the data are available in the global config. * Check the API Url never the less and blame the admin if it's not working ^^ */ - $globalsn = Config::get('statusnet', 'sites'); + $globalsn = DI::config()->get('statusnet', 'sites'); foreach ($globalsn as $asn) { if ($asn['apiurl'] == $_POST['statusnet-preconf-apiurl']) { $apibase = $asn['apiurl']; $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'] ); + DI::pConfig()->set(local_user(), 'statusnet', 'consumerkey', $asn['consumerkey']); + DI::pConfig()->set(local_user(), 'statusnet', 'consumersecret', $asn['consumersecret']); + DI::pConfig()->set(local_user(), 'statusnet', 'baseapi', $asn['apiurl']); + //DI::pConfig()->set(local_user(), 'statusnet', 'application_name', $asn['applicationname'] ); } else { - notice(L10n::t('Please contact your site administrator.
The provided API URL is not valid.') . EOL . $asn['apiurl'] . EOL); + notice(DI::l10n()->t('Please contact your site administrator.
The provided API URL is not valid.') . EOL . $asn['apiurl'] . EOL); } } } - goaway('settings/connectors'); + DI::baseUrl()->redirect('settings/connectors'); } else { if (isset($_POST['statusnet-consumersecret'])) { // check if we can reach the API of the GNU Social server @@ -170,56 +175,56 @@ function statusnet_settings_post(App $a, $post) $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']); - PConfig::set(local_user(), 'statusnet', 'consumersecret', $_POST['statusnet-consumersecret']); - PConfig::set(local_user(), 'statusnet', 'baseapi', $apibase); - //PConfig::set(local_user(), 'statusnet', 'application_name', $_POST['statusnet-applicationname'] ); + DI::pConfig()->set(local_user(), 'statusnet', 'consumerkey', $_POST['statusnet-consumerkey']); + DI::pConfig()->set(local_user(), 'statusnet', 'consumersecret', $_POST['statusnet-consumersecret']); + DI::pConfig()->set(local_user(), 'statusnet', 'baseapi', $apibase); + //DI::pConfig()->set(local_user(), 'statusnet', 'application_name', $_POST['statusnet-applicationname'] ); } else { // the API path is not correct, maybe missing trailing / ? $apibase = $apibase . '/'; $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']); - PConfig::set(local_user(), 'statusnet', 'consumersecret', $_POST['statusnet-consumersecret']); - PConfig::set(local_user(), 'statusnet', 'baseapi', $apibase); + DI::pConfig()->set(local_user(), 'statusnet', 'consumerkey', $_POST['statusnet-consumerkey']); + DI::pConfig()->set(local_user(), 'statusnet', 'consumersecret', $_POST['statusnet-consumersecret']); + DI::pConfig()->set(local_user(), 'statusnet', 'baseapi', $apibase); } else { // still not the correct API base, let's do noting - notice(L10n::t('We could not contact the GNU Social API with the Path you entered.') . EOL); + notice(DI::l10n()->t('We could not contact the GNU Social API with the Path you entered.') . EOL); } } - goaway('settings/connectors'); + DI::baseUrl()->redirect('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 - $api = PConfig::get(local_user(), 'statusnet', 'baseapi'); - $ckey = PConfig::get(local_user(), 'statusnet', 'consumerkey'); - $csecret = PConfig::get(local_user(), 'statusnet', 'consumersecret'); + $api = DI::pConfig()->get(local_user(), 'statusnet', 'baseapi'); + $ckey = DI::pConfig()->get(local_user(), 'statusnet', 'consumerkey'); + $csecret = DI::pConfig()->get(local_user(), 'statusnet', 'consumersecret'); // the token and secret for which the PIN was generated were hidden in the settings // form as token and token2, we need a new connection to GNU Social using these token // and secret to request a Access Token with the PIN $connection = new StatusNetOAuth($api, $ckey, $csecret, $_POST['statusnet-token'], $_POST['statusnet-token2']); $token = $connection->getAccessToken($_POST['statusnet-pin']); // ok, now that we have the Access Token, save them in the user config - PConfig::set(local_user(), 'statusnet', 'oauthtoken', $token['oauth_token']); - PConfig::set(local_user(), 'statusnet', 'oauthsecret', $token['oauth_token_secret']); - PConfig::set(local_user(), 'statusnet', 'post', 1); - PConfig::set(local_user(), 'statusnet', 'post_taglinks', 1); + DI::pConfig()->set(local_user(), 'statusnet', 'oauthtoken', $token['oauth_token']); + DI::pConfig()->set(local_user(), 'statusnet', 'oauthsecret', $token['oauth_token_secret']); + DI::pConfig()->set(local_user(), 'statusnet', 'post', 1); + DI::pConfig()->set(local_user(), 'statusnet', 'post_taglinks', 1); // reload the Addon Settings page, if we don't do it see Bug #42 - goaway('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 dent for every new __public__ posting to the wall - PConfig::set(local_user(), 'statusnet', 'post', intval($_POST['statusnet-enable'])); - PConfig::set(local_user(), 'statusnet', 'post_by_default', intval($_POST['statusnet-default'])); - PConfig::set(local_user(), 'statusnet', 'mirror_posts', intval($_POST['statusnet-mirror'])); - PConfig::set(local_user(), 'statusnet', 'import', intval($_POST['statusnet-import'])); - PConfig::set(local_user(), 'statusnet', 'create_user', intval($_POST['statusnet-create_user'])); + DI::pConfig()->set(local_user(), 'statusnet', 'post', intval($_POST['statusnet-enable'])); + DI::pConfig()->set(local_user(), 'statusnet', 'post_by_default', intval($_POST['statusnet-default'])); + DI::pConfig()->set(local_user(), 'statusnet', 'mirror_posts', intval($_POST['statusnet-mirror'])); + DI::pConfig()->set(local_user(), 'statusnet', 'import', intval($_POST['statusnet-import'])); + DI::pConfig()->set(local_user(), 'statusnet', 'create_user', intval($_POST['statusnet-create_user'])); if (!intval($_POST['statusnet-mirror'])) - PConfig::delete(local_user(), 'statusnet', 'lastid'); + DI::pConfig()->delete(local_user(), 'statusnet', 'lastid'); - info(L10n::t('GNU Social settings updated.') . EOL); + info(DI::l10n()->t('GNU Social settings updated.') . EOL); } } } @@ -231,47 +236,47 @@ function statusnet_settings(App $a, &$s) if (!local_user()) { return; } - $a->page['htmlhead'] .= '' . "\r\n"; + DI::page()['htmlhead'] .= '' . "\r\n"; /* * * * 1) Check that we have a base api url and a consumer key & secret * 2) If no OAuthtoken & stuff is present, generate button to get some * allow the user to cancel the connection process at this step * 3) Checkbox for "Send public notices (respect size limitation) */ - $api = PConfig::get(local_user(), 'statusnet', 'baseapi'); - $ckey = PConfig::get(local_user(), 'statusnet', 'consumerkey'); - $csecret = PConfig::get(local_user(), 'statusnet', 'consumersecret'); - $otoken = PConfig::get(local_user(), 'statusnet', 'oauthtoken'); - $osecret = PConfig::get(local_user(), 'statusnet', 'oauthsecret'); - $enabled = PConfig::get(local_user(), 'statusnet', 'post'); + $api = DI::pConfig()->get(local_user(), 'statusnet', 'baseapi'); + $ckey = DI::pConfig()->get(local_user(), 'statusnet', 'consumerkey'); + $csecret = DI::pConfig()->get(local_user(), 'statusnet', 'consumersecret'); + $otoken = DI::pConfig()->get(local_user(), 'statusnet', 'oauthtoken'); + $osecret = DI::pConfig()->get(local_user(), 'statusnet', 'oauthsecret'); + $enabled = DI::pConfig()->get(local_user(), 'statusnet', 'post'); $checked = (($enabled) ? ' checked="checked" ' : ''); - $defenabled = PConfig::get(local_user(), 'statusnet', 'post_by_default'); + $defenabled = DI::pConfig()->get(local_user(), 'statusnet', 'post_by_default'); $defchecked = (($defenabled) ? ' checked="checked" ' : ''); - $mirrorenabled = PConfig::get(local_user(), 'statusnet', 'mirror_posts'); + $mirrorenabled = DI::pConfig()->get(local_user(), 'statusnet', 'mirror_posts'); $mirrorchecked = (($mirrorenabled) ? ' checked="checked" ' : ''); - $import = PConfig::get(local_user(), 'statusnet', 'import'); + $import = DI::pConfig()->get(local_user(), 'statusnet', 'import'); $importselected = ["", "", ""]; $importselected[$import] = ' selected="selected"'; - //$importenabled = PConfig::get(local_user(),'statusnet','import'); + //$importenabled = DI::pConfig()->get(local_user(),'statusnet','import'); //$importchecked = (($importenabled) ? ' checked="checked" ' : ''); - $create_userenabled = PConfig::get(local_user(), 'statusnet', 'create_user'); + $create_userenabled = DI::pConfig()->get(local_user(), 'statusnet', 'create_user'); $create_userchecked = (($create_userenabled) ? ' checked="checked" ' : ''); $css = (($enabled) ? '' : '-disabled'); $s .= ''; - $s .= '

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

'; + $s .= '

' . DI::l10n()->t('GNU Social Import/Export/Mirror') . '

'; $s .= '
'; $s .= '
'; } +function statusnet_hook_fork(App $a, array &$b) +{ + if ($b['name'] != 'notifier_normal') { + return; + } + + $post = $b['data']; + + // Deleting and editing is not supported by the addon + if ($post['deleted'] || ($post['created'] !== $post['edited'])) { + $b['execute'] = false; + return; + } + + // if post comes from GNU Social don't send it back + if ($post['extid'] == Protocol::STATUSNET) { + $b['execute'] = false; + return; + } + + if ($post['app'] == 'StatusNet') { + $b['execute'] = false; + return; + } + + if (DI::pConfig()->get($post['uid'], 'statusnet', 'import')) { + // Don't fork if it isn't a reply to a GNU Social post + if (($post['parent'] != $post['id']) && !Item::exists(['id' => $post['parent'], 'network' => Protocol::STATUSNET])) { + Logger::log('No GNU Social parent found for item ' . $post['id']); + $b['execute'] = false; + return; + } + } else { + // Comments are never exported when we don't import the GNU Social timeline + if (!strstr($post['postopts'], 'statusnet') || ($post['parent'] != $post['id']) || $post['private']) { + $b['execute'] = false; + return; + } + } +} + function statusnet_post_local(App $a, &$b) { if ($b['edit']) { @@ -400,11 +446,11 @@ function statusnet_post_local(App $a, &$b) return; } - $statusnet_post = PConfig::get(local_user(), 'statusnet', 'post'); - $statusnet_enable = (($statusnet_post && x($_REQUEST, 'statusnet_enable')) ? intval($_REQUEST['statusnet_enable']) : 0); + $statusnet_post = DI::pConfig()->get(local_user(), 'statusnet', 'post'); + $statusnet_enable = (($statusnet_post && !empty($_REQUEST['statusnet_enable'])) ? intval($_REQUEST['statusnet_enable']) : 0); // if API is used, default to the chosen settings - if ($b['api_source'] && intval(PConfig::get(local_user(), 'statusnet', 'post_by_default'))) { + if ($b['api_source'] && intval(DI::pConfig()->get(local_user(), 'statusnet', 'post_by_default'))) { $statusnet_enable = 1; } @@ -421,15 +467,15 @@ function statusnet_post_local(App $a, &$b) function statusnet_action(App $a, $uid, $pid, $action) { - $api = PConfig::get($uid, 'statusnet', 'baseapi'); - $ckey = PConfig::get($uid, 'statusnet', 'consumerkey'); - $csecret = PConfig::get($uid, 'statusnet', 'consumersecret'); - $otoken = PConfig::get($uid, 'statusnet', 'oauthtoken'); - $osecret = PConfig::get($uid, 'statusnet', 'oauthsecret'); + $api = DI::pConfig()->get($uid, 'statusnet', 'baseapi'); + $ckey = DI::pConfig()->get($uid, 'statusnet', 'consumerkey'); + $csecret = DI::pConfig()->get($uid, 'statusnet', 'consumersecret'); + $otoken = DI::pConfig()->get($uid, 'statusnet', 'oauthtoken'); + $osecret = DI::pConfig()->get($uid, 'statusnet', 'oauthsecret'); $connection = new StatusNetOAuth($api, $ckey, $csecret, $otoken, $osecret); - logger("statusnet_action '" . $action . "' ID: " . $pid, LOGGER_DATA); + Logger::log("statusnet_action '" . $action . "' ID: " . $pid, Logger::DATA); switch ($action) { case "delete": @@ -442,7 +488,7 @@ function statusnet_action(App $a, $uid, $pid, $action) $result = $connection->post("favorites/destroy/" . $pid); break; } - logger("statusnet_action '" . $action . "' send, result: " . print_r($result, true), LOGGER_DEBUG); + Logger::log("statusnet_action '" . $action . "' send, result: " . print_r($result, true), Logger::DEBUG); } function statusnet_post_hook(App $a, &$b) @@ -450,28 +496,28 @@ function statusnet_post_hook(App $a, &$b) /** * Post to GNU Social */ - if (!PConfig::get($b["uid"], 'statusnet', 'import')) { + if (!DI::pConfig()->get($b["uid"], 'statusnet', 'import')) { if ($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited'])) return; } - $api = PConfig::get($b["uid"], 'statusnet', 'baseapi'); + $api = DI::pConfig()->get($b["uid"], 'statusnet', 'baseapi'); $hostname = preg_replace("=https?://([\w\.]*)/.*=ism", "$1", $api); if ($b['parent'] != $b['id']) { - logger("statusnet_post_hook: parameter " . print_r($b, true), LOGGER_DATA); + Logger::log("statusnet_post_hook: parameter " . print_r($b, true), Logger::DATA); // Looking if its a reply to a GNU Social post $hostlength = strlen($hostname) + 2; if ((substr($b["parent-uri"], 0, $hostlength) != $hostname . "::") && (substr($b["extid"], 0, $hostlength) != $hostname . "::") && (substr($b["thr-parent"], 0, $hostlength) != $hostname . "::")) { - logger("statusnet_post_hook: no GNU Social post " . $b["parent"]); + Logger::log("statusnet_post_hook: no GNU Social post " . $b["parent"]); return; } $condition = ['uri' => $b["thr-parent"], 'uid' => $b["uid"]]; $orig_post = Item::selectFirst(['author-link', 'uri'], $condition); if (!DBA::isResult($orig_post)) { - logger("statusnet_post_hook: no parent found " . $b["thr-parent"]); + Logger::log("statusnet_post_hook: no parent found " . $b["thr-parent"]); return; } else { $iscomment = true; @@ -482,12 +528,12 @@ function statusnet_post_hook(App $a, &$b) $nickname = "@[url=" . $orig_post["author-link"] . "]" . $nick . "[/url]"; $nicknameplain = "@" . $nick; - logger("statusnet_post_hook: comparing " . $nickname . " and " . $nicknameplain . " with " . $b["body"], LOGGER_DEBUG); + Logger::log("statusnet_post_hook: comparing " . $nickname . " and " . $nicknameplain . " with " . $b["body"], Logger::DEBUG); 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); + Logger::log("statusnet_post_hook: parent found " . print_r($orig_post, true), Logger::DEBUG); } else { $iscomment = false; @@ -503,12 +549,12 @@ function statusnet_post_hook(App $a, &$b) } } - if (($b['verb'] == ACTIVITY_POST) && $b['deleted']) { + if (($b['verb'] == Activity::POST) && $b['deleted']) { statusnet_action($a, $b["uid"], substr($orig_post["uri"], $hostlength), "delete"); } - if ($b['verb'] == ACTIVITY_LIKE) { - logger("statusnet_post_hook: parameter 2 " . substr($b["thr-parent"], $hostlength), LOGGER_DEBUG); + if ($b['verb'] == Activity::LIKE) { + Logger::log("statusnet_post_hook: parameter 2 " . substr($b["thr-parent"], $hostlength), Logger::DEBUG); if ($b['deleted']) statusnet_action($a, $b["uid"], substr($b["thr-parent"], $hostlength), "unlike"); else @@ -529,15 +575,15 @@ function statusnet_post_hook(App $a, &$b) return; } - logger('GNU Socialpost invoked'); + Logger::log('GNU Socialpost invoked'); - PConfig::load($b['uid'], 'statusnet'); + DI::pConfig()->load($b['uid'], 'statusnet'); - $api = PConfig::get($b['uid'], 'statusnet', 'baseapi'); - $ckey = PConfig::get($b['uid'], 'statusnet', 'consumerkey'); - $csecret = PConfig::get($b['uid'], 'statusnet', 'consumersecret'); - $otoken = PConfig::get($b['uid'], 'statusnet', 'oauthtoken'); - $osecret = PConfig::get($b['uid'], 'statusnet', 'oauthsecret'); + $api = DI::pConfig()->get($b['uid'], 'statusnet', 'baseapi'); + $ckey = DI::pConfig()->get($b['uid'], 'statusnet', 'consumerkey'); + $csecret = DI::pConfig()->get($b['uid'], 'statusnet', 'consumersecret'); + $otoken = DI::pConfig()->get($b['uid'], 'statusnet', 'oauthtoken'); + $osecret = DI::pConfig()->get($b['uid'], 'statusnet', 'oauthsecret'); if ($ckey && $csecret && $otoken && $osecret) { // If it's a repeated message from GNU Social then do a native retweet and exit @@ -548,7 +594,7 @@ function statusnet_post_hook(App $a, &$b) $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); + DI::pConfig()->set($b['uid'], 'statusnet', 'max_char', $max_char); $tempfile = ""; $msgarr = ItemContent::getPlaintextPost($b, $max_char, true, 7); @@ -578,7 +624,7 @@ function statusnet_post_hook(App $a, &$b) if (strlen($msg)) { if ($iscomment) { $postdata["in_reply_to_status_id"] = substr($orig_post["uri"], $hostlength); - logger('statusnet_post send reply ' . print_r($postdata, true), LOGGER_DEBUG); + Logger::log('statusnet_post send reply ' . print_r($postdata, true), Logger::DEBUG); } // New code that is able to post pictures @@ -589,17 +635,17 @@ function statusnet_post_hook(App $a, &$b) $cb->setToken($otoken, $osecret); $result = $cb->statuses_update($postdata); //$result = $dent->post('statuses/update', $postdata); - logger('statusnet_post send, result: ' . print_r($result, true) . - "\nmessage: " . $msg . "\nOriginal post: " . print_r($b, true) . "\nPost Data: " . print_r($postdata, true), LOGGER_DEBUG); + Logger::log('statusnet_post send, result: ' . print_r($result, true) . + "\nmessage: " . $msg . "\nOriginal post: " . print_r($b, true) . "\nPost Data: " . print_r($postdata, true), Logger::DEBUG); if (!empty($result->source)) { - PConfig::set($b["uid"], "statusnet", "application_name", strip_tags($result->source)); + DI::pConfig()->set($b["uid"], "statusnet", "application_name", strip_tags($result->source)); } if (!empty($result->error)) { - logger('Send to GNU Social failed: "' . $result->error . '"'); + Logger::log('Send to GNU Social failed: "' . $result->error . '"'); } elseif ($iscomment) { - logger('statusnet_post: Update extid ' . $result->id . " for post id " . $b['id']); + Logger::log('statusnet_post: Update extid ' . $result->id . " for post id " . $b['id']); Item::update(['extid' => $hostname . "::" . $result->id, 'body' => $result->text], ['id' => $b['id']]); } } @@ -621,12 +667,12 @@ function statusnet_addon_admin_post(App $a) } $secret = trim($_POST['secret'][$id]); $key = trim($_POST['key'][$id]); - //$applicationname = ((x($_POST, 'applicationname')) ? notags(trim($_POST['applicationname'][$id])):''); + //$applicationname = (!empty($_POST['applicationname']) ? Strings::escapeTags(trim($_POST['applicationname'][$id])):''); if ($sitename != "" && $apiurl != "" && $secret != "" && $key != "" && - !x($_POST['delete'][$id])) { + empty($_POST['delete'][$id])) { $sites[] = [ 'sitename' => $sitename, @@ -638,18 +684,18 @@ function statusnet_addon_admin_post(App $a) } } - $sites = Config::set('statusnet', 'sites', $sites); + $sites = DI::config()->set('statusnet', 'sites', $sites); } function statusnet_addon_admin(App $a, &$o) { - $sites = Config::get('statusnet', 'sites'); + $sites = DI::config()->get('statusnet', 'sites'); $sitesform = []; if (is_array($sites)) { foreach ($sites as $id => $s) { $sitesform[] = [ 'sitename' => ["sitename[$id]", "Site name", $s['sitename'], ""], - 'apiurl' => ["apiurl[$id]", "Api url", $s['apiurl'], L10n::t("Base API Path \x28remember the trailing /\x29")], + 'apiurl' => ["apiurl[$id]", "Api url", $s['apiurl'], DI::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'], ""), @@ -660,16 +706,16 @@ function statusnet_addon_admin(App $a, &$o) /* empty form to add new site */ $id = count($sitesform); $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"), "", ""), + 'sitename' => ["sitename[$id]", DI::l10n()->t("Site name"), "", ""], + 'apiurl' => ["apiurl[$id]", "Api url", "", DI::l10n()->t("Base API Path \x28remember the trailing /\x29")], + 'secret' => ["secret[$id]", DI::l10n()->t("Consumer Secret"), "", ""], + 'key' => ["key[$id]", DI::l10n()->t("Consumer Key"), "", ""], + //'applicationname' => Array("applicationname[$id]", DI::l10n()->t("Application name"), "", ""), ]; - $t = get_markup_template("admin.tpl", "addon/statusnet/"); - $o = replace_macros($t, [ - '$submit' => L10n::t('Save Settings'), + $t = Renderer::getMarkupTemplate("admin.tpl", "addon/statusnet/"); + $o = Renderer::replaceMacros($t, [ + '$submit' => DI::l10n()->t('Save Settings'), '$sites' => $sitesform, ]); } @@ -681,13 +727,13 @@ function statusnet_prepare_body(App $a, &$b) } if ($b["preview"]) { - $max_char = PConfig::get(local_user(), 'statusnet', 'max_char'); + $max_char = DI::pConfig()->get(local_user(), 'statusnet', 'max_char'); if (intval($max_char) == 0) { $max_char = 140; } $item = $b["item"]; - $item["plink"] = $a->getBaseURL() . "/display/" . $a->user["nickname"] . "/" . $item["parent"]; + $item["plink"] = DI::baseUrl()->get() . "/display/" . $item["guid"]; $condition = ['uri' => $item["thr-parent"], 'uid' => local_user()]; $orig_post = Item::selectFirst(['author-link', 'uri'], $condition); @@ -719,9 +765,9 @@ function statusnet_prepare_body(App $a, &$b) function statusnet_cron(App $a, $b) { - $last = Config::get('statusnet', 'last_poll'); + $last = DI::config()->get('statusnet', 'last_poll'); - $poll_interval = intval(Config::get('statusnet', 'poll_interval')); + $poll_interval = intval(DI::config()->get('statusnet', 'poll_interval')); if (!$poll_interval) { $poll_interval = STATUSNET_DEFAULT_POLL_INTERVAL; } @@ -729,21 +775,21 @@ function statusnet_cron(App $a, $b) if ($last) { $next = $last + ($poll_interval * 60); if ($next > time()) { - logger('statusnet: poll intervall not reached'); + Logger::log('statusnet: poll intervall not reached'); return; } } - logger('statusnet: cron_start'); + Logger::log('statusnet: cron_start'); $r = q("SELECT * FROM `pconfig` WHERE `cat` = 'statusnet' AND `k` = 'mirror_posts' AND `v` = '1' ORDER BY RAND() "); if (DBA::isResult($r)) { foreach ($r as $rr) { - logger('statusnet: fetching for user ' . $rr['uid']); + Logger::log('statusnet: fetching for user ' . $rr['uid']); statusnet_fetchtimeline($a, $rr['uid']); } } - $abandon_days = intval(Config::get('system', 'account_abandon_days')); + $abandon_days = intval(DI::config()->get('system', 'account_abandon_days')); if ($abandon_days < 1) { $abandon_days = 0; } @@ -756,42 +802,40 @@ function statusnet_cron(App $a, $b) 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('abandoned account: timeline from user ' . $rr['uid'] . ' will not be imported'); + Logger::log('abandoned account: timeline from user ' . $rr['uid'] . ' will not be imported'); continue; } } - logger('statusnet: importing timeline from user ' . $rr['uid']); + Logger::log('statusnet: importing timeline from user ' . $rr['uid']); statusnet_fetchhometimeline($a, $rr["uid"], $rr["v"]); } } - logger('statusnet: cron_end'); + Logger::log('statusnet: cron_end'); - Config::set('statusnet', 'last_poll', time()); + DI::config()->set('statusnet', 'last_poll', time()); } function statusnet_fetchtimeline(App $a, $uid) { - $ckey = PConfig::get($uid, 'statusnet', 'consumerkey'); - $csecret = PConfig::get($uid, 'statusnet', 'consumersecret'); - $api = PConfig::get($uid, 'statusnet', 'baseapi'); - $otoken = PConfig::get($uid, 'statusnet', 'oauthtoken'); - $osecret = PConfig::get($uid, 'statusnet', 'oauthsecret'); - $lastid = PConfig::get($uid, 'statusnet', 'lastid'); + $ckey = DI::pConfig()->get($uid, 'statusnet', 'consumerkey'); + $csecret = DI::pConfig()->get($uid, 'statusnet', 'consumersecret'); + $api = DI::pConfig()->get($uid, 'statusnet', 'baseapi'); + $otoken = DI::pConfig()->get($uid, 'statusnet', 'oauthtoken'); + $osecret = DI::pConfig()->get($uid, 'statusnet', 'oauthsecret'); + $lastid = DI::pConfig()->get($uid, 'statusnet', 'lastid'); require_once 'mod/item.php'; - require_once 'include/items.php'; - // get the application name for the SN app // 1st try personal config, then system config and fallback to the // hostname of the node if neither one is set. - $application_name = PConfig::get($uid, 'statusnet', 'application_name'); + $application_name = DI::pConfig()->get($uid, 'statusnet', 'application_name'); if ($application_name == "") { - $application_name = Config::get('statusnet', 'application_name'); + $application_name = DI::config()->get('statusnet', 'application_name'); } if ($application_name == "") { - $application_name = $a->getHostName(); + $application_name = DI::baseUrl()->getHostname(); } $connection = new StatusNetOAuth($api, $ckey, $csecret, $otoken, $osecret); @@ -871,19 +915,19 @@ function statusnet_fetchtimeline(App $a, $uid) //print_r($_REQUEST); if ($_REQUEST["body"] != "") { - logger('statusnet: posting for user ' . $uid); + Logger::log('statusnet: posting for user ' . $uid); item_post($a); } } } } - PConfig::set($uid, 'statusnet', 'lastid', $lastid); + DI::pConfig()->set($uid, 'statusnet', 'lastid', $lastid); } function statusnet_address($contact) { - $hostname = normalise_link($contact->statusnet_profile_url); + $hostname = Strings::normaliseLink($contact->statusnet_profile_url); $nickname = $contact->screen_name; $hostname = preg_replace("=https?://([\w\.]*)/.*=ism", "$1", $contact->statusnet_profile_url); @@ -895,24 +939,18 @@ function statusnet_address($contact) function statusnet_fetch_contact($uid, $contact, $create_user) { - if ($contact->statusnet_profile_url == "") { + if (empty($contact->statusnet_profile_url)) { return -1; } - GContact::update(["url" => $contact->statusnet_profile_url, - "network" => Protocol::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]); - - $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `alias` = '%s' AND `network` = '%s'LIMIT 1", intval($uid), DBA::escape(normalise_link($contact->statusnet_profile_url)), DBA::escape(Protocol::STATUSNET)); + $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `alias` = '%s' AND `network` = '%s'LIMIT 1", intval($uid), DBA::escape(Strings::normaliseLink($contact->statusnet_profile_url)), DBA::escape(Protocol::STATUSNET)); if (!DBA::isResult($r) && !$create_user) { return 0; } if (DBA::isResult($r) && ($r[0]["readonly"] || $r[0]["blocked"])) { - logger("statusnet_fetch_contact: Contact '" . $r[0]["nick"] . "' is blocked or readonly.", LOGGER_DEBUG); + Logger::log("statusnet_fetch_contact: Contact '" . $r[0]["nick"] . "' is blocked or readonly.", Logger::DEBUG); return -1; } @@ -925,9 +963,9 @@ function statusnet_fetch_contact($uid, $contact, $create_user) intval($uid), DBA::escape(DateTimeFormat::utcNow()), DBA::escape($contact->statusnet_profile_url), - DBA::escape(normalise_link($contact->statusnet_profile_url)), + DBA::escape(Strings::normaliseLink($contact->statusnet_profile_url)), DBA::escape(statusnet_address($contact)), - DBA::escape(normalise_link($contact->statusnet_profile_url)), + DBA::escape(Strings::normaliseLink($contact->statusnet_profile_url)), DBA::escape(''), DBA::escape(''), DBA::escape($contact->name), @@ -974,7 +1012,7 @@ function statusnet_fetch_contact($uid, $contact, $create_user) // 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)) { - logger("statusnet_fetch_contact: Updating contact " . $contact->screen_name, LOGGER_DEBUG); + Logger::log("statusnet_fetch_contact: Updating contact " . $contact->screen_name, Logger::DEBUG); $photos = Photo::importProfilePhoto($contact->profile_image_url, $uid, $r[0]['id']); @@ -999,7 +1037,7 @@ function statusnet_fetch_contact($uid, $contact, $create_user) DBA::escape(DateTimeFormat::utcNow()), DBA::escape(DateTimeFormat::utcNow()), DBA::escape($contact->statusnet_profile_url), - DBA::escape(normalise_link($contact->statusnet_profile_url)), + DBA::escape(Strings::normaliseLink($contact->statusnet_profile_url)), DBA::escape(statusnet_address($contact)), DBA::escape($contact->name), DBA::escape($contact->screen_name), @@ -1015,11 +1053,11 @@ function statusnet_fetch_contact($uid, $contact, $create_user) function statusnet_fetchuser(App $a, $uid, $screen_name = "", $user_id = "") { - $ckey = PConfig::get($uid, 'statusnet', 'consumerkey'); - $csecret = PConfig::get($uid, 'statusnet', 'consumersecret'); - $api = PConfig::get($uid, 'statusnet', 'baseapi'); - $otoken = PConfig::get($uid, 'statusnet', 'oauthtoken'); - $osecret = PConfig::get($uid, 'statusnet', 'oauthsecret'); + $ckey = DI::pConfig()->get($uid, 'statusnet', 'consumerkey'); + $csecret = DI::pConfig()->get($uid, 'statusnet', 'consumersecret'); + $api = DI::pConfig()->get($uid, 'statusnet', 'baseapi'); + $otoken = DI::pConfig()->get($uid, 'statusnet', 'oauthtoken'); + $osecret = DI::pConfig()->get($uid, 'statusnet', 'oauthsecret'); require_once __DIR__ . DIRECTORY_SEPARATOR . 'library' . DIRECTORY_SEPARATOR . 'codebirdsn.php'; @@ -1060,9 +1098,9 @@ function statusnet_fetchuser(App $a, $uid, $screen_name = "", $user_id = "") function statusnet_createpost(App $a, $uid, $post, $self, $create_user, $only_existing_contact) { - logger("statusnet_createpost: start", LOGGER_DEBUG); + Logger::log("statusnet_createpost: start", Logger::DEBUG); - $api = PConfig::get($uid, 'statusnet', 'baseapi'); + $api = DI::pConfig()->get($uid, 'statusnet', 'baseapi'); $hostname = preg_replace("=https?://([\w\.]*)/.*=ism", "$1", $api); $postarray = []; @@ -1100,15 +1138,15 @@ function statusnet_createpost(App $a, $uid, $post, $self, $create_user, $only_ex $postarray['thr-parent'] = $item['uri']; $postarray['parent-uri'] = $item['parent-uri']; $postarray['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? - $own_url = PConfig::get($uid, 'statusnet', 'own_url'); + $own_url = DI::pConfig()->get($uid, 'statusnet', 'own_url'); if ($content->user->id == $own_url) { $r = q("SELECT * FROM `contact` WHERE `self` = 1 AND `uid` = %d LIMIT 1", @@ -1128,7 +1166,7 @@ function statusnet_createpost(App $a, $uid, $post, $self, $create_user, $only_ex $create_user = false; } else { $postarray['parent-uri'] = $postarray['uri']; - $postarray['object-type'] = ACTIVITY_OBJ_NOTE; + $postarray['object-type'] = Activity\ObjectType::NOTE; } if ($contactid == 0) { @@ -1145,14 +1183,14 @@ function statusnet_createpost(App $a, $uid, $post, $self, $create_user, $only_ex $postarray['contact-id'] = $contactid; - $postarray['verb'] = ACTIVITY_POST; + $postarray['verb'] = Activity::POST; $postarray['author-name'] = $content->user->name; $postarray['author-link'] = $content->user->statusnet_profile_url; $postarray['author-avatar'] = $content->user->profile_image_url; // To-Do: Maybe unreliable? Can the api be entered without trailing "/"? - $hostname = str_replace("/api/", "/notice/", PConfig::get($uid, 'statusnet', 'baseapi')); + $hostname = str_replace("/api/", "/notice/", DI::pConfig()->get($uid, 'statusnet', 'baseapi')); $postarray['plink'] = $hostname . $content->id; $postarray['app'] = strip_tags($content->source); @@ -1187,7 +1225,7 @@ function statusnet_createpost(App $a, $uid, $post, $self, $create_user, $only_ex $postarray["coord"] = $content->coordinates->coordinates[1] . " " . $content->coordinates->coordinates[0]; } - logger("statusnet_createpost: end", LOGGER_DEBUG); + Logger::log("statusnet_createpost: end", Logger::DEBUG); return $postarray; } @@ -1196,24 +1234,26 @@ function statusnet_fetchhometimeline(App $a, $uid, $mode = 1) { $conversations = []; - $ckey = PConfig::get($uid, 'statusnet', 'consumerkey'); - $csecret = PConfig::get($uid, 'statusnet', 'consumersecret'); - $api = PConfig::get($uid, 'statusnet', 'baseapi'); - $otoken = PConfig::get($uid, 'statusnet', 'oauthtoken'); - $osecret = PConfig::get($uid, 'statusnet', 'oauthsecret'); - $create_user = PConfig::get($uid, 'statusnet', 'create_user'); + $ckey = DI::pConfig()->get($uid, 'statusnet', 'consumerkey'); + $csecret = DI::pConfig()->get($uid, 'statusnet', 'consumersecret'); + $api = DI::pConfig()->get($uid, 'statusnet', 'baseapi'); + $otoken = DI::pConfig()->get($uid, 'statusnet', 'oauthtoken'); + $osecret = DI::pConfig()->get($uid, 'statusnet', 'oauthsecret'); + $create_user = DI::pConfig()->get($uid, 'statusnet', 'create_user'); // "create_user" is deactivated, since currently you cannot add users manually by now $create_user = true; - logger("statusnet_fetchhometimeline: Fetching for user " . $uid, LOGGER_DEBUG); - - require_once 'include/items.php'; + Logger::log("statusnet_fetchhometimeline: Fetching for user " . $uid, Logger::DEBUG); $connection = new StatusNetOAuth($api, $ckey, $csecret, $otoken, $osecret); $own_contact = statusnet_fetch_own_contact($a, $uid); + if (empty($own_contact)) { + return; + } + $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1", intval($own_contact), intval($uid)); @@ -1221,7 +1261,7 @@ function statusnet_fetchhometimeline(App $a, $uid, $mode = 1) if (DBA::isResult($r)) { $nick = $r[0]["nick"]; } else { - logger("statusnet_fetchhometimeline: Own GNU Social contact not found for user " . $uid, LOGGER_DEBUG); + Logger::log("statusnet_fetchhometimeline: Own GNU Social contact not found for user " . $uid, Logger::DEBUG); return; } @@ -1231,14 +1271,14 @@ function statusnet_fetchhometimeline(App $a, $uid, $mode = 1) if (DBA::isResult($r)) { $self = $r[0]; } else { - logger("statusnet_fetchhometimeline: Own contact not found for user " . $uid, LOGGER_DEBUG); + Logger::log("statusnet_fetchhometimeline: Own contact not found for user " . $uid, Logger::DEBUG); return; } $u = q("SELECT * FROM user WHERE uid = %d LIMIT 1", intval($uid)); if (!DBA::isResult($u)) { - logger("statusnet_fetchhometimeline: Own user not found for user " . $uid, LOGGER_DEBUG); + Logger::log("statusnet_fetchhometimeline: Own user not found for user " . $uid, Logger::DEBUG); return; } @@ -1247,7 +1287,7 @@ function statusnet_fetchhometimeline(App $a, $uid, $mode = 1) if ($mode == 1) { // Fetching timeline - $lastid = PConfig::get($uid, 'statusnet', 'lasthometimelineid'); + $lastid = DI::pConfig()->get($uid, 'statusnet', 'lasthometimelineid'); //$lastid = 1; $first_time = ($lastid == ""); @@ -1269,13 +1309,13 @@ function statusnet_fetchhometimeline(App $a, $uid, $mode = 1) $errormsg = "Unknown error"; } - logger("statusnet_fetchhometimeline: Error fetching home timeline: " . $errormsg, LOGGER_DEBUG); + Logger::log("statusnet_fetchhometimeline: Error fetching home timeline: " . $errormsg, Logger::DEBUG); return; } $posts = array_reverse($items); - logger("statusnet_fetchhometimeline: Fetching timeline for user " . $uid . " " . sizeof($posts) . " items", LOGGER_DEBUG); + Logger::log("statusnet_fetchhometimeline: Fetching timeline for user " . $uid . " " . sizeof($posts) . " items", Logger::DEBUG); if (count($posts)) { foreach ($posts as $post) { @@ -1303,15 +1343,15 @@ function statusnet_fetchhometimeline(App $a, $uid, $mode = 1) $item = Item::insert($postarray); $postarray["id"] = $item; - logger('statusnet_fetchhometimeline: User ' . $self["nick"] . ' posted home timeline item ' . $item); + Logger::log('statusnet_fetchhometimeline: User ' . $self["nick"] . ' posted home timeline item ' . $item); } } } - PConfig::set($uid, 'statusnet', 'lasthometimelineid', $lastid); + DI::pConfig()->set($uid, 'statusnet', 'lasthometimelineid', $lastid); } // Fetching mentions - $lastid = PConfig::get($uid, 'statusnet', 'lastmentionid'); + $lastid = DI::pConfig()->get($uid, 'statusnet', 'lastmentionid'); $first_time = ($lastid == ""); if ($lastid != "") { @@ -1321,13 +1361,13 @@ function statusnet_fetchhometimeline(App $a, $uid, $mode = 1) $items = $connection->get('statuses/mentions_timeline', $parameters); if (!is_array($items)) { - logger("statusnet_fetchhometimeline: Error fetching mentions: " . print_r($items, true), LOGGER_DEBUG); + Logger::log("statusnet_fetchhometimeline: Error fetching mentions: " . print_r($items, true), Logger::DEBUG); return; } $posts = array_reverse($items); - logger("statusnet_fetchhometimeline: Fetching mentions for user " . $uid . " " . sizeof($posts) . " items", LOGGER_DEBUG); + Logger::log("statusnet_fetchhometimeline: Fetching mentions for user " . $uid . " " . sizeof($posts) . " items", Logger::DEBUG); if (count($posts)) { foreach ($posts as $post) { @@ -1353,22 +1393,22 @@ function statusnet_fetchhometimeline(App $a, $uid, $mode = 1) $item = Item::insert($postarray); - logger('statusnet_fetchhometimeline: User ' . $self["nick"] . ' posted mention timeline item ' . $item); + Logger::log('statusnet_fetchhometimeline: User ' . $self["nick"] . ' posted mention timeline item ' . $item); } } } - PConfig::set($uid, 'statusnet', 'lastmentionid', $lastid); + DI::pConfig()->set($uid, 'statusnet', 'lastmentionid', $lastid); } function statusnet_complete_conversation(App $a, $uid, $self, $create_user, $nick, $conversation) { - $ckey = PConfig::get($uid, 'statusnet', 'consumerkey'); - $csecret = PConfig::get($uid, 'statusnet', 'consumersecret'); - $api = PConfig::get($uid, 'statusnet', 'baseapi'); - $otoken = PConfig::get($uid, 'statusnet', 'oauthtoken'); - $osecret = PConfig::get($uid, 'statusnet', 'oauthsecret'); - $own_url = PConfig::get($uid, 'statusnet', 'own_url'); + $ckey = DI::pConfig()->get($uid, 'statusnet', 'consumerkey'); + $csecret = DI::pConfig()->get($uid, 'statusnet', 'consumersecret'); + $api = DI::pConfig()->get($uid, 'statusnet', 'baseapi'); + $otoken = DI::pConfig()->get($uid, 'statusnet', 'oauthtoken'); + $osecret = DI::pConfig()->get($uid, 'statusnet', 'oauthsecret'); + $own_url = DI::pConfig()->get($uid, 'statusnet', 'own_url'); $connection = new StatusNetOAuth($api, $ckey, $csecret, $otoken, $osecret); @@ -1388,15 +1428,13 @@ function statusnet_complete_conversation(App $a, $uid, $self, $create_user, $nic $item = Item::insert($postarray); $postarray["id"] = $item; - logger('statusnet_complete_conversation: User ' . $self["nick"] . ' posted home timeline item ' . $item); + Logger::log('statusnet_complete_conversation: User ' . $self["nick"] . ' posted home timeline item ' . $item); } } } function statusnet_convertmsg(App $a, $body, $no_tags = false) { - require_once "include/items.php"; - $body = preg_replace("=\[url\=https?://([0-9]*).([0-9]*).([0-9]*).([0-9]*)/([0-9]*)\](.*?)\[\/url\]=ism", "$1.$2.$3.$4/$5", $body); $URLSearchString = "^\[\]"; @@ -1411,15 +1449,15 @@ function statusnet_convertmsg(App $a, $body, $no_tags = false) foreach ($matches AS $match) { $search = "[url=" . $match[1] . "]" . $match[2] . "[/url]"; - logger("statusnet_convertmsg: expanding url " . $match[1], LOGGER_DEBUG); + Logger::log("statusnet_convertmsg: expanding url " . $match[1], Logger::DEBUG); $expanded_url = Network::finalUrl($match[1]); - logger("statusnet_convertmsg: fetching data for " . $expanded_url, LOGGER_DEBUG); + Logger::log("statusnet_convertmsg: fetching data for " . $expanded_url, Logger::DEBUG); $oembed_data = OEmbed::fetchURL($expanded_url, true); - logger("statusnet_convertmsg: fetching data: done", LOGGER_DEBUG); + Logger::log("statusnet_convertmsg: fetching data: done", Logger::DEBUG); if ($type == "") { $type = $oembed_data->type; @@ -1437,7 +1475,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 = Network::fetchUrl($expanded_url, true, $redirects, 4); + $img_str = Network::fetchUrl($expanded_url, true, 4); $tempfile = tempnam(get_temppath(), "cache"); file_put_contents($tempfile, $img_str); @@ -1488,7 +1526,7 @@ function statusnet_convertmsg(App $a, $body, $no_tags = false) if ($mtch[1] == "#") { // Replacing the hash tags that are directed to the GNU Social server with internal links $snhash = "#[url=" . $mtch[2] . "]" . $mtch[3] . "[/url]"; - $frdchash = '#[url=' . $a->getBaseURL() . '/search?tag=' . rawurlencode($mtch[3]) . ']' . $mtch[3] . '[/url]'; + $frdchash = '#[url=' . DI::baseUrl()->get() . '/search?tag=' . $mtch[3] . ']' . $mtch[3] . '[/url]'; $body = str_replace($snhash, $frdchash, $body); $str_tags .= $frdchash; @@ -1506,12 +1544,12 @@ function statusnet_convertmsg(App $a, $body, $no_tags = false) function statusnet_fetch_own_contact(App $a, $uid) { - $ckey = PConfig::get($uid, 'statusnet', 'consumerkey'); - $csecret = PConfig::get($uid, 'statusnet', 'consumersecret'); - $api = PConfig::get($uid, 'statusnet', 'baseapi'); - $otoken = PConfig::get($uid, 'statusnet', 'oauthtoken'); - $osecret = PConfig::get($uid, 'statusnet', 'oauthsecret'); - $own_url = PConfig::get($uid, 'statusnet', 'own_url'); + $ckey = DI::pConfig()->get($uid, 'statusnet', 'consumerkey'); + $csecret = DI::pConfig()->get($uid, 'statusnet', 'consumersecret'); + $api = DI::pConfig()->get($uid, 'statusnet', 'baseapi'); + $otoken = DI::pConfig()->get($uid, 'statusnet', 'oauthtoken'); + $osecret = DI::pConfig()->get($uid, 'statusnet', 'oauthsecret'); + $own_url = DI::pConfig()->get($uid, 'statusnet', 'own_url'); $contact_id = 0; @@ -1521,7 +1559,11 @@ function statusnet_fetch_own_contact(App $a, $uid) // Fetching user data $user = $connection->get('account/verify_credentials'); - PConfig::set($uid, 'statusnet', 'own_url', normalise_link($user->statusnet_profile_url)); + if (empty($user)) { + return false; + } + + DI::pConfig()->set($uid, 'statusnet', 'own_url', Strings::normaliseLink($user->statusnet_profile_url)); $contact_id = statusnet_fetch_contact($uid, $user, true); } else { @@ -1530,7 +1572,7 @@ function statusnet_fetch_own_contact(App $a, $uid) if (DBA::isResult($r)) { $contact_id = $r[0]["id"]; } else { - PConfig::delete($uid, 'statusnet', 'own_url'); + DI::pConfig()->delete($uid, 'statusnet', 'own_url'); } } return $contact_id; @@ -1568,11 +1610,11 @@ function statusnet_is_retweet(App $a, $uid, $body) $link = $matches[1]; } - $ckey = PConfig::get($uid, 'statusnet', 'consumerkey'); - $csecret = PConfig::get($uid, 'statusnet', 'consumersecret'); - $api = PConfig::get($uid, 'statusnet', 'baseapi'); - $otoken = PConfig::get($uid, 'statusnet', 'oauthtoken'); - $osecret = PConfig::get($uid, 'statusnet', 'oauthsecret'); + $ckey = DI::pConfig()->get($uid, 'statusnet', 'consumerkey'); + $csecret = DI::pConfig()->get($uid, 'statusnet', 'consumersecret'); + $api = DI::pConfig()->get($uid, 'statusnet', 'baseapi'); + $otoken = DI::pConfig()->get($uid, 'statusnet', 'oauthtoken'); + $osecret = DI::pConfig()->get($uid, 'statusnet', 'oauthsecret'); $hostname = preg_replace("=https?://([\w\.]*)/.*=ism", "$1", $api); $id = preg_replace("=https?://" . $hostname . "/notice/(.*)=ism", "$1", $link); @@ -1581,13 +1623,13 @@ function statusnet_is_retweet(App $a, $uid, $body) return false; } - logger('statusnet_is_retweet: Retweeting id ' . $id . ' for user ' . $uid, LOGGER_DEBUG); + Logger::log('statusnet_is_retweet: Retweeting id ' . $id . ' for user ' . $uid, Logger::DEBUG); $connection = new StatusNetOAuth($api, $ckey, $csecret, $otoken, $osecret); $result = $connection->post('statuses/retweet/' . $id); - logger('statusnet_is_retweet: result ' . print_r($result, true), LOGGER_DEBUG); + Logger::log('statusnet_is_retweet: result ' . print_r($result, true), Logger::DEBUG); return isset($result->id); }