]> git.mxchange.org Git - friendica-addons.git/blobdiff - tumblr/tumblr.php
Merge pull request #950 from nupplaphil/bug/8182_another_notification_bug
[friendica-addons.git] / tumblr / tumblr.php
index 86a90737f9ae20995c243f5782cea48a5d2b5b7f..c0db116e569c34593659263e0148ab4c4d39f1e3 100644 (file)
@@ -11,28 +11,31 @@ require_once __DIR__ . DIRECTORY_SEPARATOR . 'library' . DIRECTORY_SEPARATOR . '
 
 use Friendica\App;
 use Friendica\Content\Text\BBCode;
-use Friendica\Core\Addon;
-use Friendica\Core\Config;
-use Friendica\Core\L10n;
-use Friendica\Core\PConfig;
+use Friendica\Core\Hook;
+use Friendica\Core\Logger;
+use Friendica\Core\Renderer;
 use Friendica\Database\DBA;
+use Friendica\DI;
+use Friendica\Util\Strings;
 
 function tumblr_install()
 {
-       Addon::registerHook('post_local',              'addon/tumblr/tumblr.php', 'tumblr_post_local');
-       Addon::registerHook('notifier_normal',         'addon/tumblr/tumblr.php', 'tumblr_send');
-       Addon::registerHook('jot_networks',            'addon/tumblr/tumblr.php', 'tumblr_jot_nets');
-       Addon::registerHook('connector_settings',      'addon/tumblr/tumblr.php', 'tumblr_settings');
-       Addon::registerHook('connector_settings_post', 'addon/tumblr/tumblr.php', 'tumblr_settings_post');
+       Hook::register('hook_fork',               'addon/tumblr/tumblr.php', 'tumblr_hook_fork');
+       Hook::register('post_local',              'addon/tumblr/tumblr.php', 'tumblr_post_local');
+       Hook::register('notifier_normal',         'addon/tumblr/tumblr.php', 'tumblr_send');
+       Hook::register('jot_networks',            'addon/tumblr/tumblr.php', 'tumblr_jot_nets');
+       Hook::register('connector_settings',      'addon/tumblr/tumblr.php', 'tumblr_settings');
+       Hook::register('connector_settings_post', 'addon/tumblr/tumblr.php', 'tumblr_settings_post');
 }
 
 function tumblr_uninstall()
 {
-       Addon::unregisterHook('post_local',              'addon/tumblr/tumblr.php', 'tumblr_post_local');
-       Addon::unregisterHook('notifier_normal',         'addon/tumblr/tumblr.php', 'tumblr_send');
-       Addon::unregisterHook('jot_networks',            'addon/tumblr/tumblr.php', 'tumblr_jot_nets');
-       Addon::unregisterHook('connector_settings',      'addon/tumblr/tumblr.php', 'tumblr_settings');
-       Addon::unregisterHook('connector_settings_post', 'addon/tumblr/tumblr.php', 'tumblr_settings_post');
+       Hook::unregister('hook_fork',               'addon/tumblr/tumblr.php', 'tumblr_hook_fork');
+       Hook::unregister('post_local',              'addon/tumblr/tumblr.php', 'tumblr_post_local');
+       Hook::unregister('notifier_normal',         'addon/tumblr/tumblr.php', 'tumblr_send');
+       Hook::unregister('jot_networks',            'addon/tumblr/tumblr.php', 'tumblr_jot_nets');
+       Hook::unregister('connector_settings',      'addon/tumblr/tumblr.php', 'tumblr_settings');
+       Hook::unregister('connector_settings_post', 'addon/tumblr/tumblr.php', 'tumblr_settings_post');
 }
 
 function tumblr_module()
@@ -42,7 +45,7 @@ function tumblr_module()
 function tumblr_content(App $a)
 {
        if (! local_user()) {
-               notice(L10n::t('Permission denied.') . EOL);
+               notice(DI::l10n()->t('Permission denied.') . EOL);
                return '';
        }
 
@@ -69,25 +72,25 @@ function tumblr_content(App $a)
 
 function tumblr_addon_admin(App $a, &$o)
 {
-       $t = get_markup_template( "admin.tpl", "addon/tumblr/" );
+       $t = Renderer::getMarkupTemplate( "admin.tpl", "addon/tumblr/" );
 
-       $o = replace_macros($t, [
-               '$submit' => L10n::t('Save Settings'),
+       $o = Renderer::replaceMacros($t, [
+               '$submit' => DI::l10n()->t('Save Settings'),
                // name, label, value, help, [extra values]
-               '$consumer_key' => ['consumer_key', L10n::t('Consumer Key'),  Config::get('tumblr', 'consumer_key' ), ''],
-               '$consumer_secret' => ['consumer_secret', L10n::t('Consumer Secret'),  Config::get('tumblr', 'consumer_secret' ), ''],
+               '$consumer_key' => ['consumer_key', DI::l10n()->t('Consumer Key'),  DI::config()->get('tumblr', 'consumer_key' ), ''],
+               '$consumer_secret' => ['consumer_secret', DI::l10n()->t('Consumer Secret'),  DI::config()->get('tumblr', 'consumer_secret' ), ''],
        ]);
 }
 
 function tumblr_addon_admin_post(App $a)
 {
-       $consumer_key    =       ((!empty($_POST['consumer_key']))      ? notags(trim($_POST['consumer_key']))   : '');
-       $consumer_secret =       ((!empty($_POST['consumer_secret']))   ? notags(trim($_POST['consumer_secret'])): '');
+       $consumer_key    =       (!empty($_POST['consumer_key'])      ? Strings::escapeTags(trim($_POST['consumer_key']))   : '');
+       $consumer_secret =       (!empty($_POST['consumer_secret'])   ? Strings::escapeTags(trim($_POST['consumer_secret'])): '');
 
-       Config::set('tumblr', 'consumer_key',$consumer_key);
-       Config::set('tumblr', 'consumer_secret',$consumer_secret);
+       DI::config()->set('tumblr', 'consumer_key',$consumer_key);
+       DI::config()->set('tumblr', 'consumer_secret',$consumer_secret);
 
-       info(L10n::t('Settings updated.'). EOL);
+       info(DI::l10n()->t('Settings updated.'). EOL);
 }
 
 function tumblr_connect(App $a)
@@ -99,12 +102,12 @@ function tumblr_connect(App $a)
        //require_once('addon/tumblr/tumblroauth/tumblroauth.php');
 
        // Define the needed keys
-       $consumer_key = Config::get('tumblr', 'consumer_key');
-       $consumer_secret = Config::get('tumblr', 'consumer_secret');
+       $consumer_key = DI::config()->get('tumblr', 'consumer_key');
+       $consumer_secret = DI::config()->get('tumblr', 'consumer_secret');
 
        // The callback URL is the script that gets called after the user authenticates with tumblr
        // In this example, it would be the included callback.php
-       $callback_url = $a->get_baseurl()."/tumblr/callback";
+       $callback_url = DI::baseUrl()->get()."/tumblr/callback";
 
        // Let's begin.  First we need a Request Token.  The request token is required to send the user
        // to Tumblr's login page.
@@ -152,8 +155,8 @@ function tumblr_callback(App $a)
        //require_once('addon/tumblr/tumblroauth/tumblroauth.php');
 
        // Define the needed keys
-       $consumer_key = Config::get('tumblr', 'consumer_key');
-       $consumer_secret = Config::get('tumblr', 'consumer_secret');
+       $consumer_key = DI::config()->get('tumblr', 'consumer_key');
+       $consumer_secret = DI::config()->get('tumblr', 'consumer_secret');
 
        // Once the user approves your app at Tumblr, they are sent back to this script.
        // This script is passed two parameters in the URL, oauth_token (our Request Token)
@@ -179,28 +182,30 @@ function tumblr_callback(App $a)
        }
 
        // What's next?  Now that we have an Access Token and Secret, we can make an API call.
-       PConfig::set(local_user(), "tumblr", "oauth_token", $access_token['oauth_token']);
-       PConfig::set(local_user(), "tumblr", "oauth_token_secret", $access_token['oauth_token_secret']);
+       DI::pConfig()->set(local_user(), "tumblr", "oauth_token", $access_token['oauth_token']);
+       DI::pConfig()->set(local_user(), "tumblr", "oauth_token_secret", $access_token['oauth_token_secret']);
 
-       $o = L10n::t("You are now authenticated to tumblr.");
-       $o .= '<br /><a href="'.$a->get_baseurl().'/settings/connectors">'.L10n::t("return to the connector page").'</a>';
+       $o = DI::l10n()->t("You are now authenticated to tumblr.");
+       $o .= '<br /><a href="' . DI::baseUrl()->get() . '/settings/connectors">' . DI::l10n()->t("return to the connector page") . '</a>';
 
        return $o;
 }
 
-function tumblr_jot_nets(App $a, &$b)
+function tumblr_jot_nets(App $a, array &$jotnets_fields)
 {
        if (! local_user()) {
                return;
        }
 
-       $tmbl_post = PConfig::get(local_user(), 'tumblr', 'post');
-
-       if (intval($tmbl_post) == 1) {
-               $tmbl_defpost = PConfig::get(local_user(), 'tumblr', 'post_by_default');
-               $selected = ((intval($tmbl_defpost) == 1) ? ' checked="checked" ' : '');
-               $b .= '<div class="profile-jot-net"><input type="checkbox" name="tumblr_enable"' . $selected . ' value="1" /> '
-                       . L10n::t('Post to Tumblr') . '</div>';
+       if (DI::pConfig()->get(local_user(),'tumblr','post')) {
+               $jotnets_fields[] = [
+                       'type' => 'checkbox',
+                       'field' => [
+                               'tumblr_enable',
+                               DI::l10n()->t('Post to Tumblr'),
+                               DI::pConfig()->get(local_user(),'tumblr','post_by_default')
+                       ]
+               ];
        }
 }
 
@@ -212,51 +217,53 @@ function tumblr_settings(App $a, &$s)
 
        /* Add our stylesheet to the page so we can make our settings look nice */
 
-       $a->page['htmlhead'] .= '<link rel="stylesheet"  type="text/css" href="' . $a->get_baseurl() . '/addon/tumblr/tumblr.css' . '" media="all" />' . "\r\n";
+       DI::page()['htmlhead'] .= '<link rel="stylesheet"  type="text/css" href="' . DI::baseUrl()->get() . '/addon/tumblr/tumblr.css' . '" media="all" />' . "\r\n";
 
        /* Get the current state of our config variables */
 
-       $enabled = PConfig::get(local_user(), 'tumblr', 'post');
+       $enabled = DI::pConfig()->get(local_user(), 'tumblr', 'post');
        $checked = (($enabled) ? ' checked="checked" ' : '');
        $css = (($enabled) ? '' : '-disabled');
 
-       $def_enabled = PConfig::get(local_user(), 'tumblr', 'post_by_default');
+       $def_enabled = DI::pConfig()->get(local_user(), 'tumblr', 'post_by_default');
 
        $def_checked = (($def_enabled) ? ' checked="checked" ' : '');
 
        /* Add some HTML to the existing form */
 
        $s .= '<span id="settings_tumblr_inflated" class="settings-block fakelink" style="display: block;" onclick="openClose(\'settings_tumblr_expanded\'); openClose(\'settings_tumblr_inflated\');">';
-       $s .= '<img class="connector'.$css.'" src="images/tumblr.png" /><h3 class="connector">'. L10n::t('Tumblr Export').'</h3>';
+       $s .= '<img class="connector'.$css.'" src="images/tumblr.png" /><h3 class="connector">'. DI::l10n()->t('Tumblr Export').'</h3>';
        $s .= '</span>';
        $s .= '<div id="settings_tumblr_expanded" class="settings-block" style="display: none;">';
        $s .= '<span class="fakelink" onclick="openClose(\'settings_tumblr_expanded\'); openClose(\'settings_tumblr_inflated\');">';
-       $s .= '<img class="connector'.$css.'" src="images/tumblr.png" /><h3 class="connector">'. L10n::t('Tumblr Export').'</h3>';
+       $s .= '<img class="connector'.$css.'" src="images/tumblr.png" /><h3 class="connector">'. DI::l10n()->t('Tumblr Export').'</h3>';
        $s .= '</span>';
 
        $s .= '<div id="tumblr-username-wrapper">';
-       $s .= '<a href="'.$a->get_baseurl().'/tumblr/connect">'.L10n::t("(Re-)Authenticate your tumblr page").'</a>';
+       $s .= '<a href="'.DI::baseUrl()->get().'/tumblr/connect">'.DI::l10n()->t("(Re-)Authenticate your tumblr page").'</a>';
        $s .= '</div><div class="clear"></div>';
 
        $s .= '<div id="tumblr-enable-wrapper">';
-       $s .= '<label id="tumblr-enable-label" for="tumblr-checkbox">' . L10n::t('Enable Tumblr Post Addon') . '</label>';
+       $s .= '<label id="tumblr-enable-label" for="tumblr-checkbox">' . DI::l10n()->t('Enable Tumblr Post Addon') . '</label>';
+       $s .= '<input type="hidden" name="tumblr" value="0"/>';
        $s .= '<input id="tumblr-checkbox" type="checkbox" name="tumblr" value="1" ' . $checked . '/>';
        $s .= '</div><div class="clear"></div>';
 
        $s .= '<div id="tumblr-bydefault-wrapper">';
-       $s .= '<label id="tumblr-bydefault-label" for="tumblr-bydefault">' . L10n::t('Post to Tumblr by default') . '</label>';
+       $s .= '<label id="tumblr-bydefault-label" for="tumblr-bydefault">' . DI::l10n()->t('Post to Tumblr by default') . '</label>';
+       $s .= '<input type="hidden" name="tumblr_bydefault" value="0"/>';
        $s .= '<input id="tumblr-bydefault" type="checkbox" name="tumblr_bydefault" value="1" ' . $def_checked . '/>';
        $s .= '</div><div class="clear"></div>';
 
-       $oauth_token = PConfig::get(local_user(), "tumblr", "oauth_token");
-       $oauth_token_secret = PConfig::get(local_user(), "tumblr", "oauth_token_secret");
+       $oauth_token = DI::pConfig()->get(local_user(), "tumblr", "oauth_token");
+       $oauth_token_secret = DI::pConfig()->get(local_user(), "tumblr", "oauth_token_secret");
 
        $s .= '<div id="tumblr-page-wrapper">';
 
        if (($oauth_token != "") && ($oauth_token_secret != "")) {
-               $page = PConfig::get(local_user(), 'tumblr', 'page');
-               $consumer_key = Config::get('tumblr', 'consumer_key');
-               $consumer_secret = Config::get('tumblr', 'consumer_secret');
+               $page = DI::pConfig()->get(local_user(), 'tumblr', 'page');
+               $consumer_key = DI::config()->get('tumblr', 'consumer_key');
+               $consumer_secret = DI::config()->get('tumblr', 'consumer_secret');
 
                $tum_oauth = new TumblrOAuth($consumer_key, $consumer_secret, $oauth_token, $oauth_token_secret);
 
@@ -264,7 +271,7 @@ function tumblr_settings(App $a, &$s)
 
                $blogs = [];
 
-               $s .= '<label id="tumblr-page-label" for="tumblr-page">' . L10n::t('Post to page:') . '</label>';
+               $s .= '<label id="tumblr-page-label" for="tumblr-page">' . DI::l10n()->t('Post to page:') . '</label>';
                $s .= '<select name="tumblr_page" id="tumblr-page">';
                foreach($userinfo->response->user->blogs as $blog) {
                        $blogurl = substr(str_replace(["http://", "https://"], ["", ""], $blog->url), 0, -1);
@@ -278,21 +285,36 @@ function tumblr_settings(App $a, &$s)
 
                $s .= "</select>";
        } else {
-               $s .= L10n::t("You are not authenticated to tumblr");
+               $s .= DI::l10n()->t("You are not authenticated to tumblr");
        }
 
        $s .= '</div><div class="clear"></div>';
 
        /* provide a submit button */
-       $s .= '<div class="settings-submit-wrapper" ><input type="submit" id="tumblr-submit" name="tumblr-submit" class="settings-submit" value="' . L10n::t('Save Settings') . '" /></div></div>';
+       $s .= '<div class="settings-submit-wrapper" ><input type="submit" id="tumblr-submit" name="tumblr-submit" class="settings-submit" value="' . DI::l10n()->t('Save Settings') . '" /></div></div>';
 }
 
 function tumblr_settings_post(App $a, array &$b)
 {
        if (!empty($_POST['tumblr-submit'])) {
-               PConfig::set(local_user(), 'tumblr', 'post',            intval($_POST['tumblr']));
-               PConfig::set(local_user(), 'tumblr', 'page',            $_POST['tumblr_page']);
-               PConfig::set(local_user(), 'tumblr', 'post_by_default', intval($_POST['tumblr_bydefault']));
+               DI::pConfig()->set(local_user(), 'tumblr', 'post',            intval($_POST['tumblr']));
+               DI::pConfig()->set(local_user(), 'tumblr', 'page',            $_POST['tumblr_page']);
+               DI::pConfig()->set(local_user(), 'tumblr', 'post_by_default', intval($_POST['tumblr_bydefault']));
+       }
+}
+
+function tumblr_hook_fork(&$a, &$b)
+{
+       if ($b['name'] != 'notifier_normal') {
+               return;
+       }
+
+       $post = $b['data'];
+
+       if ($post['deleted'] || $post['private'] || ($post['created'] !== $post['edited']) ||
+               !strstr($post['postopts'], 'tumblr') || ($post['parent'] != $post['id'])) {
+               $b['execute'] = false;
+               return;
        }
 }
 
@@ -312,11 +334,11 @@ function tumblr_post_local(App $a, array &$b)
                return;
        }
 
-       $tmbl_post   = intval(PConfig::get(local_user(), 'tumblr', 'post'));
+       $tmbl_post   = intval(DI::pConfig()->get(local_user(), 'tumblr', 'post'));
 
        $tmbl_enable = (($tmbl_post && !empty($_REQUEST['tumblr_enable'])) ? intval($_REQUEST['tumblr_enable']) : 0);
 
-       if ($b['api_source'] && intval(PConfig::get(local_user(), 'tumblr', 'post_by_default'))) {
+       if ($b['api_source'] && intval(DI::pConfig()->get(local_user(), 'tumblr', 'post_by_default'))) {
                $tmbl_enable = 1;
        }
 
@@ -355,9 +377,9 @@ function tumblr_send(App $a, array &$b) {
                return;
        }
 
-       $oauth_token = PConfig::get($b['uid'], "tumblr", "oauth_token");
-       $oauth_token_secret = PConfig::get($b['uid'], "tumblr", "oauth_token_secret");
-       $page = PConfig::get($b['uid'], "tumblr", "page");
+       $oauth_token = DI::pConfig()->get($b['uid'], "tumblr", "oauth_token");
+       $oauth_token_secret = DI::pConfig()->get($b['uid'], "tumblr", "oauth_token_secret");
+       $page = DI::pConfig()->get($b['uid'], "tumblr", "page");
        $tmbl_blog = 'blog/' . $page . '/post';
 
        if ($oauth_token && $oauth_token_secret && $tmbl_blog) {
@@ -443,12 +465,12 @@ function tumblr_send(App $a, array &$b) {
                                                "<p>".$params['caption']."</p>";
                }
 
-               if (empty($params['caption'])) {
+               if (empty($params['caption']) && !empty($siteinfo["description"])) {
                        $params['caption'] = BBCode::convert("[quote]" . $siteinfo["description"] . "[/quote]", false, 4);
                }
 
-               $consumer_key = Config::get('tumblr','consumer_key');
-               $consumer_secret = Config::get('tumblr','consumer_secret');
+               $consumer_key = DI::config()->get('tumblr','consumer_key');
+               $consumer_secret = DI::config()->get('tumblr','consumer_secret');
 
                $tum_oauth = new TumblrOAuth($consumer_key, $consumer_secret, $oauth_token, $oauth_token_secret);
 
@@ -458,11 +480,11 @@ function tumblr_send(App $a, array &$b) {
 
                //print_r($params);
                if ($ret_code == 201) {
-                       logger('tumblr_send: success');
+                       Logger::log('tumblr_send: success');
                } elseif ($ret_code == 403) {
-                       logger('tumblr_send: authentication failure');
+                       Logger::log('tumblr_send: authentication failure');
                } else {
-                       logger('tumblr_send: general error: ' . print_r($x,true));
+                       Logger::log('tumblr_send: general error: ' . print_r($x,true));
                }
        }
 }