WP coding style

This commit is contained in:
2016-08-20 18:50:38 +02:00
parent bff28ce85b
commit 1e0659e649
5 changed files with 388 additions and 362 deletions

View File

@ -1,124 +1,126 @@
<?php
/* Quit */
defined('ABSPATH') OR exit;
defined( 'ABSPATH' ) OR exit;
/**
* Statify Blacklist
*
* @since 1.0.0
*/
class StatifyBlacklist
{
/**
* Plugin options
*
* @var array
* @since 1.0.0
*/
public static $_options;
class StatifyBlacklist {
/**
* Plugin options
*
* @var array
* @since 1.0.0
*/
public static $_options;
/**
* Multisite Status
*
* @var bool
* @since 1.0.0
*/
public static $multisite;
/**
* Multisite Status
*
* @var bool
* @since 1.0.0
*/
public static $multisite;
/**
* Class self initialize
*
* @since 1.0.0
*/
public static function instance()
{
new self();
}
/**
* Class self initialize
*
* @since 1.0.0
*/
public static function instance() {
new self();
}
/**
* Class constructor
*
* @since 1.0.0
* @changed 1.1.2
*/
public function __construct()
{
/* Skip on autosave or AJAX */
if ( (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) OR (defined('DOING_AJAX') && DOING_AJAX) ) {
return;
}
/**
* Class constructor
*
* @since 1.0.0
* @changed 1.1.2
*/
public function __construct() {
/* Skip on autosave or AJAX */
if ( ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) OR ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
return;
}
/* Plugin options */
self::update_options();
/* Plugin options */
self::update_options();
/* Get multisite status */
self::$multisite = (is_multisite() && array_key_exists(STATIFYBLACKLIST_BASE, (array)get_site_option('active_sitewide_plugins')));
/* Get multisite status */
self::$multisite = ( is_multisite() && array_key_exists( STATIFYBLACKLIST_BASE, (array) get_site_option( 'active_sitewide_plugins' ) ) );
/* Add Filter to statify hook */
add_filter('statify_skip_tracking', array('StatifyBlacklist', 'apply_blacklist_filter'));
/* Add Filter to statify hook */
add_filter( 'statify_skip_tracking', array( 'StatifyBlacklist', 'apply_blacklist_filter' ) );
/* Admin only filters */
if (is_admin()) {
/* Load Textdomain (only needed for backend */
load_plugin_textdomain( 'statifyblacklist', false, STATIFYBLACKLIST_DIR.'/lang/');
/* Admin only filters */
if ( is_admin() ) {
/* Load Textdomain (only needed for backend */
load_plugin_textdomain( 'statifyblacklist', false, STATIFYBLACKLIST_DIR . '/lang/' );
/* Add actions */
add_action('wpmu_new_blog', array('StatifyBlacklist_Install', 'init_site'));
add_action('delete_blog', array('StatifyBlacklist_System', 'init_site'));
add_filter('plugin_row_meta', array('StatifyBlacklist_Admin', 'plugin_meta_link'), 10, 2);
/* Add actions */
add_action( 'wpmu_new_blog', array( 'StatifyBlacklist_Install', 'init_site' ) );
add_action( 'delete_blog', array( 'StatifyBlacklist_System', 'init_site' ) );
add_filter( 'plugin_row_meta', array( 'StatifyBlacklist_Admin', 'plugin_meta_link' ), 10, 2 );
if (is_multisite()) {
add_action('network_admin_menu', array('StatifyBlacklist_Admin', '_add_menu_page'));
add_filter('network_admin_plugin_action_links', array('StatifyBlacklist_Admin', 'plugin_actions_links'), 10, 2);
} else {
add_action('admin_menu', array('StatifyBlacklist_Admin', '_add_menu_page'));
add_filter('plugin_action_links', array('StatifyBlacklist_Admin', 'plugin_actions_links'), 10, 2 );
}
}
}
if ( is_multisite() ) {
add_action( 'network_admin_menu', array( 'StatifyBlacklist_Admin', '_add_menu_page' ) );
add_filter( 'network_admin_plugin_action_links', array(
'StatifyBlacklist_Admin',
'plugin_actions_links'
), 10, 2 );
} else {
add_action( 'admin_menu', array( 'StatifyBlacklist_Admin', '_add_menu_page' ) );
add_filter( 'plugin_action_links', array( 'StatifyBlacklist_Admin', 'plugin_actions_links' ), 10, 2 );
}
}
}
/**
* Update options
*
* @since 1.0.0
* @changed 1.1.1
*/
public static function update_options() {
self::$_options = wp_parse_args(
get_option('statify-blacklist'),
array(
'active_referer' => 0,
'referer' => array()
)
);
}
/**
* Update options
*
* @since 1.0.0
* @changed 1.1.1
*/
public static function update_options() {
self::$_options = wp_parse_args(
get_option( 'statify-blacklist' ),
array(
'active_referer' => 0,
'referer' => array()
)
);
}
/**
* Apply the blacklist filter if active
*
* @return TRUE if referer matches blacklist.
*
* @since 1.0.0
*/
public static function apply_blacklist_filter() {
/* Skip if blacklist is inactive */
if (self::$_options['active_referer'] != 1) {
return false;
}
/**
* Apply the blacklist filter if active
*
* @return TRUE if referer matches blacklist.
*
* @since 1.0.0
*/
public static function apply_blacklist_filter() {
/* Skip if blacklist is inactive */
if ( self::$_options['active_referer'] != 1 ) {
return false;
}
/* Extract relevant domain parts */
$referer = strtolower( ( isset($_SERVER['HTTP_REFERER']) ? parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST) : '' ) );
$referer = explode('.', $referer);
if( count($referer) >1 )
$referer = implode('.', array_slice($referer, -2));
else
$referer = implode('.', $referer);
/* Extract relevant domain parts */
$referer = strtolower( ( isset( $_SERVER['HTTP_REFERER'] ) ? parse_url( $_SERVER['HTTP_REFERER'], PHP_URL_HOST ) : '' ) );
$referer = explode( '.', $referer );
if ( count( $referer ) > 1 ) {
$referer = implode( '.', array_slice( $referer, - 2 ) );
} else {
$referer = implode( '.', $referer );
}
/* Get blacklist */
$blacklist = self::$_options['referer'];
/* Get blacklist */
$blacklist = self::$_options['referer'];
/* Check blacklist */
return in_array($referer, $blacklist);
}
/* Check blacklist */
return in_array( $referer, $blacklist );
}
}

View File

@ -1,144 +1,158 @@
<?php
/* Quit */
defined('ABSPATH') OR exit;
defined( 'ABSPATH' ) OR exit;
/**
* Statify Blacklist admin configuration
*
* @since 1.0.0
*/
class StatifyBlacklist_Admin extends StatifyBlacklist
{
/**
* Update options
*
* @return mixed array of sanitized array on errors, FALSE if there were none
* @since 1.1.1
*/
public static function update_options($options) {
if (isset($options) && current_user_can('manage_options')) {
/* Sanitize URLs and remove empty inputs */
$givenReferer = $options['referer'];
$sanitizedReferer = self::sanitizeURLs($givenReferer);
class StatifyBlacklist_Admin extends StatifyBlacklist {
/**
* Update options
*
* @return mixed array of sanitized array on errors, FALSE if there were none
* @since 1.1.1
*/
public static function update_options( $options ) {
if ( isset( $options ) && current_user_can( 'manage_options' ) ) {
/* Sanitize URLs and remove empty inputs */
$givenReferer = $options['referer'];
$sanitizedReferer = self::sanitizeURLs( $givenReferer );
/* Abort on errors */
if (!empty(array_diff($givenReferer, $sanitizedReferer))) {
return $sanitizedReferer;
}
/* Abort on errors */
if ( ! empty( array_diff( $givenReferer, $sanitizedReferer ) ) ) {
return $sanitizedReferer;
}
/* Update database on success */
if ((is_multisite() && array_key_exists(STATIFYBLACKLIST_BASE, (array)get_site_option('active_sitewide_plugins'))))
update_site_option('statify-blacklist', $options);
else
update_option('statify-blacklist', $options);
}
/* Update database on success */
if ( ( is_multisite() && array_key_exists( STATIFYBLACKLIST_BASE, (array) get_site_option( 'active_sitewide_plugins' ) ) ) ) {
update_site_option( 'statify-blacklist', $options );
} else {
update_option( 'statify-blacklist', $options );
}
}
/* Refresh options */
parent::update_options();
/* Refresh options */
parent::update_options();
return false;
}
return false;
}
/**
* Add configuration page to admin menu
*
* @since 1.0.0
*/
public function _add_menu_page() {
$title = __( 'Statify Blacklist', 'statify-blacklist' );
if (self::$multisite)
add_submenu_page( 'settings.php', $title, $title, 'manage_network_plugins', 'statify-blacklist-settings', array('StatifyBlacklist_Admin', 'settings_page') );
else
add_submenu_page( 'options-general.php', $title, $title, 'manage_options', 'statify-blacklist', array('StatifyBlacklist_Admin', 'settings_page') );
/**
* Add configuration page to admin menu
*
* @since 1.0.0
*/
public function _add_menu_page() {
$title = __( 'Statify Blacklist', 'statify-blacklist' );
if ( self::$multisite ) {
add_submenu_page( 'settings.php', $title, $title, 'manage_network_plugins', 'statify-blacklist-settings', array(
'StatifyBlacklist_Admin',
'settings_page'
) );
} else {
add_submenu_page( 'options-general.php', $title, $title, 'manage_options', 'statify-blacklist', array(
'StatifyBlacklist_Admin',
'settings_page'
) );
}
}
}
public static function settings_page() {
include STATIFYBLACKLIST_DIR . '/views/settings_page.php';
}
public static function settings_page() {
include STATIFYBLACKLIST_DIR . '/views/settings_page.php';
}
/**
* Add plugin meta links
*
* @param $links
* @param $file
* @return array
*
* @since 1.0.0
*/
public static function plugin_meta_link($links, $file) {
if ($file == STATIFYBLACKLIST_BASE) {
$links[] = '<a href="https://github.com/stklcode/statify-blacklist">GitHub</a>';
}
return $links;
}
/**
* Add plugin meta links
*
* @param $links
* @param $file
*
* @return array
*
* @since 1.0.0
*/
public static function plugin_meta_link( $links, $file ) {
if ( $file == STATIFYBLACKLIST_BASE ) {
$links[] = '<a href="https://github.com/stklcode/statify-blacklist">GitHub</a>';
}
/**
* Add plugin action links
*
* @param array $input Registered links
* @return array Merged links
*
* @since 1.0.0
*/
public static function plugin_actions_links($links, $file) {
$base = self::$multisite ? network_admin_url( 'settings.php' ) : admin_url( 'options-general.php' );
return $links;
}
if( $file == STATIFYBLACKLIST_BASE && current_user_can('manage_options') ) {
array_unshift(
$links,
sprintf( '<a href="%s">%s</a>', esc_attr(add_query_arg( 'page', 'statify-blacklist', $base )), __('Settings'))
);
}
return $links;
}
/**
* Add plugin action links
*
* @param array $input Registered links
*
* @return array Merged links
*
* @since 1.0.0
*/
public static function plugin_actions_links( $links, $file ) {
$base = self::$multisite ? network_admin_url( 'settings.php' ) : admin_url( 'options-general.php' );
/**
* Filter database for cleanup.
*
* @since 1.1.0
* @changed 1.1.1
*/
public static function cleanup_database() {
/* Check user permissions */
if (!current_user_can('manage_options'))
die(_e('Are you sure you want to do this?'));
if ( $file == STATIFYBLACKLIST_BASE && current_user_can( 'manage_options' ) ) {
array_unshift(
$links,
sprintf( '<a href="%s">%s</a>', esc_attr( add_query_arg( 'page', 'statify-blacklist', $base ) ), __( 'Settings' ) )
);
}
global $wpdb;
return $links;
}
/* Sanitize URLs */
$referer = self::sanitizeURLs(self::$_options['referer']);
/**
* Filter database for cleanup.
*
* @since 1.1.0
* @changed 1.1.1
*/
public static function cleanup_database() {
/* Check user permissions */
if ( ! current_user_can( 'manage_options' ) ) {
die( _e( 'Are you sure you want to do this?' ) );
}
/* Build filter regexp */
$refererRegexp = str_replace('.', '\.', implode('|', $referer));
if (!empty($refererRegexp)) {
/* Execute filter on database */
$wpdb->query(
$wpdb->prepare("DELETE FROM `$wpdb->statify` WHERE referrer REGEXP %s", $refererRegexp)
);
global $wpdb;
/* Optimize DB */
$wpdb->query("OPTIMIZE TABLE `$wpdb->statify`");
}
}
/* Sanitize URLs */
$referer = self::sanitizeURLs( self::$_options['referer'] );
/* Build filter regexp */
$refererRegexp = str_replace( '.', '\.', implode( '|', $referer ) );
if ( ! empty( $refererRegexp ) ) {
/* Execute filter on database */
$wpdb->query(
$wpdb->prepare( "DELETE FROM `$wpdb->statify` WHERE referrer REGEXP %s", $refererRegexp )
);
/* Optimize DB */
$wpdb->query( "OPTIMIZE TABLE `$wpdb->statify`" );
}
}
/**
* Sanitize URLs and remove empty results
* @param $urls array given array of URLs
* @return array sanitized array
*
* @since 1.1.1
*/
private static function sanitizeURLs($urls) {
return array_filter(
array_map(
function($r) {
return preg_replace('/[^\da-z\.-]/i', '', filter_var($r, FILTER_SANITIZE_URL));
},
$urls
)
);
}
/**
* Sanitize URLs and remove empty results
*
* @param $urls array given array of URLs
*
* @return array sanitized array
*
* @since 1.1.1
*/
private static function sanitizeURLs( $urls ) {
return array_filter(
array_map(
function ( $r ) {
return preg_replace( '/[^\da-z\.-]/i', '', filter_var( $r, FILTER_SANITIZE_URL ) );
},
$urls
)
);
}
}

View File

@ -1,70 +1,69 @@
<?php
/* Quit */
defined('ABSPATH') OR exit;
defined( 'ABSPATH' ) OR exit;
/**
* Statify Blacklist system configuration
*
* @since 1.0.0
*/
class StatifyBlacklist_System extends StatifyBlacklist
{
/**
* Plugin install handler.
*
* @since 1.0.0
*
* @param bool $network_wide Whether the plugin was activated network-wide or not.
*/
public static function install( $network_wide = false ) {
global $wpdb;
class StatifyBlacklist_System extends StatifyBlacklist {
/**
* Plugin install handler.
*
* @since 1.0.0
*
* @param bool $network_wide Whether the plugin was activated network-wide or not.
*/
public static function install( $network_wide = false ) {
global $wpdb;
// Create tables for each site in a network.
if ( is_multisite() && $network_wide ) {
// Todo: Use get_sites() in WordPress 4.6+
$ids = $wpdb->get_col( "SELECT blog_id FROM `$wpdb->blogs`" );
// Create tables for each site in a network.
if ( is_multisite() && $network_wide ) {
// Todo: Use get_sites() in WordPress 4.6+
$ids = $wpdb->get_col( "SELECT blog_id FROM `$wpdb->blogs`" );
foreach ( $ids as $site_id ) {
switch_to_blog( $site_id );
add_option(
'statify-blacklist',
array()
);
}
foreach ( $ids as $site_id ) {
switch_to_blog( $site_id );
add_option(
'statify-blacklist',
array()
);
}
restore_current_blog();
} else {
add_option(
'statify-blacklist',
array()
);
}
}
restore_current_blog();
} else {
add_option(
'statify-blacklist',
array()
);
}
}
/**
* Plugin uninstall handler.
*
* @since 1.0.0
*/
public static function uninstall() {
global $wpdb;
/**
* Plugin uninstall handler.
*
* @since 1.0.0
*/
public static function uninstall() {
global $wpdb;
if ( is_multisite() ) {
$old = get_current_blog_id();
if ( is_multisite() ) {
$old = get_current_blog_id();
// Todo: Use get_sites() in WordPress 4.6+
$ids = $wpdb->get_col( "SELECT blog_id FROM `$wpdb->blogs`" );
// Todo: Use get_sites() in WordPress 4.6+
$ids = $wpdb->get_col( "SELECT blog_id FROM `$wpdb->blogs`" );
foreach ( $ids as $id ) {
switch_to_blog( $id );
delete_option('statify-blacklist');
}
foreach ( $ids as $id ) {
switch_to_blog( $id );
delete_option( 'statify-blacklist' );
}
switch_to_blog( $old );
}
switch_to_blog( $old );
}
delete_option('statify-blacklist');
}
delete_option( 'statify-blacklist' );
}
}