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', 'administrator', __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 '';
foreach($tabs as $tab => $name) {
$class = ($tab == $current) ? ' nav-tab-active' : '';
echo "$name";
}
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();
?>
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() {
}
}
}
?>