]> git.mxchange.org Git - friendica-addons.git/blobdiff - statusnet/statusnet.php
deleted: superblock/lang/C/messages.po
[friendica-addons.git] / statusnet / statusnet.php
index 6fc1469c243843d1566abefb77338c4c6f3cb86a..5cb65b91fdb90d4ebec3c975d4a001086cefe3b5 100644 (file)
@@ -74,29 +74,29 @@ function statusnet_install()
        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::notice("installed GNU Social");
+       Logger::notice('installed GNU Social');
 }
 
 function statusnet_check_item_notification(App $a, &$notification_data)
 {
-       if (DI::pConfig()->get($notification_data["uid"], 'statusnet', 'post')) {
-               $notification_data["profiles"][] = DI::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, array &$jotnets_fields)
 {
-       if (!local_user()) {
+       if (!DI::userSession()->getLocalUserId()) {
                return;
        }
 
-       if (DI::pConfig()->get(local_user(), 'statusnet', 'post')) {
+       if (DI::pConfig()->get(DI::userSession()->getLocalUserId(), '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')
+                               DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'statusnet', 'post_by_default')
                        ]
                ];
        }
@@ -104,7 +104,7 @@ function statusnet_jot_nets(App $a, array &$jotnets_fields)
 
 function statusnet_settings_post(App $a, $post)
 {
-       if (!local_user()) {
+       if (!DI::userSession()->getLocalUserId()) {
                return;
        }
        // don't check GNU Social settings if GNU Social submit button is not clicked
@@ -116,18 +116,18 @@ function statusnet_settings_post(App $a, $post)
                /*               * *
                 * if the GNU Social-disconnect button is clicked, clear the GNU Social configuration
                 */
-               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');
+               DI::pConfig()->delete(DI::userSession()->getLocalUserId(), 'statusnet', 'consumerkey');
+               DI::pConfig()->delete(DI::userSession()->getLocalUserId(), 'statusnet', 'consumersecret');
+               DI::pConfig()->delete(DI::userSession()->getLocalUserId(), 'statusnet', 'post');
+               DI::pConfig()->delete(DI::userSession()->getLocalUserId(), 'statusnet', 'post_by_default');
+               DI::pConfig()->delete(DI::userSession()->getLocalUserId(), 'statusnet', 'oauthtoken');
+               DI::pConfig()->delete(DI::userSession()->getLocalUserId(), 'statusnet', 'oauthsecret');
+               DI::pConfig()->delete(DI::userSession()->getLocalUserId(), 'statusnet', 'baseapi');
+               DI::pConfig()->delete(DI::userSession()->getLocalUserId(), 'statusnet', 'lastid');
+               DI::pConfig()->delete(DI::userSession()->getLocalUserId(), 'statusnet', 'mirror_posts');
+               DI::pConfig()->delete(DI::userSession()->getLocalUserId(), 'statusnet', 'import');
+               DI::pConfig()->delete(DI::userSession()->getLocalUserId(), 'statusnet', 'create_user');
+               DI::pConfig()->delete(DI::userSession()->getLocalUserId(), 'statusnet', 'own_url');
        } else {
                if (isset($_POST['statusnet-preconf-apiurl'])) {
                        /*                       * *
@@ -141,12 +141,12 @@ function statusnet_settings_post(App $a, $post)
                                        $apibase = $asn['apiurl'];
                                        $c = DI::httpClient()->fetch($apibase . 'statusnet/version.xml');
                                        if (strlen($c) > 0) {
-                                               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'] );
+                                               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'statusnet', 'consumerkey', $asn['consumerkey']);
+                                               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'statusnet', 'consumersecret', $asn['consumersecret']);
+                                               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'statusnet', 'baseapi', $asn['apiurl']);
+                                               //DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'statusnet', 'application_name', $asn['applicationname'] );
                                        } else {
-                                               notice(DI::l10n()->t('Please contact your site administrator.<br />The provided API URL is not valid.') . EOL . $asn['apiurl'] . EOL);
+                                               DI::sysmsg()->addNotice(DI::l10n()->t('Please contact your site administrator.<br />The provided API URL is not valid.') . '<br />' . $asn['apiurl']);
                                        }
                                }
                        }
@@ -159,52 +159,52 @@ function statusnet_settings_post(App $a, $post)
                                $c = DI::httpClient()->fetch($apibase . 'statusnet/version.xml');
                                if (strlen($c) > 0) {
                                        //  ok the API path is correct, let's save the settings
-                                       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'] );
+                                       DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'statusnet', 'consumerkey', $_POST['statusnet-consumerkey']);
+                                       DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'statusnet', 'consumersecret', $_POST['statusnet-consumersecret']);
+                                       DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'statusnet', 'baseapi', $apibase);
+                                       //DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'statusnet', 'application_name', $_POST['statusnet-applicationname'] );
                                } else {
                                        //  the API path is not correct, maybe missing trailing / ?
                                        $apibase = $apibase . '/';
                                        $c = DI::httpClient()->fetch($apibase . 'statusnet/version.xml');
                                        if (strlen($c) > 0) {
                                                //  ok the API path is now correct, let's save the settings
-                                               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(DI::userSession()->getLocalUserId(), 'statusnet', 'consumerkey', $_POST['statusnet-consumerkey']);
+                                               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'statusnet', 'consumersecret', $_POST['statusnet-consumersecret']);
+                                               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'statusnet', 'baseapi', $apibase);
                                        } else {
                                                //  still not the correct API base, let's do noting
-                                               notice(DI::l10n()->t('We could not contact the GNU Social API with the Path you entered.') . EOL);
+                                               DI::sysmsg()->addNotice(DI::l10n()->t('We could not contact the GNU Social API with the Path you entered.'));
                                        }
                                }
                        } else {
                                if (isset($_POST['statusnet-pin'])) {
                                        //  if the user supplied us with a PIN from GNU Social, let the magic of OAuth happen
-                                       $api = DI::pConfig()->get(local_user(), 'statusnet', 'baseapi');
-                                       $ckey = DI::pConfig()->get(local_user(), 'statusnet', 'consumerkey');
-                                       $csecret = DI::pConfig()->get(local_user(), 'statusnet', 'consumersecret');
+                                       $api = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'statusnet', 'baseapi');
+                                       $ckey = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'statusnet', 'consumerkey');
+                                       $csecret = DI::pConfig()->get(DI::userSession()->getLocalUserId(), '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
-                                       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);
+                                       DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'statusnet', 'oauthtoken', $token['oauth_token']);
+                                       DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'statusnet', 'oauthsecret', $token['oauth_token_secret']);
+                                       DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'statusnet', 'post', 1);
+                                       DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'statusnet', 'post_taglinks', 1);
                                        //  reload the Addon Settings page, if we don't do it see Bug #42
                                } 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
-                                       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']));
+                                       DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'statusnet', 'post', intval($_POST['statusnet-enable']));
+                                       DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'statusnet', 'post_by_default', intval($_POST['statusnet-default']));
+                                       DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'statusnet', 'mirror_posts', intval($_POST['statusnet-mirror']));
+                                       DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'statusnet', 'import', intval($_POST['statusnet-import']));
+                                       DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'statusnet', 'create_user', intval($_POST['statusnet-create_user']));
 
                                        if (!intval($_POST['statusnet-mirror']))
-                                               DI::pConfig()->delete(local_user(), 'statusnet', 'lastid');
+                                               DI::pConfig()->delete(DI::userSession()->getLocalUserId(), 'statusnet', 'lastid');
                                }
                        }
                }
@@ -213,7 +213,7 @@ function statusnet_settings_post(App $a, $post)
 
 function statusnet_settings(App $a, array &$data)
 {
-       if (!local_user()) {
+       if (!DI::userSession()->getLocalUserId()) {
                return;
        }
 
@@ -225,16 +225,16 @@ function statusnet_settings(App $a, array &$data)
         *    allow the user to cancel the connection process at this step
         * 3) Checkbox for "Send public notices (respect size limitation)
         */
-       $baseapi            = 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', false);
-       $def_enabled        = DI::pConfig()->get(local_user(), 'statusnet', 'post_by_default', false);
-       $mirror_enabled     = DI::pConfig()->get(local_user(), 'statusnet', 'mirror_posts', false);
-       $createuser_enabled = DI::pConfig()->get(local_user(), 'statusnet', 'create_user', false);
-       $import             = DI::pConfig()->get(local_user(), 'statusnet', 'import');
+       $baseapi            = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'statusnet', 'baseapi');
+       $ckey               = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'statusnet', 'consumerkey');
+       $csecret            = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'statusnet', 'consumersecret');
+       $otoken             = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'statusnet', 'oauthtoken');
+       $osecret            = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'statusnet', 'oauthsecret');
+       $enabled            = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'statusnet', 'post', false);
+       $def_enabled        = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'statusnet', 'post_by_default', false);
+       $mirror_enabled     = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'statusnet', 'mirror_posts', false);
+       $createuser_enabled = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'statusnet', 'create_user', false);
+       $import             = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'statusnet', 'import');
 
        // Radio button list to select existing application credentials
        $sites = array_map(function ($site) {
@@ -256,7 +256,7 @@ function statusnet_settings(App $a, array &$data)
                                $connected_account = DI::l10n()->t('Currently connected to: <a href="%s" target="_statusnet">%s</a>', $account->statusnet_profile_url, $account->screen_name);
                        }
 
-                       $user = User::getById(local_user());
+                       $user = User::getById(DI::userSession()->getLocalUserId());
                        if ($user['hidewall']) {
                                $privacy_warning = DI::l10n()->t('<strong>Note</strong>: Due your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to GNU Social will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted.');
                        }
@@ -366,28 +366,28 @@ function statusnet_hook_fork(App $a, array &$b)
                }
        } 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']) {
+               if (strpos($post['postopts'] ?? '', 'statusnet') === false || ($post['parent'] != $post['id']) || $post['private']) {
                        $b['execute'] = false;
                        return;
                }
        }
 }
 
-function statusnet_post_local(App $a, &$b)
+function statusnet_post_local(App $a, array &$b)
 {
        if ($b['edit']) {
                return;
        }
 
-       if (!local_user() || (local_user() != $b['uid'])) {
+       if (!DI::userSession()->getLocalUserId() || (DI::userSession()->getLocalUserId() != $b['uid'])) {
                return;
        }
 
-       $statusnet_post = DI::pConfig()->get(local_user(), 'statusnet', 'post');
+       $statusnet_post = DI::pConfig()->get(DI::userSession()->getLocalUserId(), '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(DI::pConfig()->get(local_user(), 'statusnet', 'post_by_default'))) {
+       if ($b['api_source'] && intval(DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'statusnet', 'post_by_default'))) {
                $statusnet_enable = 1;
        }
 
@@ -412,67 +412,69 @@ function statusnet_action(App $a, $uid, $pid, $action)
 
        $connection = new StatusNetOAuth($api, $ckey, $csecret, $otoken, $osecret);
 
-       Logger::debug("statusnet_action '" . $action . "' ID: " . $pid);
+       Logger::debug('statusnet_action "' . $action . '" ID: ' . $pid);
 
        switch ($action) {
-               case "delete":
-                       $result = $connection->post("statuses/destroy/" . $pid);
+               case 'delete':
+                       $result = $connection->post('statuses/destroy/' . $pid);
                        break;
-               case "like":
-                       $result = $connection->post("favorites/create/" . $pid);
+
+               case 'like':
+                       $result = $connection->post('favorites/create/' . $pid);
                        break;
-               case "unlike":
-                       $result = $connection->post("favorites/destroy/" . $pid);
+
+               case 'unlike':
+                       $result = $connection->post('favorites/destroy/' . $pid);
                        break;
        }
-       Logger::info("statusnet_action '" . $action . "' send, result: " . print_r($result, true));
+       Logger::info('statusnet_action "' . $action . '" send, result: ' . print_r($result, true));
 }
 
-function statusnet_post_hook(App $a, &$b)
+function statusnet_post_hook(App $a, array &$b)
 {
        /**
         * Post to GNU Social
         */
-       if (!DI::pConfig()->get($b["uid"], 'statusnet', 'import')) {
+       if (!DI::pConfig()->get($b['uid'], 'statusnet', 'import')) {
                if ($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited']))
                        return;
        }
 
-       $b['body'] = Post\Media::addAttachmentsToBody($b['uri-id'], $b['body']);
+       $b['body'] = Post\Media::addAttachmentsToBody($b['uri-id'], DI::contentItem()->addSharedPost($b));
 
-       $api = DI::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::debug("statusnet_post_hook: parameter " . print_r($b, true));
+               Logger::debug('statusnet_post_hook: parameter ', ['b' => $b]);
 
                // 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::notice("statusnet_post_hook: no GNU Social post " . $b["parent"]);
+               if ((substr($b['parent-uri'], 0, $hostlength) != $hostname . '::') && (substr($b['extid'], 0, $hostlength) != $hostname . '::') && (substr($b['thr-parent'], 0, $hostlength) != $hostname . '::')) {
+                       Logger::notice('statusnet_post_hook: no GNU Social post ' . $b['parent']);
                        return;
                }
 
-               $condition = ['uri' => $b["thr-parent"], 'uid' => $b["uid"]];
+               $condition = ['uri' => $b['thr-parent'], 'uid' => $b['uid']];
                $orig_post = Post::selectFirst(['author-link', 'uri'], $condition);
                if (!DBA::isResult($orig_post)) {
-                       Logger::notice("statusnet_post_hook: no parent found " . $b["thr-parent"]);
+                       Logger::notice('statusnet_post_hook: no parent found ' . $b['thr-parent']);
                        return;
                } else {
                        $iscomment = true;
                }
 
-               $nick = preg_replace("=https?://(.*)/(.*)=ism", "$2", $orig_post["author-link"]);
+               $nick = preg_replace("=https?://(.*)/(.*)=ism", "$2", $orig_post['author-link']);
 
-               $nickname = "@[url=" . $orig_post["author-link"] . "]" . $nick . "[/url]";
-               $nicknameplain = "@" . $nick;
+               $nickname = '@[url=' . $orig_post['author-link'] . ']' . $nick . '[/url]';
+               $nicknameplain = '@' . $nick;
 
-               Logger::info("statusnet_post_hook: comparing " . $nickname . " and " . $nicknameplain . " with " . $b["body"]);
-               if ((strpos($b["body"], $nickname) === false) && (strpos($b["body"], $nicknameplain) === false)) {
-                       $b["body"] = $nickname . " " . $b["body"];
+               Logger::info('statusnet_post_hook: comparing ' . $nickname . ' and ' . $nicknameplain . ' with ' . $b['body']);
+               if ((strpos($b['body'], $nickname) === false) && (strpos($b['body'], $nicknameplain) === false)) {
+                       $b['body'] = $nickname . ' ' . $b['body'];
                }
 
-               Logger::info("statusnet_post_hook: parent found " . print_r($orig_post, true));
+               Logger::info('statusnet_post_hook: parent found ', ['orig_post' => $orig_post]);
        } else {
                $iscomment = false;
 
@@ -489,15 +491,15 @@ function statusnet_post_hook(App $a, &$b)
        }
 
        if (($b['verb'] == Activity::POST) && $b['deleted']) {
-               statusnet_action($a, $b["uid"], substr($orig_post["uri"], $hostlength), "delete");
+               statusnet_action($a, $b['uid'], substr($orig_post['uri'], $hostlength), 'delete');
        }
 
        if ($b['verb'] == Activity::LIKE) {
-               Logger::info("statusnet_post_hook: parameter 2 " . substr($b["thr-parent"], $hostlength));
+               Logger::info('statusnet_post_hook: parameter 2 ' . substr($b['thr-parent'], $hostlength));
                if ($b['deleted'])
-                       statusnet_action($a, $b["uid"], substr($b["thr-parent"], $hostlength), "unlike");
+                       statusnet_action($a, $b['uid'], substr($b['thr-parent'], $hostlength), 'unlike');
                else
-                       statusnet_action($a, $b["uid"], substr($b["thr-parent"], $hostlength), "like");
+                       statusnet_action($a, $b['uid'], substr($b['thr-parent'], $hostlength), 'like');
                return;
        }
 
@@ -510,7 +512,7 @@ function statusnet_post_hook(App $a, &$b)
                return;
        }
 
-       if ($b['app'] == "StatusNet") {
+       if ($b['app'] == 'StatusNet') {
                return;
        }
 
@@ -535,34 +537,34 @@ function statusnet_post_hook(App $a, &$b)
 
                DI::pConfig()->set($b['uid'], 'statusnet', 'max_char', $max_char);
 
-               $tempfile = "";
+               $tempfile = '';
                $msgarr = Plaintext::getPost($b, $max_char, true, 7);
-               $msg = $msgarr["text"];
+               $msg = $msgarr['text'];
 
-               if (($msg == "") && isset($msgarr["title"]))
-                       $msg = Plaintext::shorten($msgarr["title"], $max_char - 50, $b['uid']);
+               if (($msg == '') && isset($msgarr['title']))
+                       $msg = Plaintext::shorten($msgarr['title'], $max_char - 50, $b['uid']);
 
-               $image = "";
+               $image = '';
 
-               if (isset($msgarr["url"]) && ($msgarr["type"] != "photo")) {
-                       $msg .= " \n" . $msgarr["url"];
-               } elseif (isset($msgarr["image"]) && ($msgarr["type"] != "video")) {
-                       $image = $msgarr["image"];
+               if (isset($msgarr['url']) && ($msgarr['type'] != 'photo')) {
+                       $msg .= " \n" . $msgarr['url'];
+               } elseif (isset($msgarr['image']) && ($msgarr['type'] != 'video')) {
+                       $image = $msgarr['image'];
                }
 
-               if ($image != "") {
+               if ($image != '') {
                        $img_str = DI::httpClient()->fetch($image);
-                       $tempfile = tempnam(System::getTempPath(), "cache");
+                       $tempfile = tempnam(System::getTempPath(), 'cache');
                        file_put_contents($tempfile, $img_str);
-                       $postdata = ["status" => $msg, "media[]" => $tempfile];
+                       $postdata = ['status' => $msg, 'media[]' => $tempfile];
                } else {
-                       $postdata = ["status" => $msg];
+                       $postdata = ['status' => $msg];
                }
 
                // and now send it :-)
                if (strlen($msg)) {
                        if ($iscomment) {
-                               $postdata["in_reply_to_status_id"] = substr($orig_post["uri"], $hostlength);
+                               $postdata['in_reply_to_status_id'] = substr($orig_post['uri'], $hostlength);
                                Logger::info('statusnet_post send reply ' . print_r($postdata, true));
                        }
 
@@ -578,17 +580,17 @@ function statusnet_post_hook(App $a, &$b)
                                "\nmessage: " . $msg . "\nOriginal post: " . print_r($b, true) . "\nPost Data: " . print_r($postdata, true));
 
                        if (!empty($result->source)) {
-                               DI::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::notice('Send to GNU Social failed: "' . $result->error . '"');
                        } elseif ($iscomment) {
-                               Logger::notice('statusnet_post: Update extid ' . $result->id . " for post id " . $b['id']);
-                               Item::update(['extid' => $hostname . "::" . $result->id, 'body' => $result->text], ['id' => $b['id']]);
+                               Logger::notice('statusnet_post: Update extid ' . $result->id . ' for post id ' . $b['id']);
+                               Item::update(['extid' => $hostname . '::' . $result->id, 'body' => $result->text], ['id' => $b['id']]);
                        }
                }
-               if ($tempfile != "") {
+               if ($tempfile != '') {
                        unlink($tempfile);
                }
        }
@@ -607,10 +609,10 @@ function statusnet_addon_admin_post(App $a)
                $secret = trim($_POST['secret'][$id]);
                $key = trim($_POST['key'][$id]);
                //$applicationname = (!empty($_POST['applicationname']) ? Strings::escapeTags(trim($_POST['applicationname'][$id])):'');
-               if ($sitename != "" &&
-                       $apiurl != "" &&
-                       $secret != "" &&
-                       $key != "" &&
+               if ($sitename != '' &&
+                       $apiurl != '' &&
+                       $secret != '' &&
+                       $key != '' &&
                        empty($_POST['delete'][$id])) {
 
                        $sites[] = [
@@ -626,7 +628,7 @@ function statusnet_addon_admin_post(App $a)
        $sites = DI::config()->set('statusnet', 'sites', $sites);
 }
 
-function statusnet_addon_admin(App $a, &$o)
+function statusnet_addon_admin(App $a, string &$o)
 {
        $sites = DI::config()->get('statusnet', 'sites');
        $sitesform = [];
@@ -652,50 +654,50 @@ function statusnet_addon_admin(App $a, &$o)
                //'applicationname' => Array("applicationname[$id]", DI::l10n()->t("Application name"), "", ""),
        ];
 
-       $t = Renderer::getMarkupTemplate("admin.tpl", "addon/statusnet/");
+       $t = Renderer::getMarkupTemplate('admin.tpl', 'addon/statusnet/');
        $o = Renderer::replaceMacros($t, [
                '$submit' => DI::l10n()->t('Save Settings'),
                '$sites' => $sitesform,
        ]);
 }
 
-function statusnet_prepare_body(App $a, &$b)
+function statusnet_prepare_body(App $a, array &$b)
 {
-       if ($b["item"]["network"] != Protocol::STATUSNET) {
+       if ($b['item']['network'] != Protocol::STATUSNET) {
                return;
        }
 
-       if ($b["preview"]) {
-               $max_char = DI::pConfig()->get(local_user(), 'statusnet', 'max_char');
+       if ($b['preview']) {
+               $max_char = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'statusnet', 'max_char');
                if (intval($max_char) == 0) {
                        $max_char = 140;
                }
 
-               $item = $b["item"];
-               $item["plink"] = DI::baseUrl()->get() . "/display/" . $item["guid"];
+               $item = $b['item'];
+               $item['plink'] = DI::baseUrl()->get() . '/display/' . $item['guid'];
 
-               $condition = ['uri' => $item["thr-parent"], 'uid' => local_user()];
+               $condition = ['uri' => $item['thr-parent'], 'uid' => DI::userSession()->getLocalUserId()];
                $orig_post = Post::selectFirst(['author-link', 'uri'], $condition);
                if (DBA::isResult($orig_post)) {
-                       $nick = preg_replace("=https?://(.*)/(.*)=ism", "$2", $orig_post["author-link"]);
+                       $nick = preg_replace("=https?://(.*)/(.*)=ism", "$2", $orig_post['author-link']);
 
-                       $nickname = "@[url=" . $orig_post["author-link"] . "]" . $nick . "[/url]";
-                       $nicknameplain = "@" . $nick;
+                       $nickname = '@[url=' . $orig_post['author-link'] . ']' . $nick . '[/url]';
+                       $nicknameplain = '@' . $nick;
 
-                       if ((strpos($item["body"], $nickname) === false) && (strpos($item["body"], $nicknameplain) === false)) {
-                               $item["body"] = $nickname . " " . $item["body"];
+                       if ((strpos($item['body'], $nickname) === false) && (strpos($item['body'], $nicknameplain) === false)) {
+                               $item['body'] = $nickname . ' ' . $item['body'];
                        }
                }
 
                $msgarr = Plaintext::getPost($item, $max_char, true, 7);
-               $msg = $msgarr["text"];
+               $msg = $msgarr['text'];
 
-               if (isset($msgarr["url"]) && ($msgarr["type"] != "photo")) {
-                       $msg .= " " . $msgarr["url"];
+               if (isset($msgarr['url']) && ($msgarr['type'] != 'photo')) {
+                       $msg .= ' ' . $msgarr['url'];
                }
 
-               if (isset($msgarr["image"])) {
-                       $msg .= " " . $msgarr["image"];
+               if (isset($msgarr['image'])) {
+                       $msg .= ' ' . $msgarr['image'];
                }
 
                $b['html'] = nl2br(htmlspecialchars($msg));
@@ -743,7 +745,7 @@ function statusnet_cron(App $a, $b)
                }
 
                Logger::notice('statusnet: importing timeline from user ' . $rr['uid']);
-               statusnet_fetchhometimeline($a, $rr["uid"], $rr["v"]);
+               statusnet_fetchhometimeline($a, $rr['uid'], $rr['v']);
        }
 
        Logger::notice('statusnet: cron_end');
@@ -751,7 +753,7 @@ function statusnet_cron(App $a, $b)
        DI::config()->set('statusnet', 'last_poll', time());
 }
 
-function statusnet_fetchtimeline(App $a, $uid)
+function statusnet_fetchtimeline(App $a, int $uid)
 {
        $ckey    = DI::pConfig()->get($uid, 'statusnet', 'consumerkey');
        $csecret = DI::pConfig()->get($uid, 'statusnet', 'consumersecret');
@@ -760,26 +762,30 @@ function statusnet_fetchtimeline(App $a, $uid)
        $osecret = DI::pConfig()->get($uid, 'statusnet', 'oauthsecret');
        $lastid  = DI::pConfig()->get($uid, 'statusnet', 'lastid');
 
-       require_once 'mod/item.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 = DI::pConfig()->get($uid, 'statusnet', 'application_name');
-       if ($application_name == "") {
+       if ($application_name == '') {
                $application_name = DI::config()->get('statusnet', 'application_name');
        }
-       if ($application_name == "") {
+       if ($application_name == '') {
                $application_name = DI::baseUrl()->getHostname();
        }
 
        $connection = new StatusNetOAuth($api, $ckey, $csecret, $otoken, $osecret);
 
-       $parameters = ["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 == "");
+       $first_time = ($lastid == '');
 
-       if ($lastid <> "") {
-               $parameters["since_id"] = $lastid;
+       if ($lastid != '') {
+               $parameters['since_id'] = $lastid;
        }
 
        $items = $connection->get('statuses/user_timeline', $parameters);
@@ -799,7 +805,7 @@ function statusnet_fetchtimeline(App $a, $uid)
                                continue;
                        }
 
-                       if ($post->source == "activity") {
+                       if ($post->source == 'activity') {
                                continue;
                        }
 
@@ -807,51 +813,38 @@ function statusnet_fetchtimeline(App $a, $uid)
                                continue;
                        }
 
-                       if ($post->in_reply_to_status_id != "") {
+                       if ($post->in_reply_to_status_id != '') {
                                continue;
                        }
 
                        if (!stristr($post->source, $application_name)) {
-                               $_SESSION["authenticated"] = true;
-                               $_SESSION["uid"] = $uid;
-
-                               unset($_REQUEST);
-                               $_REQUEST["api_source"] = true;
-                               $_REQUEST["profile_uid"] = $uid;
-                               //$_REQUEST["source"] = "StatusNet";
-                               $_REQUEST["source"] = $post->source;
-                               $_REQUEST["extid"] = Protocol::STATUSNET;
-
-                               if (isset($post->id)) {
-                                       $_REQUEST['message_id'] = Item::newURI($uid, Protocol::STATUSNET . ":" . $post->id);
-                               }
-
-                               //$_REQUEST["date"] = $post->created_at;
+                               $postarray['uid'] = $uid;
+                               $postarray['app'] = $post->source;
+                               $postarray['extid'] = Protocol::STATUSNET;
 
-                               $_REQUEST["title"] = "";
+                               $postarray['title'] = '';
 
-                               $_REQUEST["body"] = $post->text;
+                               $postarray['body'] = $post->text;
                                if (is_string($post->place->name)) {
-                                       $_REQUEST["location"] = $post->place->name;
+                                       $postarray['location'] = $post->place->name;
                                }
 
                                if (is_string($post->place->full_name)) {
-                                       $_REQUEST["location"] = $post->place->full_name;
+                                       $postarray['location'] = $post->place->full_name;
                                }
 
                                if (is_array($post->geo->coordinates)) {
-                                       $_REQUEST["coord"] = $post->geo->coordinates[0] . " " . $post->geo->coordinates[1];
+                                       $postarray['coord'] = $post->geo->coordinates[0] . ' ' . $post->geo->coordinates[1];
                                }
 
                                if (is_array($post->coordinates->coordinates)) {
-                                       $_REQUEST["coord"] = $post->coordinates->coordinates[1] . " " . $post->coordinates->coordinates[0];
+                                       $postarray['coord'] = $post->coordinates->coordinates[1] . ' ' . $post->coordinates->coordinates[0];
                                }
 
-                               //print_r($_REQUEST);
-                               if ($_REQUEST["body"] != "") {
+                               if ($postarray['body'] != '') {
                                        Logger::notice('statusnet: posting for user ' . $uid);
 
-                                       item_post($a);
+                                       Item::insert($postarray, true);
                                }
                        }
                }
@@ -866,7 +859,7 @@ function statusnet_address($contact)
 
        $hostname = preg_replace("=https?://([\w\.]*)/.*=ism", "$1", $contact->statusnet_profile_url);
 
-       $address = $contact->screen_name . "@" . $hostname;
+       $address = $contact->screen_name . '@' . $hostname;
 
        return $address;
 }
@@ -884,8 +877,8 @@ function statusnet_fetch_contact($uid, $contact, $create_user)
                return 0;
        }
 
-       if (DBA::isResult($contact_record) && ($contact_record["readonly"] || $contact_record["blocked"])) {
-               Logger::info("statusnet_fetch_contact: Contact '" . $contact_record["nick"] . "' is blocked or readonly.");
+       if (DBA::isResult($contact_record) && ($contact_record['readonly'] || $contact_record['blocked'])) {
+               Logger::info('statusnet_fetch_contact: Contact "' . $contact_record['nick'] . '" is blocked or readonly.');
                return -1;
        }
 
@@ -938,7 +931,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 ((!$contact_record['photo']) || (!$contact_record['thumb']) || (!$contact_record['micro']) || ($update_photo)) {
-                       Logger::info("statusnet_fetch_contact: Updating contact " . $contact->screen_name);
+                       Logger::info('statusnet_fetch_contact: Updating contact ' . $contact->screen_name);
 
                        $photos = Photo::importProfilePhoto($contact->profile_image_url, $uid, $contact_record['id']);
 
@@ -960,10 +953,10 @@ function statusnet_fetch_contact($uid, $contact, $create_user)
                }
        }
 
-       return $contact_record["id"];
+       return $contact_record['id'];
 }
 
-function statusnet_fetchuser(App $a, $uid, $screen_name = "", $user_id = "")
+function statusnet_fetchuser(App $a, $uid, $screen_name = '', $user_id = '')
 {
        $ckey    = DI::pConfig()->get($uid, 'statusnet', 'consumerkey');
        $csecret = DI::pConfig()->get($uid, 'statusnet', 'consumersecret');
@@ -984,12 +977,12 @@ function statusnet_fetchuser(App $a, $uid, $screen_name = "", $user_id = "")
 
        $parameters = [];
 
-       if ($screen_name != "") {
-               $parameters["screen_name"] = $screen_name;
+       if ($screen_name != '') {
+               $parameters['screen_name'] = $screen_name;
        }
 
-       if ($user_id != "") {
-               $parameters["user_id"] = $user_id;
+       if ($user_id != '') {
+               $parameters['user_id'] = $user_id;
        }
 
        // Fetching user data
@@ -1004,9 +997,9 @@ function statusnet_fetchuser(App $a, $uid, $screen_name = "", $user_id = "")
        return $contact_id;
 }
 
-function statusnet_createpost(App $a, $uid, $post, $self, $create_user, $only_existing_contact)
+function statusnet_createpost(App $a, int $uid, $post, $self, $create_user, bool $only_existing_contact)
 {
-       Logger::info("statusnet_createpost: start");
+       Logger::info('statusnet_createpost: start');
 
        $api = DI::pConfig()->get($uid, 'statusnet', 'baseapi');
        $hostname = preg_replace("=https?://([\w\.]*)/.*=ism", "$1", $api);
@@ -1023,16 +1016,16 @@ function statusnet_createpost(App $a, $uid, $post, $self, $create_user, $only_ex
                $content = $post;
        }
 
-       $postarray['uri'] = $hostname . "::" . $content->id;
+       $postarray['uri'] = $hostname . '::' . $content->id;
 
        if (Post::exists(['extid' => $postarray['uri'], 'uid' => $uid])) {
                return [];
        }
 
-       $contactid = 0;
+       $contactId = 0;
 
        if (!empty($content->in_reply_to_status_id)) {
-               $thr_parent = $hostname . "::" . $content->in_reply_to_status_id;
+               $thr_parent = $hostname . '::' . $content->in_reply_to_status_id;
 
                $item = Post::selectFirst(['uri'], ['uri' => $thr_parent, 'uid' => $uid]);
                if (!DBA::isResult($item)) {
@@ -1050,13 +1043,13 @@ function statusnet_createpost(App $a, $uid, $post, $self, $create_user, $only_ex
                $own_url = DI::pConfig()->get($uid, 'statusnet', 'own_url');
 
                if ($content->user->id == $own_url) {
-                       $self = DBA::selectFirst([], ['self' => true, 'uid' => $uid]);
+                       $self = DBA::selectFirst('contact', [], ['self' => true, 'uid' => $uid]);
                        if (DBA::isResult($self)) {
-                               $contactid = $self["id"];
+                               $contactId = $self['id'];
 
-                               $postarray['owner-name'] = $self["name"];
-                               $postarray['owner-link'] = $self["url"];
-                               $postarray['owner-avatar'] = $self["photo"];
+                               $postarray['owner-name'] = $self['name'];
+                               $postarray['owner-link'] = $self['url'];
+                               $postarray['owner-avatar'] = $self['photo'];
                        } else {
                                return [];
                        }
@@ -1067,19 +1060,19 @@ function statusnet_createpost(App $a, $uid, $post, $self, $create_user, $only_ex
                $postarray['object-type'] = Activity\ObjectType::NOTE;
        }
 
-       if ($contactid == 0) {
-               $contactid = statusnet_fetch_contact($uid, $post->user, $create_user);
+       if ($contactId == 0) {
+               $contactId = statusnet_fetch_contact($uid, $post->user, $create_user);
                $postarray['owner-name'] = $post->user->name;
                $postarray['owner-link'] = $post->user->statusnet_profile_url;
                $postarray['owner-avatar'] = $post->user->profile_image_url;
        }
-       if (($contactid == 0) && !$only_existing_contact) {
-               $contactid = $self['id'];
-       } elseif ($contactid <= 0) {
+       if (($contactId == 0) && !$only_existing_contact) {
+               $contactId = $self['id'];
+       } elseif ($contactId <= 0) {
                return [];
        }
 
-       $postarray['contact-id'] = $contactid;
+       $postarray['contact-id'] = $contactId;
 
        $postarray['verb'] = Activity::POST;
 
@@ -1088,7 +1081,7 @@ function statusnet_createpost(App $a, $uid, $post, $self, $create_user, $only_ex
        $postarray['author-avatar'] = $content->user->profile_image_url;
 
        // To-Do: Maybe unreliable? Can the api be entered without trailing "/"?
-       $hostname = str_replace("/api/", "/notice/", DI::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);
@@ -1106,22 +1099,22 @@ function statusnet_createpost(App $a, $uid, $post, $self, $create_user, $only_ex
        $postarray['edited'] = DateTimeFormat::utc($content->created_at);
 
        if (!empty($content->place->name)) {
-               $postarray["location"] = $content->place->name;
+               $postarray['location'] = $content->place->name;
        }
 
        if (!empty($content->place->full_name)) {
-               $postarray["location"] = $content->place->full_name;
+               $postarray['location'] = $content->place->full_name;
        }
 
        if (!empty($content->geo->coordinates)) {
-               $postarray["coord"] = $content->geo->coordinates[0] . " " . $content->geo->coordinates[1];
+               $postarray['coord'] = $content->geo->coordinates[0] . ' ' . $content->geo->coordinates[1];
        }
 
        if (!empty($content->coordinates->coordinates)) {
-               $postarray["coord"] = $content->coordinates->coordinates[1] . " " . $content->coordinates->coordinates[0];
+               $postarray['coord'] = $content->coordinates->coordinates[1] . ' ' . $content->coordinates->coordinates[0];
        }
 
-       Logger::info("statusnet_createpost: end");
+       Logger::info('statusnet_createpost: end');
 
        return $postarray;
 }
@@ -1140,7 +1133,7 @@ function statusnet_fetchhometimeline(App $a, $uid, $mode = 1)
        // "create_user" is deactivated, since currently you cannot add users manually by now
        $create_user = true;
 
-       Logger::info("statusnet_fetchhometimeline: Fetching for user " . $uid);
+       Logger::info('statusnet_fetchhometimeline: Fetching for user ' . $uid);
 
        $connection = new StatusNetOAuth($api, $ckey, $csecret, $otoken, $osecret);
 
@@ -1152,36 +1145,41 @@ function statusnet_fetchhometimeline(App $a, $uid, $mode = 1)
 
        $contact = Contact::selectFirst([], ['id' => $own_contact, 'uid' => $uid]);
        if (DBA::isResult($contact)) {
-               $nick = $contact["nick"];
+               $nick = $contact['nick'];
        } else {
-               Logger::info("statusnet_fetchhometimeline: Own GNU Social contact not found for user " . $uid);
+               Logger::info('statusnet_fetchhometimeline: Own GNU Social contact not found for user ' . $uid);
                return;
        }
 
        $self = Contact::selectFirst([], ['self' => true, 'uid' => $uid]);
        if (!DBA::isResult($self)) {
-               Logger::info("statusnet_fetchhometimeline: Own contact not found for user " . $uid);
+               Logger::info('statusnet_fetchhometimeline: Own contact not found for user ' . $uid);
                return;
        }
 
        $user = User::getById($uid);
        if (!DBA::isResult($user)) {
-               Logger::info("statusnet_fetchhometimeline: Own user not found for user " . $uid);
+               Logger::info('statusnet_fetchhometimeline: Own user not found for user ' . $uid);
                return;
        }
 
-       $parameters = ["exclude_replies" => false, "trim_user" => false, "contributor_details" => true, "include_rts" => true];
-       //$parameters["count"] = 200;
+       $parameters = [
+               'exclude_replies' => false,
+               'trim_user' => false,
+               'contributor_details' => true,
+               'include_rts' => true,
+               //'count' => 200,
+       ];
 
        if ($mode == 1) {
                // Fetching timeline
                $lastid = DI::pConfig()->get($uid, 'statusnet', 'lasthometimelineid');
                //$lastid = 1;
 
-               $first_time = ($lastid == "");
+               $first_time = ($lastid == '');
 
-               if ($lastid != "") {
-                       $parameters["since_id"] = $lastid;
+               if ($lastid != '') {
+                       $parameters['since_id'] = $lastid;
                }
 
                $items = $connection->get('statuses/home_timeline', $parameters);
@@ -1194,16 +1192,16 @@ function statusnet_fetchhometimeline(App $a, $uid, $mode = 1)
                        } elseif (is_string($items) || is_float($items) || is_int($items)) {
                                $errormsg = $items;
                        } else {
-                               $errormsg = "Unknown error";
+                               $errormsg = 'Unknown error';
                        }
 
-                       Logger::info("statusnet_fetchhometimeline: Error fetching home timeline: " . $errormsg);
+                       Logger::info('statusnet_fetchhometimeline: Error fetching home timeline: ' . $errormsg);
                        return;
                }
 
                $posts = array_reverse($items);
 
-               Logger::info("statusnet_fetchhometimeline: Fetching timeline for user " . $uid . " " . sizeof($posts) . " items");
+               Logger::info('statusnet_fetchhometimeline: Fetching timeline for user ' . $uid . ' ' . sizeof($posts) . ' items');
 
                if (count($posts)) {
                        foreach ($posts as $post) {
@@ -1224,14 +1222,14 @@ function statusnet_fetchhometimeline(App $a, $uid, $mode = 1)
                                } else {
                                        $postarray = statusnet_createpost($a, $uid, $post, $self, $create_user, true);
 
-                                       if (trim($postarray['body']) == "") {
+                                       if (trim($postarray['body']) == '') {
                                                continue;
                                        }
 
                                        $item = Item::insert($postarray);
-                                       $postarray["id"] = $item;
+                                       $postarray['id'] = $item;
 
-                                       Logger::notice('statusnet_fetchhometimeline: User ' . $self["nick"] . ' posted home timeline item ' . $item);
+                                       Logger::notice('statusnet_fetchhometimeline: User ' . $self['nick'] . ' posted home timeline item ' . $item);
                                }
                        }
                }
@@ -1240,22 +1238,22 @@ function statusnet_fetchhometimeline(App $a, $uid, $mode = 1)
 
        // Fetching mentions
        $lastid = DI::pConfig()->get($uid, 'statusnet', 'lastmentionid');
-       $first_time = ($lastid == "");
+       $first_time = ($lastid == '');
 
-       if ($lastid != "") {
-               $parameters["since_id"] = $lastid;
+       if ($lastid != '') {
+               $parameters['since_id'] = $lastid;
        }
 
        $items = $connection->get('statuses/mentions_timeline', $parameters);
 
        if (!is_array($items)) {
-               Logger::info("statusnet_fetchhometimeline: Error fetching mentions: " . print_r($items, true));
+               Logger::info('statusnet_fetchhometimeline: Error fetching mentions: ' . print_r($items, true));
                return;
        }
 
        $posts = array_reverse($items);
 
-       Logger::info("statusnet_fetchhometimeline: Fetching mentions for user " . $uid . " " . sizeof($posts) . " items");
+       Logger::info('statusnet_fetchhometimeline: Fetching mentions for user ' . $uid . ' ' . sizeof($posts) . ' items');
 
        if (count($posts)) {
                foreach ($posts as $post) {
@@ -1275,13 +1273,13 @@ function statusnet_fetchhometimeline(App $a, $uid, $mode = 1)
                                        $conversations[$post->statusnet_conversation_id] = $post->statusnet_conversation_id;
                                }
                        } else {
-                               if (trim($postarray['body']) == "") {
+                               if (trim($postarray['body']) == '') {
                                        continue;
                                }
 
                                $item = Item::insert($postarray);
 
-                               Logger::notice('statusnet_fetchhometimeline: User ' . $self["nick"] . ' posted mention timeline item ' . $item);
+                               Logger::notice('statusnet_fetchhometimeline: User ' . $self['nick'] . ' posted mention timeline item ' . $item);
                        }
                }
        }
@@ -1300,7 +1298,7 @@ function statusnet_complete_conversation(App $a, $uid, $self, $create_user, $nic
 
        $connection = new StatusNetOAuth($api, $ckey, $csecret, $otoken, $osecret);
 
-       $parameters["count"] = 200;
+       $parameters['count'] = 200;
 
        $items = $connection->get('statusnet/conversation/' . $conversation, $parameters);
        if (is_array($items)) {
@@ -1314,9 +1312,9 @@ function statusnet_complete_conversation(App $a, $uid, $self, $create_user, $nic
                        }
 
                        $item = Item::insert($postarray);
-                       $postarray["id"] = $item;
+                       $postarray['id'] = $item;
 
-                       Logger::notice('statusnet_complete_conversation: User ' . $self["nick"] . ' posted home timeline item ' . $item);
+                       Logger::notice('statusnet_complete_conversation: User ' . $self['nick'] . ' posted home timeline item ' . $item);
                }
        }
 }
@@ -1325,19 +1323,16 @@ function statusnet_convertmsg(App $a, $body)
 {
        $body = preg_replace("=\[url\=https?://([0-9]*).([0-9]*).([0-9]*).([0-9]*)/([0-9]*)\](.*?)\[\/url\]=ism", "$1.$2.$3.$4/$5", $body);
 
-       $URLSearchString = "^\[\]";
+       $URLSearchString = '^\[\]';
        $links = preg_match_all("/[^!#@]\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", $body, $matches, PREG_SET_ORDER);
 
-       $footer = "";
-       $footerurl = "";
-       $footerlink = "";
-       $type = "";
+       $footer = $footerurl = $footerlink = $type = '';
 
        if ($links) {
                foreach ($matches AS $match) {
-                       $search = "[url=" . $match[1] . "]" . $match[2] . "[/url]";
+                       $search = '[url=' . $match[1] . ']' . $match[2] . '[/url]';
 
-                       Logger::info("statusnet_convertmsg: expanding url " . $match[1]);
+                       Logger::info('statusnet_convertmsg: expanding url ' . $match[1]);
 
                        try {
                                $expanded_url = DI::httpClient()->finalUrl($match[1]);
@@ -1346,56 +1341,56 @@ function statusnet_convertmsg(App $a, $body)
                                $expanded_url = $match[1];
                        }
 
-                       Logger::info("statusnet_convertmsg: fetching data for " . $expanded_url);
+                       Logger::info('statusnet_convertmsg: fetching data for ' . $expanded_url);
 
                        $oembed_data = OEmbed::fetchURL($expanded_url, true);
 
-                       Logger::info("statusnet_convertmsg: fetching data: done");
+                       Logger::info('statusnet_convertmsg: fetching data: done');
 
-                       if ($type == "") {
+                       if ($type == '') {
                                $type = $oembed_data->type;
                        }
 
-                       if ($oembed_data->type == "video") {
-                               //$body = str_replace($search, "[video]".$expanded_url."[/video]", $body);
+                       if ($oembed_data->type == 'video') {
+                               //$body = str_replace($search, '[video]'.$expanded_url.'[/video]', $body);
                                $type = $oembed_data->type;
                                $footerurl = $expanded_url;
-                               $footerlink = "[url=" . $expanded_url . "]" . $expanded_url . "[/url]";
+                               $footerlink = '[url=' . $expanded_url . ']' . $expanded_url . '[/url]';
 
                                $body = str_replace($search, $footerlink, $body);
-                       } elseif (($oembed_data->type == "photo") && isset($oembed_data->url)) {
-                               $body = str_replace($search, "[url=" . $expanded_url . "][img]" . $oembed_data->url . "[/img][/url]", $body);
-                       } elseif ($oembed_data->type != "link") {
-                               $body = str_replace($search, "[url=" . $expanded_url . "]" . $expanded_url . "[/url]", $body);
+                       } elseif (($oembed_data->type == 'photo') && isset($oembed_data->url)) {
+                               $body = str_replace($search, '[url=' . $expanded_url . '][img]' . $oembed_data->url . '[/img][/url]', $body);
+                       } elseif ($oembed_data->type != 'link') {
+                               $body = str_replace($search, '[url=' . $expanded_url . ']' . $expanded_url . '[/url]', $body);
                        } else {
                                $img_str = DI::httpClient()->fetch($expanded_url, HttpClientAccept::DEFAULT, 4);
 
-                               $tempfile = tempnam(System::getTempPath(), "cache");
+                               $tempfile = tempnam(System::getTempPath(), 'cache');
                                file_put_contents($tempfile, $img_str);
                                $mime = mime_content_type($tempfile);
                                unlink($tempfile);
 
-                               if (substr($mime, 0, 6) == "image/") {
-                                       $type = "photo";
-                                       $body = str_replace($search, "[img]" . $expanded_url . "[/img]", $body);
+                               if (substr($mime, 0, 6) == 'image/') {
+                                       $type = 'photo';
+                                       $body = str_replace($search, '[img]' . $expanded_url . '[/img]', $body);
                                } else {
                                        $type = $oembed_data->type;
                                        $footerurl = $expanded_url;
-                                       $footerlink = "[url=" . $expanded_url . "]" . $expanded_url . "[/url]";
+                                       $footerlink = '[url=' . $expanded_url . ']' . $expanded_url . '[/url]';
 
                                        $body = str_replace($search, $footerlink, $body);
                                }
                        }
                }
 
-               if ($footerurl != "") {
+               if ($footerurl != '') {
                        $footer = "\n" . PageInfo::getFooterFromUrl($footerurl);
                }
 
-               if (($footerlink != "") && (trim($footer) != "")) {
-                       $removedlink = trim(str_replace($footerlink, "", $body));
+               if (($footerlink != '') && (trim($footer) != '')) {
+                       $removedlink = trim(str_replace($footerlink, '', $body));
 
-                       if (($removedlink == "") || strstr($body, $removedlink)) {
+                       if (($removedlink == '') || strstr($body, $removedlink)) {
                                $body = $removedlink;
                        }
 
@@ -1406,7 +1401,7 @@ function statusnet_convertmsg(App $a, $body)
        return $body;
 }
 
-function statusnet_fetch_own_contact(App $a, $uid)
+function statusnet_fetch_own_contact(App $a, int $uid)
 {
        $ckey    = DI::pConfig()->get($uid, 'statusnet', 'consumerkey');
        $csecret = DI::pConfig()->get($uid, 'statusnet', 'consumersecret');
@@ -1417,7 +1412,7 @@ function statusnet_fetch_own_contact(App $a, $uid)
 
        $contact_id = 0;
 
-       if ($own_url == "") {
+       if ($own_url == '') {
                $connection = new StatusNetOAuth($api, $ckey, $csecret, $otoken, $osecret);
 
                // Fetching user data
@@ -1433,7 +1428,7 @@ function statusnet_fetch_own_contact(App $a, $uid)
        } else {
                $contact = Contact::selectFirst([], ['uid' => $uid, 'alias' => $own_url]);
                if (DBA::isResult($contact)) {
-                       $contact_id = $contact["id"];
+                       $contact_id = $contact['id'];
                } else {
                        DI::pConfig()->delete($uid, 'statusnet', 'own_url');
                }
@@ -1441,18 +1436,18 @@ function statusnet_fetch_own_contact(App $a, $uid)
        return $contact_id;
 }
 
-function statusnet_is_retweet(App $a, $uid, $body)
+function statusnet_is_retweet(App $a, int $uid, string $body)
 {
        $body = trim($body);
 
        // Skip if it isn't a pure repeated messages
        // Does it start with a share?
-       if (strpos($body, "[share") > 0) {
+       if (strpos($body, '[share') > 0) {
                return false;
        }
 
        // Does it end with a share?
-       if (strlen($body) > (strrpos($body, "[/share]") + 8)) {
+       if (strlen($body) > (strrpos($body, '[/share]') + 8)) {
                return false;
        }
 
@@ -1462,7 +1457,7 @@ function statusnet_is_retweet(App $a, $uid, $body)
                return false;
        }
 
-       $link = "";
+       $link = '';
        preg_match("/link='(.*?)'/ism", $attributes, $matches);
        if (!empty($matches[1])) {
                $link = $matches[1];