X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=showmore%2Fshowmore.php;h=8e85925aec8e5f19fa0884af4e587f868bfd4b48;hb=39c654da00e63a58b6a930e7d0e555bfb248b44b;hp=1f40b027be3b7da947e3905e8a9a817ffd176c7a;hpb=7639f9117936fda9fb886c4e6934be315a30b72e;p=friendica-addons.git diff --git a/showmore/showmore.php b/showmore/showmore.php old mode 100755 new mode 100644 index 1f40b027..8e85925a --- a/showmore/showmore.php +++ b/showmore/showmore.php @@ -8,120 +8,121 @@ * */ -function showmore_install() { - register_hook('prepare_body', 'addon/showmore/showmore.php', 'showmore_prepare_body'); - register_hook('plugin_settings', 'addon/showmore/showmore.php', 'showmore_addon_settings'); - register_hook('plugin_settings_post', 'addon/showmore/showmore.php', 'showmore_addon_settings_post'); +use Friendica\App; +use Friendica\Core\Hook; +use Friendica\Core\Renderer; +use Friendica\DI; +use Friendica\Util\Strings; + +function showmore_install() +{ + Hook::register('prepare_body', 'addon/showmore/showmore.php', 'showmore_prepare_body'); + Hook::register('addon_settings', 'addon/showmore/showmore.php', 'showmore_addon_settings'); + Hook::register('addon_settings_post', 'addon/showmore/showmore.php', 'showmore_addon_settings_post'); } -function showmore_uninstall() { - unregister_hook('prepare_body', 'addon/showmore/showmore.php', 'showmore_prepare_body'); - unregister_hook('plugin_settings', 'addon/showmore/showmore.php', 'showmore_addon_settings'); - unregister_hook('plugin_settings_post', 'addon/showmore/showmore.php', 'showmore_addon_settings_post'); -} - -function showmore_addon_settings(&$a,&$s) { - - if(! local_user()) +function showmore_addon_settings(array &$data) +{ + if (!DI::userSession()->getLocalUserId()) { return; + } - /* Add our stylesheet to the page so we can make our settings look nice */ - - $a->page['htmlhead'] .= ''."\r\n"; - - $enable_checked = (intval(get_pconfig(local_user(),'showmore','disable')) ? '' : ' checked="checked"'); - $chars = get_pconfig(local_user(),'showmore','chars'); - if(!$chars) - $chars = '1100'; - - $s .= '
'; - $s .= '

' . t('"Show more" Settings').'

'; - $s .= '
'; + DI::page()->registerStylesheet(__DIR__ . '/showmore.css', 'all'); - $s .= ''; - $s .= ''; - $s .= '
'; - $s .= ''; - $s .= ''; - $s .= '
'; + $enabled = !DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'showmore', 'disable'); + $chars = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'showmore', 'chars', 1100); - $s .= '
'; -// $s .= '
' . t('Use /expression/ to provide regular expressions') . '
'; - $s .= '
'; + $t = Renderer::getMarkupTemplate('settings.tpl', 'addon/showmore/'); + $html = Renderer::replaceMacros($t, [ + '$enabled' => ['showmore-enable', DI::l10n()->t('Enable Show More'), $enabled], + '$chars' => ['showmore-chars', DI::l10n()->t('Cutting posts after how many characters'), $chars], + ]); - return; + $data = [ + 'addon' => 'showmore', + 'title' => DI::l10n()->t('"Show more" Settings'), + 'html' => $html, + ]; } -function showmore_addon_settings_post(&$a,&$b) { - - if(! local_user()) +function showmore_addon_settings_post(array &$b) +{ + if (!DI::userSession()->getLocalUserId()) { return; + } - if($_POST['showmore-submit']) { - set_pconfig(local_user(),'showmore','chars',trim($_POST['showmore-chars'])); - $enable = ((x($_POST,'showmore-enable')) ? intval($_POST['showmore-enable']) : 0); + if (!empty($_POST['showmore-submit'])) { + DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'showmore', 'chars', trim($_POST['showmore-chars'])); + $enable = (!empty($_POST['showmore-enable']) ? intval($_POST['showmore-enable']) : 0); $disable = 1-$enable; - set_pconfig(local_user(),'showmore','disable', $disable); - info( t('Show More Settings saved.') . EOL); + DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'showmore', 'disable', $disable); } } -function get_body_length($body) { +function get_body_length($body) +{ $string = trim($body); // DomDocument doesn't like empty strings - if(! strlen($string)) { + if (!strlen($string)) { return 0; } // We need to get rid of hidden tags (display: none) // Get rid of the warning. It would be better to have some valid html as input - $dom = @DomDocument::loadHTML($body); - $xpath = new DOMXPath($dom); + $doc = new DOMDocument(); + @$doc->loadHTML($body); + $xpath = new DOMXPath($doc); /* * Checking any possible syntax of the style attribute with xpath is impossible * So we just get any element with a style attribute, and check them with a regexp */ $xr = $xpath->query('//*[@style]'); - foreach($xr as $node) { - if(preg_match('/.*display: *none *;.*/',$node->getAttribute('style'))) { + foreach ($xr as $node) { + if (preg_match('/.*display: *none *;.*/',$node->getAttribute('style'))) { // Hidden, remove it from its parent $node->parentNode->removeChild($node); } } // Now we can get the body of our HTML DomDocument, it contains only what is visible - $string = $dom->saveHTML(); + $string = $doc->saveHTML(); $string = strip_tags($string); return strlen($string); } -function showmore_prepare_body(&$a,&$b) { +function showmore_prepare_body(&$hook_data) +{ + // No combination with content filters + if (!empty($hook_data['filter_reasons'])) { + return; + } - $words = null; - if(get_pconfig(local_user(),'showmore','disable')) + if (DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'showmore', 'disable')) { return; + } - $chars = (int)get_pconfig(local_user(),'showmore','chars'); - if(!$chars) - $chars = 1100; + $chars = (int) DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'showmore', 'chars', 1100); - if (get_body_length($b['html']) > $chars) { + if (get_body_length($hook_data['html']) > $chars) { $found = true; - $shortened = trim(showmore_cutitem($b['html'], $chars))."..."; + $shortened = trim(showmore_cutitem($hook_data['html'], $chars)) . "..."; + } else { + $found = false; } - if($found) { - $rnd = random_string(8); - $b['html'] = ''.$shortened." ". - ''.sprintf(t('show more')).''. - ''; + if ($found) { + $rnd = Strings::getRandomHex(8); + $hook_data['html'] = '' . + ''; } } -function showmore_cutitem($text, $limit) { +function showmore_cutitem($text, $limit) +{ $text = trim($text); $text = mb_convert_encoding($text, 'HTML-ENTITIES', "UTF-8"); @@ -148,7 +149,7 @@ function showmore_cutitem($text, $limit) { @$doc->loadHTML($doctype."".$text.""); $text = $doc->saveHTML(); - $text = str_replace(array("", "", $doctype), array("", "", ""), $text); + $text = str_replace(["", "", $doctype], ["", "", ""], $text); - return($text); + return $text; }