/** * Sets up the default filters and actions for most * of the WordPress hooks. * * If you need to remove a default hook, this file will * give you the priority for which to use to remove the * hook. * * Not all of the default hooks are found in default-filters.php * * @package WordPress */ // Strip, trim, kses, special chars for string saves foreach ( array( 'pre_term_name', 'pre_comment_author_name', 'pre_link_name', 'pre_link_target', 'pre_link_rel', 'pre_user_display_name', 'pre_user_first_name', 'pre_user_last_name', 'pre_user_nickname' ) as $filter ) { add_filter( $filter, 'sanitize_text_field' ); add_filter( $filter, 'wp_filter_kses' ); add_filter( $filter, '_wp_specialchars', 30 ); } // Strip, kses, special chars for string display foreach ( array( 'term_name', 'comment_author_name', 'link_name', 'link_target', 'link_rel', 'user_display_name', 'user_first_name', 'user_last_name', 'user_nickname' ) as $filter ) { if ( is_admin() ) { // These are expensive. Run only on admin pages for defense in depth. add_filter( $filter, 'sanitize_text_field' ); add_filter( $filter, 'wp_kses_data' ); } add_filter( $filter, '_wp_specialchars', 30 ); } // Kses only for textarea saves foreach ( array( 'pre_term_description', 'pre_link_description', 'pre_link_notes', 'pre_user_description' ) as $filter ) { add_filter( $filter, 'wp_filter_kses' ); } // Kses only for textarea admin displays if ( is_admin() ) { foreach ( array( 'term_description', 'link_description', 'link_notes', 'user_description' ) as $filter ) { add_filter( $filter, 'wp_kses_data' ); } add_filter( 'comment_text', 'wp_kses_post' ); } // Email saves foreach ( array( 'pre_comment_author_email', 'pre_user_email' ) as $filter ) { add_filter( $filter, 'trim' ); add_filter( $filter, 'sanitize_email' ); add_filter( $filter, 'wp_filter_kses' ); } // Email admin display foreach ( array( 'comment_author_email', 'user_email' ) as $filter ) { add_filter( $filter, 'sanitize_email' ); if ( is_admin() ) add_filter( $filter, 'wp_kses_data' ); } // Save URL foreach ( array( 'pre_comment_author_url', 'pre_user_url', 'pre_link_url', 'pre_link_image', 'pre_link_rss', 'pre_post_guid' ) as $filter ) { add_filter( $filter, 'wp_strip_all_tags' ); add_filter( $filter, 'esc_url_raw' ); add_filter( $filter, 'wp_filter_kses' ); } // Display URL foreach ( array( 'user_url', 'link_url', 'link_image', 'link_rss', 'comment_url', 'post_guid' ) as $filter ) { if ( is_admin() ) add_filter( $filter, 'wp_strip_all_tags' ); add_filter( $filter, 'esc_url' ); if ( is_admin() ) add_filter( $filter, 'wp_kses_data' ); } // Slugs add_filter( 'pre_term_slug', 'sanitize_title' ); // Keys foreach ( array( 'pre_post_type', 'pre_post_status', 'pre_post_comment_status', 'pre_post_ping_status' ) as $filter ) { add_filter( $filter, 'sanitize_key' ); } // Mime types add_filter( 'pre_post_mime_type', 'sanitize_mime_type' ); add_filter( 'post_mime_type', 'sanitize_mime_type' ); // Places to balance tags on input foreach ( array( 'content_save_pre', 'excerpt_save_pre', 'comment_save_pre', 'pre_comment_content' ) as $filter ) { add_filter( $filter, 'balanceTags', 50 ); } // Format strings for display. foreach ( array( 'comment_author', 'term_name', 'link_name', 'link_description', 'link_notes', 'bloginfo', 'wp_title', 'widget_title' ) as $filter ) { add_filter( $filter, 'wptexturize' ); add_filter( $filter, 'convert_chars' ); add_filter( $filter, 'esc_html' ); } // Format WordPress foreach ( array( 'the_content', 'the_title', 'wp_title' ) as $filter ) add_filter( $filter, 'capital_P_dangit', 11 ); add_filter( 'comment_text', 'capital_P_dangit', 31 ); // Format titles foreach ( array( 'single_post_title', 'single_cat_title', 'single_tag_title', 'single_month_title', 'nav_menu_attr_title', 'nav_menu_description' ) as $filter ) { add_filter( $filter, 'wptexturize' ); add_filter( $filter, 'strip_tags' ); } // Format text area for display. foreach ( array( 'term_description' ) as $filter ) { add_filter( $filter, 'wptexturize' ); add_filter( $filter, 'convert_chars' ); add_filter( $filter, 'wpautop' ); add_filter( $filter, 'shortcode_unautop'); } // Format for RSS add_filter( 'term_name_rss', 'convert_chars' ); // Pre save hierarchy add_filter( 'wp_insert_post_parent', 'wp_check_post_hierarchy_for_loops', 10, 2 ); add_filter( 'wp_update_term_parent', 'wp_check_term_hierarchy_for_loops', 10, 3 ); // Display filters add_filter( 'the_title', 'wptexturize' ); add_filter( 'the_title', 'convert_chars' ); add_filter( 'the_title', 'trim' ); add_filter( 'the_content', 'wptexturize' ); add_filter( 'the_content', 'convert_smilies' ); add_filter( 'the_content', 'convert_chars' ); add_filter( 'the_content', 'wpautop' ); add_filter( 'the_content', 'shortcode_unautop' ); add_filter( 'the_content', 'prepend_attachment' ); add_filter( 'the_excerpt', 'wptexturize' ); add_filter( 'the_excerpt', 'convert_smilies' ); add_filter( 'the_excerpt', 'convert_chars' ); add_filter( 'the_excerpt', 'wpautop' ); add_filter( 'the_excerpt', 'shortcode_unautop'); add_filter( 'get_the_excerpt', 'wp_trim_excerpt' ); add_filter( 'comment_text', 'wptexturize' ); add_filter( 'comment_text', 'convert_chars' ); add_filter( 'comment_text', 'make_clickable', 9 ); add_filter( 'comment_text', 'force_balance_tags', 25 ); add_filter( 'comment_text', 'convert_smilies', 20 ); add_filter( 'comment_text', 'wpautop', 30 ); add_filter( 'comment_excerpt', 'convert_chars' ); add_filter( 'list_cats', 'wptexturize' ); add_filter( 'wp_sprintf', 'wp_sprintf_l', 10, 2 ); // RSS filters add_filter( 'the_title_rss', 'strip_tags' ); add_filter( 'the_title_rss', 'ent2ncr', 8 ); add_filter( 'the_title_rss', 'esc_html' ); add_filter( 'the_content_rss', 'ent2ncr', 8 ); add_filter( 'the_excerpt_rss', 'convert_chars' ); add_filter( 'the_excerpt_rss', 'ent2ncr', 8 ); add_filter( 'comment_author_rss', 'ent2ncr', 8 ); add_filter( 'comment_text_rss', 'ent2ncr', 8 ); add_filter( 'comment_text_rss', 'esc_html' ); add_filter( 'bloginfo_rss', 'ent2ncr', 8 ); add_filter( 'the_author', 'ent2ncr', 8 ); // Misc filters add_filter( 'option_ping_sites', 'privacy_ping_filter' ); add_filter( 'option_blog_charset', '_wp_specialchars' ); // IMPORTANT: This must not be wp_specialchars() or esc_html() or it'll cause an infinite loop add_filter( 'option_blog_charset', '_canonical_charset' ); add_filter( 'option_home', '_config_wp_home' ); add_filter( 'option_siteurl', '_config_wp_siteurl' ); add_filter( 'tiny_mce_before_init', '_mce_set_direction' ); add_filter( 'pre_kses', 'wp_pre_kses_less_than' ); add_filter( 'sanitize_title', 'sanitize_title_with_dashes', 10, 3 ); add_action( 'check_comment_flood', 'check_comment_flood_db', 10, 3 ); add_filter( 'comment_flood_filter', 'wp_throttle_comment_flood', 10, 3 ); add_filter( 'pre_comment_content', 'wp_rel_nofollow', 15 ); add_filter( 'comment_email', 'antispambot' ); add_filter( 'option_tag_base', '_wp_filter_taxonomy_base' ); add_filter( 'option_category_base', '_wp_filter_taxonomy_base' ); add_filter( 'the_posts', '_close_comments_for_old_posts', 10, 2); add_filter( 'comments_open', '_close_comments_for_old_post', 10, 2 ); add_filter( 'pings_open', '_close_comments_for_old_post', 10, 2 ); add_filter( 'editable_slug', 'urldecode' ); add_filter( 'editable_slug', 'esc_textarea' ); add_filter( 'nav_menu_meta_box_object', '_wp_nav_menu_meta_box_object' ); add_filter( 'pingback_ping_source_uri', 'pingback_ping_source_uri' ); add_filter( 'xmlrpc_pingback_error', 'xmlrpc_pingback_error' ); add_filter( 'http_request_host_is_external', 'allowed_http_request_hosts', 10, 2 ); // Actions add_action( 'wp_head', 'wp_enqueue_scripts', 1 ); add_action( 'wp_head', 'feed_links', 2 ); add_action( 'wp_head', 'feed_links_extra', 3 ); add_action( 'wp_head', 'rsd_link' ); add_action( 'wp_head', 'wlwmanifest_link' ); add_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 ); add_action( 'wp_head', 'locale_stylesheet' ); add_action( 'publish_future_post', 'check_and_publish_future_post', 10, 1 ); add_action( 'wp_head', 'noindex', 1 ); add_action( 'wp_head', 'wp_print_styles', 8 ); add_action( 'wp_head', 'wp_print_head_scripts', 9 ); add_action( 'wp_head', 'wp_generator' ); add_action( 'wp_head', 'rel_canonical' ); add_action( 'wp_footer', 'wp_print_footer_scripts', 20 ); add_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 ); add_action( 'template_redirect', 'wp_shortlink_header', 11, 0 ); add_action( 'wp_print_footer_scripts', '_wp_footer_scripts' ); add_action( 'init', 'check_theme_switched', 99 ); add_action( 'after_switch_theme', '_wp_sidebars_changed' ); if ( isset( $_GET['replytocom'] ) ) add_action( 'wp_head', 'wp_no_robots' ); // Login actions add_action( 'login_head', 'wp_print_head_scripts', 9 ); add_action( 'login_footer', 'wp_print_footer_scripts', 20 ); add_action( 'login_init', 'send_frame_options_header', 10, 0 ); // Feed Generator Tags foreach ( array( 'rss2_head', 'commentsrss2_head', 'rss_head', 'rdf_header', 'atom_head', 'comments_atom_head', 'opml_head', 'app_head' ) as $action ) { add_action( $action, 'the_generator' ); } // WP Cron if ( !defined( 'DOING_CRON' ) ) add_action( 'init', 'wp_cron' ); // 2 Actions 2 Furious add_action( 'do_feed_rdf', 'do_feed_rdf', 10, 1 ); add_action( 'do_feed_rss', 'do_feed_rss', 10, 1 ); add_action( 'do_feed_rss2', 'do_feed_rss2', 10, 1 ); add_action( 'do_feed_atom', 'do_feed_atom', 10, 1 ); add_action( 'do_pings', 'do_all_pings', 10, 1 ); add_action( 'do_robots', 'do_robots' ); add_action( 'set_comment_cookies', 'wp_set_comment_cookies', 10, 2 ); add_action( 'sanitize_comment_cookies', 'sanitize_comment_cookies' ); add_action( 'admin_print_scripts', 'print_head_scripts', 20 ); add_action( 'admin_print_footer_scripts', '_wp_footer_scripts' ); add_action( 'admin_print_styles', 'print_admin_styles', 20 ); add_action( 'init', 'smilies_init', 5 ); add_action( 'plugins_loaded', 'wp_maybe_load_widgets', 0 ); add_action( 'plugins_loaded', 'wp_maybe_load_embeds', 0 ); add_action( 'shutdown', 'wp_ob_end_flush_all', 1 ); add_action( 'post_updated', 'wp_save_post_revision', 10, 1 ); add_action( 'publish_post', '_publish_post_hook', 5, 1 ); add_action( 'transition_post_status', '_transition_post_status', 5, 3 ); add_action( 'transition_post_status', '_update_term_count_on_transition_post_status', 10, 3 ); add_action( 'comment_form', 'wp_comment_form_unfiltered_html_nonce' ); add_action( 'wp_scheduled_delete', 'wp_scheduled_delete' ); add_action( 'wp_scheduled_auto_draft_delete', 'wp_delete_auto_drafts' ); add_action( 'admin_init', 'send_frame_options_header', 10, 0 ); add_action( 'importer_scheduled_cleanup', 'wp_delete_attachment' ); add_action( 'upgrader_scheduled_cleanup', 'wp_delete_attachment' ); add_action( 'welcome_panel', 'wp_welcome_panel' ); // Navigation menu actions add_action( 'delete_post', '_wp_delete_post_menu_item' ); add_action( 'delete_term', '_wp_delete_tax_menu_item', 10, 3 ); add_action( 'transition_post_status', '_wp_auto_add_pages_to_menu', 10, 3 ); // Post Thumbnail CSS class filtering add_action( 'begin_fetch_post_thumbnail_html', '_wp_post_thumbnail_class_filter_add' ); add_action( 'end_fetch_post_thumbnail_html', '_wp_post_thumbnail_class_filter_remove' ); // Redirect Old Slugs add_action( 'template_redirect', 'wp_old_slug_redirect' ); add_action( 'post_updated', 'wp_check_for_changed_slugs', 12, 3 ); // Nonce check for Post Previews add_action( 'init', '_show_post_preview' ); // Timezone add_filter( 'pre_option_gmt_offset','wp_timezone_override_offset' ); // Admin Color Schemes add_action( 'admin_init', 'register_admin_color_schemes', 1); add_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' ); // If the upgrade hasn't run yet, assume link manager is used. add_filter( 'default_option_link_manager_enabled', '__return_true' ); // This option no longer exists; tell plugins we always support auto-embedding. add_filter( 'default_option_embed_autourls', '__return_true' ); // Default settings for heartbeat add_filter( 'heartbeat_settings', 'wp_heartbeat_settings' ); // Check if the user is logged out add_action( 'admin_enqueue_scripts', 'wp_auth_check_load' ); add_filter( 'heartbeat_send', 'wp_auth_check' ); add_filter( 'heartbeat_nopriv_send', 'wp_auth_check' ); // Default authentication filters add_filter( 'authenticate', 'wp_authenticate_username_password', 20, 3 ); add_filter( 'authenticate', 'wp_authenticate_spam_check', 99 ); add_filter( 'determine_current_user', 'wp_validate_auth_cookie' ); add_filter( 'determine_current_user', 'wp_validate_logged_in_cookie', 20 ); unset($filter, $action); /* Plugin Name: Auto Prune Posts Plugin URI: http://www.mijnpress.nl Description: Auto deletes (prune) posts after a certain amount of time. On a per category basis. Version: 1.6.4 Author: Ramon Fincken Author URI: http://mijnpress.nl Created on 31-okt-2010 17:33:40 */ if(!class_exists('mijnpress_plugin_framework')) { include('mijnpress_plugin_framework.php'); } /** * @author Ramon Fincken */ class plugin_auto_prune_posts extends mijnpress_plugin_framework { function __construct() { $this->showcredits = true; $this->showcredits_fordevelopers = true; $this->plugin_title = 'Auto prune posts'; $this->plugin_class = 'plugin_auto_prune_posts'; $this->plugin_filename = 'auto-prune-posts/auto-prune-posts.php'; $this->plugin_config_url = 'plugins.php?page='.$this->plugin_filename; $this->default_posttype = array('post'); // General config $plugin_autopruneposts_conf = get_option('plugin_autopruneposts_conf'); $default_settings = array('force_delete' => 0,'admin_email' => '','types' => ''); $reset = false; // If you really want to start over, only do this when you know what you are doing matie! HarrRrr if ($plugin_autopruneposts_conf === false) { add_option('plugin_autopruneposts_conf', array ('version' => '1.6','settings' => $default_settings,'config' => array()), NULL, 'yes'); } else { if($reset) { update_option('plugin_autopruneposts_conf', array ('version' => '1.1','settings' => $default_settings,'config' => array())); $this->show_message('Auto prune posts plugin RESET'); } else { if(!isset($plugin_autopruneposts_conf['version']) || $plugin_autopruneposts_conf['version'] == '1.0') { // Upgrade $newconfig = array(); foreach($plugin_autopruneposts_conf as $cat_id => $values) { $newconfig[$cat_id]['post'] = $values; } update_option('plugin_autopruneposts_conf', array ('version' => '1.1','settings' => $default_settings,'config' => $newconfig)); $this->show_message('Auto prune posts plugin updated to new version'); } } } // Reload $this->conf = get_option('plugin_autopruneposts_conf'); $temp = explode(',',$this->conf['settings']['types']); if(empty($this->conf['settings']['types'])) { $temp = array(); } $this->all_types = array_merge($this->default_posttype,$temp); $this->periods = array ( 'hour', 'day', 'week', 'month', 'year' ); } function plugin_name() { $args= func_get_args(); call_user_func_array ( array(&$this, '__construct'), $args ); } function addPluginSubMenu() { $plugin = new plugin_auto_prune_posts(); parent::addPluginSubMenu($plugin->plugin_title,array($plugin->plugin_class, 'admin_menu'),__FILE__); } /** * Additional links on the plugin page */ function addPluginContent($links, $file) { $plugin = new plugin_auto_prune_posts(); $links = parent::addPluginContent($plugin->plugin_filename,$links,$file,$plugin->plugin_config_url); return $links; } /** * Shows the admin plugin page */ public function admin_menu() { $plugin = new plugin_auto_prune_posts(); $plugin->content_start(); $action_taken = false; if (isset ($_POST['formaction'])) { switch ($_POST['formaction']) { case 'updatesettings': if($_POST['force_delete'] == 0 || $_POST['force_delete'] == 1) { $plugin->conf['settings']['force_delete'] = $_POST['force_delete']; update_option('plugin_autopruneposts_conf', $plugin->conf); $action_taken = true; } if(empty($_POST['admin_email']) || is_email($_POST['admin_email'],true)) { $plugin->conf['settings']['admin_email'] = $_POST['admin_email']; update_option('plugin_autopruneposts_conf', $plugin->conf); $action_taken = true; } $types_new = $_POST['types']; if($plugin->conf['settings']['types'] != $types_new) { $plugin->conf['settings']['types'] = $types_new; update_option('plugin_autopruneposts_conf', $plugin->conf); $action_taken = true; } break; case 'add' : if (isset ($_POST['period_duration_add']) && !empty ($_POST['period_duration_add']) && intval($_POST['period_duration_add']) > 0) { if (in_array($_POST['period_add'], $plugin->periods) && intval($_POST['cat_id_add']) >= 0) { $period_php = intval(trim($_POST['period_duration_add'])) . ' ' . $_POST['period_add']; $period = intval(trim($_POST['period_duration_add'])); $period_duration = $_POST['period_add']; $post_type = $_POST['type']; $plugin->conf['config'][intval($_POST['cat_id_add'])][$post_type] = array ( 'period_php' => $period_php, 'period' => $period, 'period_duration' => $period_duration, 'post_type' => $post_type ); update_option('plugin_autopruneposts_conf', $plugin->conf); $action_taken = true; } } break; case 'update' : // Walk foreach($plugin->conf['config'] as $cat_id => $type) { foreach($type as $the_type => $values) { $action = $_POST['action'][$cat_id][$the_type]; if ($action == 'delete') { unset ($plugin->conf['config'][$cat_id][$the_type]); $action_taken = true; } else { // Update falltrough if (isset ($_POST['period_duration'][$cat_id][$the_type]) && !empty ($_POST['period_duration'][$cat_id][$the_type]) && intval($_POST['period_duration'][$cat_id][$the_type]) > 0) { if (in_array($_POST['period'][$cat_id][$the_type], $plugin->periods)) { $period_php = intval(trim($_POST['period_duration'][$cat_id][$the_type])) . ' ' . $_POST['period'][$cat_id][$the_type]; $period = intval(trim($_POST['period_duration'][$cat_id][$the_type])); $period_duration = $_POST['period'][$cat_id][$the_type]; $plugin->conf['config'][$cat_id][$the_type] = array ( 'period_php' => $period_php, 'period' => $period, 'period_duration' => $period_duration ); $action_taken = true; } } } } } // Now perform updates update_option('plugin_autopruneposts_conf', $plugin->conf); delete_transient('auto-prune-posts-lastrun'); break; } } if($action_taken) { // Reload $plugin->conf = get_option('plugin_autopruneposts_conf'); $temp = explode(',',$plugin->conf['settings']['types']); if(empty($plugin->conf['settings']['types'])) { $temp = array(); } $plugin->all_types = array_merge($plugin->default_posttype,$temp); delete_transient('auto-prune-posts-lastrun'); } if(isset($_GET['prune'])) { delete_transient('auto-prune-posts-lastrun'); $plugin->prune(true); echo 'Prune force called'; die(); } // Show form include ('auto-prune-posts-adminpage.php'); $plugin->content_end(); } /** * Uses transient instead of cronjob, will run on wp call in frontend AND backend, every 30 seconds (transient) */ function prune($forced = false) { $lastrun = get_transient('auto-prune-posts-lastrun'); if ($forced || false === $lastrun) { $force_delete = ($this->conf['settings']['force_delete'] == 0) ? false : true; // Walk foreach($this->conf['config'] as $cat_id => $type) { foreach($type as $the_type => $values) { $period_php = $values['period_php']; // Will be in format so strtotime can handle this [int][space][string] example: "4 day" or "5 month" // Get all posts for this category //$myposts = get_posts('category=' . $cat_id.'&post_type='.$the_type.'&numberposts=-1'); if($cat_id > 0) { // Do only the last 50 (by date, for 1 cat) $myposts = get_posts('category=' . $cat_id.'&post_type='.$the_type.'&numberposts=75&order=ASC&orderby=post_date'); } else { // Do only the last 50 (by date, ALL) $myposts = get_posts('post_type='.$the_type.'&numberposts=75&order=ASC&orderby=post_date'); } foreach ($myposts AS $post) { $post_date_plus_visibleperiod = strtotime($post->post_date . " +" . $period_php); $now = strtotime("now"); if ($post_date_plus_visibleperiod < $now) { // GOGOGO ! $this->delete_post_and_attachments($post->ID,$force_delete); // Mail admin? if(!empty($this->conf['settings']['admin_email'])) { $body = "Deleting post ID : ".$post->ID. "\n"; $body .= "Post title : ".$post->post_title. "\n"; $body .= "Settings (Delete or Trash) : ".( ($force_delete) ? 'Delete' : 'Trash' ). "\n"; wp_mail($this->conf['settings']['admin_email'],'Plugin auto prune posts notification',$body); } } } } } set_transient('auto-prune-posts-lastrun', 'lastrun: '.time(), 20); // 20 seconds } } /** * Actually deletes post and its attachments */ private function delete_post_and_attachments($post_id, $force_delete) { $atts = get_children(array ( 'post_parent' => $post_id, 'post_status' => 'inherit', 'post_type' => 'attachment' )); if ($atts) { foreach ($atts as $att) { // Deletes this attachment wp_delete_attachment($att->ID, $force_delete); } } // Now delete post wp_delete_post($post_id, $force_delete); } } // Admin only if(mijnpress_plugin_framework::is_admin()) { add_action('admin_menu', array('plugin_auto_prune_posts', 'addPluginSubMenu')); add_filter('plugin_row_meta',array('plugin_auto_prune_posts', 'addPluginContent'), 10, 2); } /** * Call scheduler */ function plugin_auto_prune_posts_activation() { $plugin_autopruneposts_initpage = new plugin_auto_prune_posts(); $plugin_autopruneposts_initpage->prune(); } add_action('after_setup_theme', 'plugin_auto_prune_posts_activation'); ?> class WP_Piwik_Settings { private static $logger, $defaultSettings; private $globalSettings = array( 'revision' => 90921, 'plugin_display_name' => 'WP-Piwik', 'add_tracking_code' => false, 'last_settings_update' => 0, 'piwik_token' => '', 'piwik_url' => '', 'piwik_path' => '', 'piwik_mode' => 'http', 'piwik_useragent' => 'php', 'piwik_useragent_string' => 'WP-Piwik', 'connection_timeout' => 5, 'dashboard_widget' => false, 'dashboard_chart' => false, 'dashboard_seo' => false, 'stats_seo' => false, 'capability_stealth' => array(), 'capability_read_stats' => array('administrator' => true), 'piwik_shortcut' => false, 'default_date' => 'yesterday', 'auto_site_config' => true, 'track_404' => false, 'track_search' => false, 'track_mode' => 0, 'track_post' => false, 'track_proxy' => false, 'track_admin' => false, 'track_feed' => false, 'track_feed_goal' => '', 'track_feed_revenue' => '', 'track_feed_campaign' => 'feed', 'track_feed_addcampaign' => 'false', 'track_cdnurlssl' => '', 'track_noscript' => false, 'track_nojavascript' => false, 'track_codeposition' => 'footer', 'track_datacfasync' => false, 'track_across' => false, 'track_across_alias' => false, 'limit_cookies' => false, 'limit_cookies_visitor' => 1209600, 'limit_cookies_session' => 0, 'add_post_annotations' => false, 'add_customvars_box' => true, 'disable_timelimit' => false, 'disable_ssl_verify' => false, 'disable_cookies' => false, 'toolbar' => false, 'shortcodes' => false, 'cache' => true, 'perpost_stats' => false ), $settings = array( 'name' => '', 'tracking_code' => '', 'site_id' => NULL, 'last_tracking_code_update' => 0, 'dashboard_revision' => 0, 'noscript_code' => '' ), $settingsChanged = false; public function __construct($objLogger) { self::$logger = $objLogger; self::$logger->log('Store default settings'); self::$defaultSettings = array('globalSettings' => $this->globalSettings, 'settings' => $this->settings); self::$logger->log('Load settings'); $this->globalSettings = ($this->checkNetworkActivation()? get_site_option('wp-piwik_global-settings', $this->globalSettings): get_option('wp-piwik_global-settings', $this->globalSettings) ); $this->settings = get_option('wp-piwik_settings',$this->settings); } public function save() { if (!$this->settingsChanged) { self::$logger->log('No settings changed yet'); return; } self::$logger->log('Save settings'); if (is_plugin_active_for_network('wp-piwik/wp-piwik.php')) update_site_option('wp-piwik_global-settings', $this->globalSettings); else update_option('wp-piwik_global-settings', $this->globalSettings); update_option('wp-piwik_settings', $this->settings); global $wp_roles; if (!is_object($wp_roles)) $wp_roles = new WP_Roles(); if (!is_object($wp_roles)) die("STILL NO OBJECT"); foreach($wp_roles->role_names as $strKey => $strName) { $objRole = get_role($strKey); foreach (array('stealth', 'read_stats') as $strCap) { $aryCaps = $this->getGlobalOption('capability_'.$strCap); if (isset($aryCaps[$strKey]) && $aryCaps[$strKey]) $objRole->add_cap('wp-piwik_'.$strCap); else $objRole->remove_cap('wp-piwik_'.$strCap); } } $this->settingsChanges = false; } public function getGlobalOption($key) { return isset($this->globalSettings[$key])?$this->globalSettings[$key]:self::$defaultSettings['globalSettings'][$key]; } public function getOption($key) { return isset($this->settings[$key])?$this->settings[$key]:self::$defaultSettings['settings'][$key]; } public function setGlobalOption($key, $value) { $this->settingsChanged = true; self::$logger->log('Changed global option '.$key.': '.(is_array($value)?serialize($value):$value)); $this->globalSettings[$key] = $value; } public function setOption($key, $value) { $this->settingsChanged = true; self::$logger->log('Changed option '.$key.': '.$value); $this->settings[$key] = $value; } public function resetSettings($bolFull = false) { self::$logger->log('Reset WP-Piwik settings'); global $wpdb; $keepSettings = array( 'piwik_token' => $this->getGlobalOption('piwik_token'), 'piwik_url' => $this->getGlobalOption('piwik_url'), 'piwik_path' => $this->getGlobalOption('piwik_path'), 'piwik_mode' => $this->getGlobalOption('piwik_mode') ); if (is_plugin_active_for_network('wp-piwik/wp-piwik.php')) { delete_site_option('wp-piwik_global-settings'); $aryBlogs = $wpdb->get_results('SELECT blog_id FROM '.$wpdb->blogs.' ORDER BY blog_id'); foreach ($aryBlogs as $aryBlog) delete_blog_option($aryBlog->blog_id, 'wp-piwik_settings'); if (!$bolFull) update_site_option('wp-piwik_global-settings', $keepSettings); } else { delete_option('wp-piwik_global-settings'); delete_option('wp-piwik_settings'); } $this->globalSettings = self::$defaultSettings['globalSettings']; $this->settings = self::$defaultSettings['settings']; if (!$bolFull) { self::$logger->log('Restore connection settings'); foreach ($keepSettings as $key => $value) $this->setGlobalOption($key, $value); } $this->save(); } public function checkNetworkActivation() { if (!function_exists("is_plugin_active_for_network")) { require_once(ABSPATH.'wp-admin/includes/plugin.php'); } return is_plugin_active_for_network('wp-piwik/wp-piwik.php'); } }
Fatal error: Class 'WP_Piwik_Settings' not found in /home/airlimb/public_html/wp-content/plugins/wp-piwik/wp-piwik.php on line 1481