active) { echo html_entity_decode(esc_attr($script->script_code), ENT_QUOTES, 'cp1252'); } } } $page_scripts = unserialize(get_option(WP_PAGE_TRACKING_SCRIPT)); if($page_scripts) { global $wp_query; $post_id = $wp_query->post->ID; foreach($page_scripts as $script) { if($script->active && $script->location == 'header' && $script->page_id == $post_id) { echo html_entity_decode(esc_attr($script->script_code), ENT_QUOTES, 'cp1252'); } } } } // Footer Tracking Codes public static function find_footer_tracking_codes() { $footer_scripts = unserialize(get_option(WP_FOOTER_TRACKING_SCRIPT)); if($footer_scripts) { foreach($footer_scripts as $script) { if($script->active) { echo html_entity_decode(esc_attr($script->script_code), ENT_QUOTES, 'cp1252'); } } } $page_scripts = unserialize(get_option(WP_PAGE_TRACKING_SCRIPT)); if($page_scripts) { global $wp_query; $post_id = $wp_query->post->ID; foreach($page_scripts as $script) { if($script->active && $script->location == 'footer' && $script->page_id == $post_id) { echo html_entity_decode(esc_attr($script->script_code), ENT_QUOTES, 'cp1252'); } } } } /************************************************* * Admin Area **************************************************/ public static function tracking_scripts_create_menu() { add_menu_page('Tracking Scripts Manager', 'Tracking Scripts Manager', 'manage_options', __FILE__, array(__CLASS__, 'tracking_options'), ''); add_action('admin_init', array(__CLASS__, 'register_tracking_scripts_settings')); } public static function register_tracking_scripts_settings() { register_setting( WP_TRACKING_SCRIPTS_OPTION_GROUP, WP_HEADER_TRACKING_SCRIPT, 'esc_textarea' ); register_setting( WP_TRACKING_SCRIPTS_OPTION_GROUP, WP_FOOTER_TRACKING_SCRIPT, 'esc_textarea' ); } public static function tracking_scripts_admin_tabs( $current = 'add_new' ) { $tabs = array('add_new' => 'Add New', 'global' => 'Global', 'pages' => 'Specific Location'); echo '

Tracking Scripts Manager

'; echo ''; } public static function tracking_options() { self::tracking_scripts_admin_scripts(); global $pagenow; $settings = get_option('tracking_scripts_settings'); if(isset($_GET['tab'])) { self::tracking_scripts_admin_tabs($_GET['tab']); $pagenow = $_GET['tab']; } else { self::tracking_scripts_admin_tabs('add_new'); $pagenow = 'add_new'; } ?>
admin_url( 'admin-ajax.php' ) ) ); } // Ajax Functions public static function tracking_scripts_posts_ajax_handler() { $post_type = ($_POST['postType']) ? esc_attr($_POST['postType']) : 'post'; $args = array( 'post_type' => $post_type, 'posts_per_page' => -1, 'orderby' => 'name', 'order' => 'ASC' ); ob_start(); $query = new WP_Query($args); echo ''; while($query->have_posts()) : $query->the_post(); echo ''; endwhile; wp_reset_postdata(); echo ob_get_clean(); die(); } public static function tracking_scripts_post_content_ajax_handler() { $current_page_id = ($_POST['postID']) ? esc_attr($_POST['postID']) : null; if($current_page_id) { $page_scripts = unserialize(get_option(WP_PAGE_TRACKING_SCRIPT)); $i = 1; $page_scripts_array = array(); foreach($page_scripts as $script) { if($script->page_id == $current_page_id) { $page_scripts_array[$script->location][] = $script; } } ob_start(); ?>

Header

Footer

script_name = sanitize_text_field($_POST['new_page_script_name']); $tracking->script_code = stripslashes(esc_textarea($_POST[WP_NEW_PAGE_TRACKING_SCRIPT])); $tracking->active = true; $tracking->order = count($header_scripts); $tracking->location = 'header'; $header_scripts[] = $tracking; update_option(WP_HEADER_TRACKING_SCRIPT, serialize($header_scripts)); } else if($tracking_location == 'footer') { $tracking = new Tracking_Script(); $tracking->script_name = sanitize_text_field($_POST['new_page_script_name']); $tracking->script_code = stripslashes(esc_textarea($_POST[WP_NEW_PAGE_TRACKING_SCRIPT])); $tracking->active = true; $tracking->order = count($footer_scripts); $tracking->location = 'footer'; $footer_scripts[] = $tracking; update_option(WP_FOOTER_TRACKING_SCRIPT, serialize($footer_scripts)); } } else { if($_POST[WP_NEW_PAGE_TRACKING_SCRIPT_ID] && $_POST[WP_NEW_PAGE_TRACKING_SCRIPT]) { $tracking_pagecount = unserialize(get_option(WP_PAGE_TRACKING_SCRIPT_COUNT)); if(!$tracking_pagecount) { $tracking_pagecount = 1; } else { $tracking_pagecount++; } update_option(WP_PAGE_TRACKING_SCRIPT_COUNT, serialize($tracking_pagecount)); $tracking = new Tracking_Script(); $tracking->script_name = sanitize_text_field($_POST['new_page_script_name']); $tracking->script_code = stripslashes(esc_textarea($_POST[WP_NEW_PAGE_TRACKING_SCRIPT])); $tracking->active = true; $tracking->page_id = esc_attr($_POST[WP_NEW_PAGE_TRACKING_SCRIPT_ID]); $tracking->location = esc_attr($_POST[WP_NEW_PAGE_TRACKING_SCRIPT_LOCATION]); $tracking->script_id = $tracking_pagecount; $page_scripts[] = $tracking; update_option(WP_PAGE_TRACKING_SCRIPT, serialize($page_scripts)); } } $redirect_url = get_admin_url().'admin.php?page='.TRACKING_SCRIPT_BASENAME; if($_POST[WP_NEW_PAGE_TRACKING_SCRIPT_GLOBAL] == 'yes') { $redirect_url = get_admin_url().'admin.php?page='.TRACKING_SCRIPT_BASENAME.'&tab=global'; } else if($_POST[WP_NEW_PAGE_TRACKING_SCRIPT_ID] && $_POST[WP_NEW_PAGE_TRACKING_SCRIPT]) { $redirect_url = get_admin_url().'admin.php?page='.TRACKING_SCRIPT_BASENAME.'&tab=pages'; } wp_redirect($redirect_url); exit(); } // Update Global Codes public static function update_tracking_codes() { $header_scripts = unserialize(get_option(WP_HEADER_TRACKING_SCRIPT)); $footer_scripts = unserialize(get_option(WP_FOOTER_TRACKING_SCRIPT)); $i = 1; foreach($header_scripts as $script) { if(isset($_POST['header_script_'.$i.'_name'])) { $script->script_name = sanitize_text_field($_POST['header_script_'.$i.'_name']); } if(isset($_POST['header_script_'.$i.'_code'])) { $script->script_code = stripslashes(esc_textarea($_POST['header_script_'.$i.'_code'])); } if(isset($_POST['header_script_'.$i.'_active'])) { if($_POST['header_script_'.$i.'_active'] === 'false') { $script->active = false; } else { $script->active = true; } } if(isset($_POST['header_script_'.$i.'_order'])) { $order = filter_input(INPUT_POST, 'header_script_'.$i.'_order', FILTER_VALIDATE_INT); if(is_int($order)) { $script->order = $order; } } if(isset($_POST['header_script_'.$i.'_exists'])) { if($_POST['header_script_'.$i.'_exists'] === 'false') { unset($header_scripts[$i-1]); } } $i++; } $i = 1; foreach($footer_scripts as $script) { if(isset($_POST['footer_script_'.$i.'_name'])) { $script->script_name = sanitize_text_field($_POST['footer_script_'.$i.'_name']); } if(isset($_POST['footer_script_'.$i.'_code'])) { $script->script_code = stripslashes(esc_textarea($_POST['footer_script_'.$i.'_code'])); } if(isset($_POST['footer_script_'.$i.'_active'])) { if($_POST['footer_script_'.$i.'_active'] === 'false') { $script->active = false; } else { $script->active = true; } } if(isset($_POST['footer_script_'.$i.'_order'])) { $order = filter_input(INPUT_POST, 'footer_script_'.$i.'_order', FILTER_VALIDATE_INT); if(is_int($order)) { $script->order = $order; } } if(isset($_POST['footer_script_'.$i.'_exists'])) { if($_POST['footer_script_'.$i.'_exists'] === 'false') { unset($footer_scripts[$i-1]); } } $i++; } usort($header_scripts, array(__CLASS__, 'compare_order')); usort($footer_scripts, array(__CLASS__, 'compare_order')); update_option(WP_HEADER_TRACKING_SCRIPT, serialize($header_scripts)); update_option(WP_FOOTER_TRACKING_SCRIPT, serialize($footer_scripts)); wp_redirect(get_admin_url().'admin.php?page='.TRACKING_SCRIPT_BASENAME.'&tab=global'); exit(); } // Update Page Specific Codes public static function update_page_tracking_codes() { $page_scripts = unserialize(get_option(WP_PAGE_TRACKING_SCRIPT)); $index = 0; foreach($page_scripts as $script) { $script_id = $script->script_id; if(isset($_POST['page_script_'.$script_id.'_name'])) { $script->script_name = sanitize_text_field($_POST['page_script_'.$script_id.'_name']); } if(isset($_POST['page_script_'.$script_id.'_code'])) { $script->script_code = stripslashes(esc_textarea($_POST['page_script_'.$script_id.'_code'])); } if(isset($_POST['page_script_'.$script_id.'_active'])) { if($_POST['page_script_'.$script_id.'_active'] === 'false') { $script->active = false; } else { $script->active = true; } } if(isset($_POST['page_script_'.$script_id.'_order'])) { $order = filter_input(INPUT_POST, 'page_script_'.$script_id.'_order', FILTER_VALIDATE_INT); if(is_int($order)) { $script->order = $order; } } if(isset($_POST['page_script_'.$script_id.'_exists'])) { if($_POST['page_script_'.$script_id.'_exists'] === 'false') { unset($page_scripts[$index]); } } $index++; } usort($page_scripts, array(__CLASS__, 'compare_order')); update_option(WP_PAGE_TRACKING_SCRIPT, serialize($page_scripts)); wp_redirect(get_admin_url().'admin.php?page='.TRACKING_SCRIPT_BASENAME.'&tab=pages'); exit(); } public static function compare_order($a, $b) { return ($a->order < $b->order) ? -1 : 1; } } $class['Tracking_Scripts'] = new Tracking_Scripts(); } if( !class_exists('Tracking_Script') ) { class Tracking_Script { public $script_name; public $script_code; public $active; public $order; public $page_id; public $location; public $script_id; function __construct() { } } } ?>