X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=blogger%2Fblogger.php;h=5c03e760e8786cf52d781211300ec9ced2b4da0e;hb=101d3603245b17bd2e6d4880e94bb27887257238;hp=050aaa7a1734cfb0d28dae387163f5ba139fe8bc;hpb=c71f7b0e1a7bb5ca88347b295dd3a4cc3106c5a9;p=friendica-addons.git diff --git a/blogger/blogger.php b/blogger/blogger.php index 050aaa7a..5c03e760 100644 --- a/blogger/blogger.php +++ b/blogger/blogger.php @@ -3,52 +3,64 @@ * Name: Blogger Post Connector * Description: Post to Blogger (or anything else which uses blogger XMLRPC API) * Version: 1.0 - * + * Status: Unsupported */ -use Friendica\Core\Addon; + +use Friendica\App; +use Friendica\Content\Text\BBCode; +use Friendica\Core\Hook; +use Friendica\Core\L10n; +use Friendica\Core\Logger; use Friendica\Core\PConfig; +use Friendica\Util\Network; +use Friendica\Util\XML; function blogger_install() { - Addon::registerHook('post_local', 'addon/blogger/blogger.php', 'blogger_post_local'); - Addon::registerHook('notifier_normal', 'addon/blogger/blogger.php', 'blogger_send'); - Addon::registerHook('jot_networks', 'addon/blogger/blogger.php', 'blogger_jot_nets'); - Addon::registerHook('connector_settings', 'addon/blogger/blogger.php', 'blogger_settings'); - Addon::registerHook('connector_settings_post', 'addon/blogger/blogger.php', 'blogger_settings_post'); + Hook::register('hook_fork', 'addon/blogger/blogger.php', 'blogger_hook_fork'); + Hook::register('post_local', 'addon/blogger/blogger.php', 'blogger_post_local'); + Hook::register('notifier_normal', 'addon/blogger/blogger.php', 'blogger_send'); + Hook::register('jot_networks', 'addon/blogger/blogger.php', 'blogger_jot_nets'); + Hook::register('connector_settings', 'addon/blogger/blogger.php', 'blogger_settings'); + Hook::register('connector_settings_post', 'addon/blogger/blogger.php', 'blogger_settings_post'); } function blogger_uninstall() { - Addon::unregisterHook('post_local', 'addon/blogger/blogger.php', 'blogger_post_local'); - Addon::unregisterHook('notifier_normal', 'addon/blogger/blogger.php', 'blogger_send'); - Addon::unregisterHook('jot_networks', 'addon/blogger/blogger.php', 'blogger_jot_nets'); - Addon::unregisterHook('connector_settings', 'addon/blogger/blogger.php', 'blogger_settings'); - Addon::unregisterHook('connector_settings_post', 'addon/blogger/blogger.php', 'blogger_settings_post'); + Hook::unregister('hook_fork', 'addon/blogger/blogger.php', 'blogger_hook_fork'); + Hook::unregister('post_local', 'addon/blogger/blogger.php', 'blogger_post_local'); + Hook::unregister('notifier_normal', 'addon/blogger/blogger.php', 'blogger_send'); + Hook::unregister('jot_networks', 'addon/blogger/blogger.php', 'blogger_jot_nets'); + Hook::unregister('connector_settings', 'addon/blogger/blogger.php', 'blogger_settings'); + Hook::unregister('connector_settings_post', 'addon/blogger/blogger.php', 'blogger_settings_post'); // obsolete - remove - Addon::unregisterHook('post_local_end', 'addon/blogger/blogger.php', 'blogger_send'); - Addon::unregisterHook('addon_settings', 'addon/blogger/blogger.php', 'blogger_settings'); - Addon::unregisterHook('addon_settings_post', 'addon/blogger/blogger.php', 'blogger_settings_post'); + Hook::unregister('post_local_end', 'addon/blogger/blogger.php', 'blogger_send'); + Hook::unregister('addon_settings', 'addon/blogger/blogger.php', 'blogger_settings'); + Hook::unregister('addon_settings_post', 'addon/blogger/blogger.php', 'blogger_settings_post'); } -function blogger_jot_nets(&$a, &$b) +function blogger_jot_nets(App $a, array &$jotnets_fields) { if (!local_user()) { return; } - $bl_post = PConfig::get(local_user(), 'blogger', 'post'); - if (intval($bl_post) == 1) { - $bl_defpost = PConfig::get(local_user(), 'blogger', 'post_by_default'); - $selected = ((intval($bl_defpost) == 1) ? ' checked="checked" ' : ''); - $b .= '
' - . t('Post to blogger') . '
'; + if (PConfig::get(local_user(), 'blogger', 'post')) { + $jotnets_fields[] = [ + 'type' => 'checkbox', + 'field' => [ + 'blogger_enable', + L10n::t('Post to blogger'), + PConfig::get(local_user(), 'blogger', 'post_by_default') + ] + ]; } } -function blogger_settings(&$a, &$s) +function blogger_settings(App $a, &$s) { if (! local_user()) { return; @@ -56,7 +68,7 @@ function blogger_settings(&$a, &$s) /* Add our stylesheet to the page so we can make our settings look nice */ - $a->page['htmlhead'] .= '' . "\r\n"; + $a->page['htmlhead'] .= '' . "\r\n"; /* Get the current state of our config variables */ @@ -74,55 +86,70 @@ function blogger_settings(&$a, &$s) /* Add some HTML to the existing form */ $s .= ''; - $s .= '

'. t('Blogger Export').'

'; + $s .= '

'. L10n::t('Blogger Export').'

'; $s .= '
'; $s .= ''; + $s .= '
'; } -function blogger_settings_post(&$a, &$b) +function blogger_settings_post(App $a, array &$b) { - if (x($_POST, 'blogger-submit')) { - PConfig::set(local_user(), 'blogger', 'post', intval($_POST['blogger'])); - PConfig::set(local_user(), 'blogger', 'post_by_default', intval($_POST['bl_bydefault'])); - PConfig::set(local_user(), 'blogger', 'bl_username', trim($_POST['bl_username'])); - PConfig::set(local_user(), 'blogger', 'bl_password', trim($_POST['bl_password'])); - PConfig::set(local_user(), 'blogger', 'bl_blog', trim($_POST['bl_blog'])); + if (!empty($_POST['blogger-submit'])) { + PConfig::set(local_user(), 'blogger', 'post', defaults($_POST, 'blogger', false)); + PConfig::set(local_user(), 'blogger', 'post_by_default', defaults($_POST, 'bl_bydefault', false)); + PConfig::set(local_user(), 'blogger', 'bl_username', trim($_POST['bl_username'])); + PConfig::set(local_user(), 'blogger', 'bl_password', trim($_POST['bl_password'])); + PConfig::set(local_user(), 'blogger', 'bl_blog', trim($_POST['bl_blog'])); + } +} + +function blogger_hook_fork(App &$a, array &$b) +{ + if ($b['name'] != 'notifier_normal') { + return; + } + + $post = $b['data']; + + if ($post['deleted'] || $post['private'] || ($post['created'] !== $post['edited']) || + !strstr($post['postopts'], 'blogger') || ($post['parent'] != $post['id'])) { + $b['execute'] = false; + return; } } -function blogger_post_local(&$a, &$b) +function blogger_post_local(App $a, array &$b) { // This can probably be changed to allow editing by pointing to a different API endpoint @@ -140,7 +167,7 @@ function blogger_post_local(&$a, &$b) $bl_post = intval(PConfig::get(local_user(), 'blogger', 'post')); - $bl_enable = (($bl_post && x($_REQUEST, 'blogger_enable')) ? intval($_REQUEST['blogger_enable']) : 0); + $bl_enable = (($bl_post && !empty($_REQUEST['blogger_enable'])) ? intval($_REQUEST['blogger_enable']) : 0); if ($b['api_source'] && intval(PConfig::get(local_user(), 'blogger', 'post_by_default'))) { $bl_enable = 1; @@ -154,13 +181,10 @@ function blogger_post_local(&$a, &$b) $b['postopts'] .= ','; } - $b['postopts'] .= 'blogger'; + $b['postopts'] .= 'blogger'; } - - - -function blogger_send(&$a, &$b) +function blogger_send(App $a, array &$b) { if ($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited'])) { return; @@ -174,16 +198,14 @@ function blogger_send(&$a, &$b) return; } - $bl_username = xmlify(PConfig::get($b['uid'], 'blogger', 'bl_username')); - $bl_password = xmlify(PConfig::get($b['uid'], 'blogger', 'bl_password')); + $bl_username = XML::escape(PConfig::get($b['uid'], 'blogger', 'bl_username')); + $bl_password = XML::escape(PConfig::get($b['uid'], 'blogger', 'bl_password')); $bl_blog = PConfig::get($b['uid'], 'blogger', 'bl_blog'); if ($bl_username && $bl_password && $bl_blog) { - require_once('include/bbcode.php'); - - $title = '' . (($b['title']) ? $b['title'] : t('Post from Friendica')) . ''; - $post = $title . bbcode($b['body']); - $post = xmlify($post); + $title = '' . (($b['title']) ? $b['title'] : L10n::t('Post from Friendica')) . ''; + $post = $title . BBCode::convert($b['body']); + $post = XML::escape($post); $xml = <<< EOT @@ -201,12 +223,12 @@ function blogger_send(&$a, &$b) EOT; - logger('blogger: data: ' . $xml, LOGGER_DATA); + Logger::log('blogger: data: ' . $xml, Logger::DATA); if ($bl_blog !== 'test') { - $x = post_url($bl_blog, $xml); + $x = Network::post($bl_blog, $xml)->getBody(); } - logger('posted to blogger: ' . (($x) ? $x : ''), LOGGER_DEBUG); + Logger::log('posted to blogger: ' . (($x) ? $x : ''), Logger::DEBUG); } }