File: /home/c1190199/public_html/wp-content/plugins/wptouch-pro/core/plugins.php
<?php
function wptouch_remove_jetpack_related() {
if ( class_exists( 'Jetpack_RelatedPosts' ) )
{
$jprp = Jetpack_RelatedPosts::init();
remove_filter( 'the_content', array( $jprp, 'filter_add_target_to_dom' ), 40 );
}
}
function wptouch_plugins_generate_hook_list( $wptouch_pro, $settings ) {
require_once( WPTOUCH_DIR . '/core/file-operations.php' );
$php_files = wptouch_get_all_recursive_files( WP_PLUGIN_DIR, '.php' );
$plugin_whitelist = apply_filters( 'wptouch_plugin_whitelist', array( 'hello', 'akismet', 'wptouch', 'wptouch-pro', 'wptouch-pro-image-optimizer', 'wptouch-pro-3' ) );
$new_plugin_list = array();
foreach( $php_files as $plugin_file ) {
$path_info = explode( DIRECTORY_SEPARATOR, $plugin_file );
if ( $path_info[1] <> 'index.php' ) {
$plugin_slug = $path_info[1];
if ( stristr( $plugin_slug, '.php' ) ) {
$plugin_slug = substr( $plugin_slug , 0, strpos( $plugin_slug, '.php' ) );
}
if ( in_array( $plugin_slug, $plugin_whitelist ) ) {
continue;
}
$plugin_file_path = WP_PLUGIN_DIR . $plugin_file;
$contents = $wptouch_pro->load_file( $plugin_file_path );
if ( !isset( $new_plugin_list[ $plugin_slug ] ) ) {
$new_plugin_list[ $plugin_slug ] = new stdClass;
}
// Default actions
if ( preg_match_all( "#add_action\([ ]*[\'\"]+(.*)[\'\"]+,[ ]*[\'\"]+(.*)[\'\"]+[ ]*(\s*[,]\s*+(.*))*\)\s*;#iU", $contents, $matches ) ) {
for( $i = 0; $i < count( $matches[0] ); $i++ ) {
if ( strpos( $matches[2][$i], ' ' ) === false ) {
$info = new stdClass;
$info->hook = $matches[1][$i];
$info->hook_function = $matches[2][$i];
if ( isset( $matches[4][$i] ) && $matches[4][$i] > 0 ) {
$info->priority = $matches[4][$i];
} else {
$info->priority = false;
}
$new_plugin_list[ $plugin_slug ]->actions[] = $info;
}
}
}
// Default filters
if ( preg_match_all( "#add_filter\([ ]*[\'\"]+(.*)[\'\"]+,[ ]*[\'\"]+(.*)[\'\"]+[ ]*(\s*[,]\s*+(.*))*\)\s*;#iU", $contents, $matches ) ) {
for( $i = 0; $i < count( $matches[0] ); $i++ ) {
if ( strpos( $matches[2][$i], ' ' ) === false ) {
$info = new stdClass;
$info->hook = $matches[1][$i];
$info->hook_function = $matches[2][$i];
if ( isset( $matches[4][$i] ) && $matches[4][$i] > 0 ) {
$info->priority = $matches[4][$i];
} else {
$info->priority = false;
}
$new_plugin_list[ $plugin_slug ]->filters[] = $info;
}
}
}
}
}
// Create list of active plugins
$active_plugins = get_option( 'active_plugins' );
if ( !$active_plugins ) {
$active_plugins = array();
}
// Check for network activated plugins
if ( wptouch_is_multisite_enabled() ) {
$active_site_plugins = get_site_option( 'active_sitewide_plugins' );
if ( is_array( $active_site_plugins ) && count ( $active_site_plugins ) ) {
foreach( $active_site_plugins as $key => $value ) {
if ( !in_array( $key, $active_plugins ) ) {
$active_plugins[] = $key;
}
}
}
}
$active_plugin_names = array();
if ( is_array( $active_plugins ) && count( $active_plugins ) ) {
foreach( $active_plugins as $plugin ) {
if ( !$name = substr( $plugin , 0, strpos( $plugin, DIRECTORY_SEPARATOR ) ) ) {
$name = substr( $plugin , 0, strpos( $plugin, '.php' ) );
}
$active_plugin_names[] = $name;
}
}
$final_hook_list = array();
if ( count( $new_plugin_list ) ) {
// Filter based on this list
$usable_plugins = array();
foreach( $new_plugin_list as $name => $info ) {
if ( in_array( $name, $active_plugin_names ) ) {
$final_hook_list[ $name ] = $info;
}
}
}
$wptouch_pro->plugin_hooks = apply_filters( 'wptouch_plugin_exclusion_list', $final_hook_list );
@ksort( $wptouch_pro->plugin_hooks );
$settings->plugin_hooks = $wptouch_pro->plugin_hooks;
$settings->save();
}
function wptouch_plugins_disable( $wptouch_pro, $settings ) {
foreach( $settings->plugin_hooks as $name => $hook_info ) {
if ( $name == 'ignore' ) {
continue;
}
if ( isset( $settings->enabled_plugins[ $name ] ) && !$settings->enabled_plugins[ $name ] ) {
if ( $name == 'jetpack' ) {
// Likes
remove_filter( 'the_content', array( 'Jetpack_Likes', 'post_likes' ), 30, 1 );
remove_filter( 'post_flair', array( 'Jetpack_Likes', 'post_likes' ), 30, 1 );
remove_filter( 'wp_footer', array( 'Jetpack_Likes', 'likes_master' ) );
remove_action( 'init', array( 'Jetpack_Likes', 'action_init' ) );
// Sharing
remove_filter( 'the_content', 'sharing_display', 19 );
remove_filter( 'the_excerpt', 'sharing_display', 19 );
add_filter( 'option_sharedaddy_disable_resources', 'wptouch_return_false' );
add_filter( 'sharing_show', 'wptouch_return_false' );
// Related Posts
add_action( 'wp', 'wptouch_remove_jetpack_related' );
}
if ( isset( $hook_info->filters ) && count( $hook_info->filters ) ) {
foreach( $hook_info->filters as $hooks ) {
WPTOUCH_DEBUG( WPTOUCH_VERBOSE, "Disable filter [" . $hooks->hook . "] with function [" . $hooks->hook_function . "]" );
if ( $hooks->priority ) {
remove_filter( $hooks->hook, $hooks->hook_function, $hooks->priority );
} else {
remove_filter( $hooks->hook, $hooks->hook_function );
}
}
}
if ( isset( $hook_info->actions ) && count( $hook_info->actions ) ) {
foreach( $hook_info->actions as $hooks ) {
WPTOUCH_DEBUG( WPTOUCH_VERBOSE, "Disable action [" . $hooks->hook . "] with function [" . $hooks->hook_function . "]" );
if ( $hooks->priority ) {
remove_action( $hooks->hook, $hooks->hook_function, $hooks->priority );
} else {
remove_action( $hooks->hook, $hooks->hook_function );
}
}
}
}
}
}
function wptouch_plugins_get_friendly_name( $wptouch_pro, $name ) {
$plugin_file = WP_PLUGIN_DIR . '/' . $name . '/' . $name . '.php';
if ( file_exists( $plugin_file ) ) {
$contents = $wptouch_pro->load_file( $plugin_file );
if ( $contents ) {
if ( preg_match( "#Plugin Name: (.*)\n#", $contents, $matches ) ) {
return $matches[1];
}
}
}
$all_files = $wptouch_pro->get_files_in_directory( WP_PLUGIN_DIR . '/' . $name, '.php' );
if ( $all_files ) {
foreach( $all_files as $some_file ) {
if ( file_exists( $some_file ) ) {
$contents = $wptouch_pro->load_file( $some_file );
if ( $contents ) {
if ( preg_match( "#Plugin Name: (.*)\n#", $contents, $matches ) ) {
return $matches[1];
}
}
}
}
}
return str_replace( '_' , ' ', $name );
}