2011-10-05 05:20:17 -04:00
< ? php
/**
* Name : NSFW
* Description : Collapse posts with inappropriate content
* Version : 1.0
* Author : Mike Macgirvin < http :// macgirvin . com / profile / mike >
*
*/
function nsfw_install () {
register_hook ( 'prepare_body' , 'addon/nsfw/nsfw.php' , 'nsfw_prepare_body' );
2011-10-13 23:53:24 -04:00
register_hook ( 'plugin_settings' , 'addon/nsfw/nsfw.php' , 'nsfw_addon_settings' );
register_hook ( 'plugin_settings_post' , 'addon/nsfw/nsfw.php' , 'nsfw_addon_settings_post' );
2011-10-05 05:20:17 -04:00
}
function nsfw_uninstall () {
unregister_hook ( 'prepare_body' , 'addon/nsfw/nsfw.php' , 'nsfw_prepare_body' );
2011-10-13 23:53:24 -04:00
unregister_hook ( 'plugin_settings' , 'addon/nsfw/nsfw.php' , 'nsfw_addon_settings' );
unregister_hook ( 'plugin_settings_post' , 'addon/nsfw/nsfw.php' , 'nsfw_addon_settings_post' );
}
function nsfw_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' ] .= '<link rel="stylesheet" type="text/css" href="' . $a -> get_baseurl () . '/addon/nsfw/nsfw.css' . '" media="all" />' . " \r \n " ;
2012-02-04 06:56:55 -05:00
$enable_checked = ( intval ( get_pconfig ( local_user (), 'nsfw' , 'disable' )) ? '' : ' checked="checked" ' );
2011-10-13 23:53:24 -04:00
$words = get_pconfig ( local_user (), 'nsfw' , 'words' );
if ( ! $words )
$words = 'nsfw,' ;
$s .= '<div class="settings-block">' ;
2012-04-02 20:45:06 -04:00
$s .= '<h3>' . t ( 'Not Safe For Work (General Purpose Content Filter) settings' ) . '</h3>' ;
2011-10-13 23:53:24 -04:00
$s .= '<div id="nsfw-wrapper">' ;
2012-04-02 20:45:06 -04:00
$s .= '<p>' . t ( 'This plugin looks in posts for the words/text you specify below, and collapses any content containing those keywords so it is not displayed at inappropriate times, such as sexual innuendo that may be improper in a work setting. It is polite and recommended to tag any content containing nudity with #NSFW. This filter can also match any other word/text you specify, and can thereby be used as a general purpose content filter.' ) . '</p>' ;
2012-04-02 19:41:55 -04:00
$s .= '<label id="nsfw-enable-label" for="nsfw-enable">' . t ( 'Enable Content filter' ) . ' </label>' ;
2012-02-04 06:56:55 -05:00
$s .= '<input id="nsfw-enable" type="checkbox" name="nsfw-enable" value="1"' . $enable_checked . ' />' ;
$s .= '<div class="clear"></div>' ;
2012-04-02 19:41:55 -04:00
$s .= '<label id="nsfw-label" for="nsfw-words">' . t ( 'Comma separated list of keywords to hide' ) . ' </label>' ;
2011-10-13 23:53:24 -04:00
$s .= '<input id="nsfw-words" type="text" name="nsfw-words" value="' . $words . '" />' ;
$s .= '</div><div class="clear"></div>' ;
2012-02-02 19:53:40 -05:00
$s .= '<div class="settings-submit-wrapper" ><input type="submit" id="nsfw-submit" name="nsfw-submit" class="settings-submit" value="' . t ( 'Submit' ) . '" /></div>' ;
$s .= '<div class="nsfw-desc">' . t ( 'Use /expression/ to provide regular expressions' ) . '</div></div>' ;
2011-10-13 23:53:24 -04:00
return ;
}
function nsfw_addon_settings_post ( & $a , & $b ) {
if ( ! local_user ())
return ;
if ( $_POST [ 'nsfw-submit' ]) {
set_pconfig ( local_user (), 'nsfw' , 'words' , trim ( $_POST [ 'nsfw-words' ]));
2012-02-04 06:56:55 -05:00
$enable = (( x ( $_POST , 'nsfw-enable' )) ? intval ( $_POST [ 'nsfw-enable' ]) : 0 );
$disable = 1 - $enable ;
set_pconfig ( local_user (), 'nsfw' , 'disable' , $disable );
2011-10-13 23:53:24 -04:00
info ( t ( 'NSFW Settings saved.' ) . EOL );
}
2011-10-05 05:20:17 -04:00
}
function nsfw_prepare_body ( & $a , & $b ) {
2011-10-13 23:53:24 -04:00
$words = null ;
2012-02-04 06:56:55 -05:00
if ( get_pconfig ( local_user (), 'nsfw' , 'disable' ))
return ;
2011-10-13 23:53:24 -04:00
if ( local_user ()) {
$words = get_pconfig ( local_user (), 'nsfw' , 'words' );
}
if ( $words ) {
$arr = explode ( ',' , $words );
}
else {
$arr = array ( 'nsfw' );
}
$found = false ;
if ( count ( $arr )) {
foreach ( $arr as $word ) {
if ( ! strlen ( trim ( $word ))) {
continue ;
}
2012-02-02 02:40:16 -05:00
if ( strpos ( $word , '/' ) === 0 ) {
if ( preg_match ( $word , $b [ 'html' ])) {
$found = true ;
break ;
}
2011-10-13 23:53:24 -04:00
}
2012-02-02 02:40:16 -05:00
else {
if ( stristr ( $b [ 'html' ], $word )) {
$found = true ;
break ;
}
if ( stristr ( $b [ 'item' ][ 'tag' ], ']' . $word . '[' )) {
$found = true ;
break ;
}
2011-10-24 18:53:20 -04:00
}
2011-10-13 23:53:24 -04:00
}
}
if ( $found ) {
2011-10-05 05:20:17 -04:00
$rnd = random_string ( 8 );
2011-11-10 21:19:22 -05:00
$b [ 'html' ] = '<div id="nsfw-wrap-' . $rnd . '" class="fakelink" onclick=openClose(\'nsfw-' . $rnd . '\'); >' . sprintf ( t ( '%s - Click to open/close' ), $word ) . '</div><div id="nsfw-' . $rnd . '" style="display: none; " >' . $b [ 'html' ] . '</div>' ;
2011-10-05 05:20:17 -04:00
}
2011-10-13 23:53:24 -04:00
}