| Server IP : 38.190.208.107 / Your IP : 216.73.217.46 Web Server : nginx/1.28.1 System : Linux ht2026040333114 6.1.0-10-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.37-1 (2023-07-03) x86_64 User : root ( 0) PHP Version : 8.2.28 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv,eval,assert,passthru,system,exec,shell_exec,popen,proc_open MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /www/wwwroot/wp.3/wp-content/plugins/wp-statistics/includes/ |
Upload File : |
<?php
namespace WP_STATISTICS;
class Country
{
/**
* Default Unknown flag
*
* @var string
*/
public static $unknown_location = '000';
/**
* Get country codes
*
* @return array|bool|string
*/
public static function getList()
{
# Load From file
include WP_STATISTICS_DIR . "includes/defines/country-codes.php";
if (isset($ISOCountryCode)) {
return $ISOCountryCode;
}
return array();
}
/**
* Get Country flag
*
* @param $location
* @return string
*/
public static function flag($location)
{
$list_country = self::getList();
if (!array_key_exists($location, $list_country)) {
$location = self::$unknown_location;
}
return WP_STATISTICS_URL . 'assets/images/flags/' . strtolower($location) . '.svg';
}
/**
* Get Country name by Code
*
* @param $code
* @return mixed
*/
public static function getName($code)
{
$list_country = self::getList();
if (array_key_exists($code, $list_country)) {
return $list_country[$code];
}
return $list_country[self::$unknown_location];
}
public static function isValid($code)
{
$list_country = self::getList();
return array_key_exists(strtoupper($code), $list_country);
}
/**
* get Top Country List
*
* @param array $args
* @return array
*/
public static function getTop($args = array())
{
global $wpdb;
// Load List Country Code
$ISOCountryCode = Country::getList();
// Get List From DB
$list = array();
// Check Default
if (empty($args['from']) and empty($args['to'])) {
if (array_key_exists($args['ago'], TimeZone::getDateFilters())) {
$dateFilter = TimeZone::calculateDateFilter($args['ago']);
$args['from'] = $dateFilter['from'];
$args['to'] = $dateFilter['to'];
}
}
// Check Custom Date
if (!empty($args['from']) and !empty($args['to'])) {
$count_day = TimeZone::getNumberDayBetween($args['from'], $args['to']);
} else {
if (is_numeric($args['ago']) and $args['ago'] > 0) {
$count_day = $args['ago'];
} else {
$first_day = Helper::get_date_install_plugin();
$count_day = TimeZone::getNumberDayBetween($first_day);
}
}
// Get time ago Days Or Between Two Days
if (!empty($args['from']) and !empty($args['to'])) {
$days_list = TimeZone::getListDays(array('from' => $args['from'], 'to' => $args['to']));
} else {
if (is_numeric($args['ago']) and $args['ago'] > 0) {
$days_list = TimeZone::getListDays(array('from' => TimeZone::getTimeAgo($args['ago'])));
} else {
$days_list = TimeZone::getListDays(array('from' => TimeZone::getTimeAgo($count_day)));
}
}
$days_time_list = array_keys($days_list);
// Get Result
$limitQuery = (isset($args['limit']) and $args['limit'] > 0) ? $wpdb->prepare("LIMIT %d", $args['limit']) : '';
$sqlQuery = $wpdb->prepare("SELECT `location`, COUNT(`location`) AS `count` FROM `" . DB::table('visitor') . "` WHERE `last_counter` BETWEEN %s AND %s GROUP BY location ORDER BY `count` DESC", reset($days_time_list), end($days_time_list));
$result = $wpdb->get_results($sqlQuery . " " . $limitQuery); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
foreach ($result as $item) {
$item->location = strtoupper($item->location);
$list[] = array(
'location' => $item->location,
'name' => $ISOCountryCode[$item->location],
'flag' => self::flag($item->location),
'link' => Menus::admin_url('visitors', array('location' => $item->location)),
'number' => $item->count
);
}
return $list;
}
}