zZzzZ.
home2
/
zrzvbdry
/
wiredsave.com
/
wp-content
/
plugins
/
pretty-link
/
app
/
controllers
New Folder
Editing: PrliClicksController.php
Save
Cancel
<?php if(!defined('ABSPATH')) { die('You are not allowed to call this page directly.'); } class PrliClicksController extends PrliBaseController { public $max_rows_per_file; public function __construct() { $this->max_rows_per_file = apply_filters('prli_clicks_max_rows_per_file', 5000); } public function load_hooks() { add_action('init', array($this,'route_scripts')); add_action('admin_init', array($this, 'auto_trim_clicks')); } public function route() { if(isset($_REQUEST['action']) and $_REQUEST['action'] == 'csv') { $this->csv(); } else { $this->admin_page(); } } public function route_scripts() { if( ( isset($_GET['action']) && $_GET['action'] == 'prli_download_csv_hit_report' ) ) { if ( ! isset( $_GET['_wpnonce'] ) || ! wp_verify_nonce( $_GET['_wpnonce'], 'prli-csv-nonce' ) ) { status_header( 403, 'Forbidden' ); wp_die(); } $this->click_report(); exit; } } public function auto_trim_clicks() { global $prli_options, $prli_click; if($prli_options->auto_trim_clicks) { $last_run = get_option('prli_auto_trim_clicks_last_run', 0); $now = time(); //Run once per day at most if(($now - $last_run) > 86400) { $prli_click->clear_clicks_by_age_in_days(90); update_option('prli_auto_trim_clicks_last_run', time()); wp_cache_delete('alloptions', 'options'); } } } public function admin_page() { global $wpdb, $prli_options, $prli_click, $prli_link, $prli_utils, $page_size; $page_params = ''; $params = $prli_click->get_params_array(); $page_size = (isset($_REQUEST['size']) && is_numeric($_REQUEST['size']) && !empty($_REQUEST['size']))?(int)$_REQUEST['size']:10; $current_page = $params['paged']; $start_timestamp = $prli_utils->get_start_date($params); $end_timestamp = $prli_utils->get_end_date($params); $start_timestamp = mktime(0, 0, 0, date('n', $start_timestamp), date('j', $start_timestamp), date('Y', $start_timestamp)); $end_timestamp = mktime(0, 0, 0, date('n', $end_timestamp), date('j', $end_timestamp), date('Y', $end_timestamp) ); $sdyear = date('Y',$start_timestamp); $sdmon = date('n',$start_timestamp); $sddom = date('j',$start_timestamp); $edyear = date('Y',$end_timestamp); $edmon = date('n',$end_timestamp); $eddom = date('j',$end_timestamp); $where_clause = $wpdb->prepare( " cl.created_at BETWEEN '%d-%d-%d 00:00:00' AND '%d-%d-%d 23:59:59'", $sdyear,$sdmon,$sddom,$edyear,$edmon,$eddom ); if(!empty($params['sdate']) and preg_match('/^\d\d\d\d-\d\d-\d\d$/', $params['sdate'])) { $page_params .= "&sdate={$params['sdate']}"; } if(!empty($params['edate']) and preg_match('/^\d\d\d\d-\d\d-\d\d$/', $params['edate'])) { $page_params .= "&edate={$params['edate']}"; } if(!empty($params['l']) and $params['l'] != 'all') { $where_clause .= (($params['l'] != 'all') ? $wpdb->prepare(' AND cl.link_id=%d', $params['l']):''); $link_name = $wpdb->get_var($wpdb->prepare("SELECT name FROM {$wpdb->prefix}prli_links WHERE id=%d", $params['l'])); $link_slug = $wpdb->get_var($wpdb->prepare("SELECT slug FROM {$wpdb->prefix}prli_links WHERE id=%d", $params['l'])); $page_params .= "&l={$params['l']}"; } else if(!empty($params['ip'])) { $link_name = __('IP Address: ', 'pretty-link') . esc_html($params['ip']); $where_clause .= $wpdb->prepare(" AND cl.ip=%s", $params['ip']); $page_params .= "&ip={$params['ip']}"; } else if(!empty($params['vuid'])) { $link_name = __('Visitor: ', 'pretty-link') . esc_html($params['vuid']); $where_clause .= $wpdb->prepare(" AND cl.vuid=%s",$params['vuid']); $page_params .= "&vuid={$params['vuid']}"; } else { $link_name = __('All Links', 'pretty-link'); $where_clause .= ""; $page_params .= ""; } if($params['type'] == 'unique') { $where_clause .= ' AND first_click=1'; $page_params .= '&type=unique'; } $click_vars = PrliClicksHelper::get_click_sort_vars($params,$where_clause); $sort_params = $page_params . $click_vars['sort_params']; $page_params .= $click_vars['page_params']; $sort_str = $click_vars['sort_str']; $sdir_str = $click_vars['sdir_str']; $search_str = $click_vars['search_str']; $where_clause = $click_vars['where_clause']; $order_by = $click_vars['order_by']; $count_where_clause = $click_vars['count_where_clause']; $record_count = $prli_click->getRecordCount($count_where_clause); $page_count = $prli_click->getPageCount($page_size,$count_where_clause); $clicks = $prli_click->getPage($current_page,$page_size,$where_clause,$order_by,true); $page_last_record = $prli_utils->getLastRecordNum($record_count,$current_page,$page_size); $page_first_record = $prli_utils->getFirstRecordNum($record_count,$current_page,$page_size); require_once(PRLI_VIEWS_PATH.'/clicks/list.php'); } public function click_report() { global $wpdb, $prli_click, $prli_link; if(isset($_GET['l'])) { $l = (int) $_GET['l']; $where_clause = $wpdb->prepare(" link_id=%d",$l ); $link_name = $wpdb->get_var($wpdb->prepare("SELECT name FROM {$wpdb->prefix}prli_links WHERE id=%d",$l)); $link_slug = $wpdb->get_var($wpdb->prepare("SELECT slug FROM {$wpdb->prefix}prli_links WHERE id=%d",$l)); } else if(isset($_GET['ip'])) { $ip = stripslashes($_GET['ip']); if (filter_var($ip, FILTER_VALIDATE_IP)) { $ip = PrliClicksHelper::esc_spreadsheet_cell($ip); $link_name = "ip_addr_{$ip}"; $where_clause = $wpdb->prepare(" cl.ip=%s", $ip); } } else if(isset($_GET['vuid'])) { $vuid = sanitize_key(stripslashes($_GET['vuid'])); $link_name = "visitor_{$vuid}"; $where_clause = $wpdb->prepare(" cl.vuid=%s",$vuid); } else { $link_name = "all_links"; $where_clause = ""; } $link_name = stripslashes($link_name); $link_name = preg_replace('#[ ,]#','',$link_name); $record_count = $prli_click->getRecordCount($where_clause); $page_count = (int)ceil($record_count / $this->max_rows_per_file); $prli_page = isset($_GET['prli_page']) ? (int) $_GET['prli_page'] : 1; $hmin = 0; if($prli_page) { $hmin = ($prli_page - 1) * $this->max_rows_per_file; } if($prli_page==$page_count) { $hmax = $record_count; } else { $hmax = ($prli_page * $this->max_rows_per_file) - 1; } $hlimit = "{$hmin},{$this->max_rows_per_file}"; $clicks = $prli_click->getAll($where_clause,'',false,$hlimit); require_once PRLI_VIEWS_PATH . '/clicks/csv.php'; } public function csv() { global $wpdb, $prli_blogurl, $prli_link, $prli_click, $prli_group; $param_string = $where_clause = ''; if(isset($_GET['l'])) { $l = (int) $_GET['l']; $where_clause = $wpdb->prepare(' link_id=%d', $l); $link_name = $wpdb->get_var($wpdb->prepare("SELECT name FROM {$wpdb->prefix}prli_links WHERE id=%d", $l)); $link_slug = $wpdb->get_var($wpdb->prepare("SELECT slug FROM {$wpdb->prefix}prli_links WHERE id=%d", $l)); $param_string .= "l={$l}"; } else if(isset($_GET['ip'])) { $ip = stripslashes($_GET['ip']); if (filter_var($ip, FILTER_VALIDATE_IP)) { $ip = PrliClicksHelper::esc_spreadsheet_cell($_GET['ip']); $link_name = "ip_addr_{$ip}"; $where_clause = $wpdb->prepare(' cl.ip=%s', $ip); $param_string .= "ip={$ip}"; } } else if(isset($_GET['vuid'])) { $vuid = sanitize_key(stripslashes($_GET['vuid'])); $link_name = "visitor_{$vuid}"; $where_clause = $wpdb->prepare(' cl.vuid=%s', $vuid); $param_string .= "vuid={$vuid}"; } else { $link_name = 'all_links'; } $hit_record_count = $prli_click->getRecordCount($where_clause); $hit_page_count = (int)ceil($hit_record_count / $this->max_rows_per_file); $param_string = (empty($param_string)?'':"&{$param_string}"); $hit_report_url = "{$prli_blogurl}/index.php?action=prli_download_csv_hit_report{$param_string}"; $max_rows_per_file = $this->max_rows_per_file; require_once PRLI_VIEWS_PATH . '/clicks/csv_download.php'; } }