forked from friendica/friendica-addons
commit
bbdf6c1f78
2 changed files with 29 additions and 2 deletions
|
@ -10,7 +10,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
function nsfw_install() {
|
function nsfw_install() {
|
||||||
register_hook('prepare_body', 'addon/nsfw/nsfw.php', 'nsfw_prepare_body');
|
register_hook('prepare_body', 'addon/nsfw/nsfw.php', 'nsfw_prepare_body', 10);
|
||||||
register_hook('plugin_settings', 'addon/nsfw/nsfw.php', 'nsfw_addon_settings');
|
register_hook('plugin_settings', 'addon/nsfw/nsfw.php', 'nsfw_addon_settings');
|
||||||
register_hook('plugin_settings_post', 'addon/nsfw/nsfw.php', 'nsfw_addon_settings_post');
|
register_hook('plugin_settings_post', 'addon/nsfw/nsfw.php', 'nsfw_addon_settings_post');
|
||||||
|
|
||||||
|
|
|
@ -66,6 +66,33 @@ function showmore_addon_settings_post(&$a,&$b) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function get_body_length($body) {
|
||||||
|
$string = trim($body);
|
||||||
|
|
||||||
|
// 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);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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'))) {
|
||||||
|
// 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 = strip_tags($string);
|
||||||
|
return strlen($string);
|
||||||
|
}
|
||||||
|
|
||||||
function showmore_prepare_body(&$a,&$b) {
|
function showmore_prepare_body(&$a,&$b) {
|
||||||
|
|
||||||
$words = null;
|
$words = null;
|
||||||
|
@ -76,7 +103,7 @@ function showmore_prepare_body(&$a,&$b) {
|
||||||
if(!$chars)
|
if(!$chars)
|
||||||
$chars = 1100;
|
$chars = 1100;
|
||||||
|
|
||||||
if (strlen(strip_tags(trim($b['html']))) > $chars) {
|
if (get_body_length($b['html']) > $chars) {
|
||||||
$found = true;
|
$found = true;
|
||||||
$shortened = trim(showmore_cutitem($b['html'], $chars))."...";
|
$shortened = trim(showmore_cutitem($b['html'], $chars))."...";
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue