X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=wppost%2Fwppost.php;h=0405f78ad77717b65117554636afbfea80c58e02;hb=397282cbb355754bedc85cf606c16521ce42c2bf;hp=0d860ef571290a9ef53ce0388b6d75f3e4480b6f;hpb=9640142a720dfc7683e7bbf60d6f4f8799b918e9;p=friendica-addons.git diff --git a/wppost/wppost.php b/wppost/wppost.php index 0d860ef5..0405f78a 100644 --- a/wppost/wppost.php +++ b/wppost/wppost.php @@ -10,10 +10,12 @@ use Friendica\Content\Text\BBCode; use Friendica\Content\Text\HTML; use Friendica\Core\Hook; use Friendica\Core\Logger; +use Friendica\Core\Renderer; use Friendica\Database\DBA; use Friendica\DI; -use Friendica\Network\HTTPRequest; -use Friendica\Util\Strings; +use Friendica\Model\Item; +use Friendica\Model\Post; +use Friendica\Model\User; use Friendica\Util\XML; function wppost_install() @@ -26,145 +28,78 @@ function wppost_install() Hook::register('connector_settings_post', 'addon/wppost/wppost.php', 'wppost_settings_post'); } -function wppost_uninstall() +function wppost_jot_nets(array &$jotnets_fields) { - Hook::unregister('hook_fork', 'addon/wppost/wppost.php', 'wppost_hook_fork'); - Hook::unregister('post_local', 'addon/wppost/wppost.php', 'wppost_post_local'); - Hook::unregister('notifier_normal', 'addon/wppost/wppost.php', 'wppost_send'); - Hook::unregister('jot_networks', 'addon/wppost/wppost.php', 'wppost_jot_nets'); - Hook::unregister('connector_settings', 'addon/wppost/wppost.php', 'wppost_settings'); - Hook::unregister('connector_settings_post', 'addon/wppost/wppost.php', 'wppost_settings_post'); - - // obsolete - remove - Hook::unregister('post_local_end', 'addon/wppost/wppost.php', 'wppost_send'); - Hook::unregister('addon_settings', 'addon/wppost/wppost.php', 'wppost_settings'); - Hook::unregister('addon_settings_post', 'addon/wppost/wppost.php', 'wppost_settings_post'); -} - - -function wppost_jot_nets(\Friendica\App &$a, array &$jotnets_fields) -{ - if (!local_user()) { + if (!DI::userSession()->getLocalUserId()) { return; } - if (DI::pConfig()->get(local_user(),'wppost','post')) { + if (DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'wppost', 'post')) { $jotnets_fields[] = [ 'type' => 'checkbox', 'field' => [ 'wppost_enable', DI::l10n()->t('Post to Wordpress'), - DI::pConfig()->get(local_user(),'wppost','post_by_default') + DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'wppost', 'post_by_default') ] ]; } } -function wppost_settings(&$a,&$s) { - - if(! local_user()) +function wppost_settings(array &$data) +{ + if (!DI::userSession()->getLocalUserId()) { return; + } - /* Add our stylesheet to the page so we can make our settings look nice */ - - DI::page()['htmlhead'] .= '' . "\r\n"; - - /* Get the current state of our config variables */ - - $enabled = DI::pConfig()->get(local_user(),'wppost','post'); - $checked = (($enabled) ? ' checked="checked" ' : ''); - - $css = (($enabled) ? '' : '-disabled'); - - $def_enabled = DI::pConfig()->get(local_user(),'wppost','post_by_default'); - $back_enabled = DI::pConfig()->get(local_user(),'wppost','backlink'); - $shortcheck_enabled = DI::pConfig()->get(local_user(),'wppost','shortcheck'); - - $def_checked = (($def_enabled) ? ' checked="checked" ' : ''); - $back_checked = (($back_enabled) ? ' checked="checked" ' : ''); - $shortcheck_checked = (($shortcheck_enabled) ? ' checked="checked" ' : ''); - - $wp_username = DI::pConfig()->get(local_user(), 'wppost', 'wp_username'); - $wp_password = DI::pConfig()->get(local_user(), 'wppost', 'wp_password'); - $wp_blog = DI::pConfig()->get(local_user(), 'wppost', 'wp_blog'); - $wp_backlink_text = DI::pConfig()->get(local_user(), 'wppost', 'wp_backlink_text'); - - - /* Add some HTML to the existing form */ - - $s .= ''; - $s .= '

'. DI::l10n()->t('Wordpress Export').'

'; - $s .= '
'; - $s .= ''; - + $enabled = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'wppost', 'post', false); + $wp_username = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'wppost', 'wp_username'); + $wp_blog = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'wppost', 'wp_blog'); + $def_enabled = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'wppost', 'post_by_default', false); + $back_enabled = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'wppost', 'backlink', false); + $wp_backlink_text = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'wppost', 'wp_backlink_text'); + $shortcheck_enabled = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'wppost', 'shortcheck', false); + + $t = Renderer::getMarkupTemplate('connector_settings.tpl', 'addon/wppost/'); + $html = Renderer::replaceMacros($t, [ + '$enabled' => ['wppost', DI::l10n()->t('Enable Wordpress Post Addon'), $enabled], + '$username' => ['wp_username', DI::l10n()->t('Wordpress username'), $wp_username], + '$password' => ['wp_password', DI::l10n()->t('Wordpress password')], + '$blog' => ['wp_blog', DI::l10n()->t('WordPress API URL'), $wp_blog], + '$bydefault' => ['wp_bydefault', DI::l10n()->t('Post to Wordpress by default'), $def_enabled], + '$backlink' => ['wp_backlink', DI::l10n()->t('Provide a backlink to the Friendica post'), $back_enabled], + '$backlink_text' => ['wp_backlink_text', DI::l10n()->t('Text for the backlink, e.g. Read the original post and comment stream on Friendica.'), $wp_backlink_text], + '$shortcheck' => ['wp_shortcheck', DI::l10n()->t('Don\'t post messages that are too short'), $shortcheck_enabled], + ]); + + $data = [ + 'connector' => 'wppost', + 'title' => DI::l10n()->t('Wordpress Export'), + 'image' => 'images/wordpress.png', + 'enabled' => $enabled, + 'html' => $html, + ]; } -function wppost_settings_post(&$a,&$b) { - - if(!empty($_POST['wppost-submit'])) { - DI::pConfig()->set(local_user(),'wppost','post',intval($_POST['wppost'])); - DI::pConfig()->set(local_user(),'wppost','post_by_default',intval($_POST['wp_bydefault'] ?? false)); - DI::pConfig()->set(local_user(),'wppost','wp_username',trim($_POST['wp_username'])); - DI::pConfig()->set(local_user(),'wppost','wp_password',trim($_POST['wp_password'])); - DI::pConfig()->set(local_user(),'wppost','wp_blog',trim($_POST['wp_blog'])); - DI::pConfig()->set(local_user(),'wppost','backlink',trim($_POST['wp_backlink'] ?? '')); - DI::pConfig()->set(local_user(),'wppost','shortcheck',trim($_POST['wp_shortcheck'])); - $wp_backlink_text = Strings::escapeTags(trim($_POST['wp_backlink_text'])); - $wp_backlink_text = BBCode::convert($wp_backlink_text, false, BBCode::BACKLINK); +function wppost_settings_post(array &$b) +{ + if (!empty($_POST['wppost-submit'])) { + DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'wppost', 'post', intval($_POST['wppost'])); + DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'wppost', 'post_by_default', intval($_POST['wp_bydefault'])); + DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'wppost', 'wp_username', trim($_POST['wp_username'])); + DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'wppost', 'wp_password', trim($_POST['wp_password'])); + DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'wppost', 'wp_blog', trim($_POST['wp_blog'])); + DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'wppost', 'backlink', intval($_POST['wp_backlink'])); + DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'wppost', 'shortcheck', intval($_POST['wp_shortcheck'])); + $wp_backlink_text = BBCode::convertForUriId(User::getSystemUriId(), trim($_POST['wp_backlink_text']), BBCode::BACKLINK); $wp_backlink_text = HTML::toPlaintext($wp_backlink_text, 0, true); - DI::pConfig()->set(local_user(),'wppost','wp_backlink_text', $wp_backlink_text); + DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'wppost', 'wp_backlink_text', $wp_backlink_text); } - } -function wppost_hook_fork(&$a, &$b) +function wppost_hook_fork(array &$b) { if ($b['name'] != 'notifier_normal') { return; @@ -172,14 +107,17 @@ function wppost_hook_fork(&$a, &$b) $post = $b['data']; - if ($post['deleted'] || $post['private'] || ($post['created'] !== $post['edited']) || - !strstr($post['postopts'], 'wppost') || ($post['parent'] != $post['id'])) { + if ( + $post['deleted'] || $post['private'] || ($post['created'] !== $post['edited']) || + !strstr($post['postopts'] ?? '', 'wppost') || ($post['parent'] != $post['id']) + ) { $b['execute'] = false; return; } } -function wppost_post_local(&$a, &$b) { +function wppost_post_local(array &$b) +{ // This can probably be changed to allow editing by pointing to a different API endpoint @@ -187,7 +125,7 @@ function wppost_post_local(&$a, &$b) { return; } - if (!local_user() || (local_user() != $b['uid'])) { + if (!DI::userSession()->getLocalUserId() || (DI::userSession()->getLocalUserId() != $b['uid'])) { return; } @@ -195,11 +133,11 @@ function wppost_post_local(&$a, &$b) { return; } - $wp_post = intval(DI::pConfig()->get(local_user(),'wppost','post')); + $wp_post = intval(DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'wppost', 'post')); $wp_enable = (($wp_post && !empty($_REQUEST['wppost_enable'])) ? intval($_REQUEST['wppost_enable']) : 0); - if ($b['api_source'] && intval(DI::pConfig()->get(local_user(),'wppost','post_by_default'))) { + if ($b['api_source'] && intval(DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'wppost', 'post_by_default'))) { $wp_enable = 1; } @@ -217,31 +155,33 @@ function wppost_post_local(&$a, &$b) { -function wppost_send(&$a, &$b) +function wppost_send(array &$b) { - if($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited'])) { + if ($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited'])) { return; } - if(! strstr($b['postopts'],'wppost')) { + if (!strstr($b['postopts'], 'wppost')) { return; } - if($b['parent'] != $b['id']) { + if ($b['gravity'] != Item::GRAVITY_PARENT) { return; } // 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 = DBA::selectFirst('contact', ['id'], ['uid' => $b['uid'], 'self' => true]); if ($b['contact-id'] != $self['id']) { return; } + $b['body'] = Post\Media::addAttachmentsToBody($b['uri-id'], DI::contentItem()->addSharedPost($b)); + $wp_username = XML::escape(DI::pConfig()->get($b['uid'], 'wppost', 'wp_username')); $wp_password = XML::escape(DI::pConfig()->get($b['uid'], 'wppost', 'wp_password')); - $wp_blog = DI::pConfig()->get($b['uid'],'wppost','wp_blog'); - $wp_backlink_text = DI::pConfig()->get($b['uid'],'wppost','wp_backlink_text'); + $wp_blog = DI::pConfig()->get($b['uid'], 'wppost', 'wp_blog'); + $wp_backlink_text = DI::pConfig()->get($b['uid'], 'wppost', 'wp_backlink_text'); if ($wp_backlink_text == '') { $wp_backlink_text = DI::l10n()->t('Read the orig­i­nal post and com­ment stream on Friendica'); } @@ -251,15 +191,7 @@ function wppost_send(&$a, &$b) if (intval(DI::pConfig()->get($b['uid'], 'wppost', 'shortcheck'))) { // Checking, if its a post that is worth a blog post - $postentry = false; - $siteinfo = BBCode::getAttachedData($b["body"]); - - // Is it a link to an aricle, a video or a photo? - if (isset($siteinfo["type"])) { - if (in_array($siteinfo["type"], ["link", "audio", "video", "photo"])) { - $postentry = true; - } - } + $postentry = (bool)Post\Media::getByURIId($b['uri-id'], [Post\Media::HTML, Post\Media::AUDIO, Post\Media::VIDEO, Post\Media::IMAGE]); // Does it have a title? if ($wptitle != "") { @@ -279,17 +211,17 @@ function wppost_send(&$a, &$b) // If the title is empty then try to guess if ($wptitle == '') { // Fetch information about the post - $siteinfo = BBCode::getAttachedData($b["body"]); - if (isset($siteinfo["title"])) { - $wptitle = $siteinfo["title"]; + $media = Post\Media::getByURIId($b['uri-id'], [Post\Media::HTML]); + if (!empty($media) && !empty($media[0]['name']) && ($media[0]['name'] != $media[0]['url'])) { + $wptitle = $media[0]['name']; } // If no bookmark is found then take the first line if ($wptitle == '') { // Remove the share element before fetching the first line - $title = trim(preg_replace("/\[share.*?\](.*?)\[\/share\]/ism","\n$1\n",$b['body'])); + $title = trim(preg_replace("/\[share.*?\](.*?)\[\/share\]/ism", "\n$1\n", $b['body'])); - $title = HTML::toPlaintext(BBCode::convert($title, false), 0, true)."\n"; + $title = BBCode::toPlaintext($title) . "\n"; $pos = strpos($title, "\n"); $trailer = ""; if (($pos == 0) || ($pos > 100)) { @@ -297,23 +229,22 @@ function wppost_send(&$a, &$b) $trailer = "..."; } - $wptitle = substr($title, 0, $pos).$trailer; + $wptitle = substr($title, 0, $pos) . $trailer; } } $title = '' . (($wptitle) ? $wptitle : DI::l10n()->t('Post from Friendica')) . ''; - $post = BBCode::convert($b['body'], false, BBCode::CONNECTORS); + $post = BBCode::convertForUriId($b['uri-id'], $b['body'], BBCode::CONNECTORS); // If a link goes to youtube then remove the stuff around it. Wordpress detects youtube links and embeds it - $post = preg_replace('/(.*?)<\/a>/ism',"\n$1\n",$post); - $post = preg_replace('/(.*?)<\/a>/ism',"\n$1\n",$post); + $post = preg_replace('/(.*?)<\/a>/ism', "\n$1\n", $post); + $post = preg_replace('/(.*?)<\/a>/ism', "\n$1\n", $post); - $post = $title.$post; + $post = $title . $post; - $wp_backlink = intval(DI::pConfig()->get($b['uid'],'wppost','backlink')); - if($wp_backlink && $b['plink']) { - $post .= EOL . EOL . '' - . $wp_backlink_text . '' . EOL . EOL; + $wp_backlink = intval(DI::pConfig()->get($b['uid'], 'wppost', 'backlink')); + if ($wp_backlink && $b['plink']) { + $post .= '

' . $wp_backlink_text . '

'; } $post = XML::escape($post); @@ -335,11 +266,11 @@ function wppost_send(&$a, &$b) EOT; - Logger::log('wppost: data: ' . $xml, Logger::DATA); + Logger::debug('wppost: data: ' . $xml); if ($wp_blog !== 'test') { - $x = HTTPRequest::post($wp_blog, $xml)->getBody(); + $x = DI::httpClient()->post($wp_blog, $xml)->getBody(); } - Logger::log('posted to wordpress: ' . (($x) ? $x : ''), Logger::DEBUG); + Logger::info('posted to wordpress: ' . (($x) ? $x : '')); } }