*
*/
use Friendica\Core\Hook;
use Friendica\DI;
function nsfw_install()
{
Hook::register('prepare_body_content_filter', 'addon/nsfw/nsfw.php', 'nsfw_prepare_body_content_filter', 10);
Hook::register('addon_settings', 'addon/nsfw/nsfw.php', 'nsfw_addon_settings');
Hook::register('addon_settings_post', 'addon/nsfw/nsfw.php', 'nsfw_addon_settings_post');
}
// This function isn't perfect and isn't trying to preserve the html structure - it's just a
// quick and dirty filter to pull out embedded photo blobs because 'nsfw' seems to come up
// inside them quite often. We don't need anything fancy, just pull out the data blob so we can
// check against the rest of the body.
function nsfw_extract_photos($body)
{
$new_body = '';
$img_start = strpos($body, 'src="data:');
$img_end = (($img_start !== false) ? strpos(substr($body, $img_start), '>') : false);
$cnt = 0;
while ($img_end !== false) {
$img_end += $img_start;
$new_body = $new_body . substr($body, 0, $img_start);
$cnt ++;
$body = substr($body, 0, $img_end);
$img_start = strpos($body, 'src="data:');
$img_end = (($img_start !== false) ? strpos(substr($body, $img_start), '>') : false);
}
if (!$cnt) {
return $body;
}
return $new_body;
}
function nsfw_addon_settings(&$a, &$s)
{
if (!local_user()) {
return;
}
DI::page()->registerStylesheet(__DIR__ . '/nsfw.css', 'all');
$enable_checked = (intval(DI::pConfig()->get(local_user(), 'nsfw', 'disable')) ? '' : ' checked="checked" ');
$words = DI::pConfig()->get(local_user(), 'nsfw', 'words');
if (!$words) {
$words = 'nsfw,';
}
$s .= '';
$s .= '
' . DI::l10n()->t('Content Filter (NSFW and more)') . '
';
$s .= '';
$s .= '
';
$s .= '';
$s .= '
' . DI::l10n()->t('Content Filter (NSFW and more)') . '
';
$s .= '';
$s .= '
';
$s .= '
' . DI::l10n()->t('This addon searches for specified words/text in posts and collapses them. It can be used to filter content tagged with for instance #NSFW that may be deemed inappropriate at certain times or places, such as being at work. It is also useful for hiding irrelevant or annoying content from direct view.') . '