added EN GB translation of blockbot addon THX AndyH3
[friendica-addons.git/.git] / buffer / buffer.php
index bb9af8a..4b8c578 100644 (file)
@@ -1,16 +1,15 @@
 <?php
 /**
  * Name: Buffer Post Connector
- * Description: Post to Buffer (Facebook, Google+, LinkedIn, Twitter)
+ * Description: Post to Buffer (Facebook Pages, LinkedIn, Twitter)
  * Version: 0.2
  * Author: Michael Vogel <http://pirati.ca/profile/heluecht>
  */
 require 'addon/buffer/bufferapp.php';
 
 use Friendica\App;
-use Friendica\Content\Text\Plaintext;
-use Friendica\Core\Addon;
 use Friendica\Core\Config;
+use Friendica\Core\Hook;
 use Friendica\Core\L10n;
 use Friendica\Core\Logger;
 use Friendica\Core\PConfig;
@@ -19,23 +18,26 @@ use Friendica\Core\Renderer;
 use Friendica\Database\DBA;
 use Friendica\Model\ItemContent;
 use Friendica\Util\Proxy as ProxyUtils;
+use Friendica\Util\Strings;
 
 function buffer_install()
 {
-       Addon::registerHook('post_local',           'addon/buffer/buffer.php', 'buffer_post_local');
-       Addon::registerHook('notifier_normal',      'addon/buffer/buffer.php', 'buffer_send');
-       Addon::registerHook('jot_networks',         'addon/buffer/buffer.php', 'buffer_jot_nets');
-       Addon::registerHook('connector_settings',      'addon/buffer/buffer.php', 'buffer_settings');
-       Addon::registerHook('connector_settings_post', 'addon/buffer/buffer.php', 'buffer_settings_post');
+       Hook::register('hook_fork',            'addon/buffer/buffer.php', 'buffer_hook_fork');
+       Hook::register('post_local',           'addon/buffer/buffer.php', 'buffer_post_local');
+       Hook::register('notifier_normal',      'addon/buffer/buffer.php', 'buffer_send');
+       Hook::register('jot_networks',         'addon/buffer/buffer.php', 'buffer_jot_nets');
+       Hook::register('connector_settings',      'addon/buffer/buffer.php', 'buffer_settings');
+       Hook::register('connector_settings_post', 'addon/buffer/buffer.php', 'buffer_settings_post');
 }
 
 function buffer_uninstall()
 {
-       Addon::unregisterHook('post_local',              'addon/buffer/buffer.php', 'buffer_post_local');
-       Addon::unregisterHook('notifier_normal',         'addon/buffer/buffer.php', 'buffer_send');
-       Addon::unregisterHook('jot_networks',            'addon/buffer/buffer.php', 'buffer_jot_nets');
-       Addon::unregisterHook('connector_settings',      'addon/buffer/buffer.php', 'buffer_settings');
-       Addon::unregisterHook('connector_settings_post', 'addon/buffer/buffer.php', 'buffer_settings_post');
+       Hook::unregister('hook_fork',               'addon/buffer/buffer.php', 'buffer_hook_fork');
+       Hook::unregister('post_local',              'addon/buffer/buffer.php', 'buffer_post_local');
+       Hook::unregister('notifier_normal',         'addon/buffer/buffer.php', 'buffer_send');
+       Hook::unregister('jot_networks',            'addon/buffer/buffer.php', 'buffer_jot_nets');
+       Hook::unregister('connector_settings',      'addon/buffer/buffer.php', 'buffer_settings');
+       Hook::unregister('connector_settings_post', 'addon/buffer/buffer.php', 'buffer_settings_post');
 }
 
 function buffer_module()
@@ -83,8 +85,8 @@ function buffer_addon_admin(App $a, &$o)
 
 function buffer_addon_admin_post(App $a)
 {
-       $client_id     = ((!empty($_POST['client_id']))     ? notags(trim($_POST['client_id']))     : '');
-       $client_secret = ((!empty($_POST['client_secret'])) ? notags(trim($_POST['client_secret'])) : '');
+       $client_id     = (!empty($_POST['client_id'])     ? Strings::escapeTags(trim($_POST['client_id']))     : '');
+       $client_secret = (!empty($_POST['client_secret']) ? Strings::escapeTags(trim($_POST['client_secret'])) : '');
 
        Config::set('buffer', 'client_id'    , $client_id);
        Config::set('buffer', 'client_secret', $client_secret);
@@ -112,10 +114,10 @@ function buffer_connect(App $a)
        $buffer = new BufferApp($client_id, $client_secret, $callback_url);
 
        if (!$buffer->ok) {
-               $o .= '<a href="' . $buffer->get_login_url() . '">Connect to Buffer!</a>';
+               $o = '<a href="' . $buffer->get_login_url() . '">Connect to Buffer!</a>';
        } else {
                Logger::log("buffer_connect: authenticated");
-               $o .= L10n::t("You are now authenticated to buffer. ");
+               $o = L10n::t("You are now authenticated to buffer. ");
                $o .= '<br /><a href="' . $a->getBaseURL() . '/settings/connectors">' . L10n::t("return to the connector page") . '</a>';
                PConfig::set(local_user(), 'buffer','access_token', $buffer->access_token);
        }
@@ -123,19 +125,21 @@ function buffer_connect(App $a)
        return $o;
 }
 
-function buffer_jot_nets(App $a, &$b)
+function buffer_jot_nets(App $a, array &$jotnets_fields)
 {
        if (!local_user()) {
                return;
        }
 
-       $buffer_post = PConfig::get(local_user(), 'buffer', 'post');
-
-       if (intval($buffer_post) == 1) {
-               $buffer_defpost = PConfig::get(local_user(), 'buffer', 'post_by_default');
-               $selected = ((intval($buffer_defpost) == 1) ? ' checked="checked" ' : '');
-               $b .= '<div class="profile-jot-net"><input type="checkbox" name="buffer_enable"' . $selected . ' value="1" /> '
-                   . L10n::t('Post to Buffer') . '</div>';
+       if (PConfig::get(local_user(), 'buffer', 'post')) {
+               $jotnets_fields[] = [
+                       'type' => 'checkbox',
+                       'field' => [
+                               'buffer_enable',
+                               L10n::t('Post to Buffer'),
+                               PConfig::get(local_user(), 'buffer', 'post_by_default')
+                       ]
+               ];
        }
 }
 
@@ -234,8 +238,8 @@ function buffer_settings_post(App $a, array &$b)
                        PConfig::set(local_user(), 'buffer', 'post'           , false);
                        PConfig::set(local_user(), 'buffer', 'post_by_default', false);
                } else {
-                       PConfig::set(local_user(), 'buffer', 'post'           , intval($_POST['buffer']));
-                       PConfig::set(local_user(), 'buffer', 'post_by_default', intval($_POST['buffer_bydefault']));
+                       PConfig::set(local_user(), 'buffer', 'post'           , intval(defaults($_POST, 'buffer', false)));
+                       PConfig::set(local_user(), 'buffer', 'post_by_default', intval(defaults($_POST, 'buffer_bydefault', false)));
                }
        }
 }
@@ -265,6 +269,21 @@ function buffer_post_local(App $a, array &$b)
        $b['postopts'] .= 'buffer';
 }
 
+function buffer_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'], 'buffer') || ($post['parent'] != $post['id'])) {
+               $b['execute'] = false;
+               return;
+       }
+}
+
 function buffer_send(App $a, array &$b)
 {
        if ($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited'])) {
@@ -312,15 +331,6 @@ function buffer_send(App $a, array &$b)
                                        case 'facebook':
                                                $send = ($b["extid"] != Protocol::FACEBOOK);
                                                $limit = 0;
-                                               $markup = false;
-                                               $includedlinks = false;
-                                               $htmlmode = 9;
-                                               break;
-
-                                       case 'google':
-                                               $send = ($b["extid"] != Protocol::GPLUS);
-                                               $limit = 0;
-                                               $markup = true;
                                                $includedlinks = false;
                                                $htmlmode = 9;
                                                break;
@@ -328,7 +338,6 @@ function buffer_send(App $a, array &$b)
                                        case 'twitter':
                                                $send = ($b["extid"] != Protocol::TWITTER);
                                                $limit = 280;
-                                               $markup = false;
                                                $includedlinks = true;
                                                $htmlmode = 8;
                                                break;
@@ -336,7 +345,6 @@ function buffer_send(App $a, array &$b)
                                        case 'linkedin':
                                                $send = ($b["extid"] != Protocol::LINKEDIN);
                                                $limit = 700;
-                                               $markup = false;
                                                $includedlinks = true;
                                                $htmlmode = 2;
                                                break;
@@ -347,17 +355,6 @@ function buffer_send(App $a, array &$b)
 
                                $item = $b;
 
-                               // Markup for Google+
-                               if ($markup) {
-                                       if ($item["title"] != "") {
-                                               $item["title"] = "*" . $item["title"] . "*";
-                                       }
-
-                                       $item["body"] = preg_replace("(\[b\](.*?)\[\/b\])ism", '*$1*', $item["body"]);
-                                       $item["body"] = preg_replace("(\[i\](.*?)\[\/i\])ism", '_$1_', $item["body"]);
-                                       $item["body"] = preg_replace("(\[s\](.*?)\[\/s\])ism", '-$1-', $item["body"]);
-                               }
-
                                $post = ItemContent::getPlaintextPost($item, $limit, $includedlinks, $htmlmode);
                                Logger::log("buffer_send: converted message ".$b["id"]." result: ".print_r($post, true), Logger::DEBUG);
 
@@ -374,8 +371,6 @@ function buffer_send(App $a, array &$b)
                                // Buffer doesn't add links to Twitter (but pictures)
                                if (($profile->service == "twitter") && isset($post["url"]) && ($post["type"] != "photo")) {
                                        $post["text"] .= " " . $post["url"];
-                               } elseif ($profile->service == "google") {
-                                       $post["text"] .= html_entity_decode("&#x00A0;", ENT_QUOTES, 'UTF-8'); // Send a special blank to identify the post through the "fromgplus" addon
                                }
 
                                $message = [];