]> git.mxchange.org Git - friendica-addons.git/blobdiff - pumpio/pumpio.php
„audon/lang/C“ hinzufügen
[friendica-addons.git] / pumpio / pumpio.php
index 774db17285c06fabc97926826b875d810c1ce26b..6600696ec93a29714939f6ad82929003e8ab9250 100644 (file)
@@ -18,7 +18,7 @@ use Friendica\Core\Worker;
 use Friendica\Database\DBA;
 use Friendica\DI;
 use Friendica\Model\Contact;
-use Friendica\Model\Group;
+use Friendica\Model\Circle;
 use Friendica\Model\Item;
 use Friendica\Model\Post;
 use Friendica\Model\User;
@@ -26,14 +26,13 @@ use Friendica\Network\HTTPClient\Client\HttpClientAccept;
 use Friendica\Network\HTTPClient\Client\HttpClientOptions;
 use Friendica\Protocol\Activity;
 use Friendica\Protocol\ActivityNamespace;
-use Friendica\Core\Config\Util\ConfigFileLoader;
+use Friendica\Core\Config\Util\ConfigFileManager;
 use Friendica\Util\DateTimeFormat;
 use Friendica\Util\Strings;
 use Friendica\Util\XML;
 
 require 'addon/pumpio/oauth/http.php';
 require 'addon/pumpio/oauth/oauth_client.php';
-require_once 'mod/share.php';
 
 define('PUMPIO_DEFAULT_POLL_INTERVAL', 5); // given in minutes
 
@@ -50,22 +49,24 @@ function pumpio_install()
        Hook::register('check_item_notification', 'addon/pumpio/pumpio.php', 'pumpio_check_item_notification');
 }
 
+/**
+ * This is a statement rather than an actual function definition. The simple
+ * existence of this method is checked to figure out if the addon offers a
+ * module.
+ */
 function pumpio_module() {}
 
-function pumpio_content(App $a)
+function pumpio_content()
 {
-       if (!local_user()) {
-               notice(DI::l10n()->t('Permission denied.') . EOL);
+       if (!DI::userSession()->getLocalUserId()) {
+               DI::sysmsg()->addNotice(DI::l10n()->t('Permission denied.'));
                return '';
        }
 
-       require_once 'mod/settings.php';
-       settings_init($a);
-
        if (isset(DI::args()->getArgv()[1])) {
                switch (DI::args()->getArgv()[1]) {
                        case 'connect':
-                               $o = pumpio_connect($a);
+                               $o = pumpio_connect();
                                break;
 
                        default:
@@ -73,12 +74,12 @@ function pumpio_content(App $a)
                                break;
                }
        } else {
-               $o = pumpio_connect($a);
+               $o = pumpio_connect();
        }
        return $o;
 }
 
-function pumpio_check_item_notification(App $a, array &$notification_data)
+function pumpio_check_item_notification(array &$notification_data)
 {
        $hostname = DI::pConfig()->get($notification_data['uid'], 'pumpio', 'host');
        $username = DI::pConfig()->get($notification_data['uid'], 'pumpio', 'user');
@@ -86,7 +87,7 @@ function pumpio_check_item_notification(App $a, array &$notification_data)
        $notification_data['profiles'][] = 'https://' . $hostname . '/' . $username;
 }
 
-function pumpio_registerclient(App $a, $host)
+function pumpio_registerclient($host)
 {
        $url = 'https://' . $host . '/api/client/register';
 
@@ -95,17 +96,17 @@ function pumpio_registerclient(App $a, $host)
        $application_name  = DI::config()->get('pumpio', 'application_name');
 
        if ($application_name == '') {
-               $application_name = DI::baseUrl()->getHostname();
+               $application_name = DI::baseUrl()->getHost();
        }
 
-       $adminlist = explode(',', str_replace(' ', '', DI::config()->get('config', 'admin_email')));
+       $firstAdmin = User::getFirstAdmin(['email']);
 
        $params['type'] = 'client_associate';
-       $params['contacts'] = $adminlist[0];
+       $params['contacts'] = $firstAdmin['email'];
        $params['application_type'] = 'native';
        $params['application_name'] = $application_name;
-       $params['logo_url'] = DI::baseUrl()->get() . '/images/friendica-256.png';
-       $params['redirect_uris'] = DI::baseUrl()->get() . '/pumpio/connect';
+       $params['logo_url'] = DI::baseUrl() . '/images/friendica-256.png';
+       $params['redirect_uris'] = DI::baseUrl() . '/pumpio/connect';
 
        Logger::info('pumpio_registerclient: ' . $url . ' parameters', $params);
 
@@ -122,7 +123,7 @@ function pumpio_registerclient(App $a, $host)
 
        if ($curl_info['http_code'] == '200') {
                $values = json_decode($s);
-               Logger::info('pumpio_registerclient: success ', $values);
+               Logger::info('pumpio_registerclient: success ', (array)$values);
                return $values;
        }
        Logger::info('pumpio_registerclient: failed: ', $curl_info);
@@ -130,21 +131,21 @@ function pumpio_registerclient(App $a, $host)
 
 }
 
-function pumpio_connect(App $a)
+function pumpio_connect()
 {
        // Define the needed keys
-       $consumer_key = DI::pConfig()->get(local_user(), 'pumpio', 'consumer_key');
-       $consumer_secret = DI::pConfig()->get(local_user(), 'pumpio', 'consumer_secret');
-       $hostname = DI::pConfig()->get(local_user(), 'pumpio', 'host');
+       $consumer_key    = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'pumpio', 'consumer_key');
+       $consumer_secret = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'pumpio', 'consumer_secret');
+       $hostname        = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'pumpio', 'host');
 
        if ((($consumer_key == '') || ($consumer_secret == '')) && ($hostname != '')) {
                Logger::notice('pumpio_connect: register client');
-               $clientdata = pumpio_registerclient($a, $hostname);
-               DI::pConfig()->set(local_user(), 'pumpio', 'consumer_key', $clientdata->client_id);
-               DI::pConfig()->set(local_user(), 'pumpio', 'consumer_secret', $clientdata->client_secret);
+               $clientdata = pumpio_registerclient($hostname);
+               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'pumpio', 'consumer_key', $clientdata->client_id);
+               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'pumpio', 'consumer_secret', $clientdata->client_secret);
 
-               $consumer_key = DI::pConfig()->get(local_user(), 'pumpio', 'consumer_key');
-               $consumer_secret = DI::pConfig()->get(local_user(), 'pumpio', 'consumer_secret');
+               $consumer_key    = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'pumpio', 'consumer_key');
+               $consumer_secret = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'pumpio', 'consumer_secret');
 
                Logger::info('pumpio_connect: ckey: ' . $consumer_key . ' csecrect: ' . $consumer_secret);
        }
@@ -156,7 +157,7 @@ function pumpio_connect(App $a)
        }
 
        // The callback URL is the script that gets called after the user authenticates with pumpio
-       $callback_url = DI::baseUrl()->get() . '/pumpio/connect';
+       $callback_url = DI::baseUrl() . '/pumpio/connect';
 
        // Let's begin.  First we need a Request Token.  The request token is required to send the user
        // to pumpio's login page.
@@ -180,8 +181,8 @@ function pumpio_connect(App $a)
                if (($success = $client->Process())) {
                        if (strlen($client->access_token)) {
                                Logger::info('pumpio_connect: otoken: ' . $client->access_token . ', osecrect: ' . $client->access_token_secret);
-                               DI::pConfig()->set(local_user(), 'pumpio', 'oauth_token', $client->access_token);
-                               DI::pConfig()->set(local_user(), 'pumpio', 'oauth_token_secret', $client->access_token_secret);
+                               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'pumpio', 'oauth_token', $client->access_token);
+                               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'pumpio', 'oauth_token_secret', $client->access_token_secret);
                        }
                }
                $success = $client->Finalize($success);
@@ -193,7 +194,7 @@ function pumpio_connect(App $a)
        if ($success) {
                Logger::notice('pumpio_connect: authenticated');
                $o = DI::l10n()->t('You are now authenticated to pumpio.');
-               $o .= '<br /><a href="' . DI::baseUrl()->get() . '/settings/connectors">' . DI::l10n()->t('return to the connector page') . '</a>';
+               $o .= '<br /><a href="' . DI::baseUrl() . '/settings/connectors">' . DI::l10n()->t('return to the connector page') . '</a>';
        } else {
                Logger::notice('pumpio_connect: could not connect');
                $o = 'Could not connect to pumpio. Refresh the page or try again later.';
@@ -202,40 +203,40 @@ function pumpio_connect(App $a)
        return $o;
 }
 
-function pumpio_jot_nets(App $a, array &$jotnets_fields)
+function pumpio_jot_nets(array &$jotnets_fields)
 {
-       if (!local_user()) {
+       if (!DI::userSession()->getLocalUserId()) {
                return;
        }
 
-       if (DI::pConfig()->get(local_user(), 'pumpio', 'post')) {
+       if (DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'pumpio', 'post')) {
                $jotnets_fields[] = [
                        'type' => 'checkbox',
                        'field' => [
                                'pumpio_enable',
                                DI::l10n()->t('Post to pumpio'),
-                               DI::pConfig()->get(local_user(), 'pumpio', 'post_by_default')
+                               DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'pumpio', 'post_by_default')
                        ]
                ];
        }
 }
 
-function pumpio_settings(App $a, array &$data)
+function pumpio_settings(array &$data)
 {
-       if (!local_user()) {
+       if (!DI::userSession()->getLocalUserId()) {
                return;
        }
 
-       $pumpio_host        = DI::pConfig()->get(local_user(), 'pumpio', 'host');
-       $pumpio_user        = DI::pConfig()->get(local_user(), 'pumpio', 'user');
-       $oauth_token        = DI::pConfig()->get(local_user(), 'pumpio', 'oauth_token');
-       $oauth_token_secret = DI::pConfig()->get(local_user(), 'pumpio', 'oauth_token_secret');
+       $pumpio_host        = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'pumpio', 'host');
+       $pumpio_user        = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'pumpio', 'user');
+       $oauth_token        = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'pumpio', 'oauth_token');
+       $oauth_token_secret = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'pumpio', 'oauth_token_secret');
 
-       $import_enabled = DI::pConfig()->get(local_user(), 'pumpio', 'import', false);
-       $enabled        = DI::pConfig()->get(local_user(), 'pumpio', 'post', false);
-       $def_enabled    = DI::pConfig()->get(local_user(), 'pumpio', 'post_by_default', false);
-       $public_enabled = DI::pConfig()->get(local_user(), 'pumpio', 'public', false);
-       $mirror_enabled = DI::pConfig()->get(local_user(), 'pumpio', 'mirror', false);
+       $import_enabled = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'pumpio', 'import', false);
+       $enabled        = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'pumpio', 'post', false);
+       $def_enabled    = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'pumpio', 'post_by_default', false);
+       $public_enabled = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'pumpio', 'public', false);
+       $mirror_enabled = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'pumpio', 'mirror', false);
 
        $submit = ['pumpio-submit' => DI::l10n()->t('Save Settings')];
        if ($oauth_token && $oauth_token_secret) {
@@ -251,7 +252,7 @@ function pumpio_settings(App $a, array &$data)
                '$pumpio_user'        => $pumpio_user,
                '$oauth_token'        => $oauth_token,
                '$oauth_token_secret' => $oauth_token_secret,
-               '$authenticate_url'   => DI::baseUrl()->get() . '/pumpio/connect',
+               '$authenticate_url'   => DI::baseUrl() . '/pumpio/connect',
                '$servername'         => ['pumpio_host', DI::l10n()->t('Pump.io servername (without "http://" or "https://" )'), $pumpio_host],
                '$username'           => ['pumpio_user', DI::l10n()->t('Pump.io username (without the servername)'), $pumpio_user],
                '$import'             => ['pumpio_import', DI::l10n()->t('Import the remote timeline'), $import_enabled],
@@ -271,22 +272,22 @@ function pumpio_settings(App $a, array &$data)
        ];
 }
 
-function pumpio_settings_post(App $a, array &$b)
+function pumpio_settings_post(array &$b)
 {
        if (!empty($_POST['pumpio_delete'])) {
-               DI::pConfig()->set(local_user(), 'pumpio', 'consumer_key'      , '');
-               DI::pConfig()->set(local_user(), 'pumpio', 'consumer_secret'   , '');
-               DI::pConfig()->set(local_user(), 'pumpio', 'oauth_token'       , '');
-               DI::pConfig()->set(local_user(), 'pumpio', 'oauth_token_secret', '');
-               DI::pConfig()->set(local_user(), 'pumpio', 'post'              , false);
-               DI::pConfig()->set(local_user(), 'pumpio', 'import'            , false);
-               DI::pConfig()->set(local_user(), 'pumpio', 'host'              , '');
-               DI::pConfig()->set(local_user(), 'pumpio', 'user'              , '');
-               DI::pConfig()->set(local_user(), 'pumpio', 'public'            , false);
-               DI::pConfig()->set(local_user(), 'pumpio', 'mirror'            , false);
-               DI::pConfig()->set(local_user(), 'pumpio', 'post_by_default'   , false);
-               DI::pConfig()->set(local_user(), 'pumpio', 'lastdate'          , 0);
-               DI::pConfig()->set(local_user(), 'pumpio', 'last_id'           , '');
+               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'pumpio', 'consumer_key'      , '');
+               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'pumpio', 'consumer_secret'   , '');
+               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'pumpio', 'oauth_token'       , '');
+               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'pumpio', 'oauth_token_secret', '');
+               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'pumpio', 'post'              , false);
+               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'pumpio', 'import'            , false);
+               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'pumpio', 'host'              , '');
+               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'pumpio', 'user'              , '');
+               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'pumpio', 'public'            , false);
+               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'pumpio', 'mirror'            , false);
+               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'pumpio', 'post_by_default'   , false);
+               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'pumpio', 'lastdate'          , 0);
+               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'pumpio', 'last_id'           , '');
        } elseif (!empty($_POST['pumpio-submit'])) {
                // filtering the username if it is filled wrong
                $user = $_POST['pumpio_user'];
@@ -303,26 +304,26 @@ function pumpio_settings_post(App $a, array &$b)
                $host = trim($host);
                $host = str_replace(['https://', 'http://'], ['', ''], $host);
 
-               DI::pConfig()->set(local_user(), 'pumpio', 'post'           , $_POST['pumpio'] ?? false);
-               DI::pConfig()->set(local_user(), 'pumpio', 'import'         , $_POST['pumpio_import'] ?? false);
-               DI::pConfig()->set(local_user(), 'pumpio', 'host'           , $host);
-               DI::pConfig()->set(local_user(), 'pumpio', 'user'           , $user);
-               DI::pConfig()->set(local_user(), 'pumpio', 'public'         , $_POST['pumpio_public'] ?? false);
-               DI::pConfig()->set(local_user(), 'pumpio', 'mirror'         , $_POST['pumpio_mirror'] ?? false);
-               DI::pConfig()->set(local_user(), 'pumpio', 'post_by_default', $_POST['pumpio_bydefault'] ?? false);
+               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'pumpio', 'post'           , $_POST['pumpio'] ?? false);
+               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'pumpio', 'import'         , $_POST['pumpio_import'] ?? false);
+               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'pumpio', 'host'           , $host);
+               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'pumpio', 'user'           , $user);
+               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'pumpio', 'public'         , $_POST['pumpio_public'] ?? false);
+               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'pumpio', 'mirror'         , $_POST['pumpio_mirror'] ?? false);
+               DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'pumpio', 'post_by_default', $_POST['pumpio_bydefault'] ?? false);
 
                if (!empty($_POST['pumpio_mirror'])) {
-                       DI::pConfig()->delete(local_user(), 'pumpio', 'lastdate');
+                       DI::pConfig()->delete(DI::userSession()->getLocalUserId(), 'pumpio', 'lastdate');
                }
        }
 }
 
-function pumpio_load_config(App $a, ConfigFileLoader $loader)
+function pumpio_load_config(ConfigFileManager $loader)
 {
-       $a->getConfigCache()->load($loader->loadAddonConfig('pumpio'));
+       DI::app()->getConfigCache()->load($loader->loadAddonConfig('pumpio'), \Friendica\Core\Config\ValueObject\Cache::SOURCE_STATIC);
 }
 
-function pumpio_hook_fork(App $a, array &$b)
+function pumpio_hook_fork(array &$b)
 {
        if ($b['name'] != 'notifier_normal') {
                return;
@@ -358,17 +359,17 @@ function pumpio_hook_fork(App $a, array &$b)
        }
 }
 
-function pumpio_post_local(App $a, array &$b)
+function pumpio_post_local(array &$b)
 {
-       if (!local_user() || (local_user() != $b['uid'])) {
+       if (!DI::userSession()->getLocalUserId() || (DI::userSession()->getLocalUserId() != $b['uid'])) {
                return;
        }
 
-       $pumpio_post   = intval(DI::pConfig()->get(local_user(), 'pumpio', 'post'));
+       $pumpio_post   = intval(DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'pumpio', 'post'));
 
        $pumpio_enable = (($pumpio_post && !empty($_REQUEST['pumpio_enable'])) ? intval($_REQUEST['pumpio_enable']) : 0);
 
-       if ($b['api_source'] && intval(DI::pConfig()->get(local_user(), 'pumpio', 'post_by_default'))) {
+       if ($b['api_source'] && intval(DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'pumpio', 'post_by_default'))) {
                $pumpio_enable = 1;
        }
 
@@ -383,7 +384,7 @@ function pumpio_post_local(App $a, array &$b)
        $b['postopts'] .= 'pumpio';
 }
 
-function pumpio_send(App $a, array &$b)
+function pumpio_send(array &$b)
 {
        if (!DI::pConfig()->get($b['uid'], 'pumpio', 'import') && ($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited']))) {
                return;
@@ -391,7 +392,7 @@ function pumpio_send(App $a, array &$b)
 
        Logger::debug('pumpio_send: parameter ', $b);
 
-       $b['body'] = Post\Media::addAttachmentsToBody($b['uri-id'], $b['body']);
+       $b['body'] = Post\Media::addAttachmentsToBody($b['uri-id'], DI::contentItem()->addSharedPost($b));
 
        if ($b['parent'] != $b['id']) {
                // Looking if its a reply to a pumpio post
@@ -407,7 +408,7 @@ function pumpio_send(App $a, array &$b)
        } else {
                $iscomment = false;
 
-               $receiver = pumpio_getreceiver($a, $b);
+               $receiver = pumpio_getreceiver($b);
 
                Logger::notice('pumpio_send: receiver ', $receiver);
 
@@ -416,7 +417,7 @@ function pumpio_send(App $a, array &$b)
                }
 
                // Dont't post if the post doesn't belong to us.
-               // This is a check for forum postings
+               // This is a check for group postings
                $self = User::getOwnerDataById($b['uid']);
                if ($b['contact-id'] != $self['id']) {
                        return;
@@ -425,9 +426,9 @@ function pumpio_send(App $a, array &$b)
 
        if ($b['verb'] == Activity::LIKE) {
                if ($b['deleted']) {
-                       pumpio_action($a, $b['uid'], $b['thr-parent'], 'unlike');
+                       pumpio_action($b['uid'], $b['thr-parent'], 'unlike');
                } else {
-                       pumpio_action($a, $b['uid'], $b['thr-parent'], 'like');
+                       pumpio_action($b['uid'], $b['thr-parent'], 'like');
                }
                return;
        }
@@ -437,11 +438,11 @@ function pumpio_send(App $a, array &$b)
        }
 
        if (($b['verb'] == Activity::POST) && ($b['created'] !== $b['edited']) && !$b['deleted']) {
-               pumpio_action($a, $b['uid'], $b['uri'], 'update', $b['body']);
+               pumpio_action($b['uid'], $b['uri'], 'update', $b['body']);
        }
 
        if (($b['verb'] == Activity::POST) && $b['deleted']) {
-               pumpio_action($a, $b['uid'], $b['uri'], 'delete');
+               pumpio_action($b['uid'], $b['uri'], 'delete');
        }
 
        if ($b['deleted'] || ($b['created'] !== $b['edited'])) {
@@ -457,13 +458,13 @@ function pumpio_send(App $a, array &$b)
        // Support for native shares
        // http://<hostname>/api/<type>/shares?id=<the-object-id>
 
-       $oauth_token = DI::pConfig()->get($b['uid'], 'pumpio', 'oauth_token');
+       $oauth_token        = DI::pConfig()->get($b['uid'], 'pumpio', 'oauth_token');
        $oauth_token_secret = DI::pConfig()->get($b['uid'], 'pumpio', 'oauth_token_secret');
-       $consumer_key = DI::pConfig()->get($b['uid'], 'pumpio', 'consumer_key');
-       $consumer_secret = DI::pConfig()->get($b['uid'], 'pumpio', 'consumer_secret');
+       $consumer_key       = DI::pConfig()->get($b['uid'], 'pumpio', 'consumer_key');
+       $consumer_secret    = DI::pConfig()->get($b['uid'], 'pumpio', 'consumer_secret');
 
-       $host = DI::pConfig()->get($b['uid'], 'pumpio', 'host');
-       $user = DI::pConfig()->get($b['uid'], 'pumpio', 'user');
+       $host   = DI::pConfig()->get($b['uid'], 'pumpio', 'host');
+       $user   = DI::pConfig()->get($b['uid'], 'pumpio', 'user');
        $public = DI::pConfig()->get($b['uid'], 'pumpio', 'public');
 
        if ($oauth_token && $oauth_token_secret) {
@@ -555,7 +556,7 @@ function pumpio_send(App $a, array &$b)
        }
 }
 
-function pumpio_action(App $a, int $uid, string $uri, string $action, string $content = '')
+function pumpio_action(int $uid, string $uri, string $action, string $content = '')
 {
        // Don't do likes and other stuff if you don't import the timeline
        if (!DI::pConfig()->get($uid, 'pumpio', 'import')) {
@@ -624,13 +625,13 @@ function pumpio_action(App $a, int $uid, string $uri, string $action, string $co
        }
 }
 
-function pumpio_sync(App $a)
+function pumpio_sync()
 {
        if (!Addon::isEnabled('pumpio')) {
                return;
        }
 
-       $last = DI::config()->get('pumpio', 'last_poll');
+       $last = DI::keyValue()->get('pumpio_last_poll');
 
        $poll_interval = intval(DI::config()->get('pumpio', 'poll_interval', PUMPIO_DEFAULT_POLL_INTERVAL));
 
@@ -646,7 +647,7 @@ function pumpio_sync(App $a)
        $pconfigs = DBA::selectToArray('pconfig', ['uid'], ['cat' => 'pumpio', 'k' => 'mirror', 'v' => '1']);
        foreach ($pconfigs as $rr) {
                Logger::notice('pumpio: mirroring user '.$rr['uid']);
-               pumpio_fetchtimeline($a, $rr['uid']);
+               pumpio_fetchtimeline($rr['uid']);
        }
 
        $abandon_days = intval(DI::config()->get('system', 'account_abandon_days'));
@@ -666,7 +667,7 @@ function pumpio_sync(App $a)
                }
 
                Logger::notice('pumpio: importing timeline from user '.$rr['uid']);
-               pumpio_fetchinbox($a, $rr['uid']);
+               pumpio_fetchinbox($rr['uid']);
 
                // check for new contacts once a day
                $last_contact_check = DI::pConfig()->get($rr['uid'], 'pumpio', 'contact_check');
@@ -677,27 +678,27 @@ function pumpio_sync(App $a)
                }
 
                if ($next_contact_check <= time()) {
-                       pumpio_getallusers($a, $rr['uid']);
+                       pumpio_getallusers($rr['uid']);
                        DI::pConfig()->set($rr['uid'], 'pumpio', 'contact_check', time());
                }
        }
 
        Logger::notice('pumpio: cron_end');
 
-       DI::config()->set('pumpio', 'last_poll', time());
+       DI::keyValue()->set('pumpio_last_poll', time());
 }
 
-function pumpio_cron(App $a, $b)
+function pumpio_cron($b)
 {
-       Worker::add(PRIORITY_MEDIUM, 'addon/pumpio/pumpio_sync.php');
+       Worker::add(Worker::PRIORITY_MEDIUM, 'addon/pumpio/pumpio_sync.php');
 }
 
-function pumpio_fetchtimeline(App $a, int $uid)
+function pumpio_fetchtimeline(int $uid)
 {
-       $ckey    = DI::pConfig()->get($uid, 'pumpio', 'consumer_key');
-       $csecret = DI::pConfig()->get($uid, 'pumpio', 'consumer_secret');
-       $otoken  = DI::pConfig()->get($uid, 'pumpio', 'oauth_token');
-       $osecret = DI::pConfig()->get($uid, 'pumpio', 'oauth_token_secret');
+       $ckey     = DI::pConfig()->get($uid, 'pumpio', 'consumer_key');
+       $csecret  = DI::pConfig()->get($uid, 'pumpio', 'consumer_secret');
+       $otoken   = DI::pConfig()->get($uid, 'pumpio', 'oauth_token');
+       $osecret  = DI::pConfig()->get($uid, 'pumpio', 'oauth_token_secret');
        $lastdate = DI::pConfig()->get($uid, 'pumpio', 'lastdate');
        $hostname = DI::pConfig()->get($uid, 'pumpio', 'host');
        $username = DI::pConfig()->get($uid, 'pumpio', 'user');
@@ -710,7 +711,7 @@ function pumpio_fetchtimeline(App $a, int $uid)
                $application_name  = DI::config()->get('pumpio', 'application_name');
        }
        if ($application_name == '') {
-               $application_name = DI::baseUrl()->getHostname();
+               $application_name = DI::baseUrl()->getHost();
        }
 
        $first_time = ($lastdate == '');
@@ -779,40 +780,30 @@ function pumpio_fetchtimeline(App $a, int $uid)
                        }
 
                        if ($public && !stristr($post->generator->displayName, $application_name)) {
-                               $_SESSION['authenticated'] = true;
-                               $_SESSION['uid'] = $uid;
-
-                               unset($_REQUEST);
-                               $_REQUEST['api_source'] = true;
-                               $_REQUEST['profile_uid'] = $uid;
-                               $_REQUEST['source'] = 'pump.io';
-
-                               if (isset($post->object->id)) {
-                                       $_REQUEST['message_id'] = Protocol::PUMPIO . ':' . $post->object->id;
-                               }
+                               $postarray['uid'] = $uid;
+                               $postarray['app'] = 'pump.io';
 
                                if ($post->object->displayName != '') {
-                                       $_REQUEST['title'] = HTML::toBBCode($post->object->displayName);
+                                       $postarray['title'] = HTML::toBBCode($post->object->displayName);
                                } else {
-                                       $_REQUEST['title'] = '';
+                                       $postarray['title'] = '';
                                }
 
-                               $_REQUEST['body'] = HTML::toBBCode($post->object->content);
+                               $postarray['body'] = HTML::toBBCode($post->object->content);
 
                                // To-Do: Picture has to be cached and stored locally
                                if ($post->object->fullImage->url != '') {
                                        if ($post->object->fullImage->pump_io->proxyURL != '') {
-                                               $_REQUEST['body'] = '[url=' . $post->object->fullImage->pump_io->proxyURL . '][img]' . $post->object->image->pump_io->proxyURL . "[/img][/url]\n" . $_REQUEST['body'];
+                                               $postarray['body'] = '[url=' . $post->object->fullImage->pump_io->proxyURL . '][img]' . $post->object->image->pump_io->proxyURL . "[/img][/url]\n" . $postarray['body'];
                                        } else {
-                                               $_REQUEST['body'] = '[url=' . $post->object->fullImage->url . '][img]' . $post->object->image->url . "[/img][/url]\n" . $_REQUEST['body'];
+                                               $postarray['body'] = '[url=' . $post->object->fullImage->url . '][img]' . $post->object->image->url . "[/img][/url]\n" . $postarray['body'];
                                        }
                                }
 
                                Logger::notice('pumpio: posting for user ' . $uid);
 
-                               require_once 'mod/item.php';
+                               Item::insert($postarray, true);
 
-                               item_post($a);
                                Logger::notice('pumpio: posting done - user ' . $uid);
                        }
                }
@@ -823,7 +814,7 @@ function pumpio_fetchtimeline(App $a, int $uid)
        }
 }
 
-function pumpio_dounlike(App $a, int $uid, array $self, $post, string $own_id)
+function pumpio_dounlike(int $uid, array $self, $post, string $own_id)
 {
        // Searching for the unliked post
        // Two queries for speed issues
@@ -859,7 +850,7 @@ function pumpio_dounlike(App $a, int $uid, array $self, $post, string $own_id)
        }
 }
 
-function pumpio_dolike(App $a, int $uid, array $self, $post, string $own_id, $threadcompletion = true)
+function pumpio_dolike(int $uid, array $self, $post, string $own_id, $threadcompletion = true)
 {
        if (empty($post->object->id)) {
                Logger::info('Got empty like: '.print_r($post, true));
@@ -878,7 +869,7 @@ function pumpio_dolike(App $a, int $uid, array $self, $post, string $own_id, $th
 
        // thread completion
        if ($threadcompletion) {
-               pumpio_fetchallcomments($a, $uid, $post->object->id);
+               pumpio_fetchallcomments($uid, $post->object->id);
        }
 
        $contactid = 0;
@@ -914,11 +905,11 @@ function pumpio_dolike(App $a, int $uid, array $self, $post, string $own_id, $th
        $likedata = [];
        $likedata['parent'] = $orig_post['id'];
        $likedata['verb'] = Activity::LIKE;
-       $likedata['gravity'] = GRAVITY_ACTIVITY;
+       $likedata['gravity'] = Item::GRAVITY_ACTIVITY;
        $likedata['uid'] = $uid;
        $likedata['wall'] = 0;
        $likedata['network'] = Protocol::PUMPIO;
-       $likedata['uri'] = Item::newURI($uid);
+       $likedata['uri'] = Item::newURI();
        $likedata['thr-parent'] = $orig_post['uri'];
        $likedata['contact-id'] = $contactid;
        $likedata['app'] = $post->generator->displayName;
@@ -985,7 +976,7 @@ function pumpio_get_contact($uid, $contact, $no_insert = false)
 
                $contact_id = $r['id'];
 
-               Group::addMember(User::getDefaultGroup($uid), $contact_id);
+               Circle::addMember(User::getDefaultCircle($uid), $contact_id);
        } else {
                $contact_id = $r['id'];
        }
@@ -997,7 +988,7 @@ function pumpio_get_contact($uid, $contact, $no_insert = false)
        return $contact_id;
 }
 
-function pumpio_dodelete(App $a, int $uid, array $self, $post, string $own_id)
+function pumpio_dodelete(int $uid, array $self, $post, string $own_id)
 {
        // Two queries for speed issues
        $condition = ['uri' => $post->object->id, 'uid' => $uid];
@@ -1014,18 +1005,18 @@ function pumpio_dodelete(App $a, int $uid, array $self, $post, string $own_id)
        return false;
 }
 
-function pumpio_dopost(App $a, $client, int $uid, array $self, $post, string $own_id, bool $threadcompletion = true)
+function pumpio_dopost($client, int $uid, array $self, $post, string $own_id, bool $threadcompletion = true)
 {
        if (($post->verb == 'like') || ($post->verb == 'favorite')) {
-               return pumpio_dolike($a, $uid, $self, $post, $own_id);
+               return pumpio_dolike($uid, $self, $post, $own_id);
        }
 
        if (($post->verb == 'unlike') || ($post->verb == 'unfavorite')) {
-               return pumpio_dounlike($a, $uid, $self, $post, $own_id);
+               return pumpio_dounlike($uid, $self, $post, $own_id);
        }
 
        if ($post->verb == 'delete') {
-               return pumpio_dodelete($a, $uid, $self, $post, $own_id);
+               return pumpio_dodelete($uid, $self, $post, $own_id);
        }
 
        if ($post->verb != 'update') {
@@ -1119,8 +1110,7 @@ function pumpio_dopost(App $a, $client, int $uid, array $self, $post, string $ow
                $reply->generator->displayName = 'pumpio';
                $reply->published = $post->object->inReplyTo->published;
                $reply->received = $post->object->inReplyTo->updated;
-               $reply->url = $post->object->inReplyTo->url;
-               pumpio_dopost($a, $client, $uid, $self, $reply, $own_id, false);
+               pumpio_dopost($client, $uid, $self, $reply, $own_id, false);
 
                $postarray['thr-parent'] = $post->object->inReplyTo->id;
        }
@@ -1205,15 +1195,15 @@ function pumpio_dopost(App $a, $client, int $uid, array $self, $post, string $ow
        }
 
        if (($post->object->objectType == 'comment') && $threadcompletion) {
-               pumpio_fetchallcomments($a, $uid, $postarray['thr-parent']);
+               pumpio_fetchallcomments($uid, $postarray['thr-parent']);
        }
 
        return $top_item;
 }
 
-function pumpio_fetchinbox(App $a, int $uid)
+function pumpio_fetchinbox(int $uid)
 {
-       $ckey= DI::pConfig()->get($uid, 'pumpio', 'consumer_key');
+       $ckey     = DI::pConfig()->get($uid, 'pumpio', 'consumer_key');
        $csecret  = DI::pConfig()->get($uid, 'pumpio', 'consumer_secret');
        $otoken   = DI::pConfig()->get($uid, 'pumpio', 'oauth_token');
        $osecret  = DI::pConfig()->get($uid, 'pumpio', 'oauth_token_secret');
@@ -1226,7 +1216,7 @@ function pumpio_fetchinbox(App $a, int $uid)
        $self = User::getOwnerDataById($uid);
 
        $lastitems = DBA::p("SELECT `uri` FROM `post-thread-user`
-               INNER JOIN `post-view` ON `post-view`.`id` = `post-thread-user`.`id`
+               INNER JOIN `post-view` ON `post-view`.`uri-id` = `post-thread-user`.`uri-id`
                WHERE `post-thread-user`.`network` = ? AND `post-thread-user`.`uid` = ? AND `post-view`.`extid` != ''
                ORDER BY `post-thread-user`.`commented` DESC LIMIT 10", Protocol::PUMPIO, $uid);
 
@@ -1264,22 +1254,22 @@ function pumpio_fetchinbox(App $a, int $uid)
                if (count($posts)) {
                        foreach ($posts as $post) {
                                $last_id = $post->id;
-                               pumpio_dopost($a, $client, $uid, $self, $post, $own_id, true);
+                               pumpio_dopost($client, $uid, $self, $post, $own_id, true);
                        }
                }
        }
 
        while ($item = DBA::fetch($lastitems)) {
-               pumpio_fetchallcomments($a, $uid, $item['uri']);
+               pumpio_fetchallcomments($uid, $item['uri']);
        }
        DBA::close($lastitems);
 
        DI::pConfig()->set($uid, 'pumpio', 'last_id', $last_id);
 }
 
-function pumpio_getallusers(App &$a, int $uid)
+function pumpio_getallusers(int $uid)
 {
-       $ckey= DI::pConfig()->get($uid, 'pumpio', 'consumer_key');
+       $ckey     = DI::pConfig()->get($uid, 'pumpio', 'consumer_key');
        $csecret  = DI::pConfig()->get($uid, 'pumpio', 'consumer_secret');
        $otoken   = DI::pConfig()->get($uid, 'pumpio', 'oauth_token');
        $osecret  = DI::pConfig()->get($uid, 'pumpio', 'oauth_token_secret');
@@ -1325,7 +1315,7 @@ function pumpio_getallusers(App &$a, int $uid)
        }
 }
 
-function pumpio_getreceiver(App $a, array $b)
+function pumpio_getreceiver(array $b)
 {
        $receiver = [];
 
@@ -1363,8 +1353,8 @@ function pumpio_getreceiver(App $a, array $b)
                        $gid = trim($gid, ' <>');
 
                        $contacts = DBA::p("SELECT `contact`.`name`, `contact`.`nick`, `contact`.`url`, `contact`.`network`
-                               FROM `group_member`, `contact` WHERE `group_member`.`gid` = ?
-                               AND `contact`.`id` = `group_member`.`contact-id` AND `contact`.`network` = ?",
+                               FROM `group_member` AS `circle_member`, `contact` WHERE `circle_member`.`gid` = ?
+                               AND `contact`.`id` = `circle_member`.`contact-id` AND `contact`.`network` = ?",
                                $gid, Protocol::PUMPIO);
 
                        while ($row = DBA::fetch($contacts)) {
@@ -1404,7 +1394,7 @@ function pumpio_getreceiver(App $a, array $b)
        return $receiver;
 }
 
-function pumpio_fetchallcomments(App $a, $uid, $id)
+function pumpio_fetchallcomments($uid, $id)
 {
        $ckey     = DI::pConfig()->get($uid, 'pumpio', 'consumer_key');
        $csecret  = DI::pConfig()->get($uid, 'pumpio', 'consumer_secret');
@@ -1464,7 +1454,7 @@ function pumpio_fetchallcomments(App $a, $uid, $id)
                        $like->actor->url = $item->url;
                        $like->generator = new stdClass;
                        $like->generator->displayName = 'pumpio';
-                       pumpio_dolike($a, $uid, $self, $post, $own_id, false);
+                       pumpio_dolike($uid, $self, $post, $own_id, false);
                }
        }
 
@@ -1501,8 +1491,8 @@ function pumpio_fetchallcomments(App $a, $uid, $id)
 
                $post->object = $item;
 
-               Logger::notice('pumpio_fetchallcomments: posting comment ' . $post->object->id . ' ', $post);
-               pumpio_dopost($a, $client, $uid, $self, $post, $own_id, false);
+               Logger::notice('pumpio_fetchallcomments: posting comment ' . $post->object->id . ' ', json_decode(json_encode($post), true));
+               pumpio_dopost($client, $uid, $self, $post, $own_id, false);
        }
 }