]> git.mxchange.org Git - friendica-addons.git/blobdiff - statusnet/statusnet.php
deleted: superblock/lang/C/messages.po
[friendica-addons.git] / statusnet / statusnet.php
index 66648893ec8b6d6daa0e5c743f9fc91b2bb26a28..5cb65b91fdb90d4ebec3c975d4a001086cefe3b5 100644 (file)
@@ -86,17 +86,17 @@ function statusnet_check_item_notification(App $a, &$notification_data)
 
 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;
        }
 
@@ -430,7 +430,7 @@ function statusnet_action(App $a, $uid, $pid, $action)
        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
@@ -440,7 +440,7 @@ function statusnet_post_hook(App $a, &$b)
                        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');
        $hostname = preg_replace("=https?://([\w\.]*)/.*=ism", "$1", $api);
@@ -628,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 = [];
@@ -661,14 +661,14 @@ function statusnet_addon_admin(App $a, &$o)
        ]);
 }
 
-function statusnet_prepare_body(App $a, &$b)
+function statusnet_prepare_body(App $a, array &$b)
 {
        if ($b['item']['network'] != Protocol::STATUSNET) {
                return;
        }
 
        if ($b['preview']) {
-               $max_char = DI::pConfig()->get(local_user(), 'statusnet', 'max_char');
+               $max_char = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'statusnet', 'max_char');
                if (intval($max_char) == 0) {
                        $max_char = 140;
                }
@@ -676,7 +676,7 @@ function statusnet_prepare_body(App $a, &$b)
                $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']);
@@ -753,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');
@@ -762,7 +762,6 @@ 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.
@@ -819,46 +818,33 @@ function statusnet_fetchtimeline(App $a, $uid)
                        }
 
                        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);
                                }
                        }
                }
@@ -1011,7 +997,7 @@ 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');
 
@@ -1415,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');
@@ -1450,7 +1436,7 @@ 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);