X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=showmore%2Fshowmore.php;h=c0f581ec724a6d8afd0c8b940401df4e5f5fbb82;hb=9e025b4771629487d9db91e32bf2a31b80eb93da;hp=89cec83d4d6dc75590c3eb356ef8eadeed12762c;hpb=dbe8118e406510d85404d9577f83d68782cfe2a0;p=friendica-addons.git diff --git a/showmore/showmore.php b/showmore/showmore.php index 89cec83d..c0f581ec 100644 --- a/showmore/showmore.php +++ b/showmore/showmore.php @@ -7,130 +7,132 @@ * based upon NSFW from Mike Macgirvin * */ -use Friendica\Core\Addon; -use Friendica\Core\L10n; -use Friendica\Core\PConfig; - -function showmore_install() { - Addon::registerHook('prepare_body', 'addon/showmore/showmore.php', 'showmore_prepare_body'); - Addon::registerHook('addon_settings', 'addon/showmore/showmore.php', 'showmore_addon_settings'); - Addon::registerHook('addon_settings_post', 'addon/showmore/showmore.php', 'showmore_addon_settings_post'); +use Friendica\Core\Hook; +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() { - Addon::unregisterHook('prepare_body', 'addon/showmore/showmore.php', 'showmore_prepare_body'); - Addon::unregisterHook('addon_settings', 'addon/showmore/showmore.php', 'showmore_addon_settings'); - Addon::unregisterHook('addon_settings_post', 'addon/showmore/showmore.php', 'showmore_addon_settings_post'); -} - -function showmore_addon_settings(&$a,&$s) { - - if(! local_user()) +function showmore_addon_settings(&$a, &$s) +{ + if (!local_user()) { return; + } /* Add our stylesheet to the page so we can make our settings look nice */ - $a->page['htmlhead'] .= ''."\r\n"; + DI::page()['htmlhead'] .= ''."\r\n"; - $enable_checked = (intval(PConfig::get(local_user(),'showmore','disable')) ? '' : ' checked="checked"'); - $chars = PConfig::get(local_user(),'showmore','chars'); - if(!$chars) - $chars = '1100'; + $enable_checked = (intval(DI::pConfig()->get(local_user(), 'showmore', 'disable')) ? '' : ' checked="checked"'); + $chars = DI::pConfig()->get(local_user(), 'showmore', 'chars', 1100); $s .= ''; - $s .= '

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

'; + $s .= '

' . DI::l10n()->t('"Show more" Settings').'

'; $s .= '
'; $s .= ''; return; } -function showmore_addon_settings_post(&$a,&$b) { - - if(! local_user()) +function showmore_addon_settings_post(&$a, &$b) +{ + if (!local_user()) { return; + } - if($_POST['showmore-submit']) { - PConfig::set(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(local_user(), 'showmore', 'chars', trim($_POST['showmore-chars'])); + $enable = (!empty($_POST['showmore-enable']) ? intval($_POST['showmore-enable']) : 0); $disable = 1-$enable; - PConfig::set(local_user(),'showmore','disable', $disable); - info(L10n::t('Show More Settings saved.') . EOL); + DI::pConfig()->set(local_user(), '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(\Friendica\App $a, &$hook_data) +{ + // No combination with content filters + if (!empty($hook_data['filter_reasons'])) { + return; + } - $words = null; - if(PConfig::get(local_user(),'showmore','disable')) + if (DI::pConfig()->get(local_user(), 'showmore', 'disable')) { return; + } - $chars = (int)PConfig::get(local_user(),'showmore','chars'); - if(!$chars) - $chars = 1100; + $chars = (int) DI::pConfig()->get(local_user(), '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." ". - ''.L10n::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"); @@ -159,5 +161,5 @@ function showmore_cutitem($text, $limit) { $text = $doc->saveHTML(); $text = str_replace(["", "", $doctype], ["", "", ""], $text); - return($text); + return $text; }