isTrackLoggedInUsersEnabled = Option::get('visitors_log') ? true : false; $this->isOnlineUsersEnabled = UserOnline::active(); if ($this->isTrackLoggedInUsersEnabled) { $this->tabs[] = 'logged-in-users'; } if ($this->isOnlineUsersEnabled) { $this->tabs[] = 'online'; } $this->dataProvider = new VisitorInsightsDataProvider([ 'country' => Request::get('location', ''), 'agent' => Request::get('agent', ''), 'platform' => Request::get('platform', ''), 'user_id' => Request::get('user_id', ''), 'ip' => Request::get('ip', ''), 'referrer' => Request::get('referrer', ''), 'source_channel' => Request::get('source_channel', ''), ]); parent::__construct(); } public function getViewsData() { wp_localize_script(Admin_Assets::$prefix, 'Wp_Statistics_Visitors_Object', $this->dataProvider->getChartsData()); return $this->dataProvider->getVisitorsData(); } public function getVisitorsData() { return $this->dataProvider->getVisitorsData(); } public function getOnlineData() { return $this->dataProvider->getOnlineVisitorsData(); } public function getTopVisitorsData() { return $this->dataProvider->getTopVisitorsData(); } public function getLoggedInUsersData() { wp_localize_script(Admin_Assets::$prefix, 'Wp_Statistics_Visitors_Object', $this->dataProvider->getLoggedInChartsData()); return $this->dataProvider->getLoggedInUsersData(); } public function render() { $currentTab = $this->getCurrentTab(); $data = $this->getTabData(); $filters = $this->getActiveFilters(); $args = [ 'title' => esc_html__('Visitor Insights', 'wp-statistics'), 'pageName' => Menus::get_page_slug('visitors'), 'custom_get' => array_merge(['tab' => $currentTab], $filters), 'DateRang' => Admin_Template::DateRange(), 'data' => $data, 'hasDateRang'=> true, 'pagination' => Admin_Template::paginate_links([ 'total' => isset($data['total']) ? $data['total'] : 0, 'echo' => false ]), 'tabs' => [ [ 'link' => Menus::admin_url('visitors', ['tab' => 'visitors']), 'title' => esc_html__('Visitors', 'wp-statistics'), 'class' => $this->isTab('visitors') ? 'current' : '', ], [ 'link' => Menus::admin_url('visitors', ['tab' => 'views']), 'title' => esc_html__('Views', 'wp-statistics'), 'class' => $this->isTab('views') ? 'current' : '', ], [ 'link' => Menus::admin_url('visitors', ['tab' => 'online']), 'title' => esc_html__('Online Visitors', 'wp-statistics'), 'class' => $this->isTab('online') ? 'current wps-tab-link__online-visitors' : 'wps-tab-link__online-visitors', 'hidden' => !$this->isOnlineUsersEnabled ], [ 'link' => Menus::admin_url('visitors', ['tab' => 'top-visitors']), 'title' => esc_html__('Top Visitors', 'wp-statistics'), 'class' => $this->isTab('top-visitors') ? 'current' : '' ], [ 'link' => Menus::admin_url('visitors', ['tab' => 'logged-in-users']), 'title' => esc_html__('Logged-in Users', 'wp-statistics'), 'tooltip' => esc_html__('Track engagement from logged-in users.', 'wp-statistics'), 'class' => $this->isTab('logged-in-users') ? 'current' : '', 'hidden' => !$this->isTrackLoggedInUsersEnabled ] ] ]; if ($this->isOnlineUsersEnabled && $this->isTab('online')) { $args['hasDateRang'] = false; $args['real_time_button'] = true; } if ($this->isTab('visitors')) { $args['filters'] = ['visitors']; } if ($this->isTab('logged-in-users')) { $args['filters'] = ['user-role']; } Admin_Template::get_template(['layout/header', 'layout/tabbed-page-header'], $args); View::load("pages/visitor-insights/$currentTab", $args); Admin_Template::get_template(['layout/postbox.hide', 'layout/footer'], $args); } public function getActiveFilters() { $filters = []; if (Request::has('agent')) { $filters['agent'] = Request::get('agent'); } if (Request::has('location')) { $filters['location'] = Request::get('location'); } if (Request::has('platform')) { $filters['platform'] = Request::get('platform'); } if (Request::has('referrer')) { $filters['referrer'] = Request::get('referrer'); } if (Request::has('source_channel')) { $filters['source_channel'] = Request::get('source_channel'); } if (Request::has('user_id')) { $filters['user_id'] = Request::get('user_id'); } if (Request::has('ip')) { $filters['ip'] = Request::get('ip'); } return $filters; } }