File: /var/www/epli.pl/wp-content/plugins/wp-statistics/includes/admin/class-wp-statistics-admin-user.php
<?php
namespace WP_STATISTICS;
use WP_Statistics\Components\DateRange;
use WP_Statistics\Models\VisitorsModel;
class Admin_User
{
/**
* constructor.
*/
public function __construct()
{
// Add Views Column in All Admin User Wp_List_Table
if (User::Access('read') and Option::get('enable_user_column')) {
add_filter('manage_users_columns', array($this, 'add_column_user_table'));
add_filter('manage_users_custom_column', array($this, 'modify_user_table_row'), 10, 3);
add_filter('manage_users_sortable_columns', array($this, 'sort_by_custom_field'));
add_action('pre_user_query', array($this, 'modify_pre_user_query'));
}
// Reset User_id as User is deleted.
add_action('delete_user', array($this, 'modify_delete_user'));
}
/**
* Add Views Link
*
* @param $column
* @return mixed
*/
public function add_column_user_table($column)
{
$column['visits'] = __("Views", "wp-statistics");
return $column;
}
/**
* Modify Users Row
*
* @param $val
* @param $column_name
* @param $user_id
* @return mixed
*/
public function modify_user_table_row($val, $column_name, $user_id)
{
switch ($column_name) {
case 'visits' :
$visitorsModel = new VisitorsModel();
$count = $visitorsModel->getVisitorHits(['user_id' => $user_id, 'ignore_date' => true]);
return '<a href="' . Menus::admin_url('visitors', array_merge(['user_id' => $user_id], DateRange::get('total'))) . '" class="wps-text-muted" target="_blank">' . number_format_i18n($count) . '</a>';
default:
}
return $val;
}
/**
* Sort By Users Visit
*
* @param $columns
* @return mixed
*/
function sort_by_custom_field($columns)
{
$columns['visits'] = 'visit';
return $columns;
}
/**
* Pre User Query Join by visitors
*
* @param $user_query
*/
public function modify_pre_user_query($user_query)
{
global $wpdb;
// Check in Admin
if (!is_admin()) {
return;
}
// If order-by.
if (isset($user_query->query_vars['orderby']) and isset($user_query->query_vars['order']) and $user_query->query_vars['orderby'] == 'visit') {
// Get global Variable
$order = $user_query->query_vars['order'];
// Select Field
$user_query->query_fields .= ", (select Count(*) from " . DB::table("visitor") . " where {$wpdb->users}.ID = " . DB::table("visitor") . ".user_id) as user_visit ";
// And order by it.
$user_query->query_orderby = " ORDER BY user_visit $order";
}
return $user_query;
}
/**
* Remove User from Visitors Table when user is deleted.
*
* @param $user_id
*/
public function modify_delete_user($user_id)
{
global $wpdb;
$wpdb->update(DB::table("visitor"), array('user_id' => 0), array('user_id' => $user_id), array('%d'), array('%d'));
}
}
new Admin_User;