display_name)){
$roles = '';
foreach($user_info->roles as $role_key){
if(isset($wp_roles->roles[$role_key]['name']))
$roles .= $wp_roles->roles[$role_key]['name'];
}
$text = "#$user_info->ID ID)."\">".esc_html($user_info->display_name)."
".esc_html($roles). " ";
}
if(empty($text))
{
$text = 'IP: '.actt_get_the_user_ip();
}
return $text;
}
function actt_user_info_bac($user_id)
{
$user_info = get_userdata($user_id);
$text = '';
if(isset($user_info->user_login))
$text = "#$user_info->ID ID)."\">$user_info->user_login
".implode(', ', $user_info->roles) . " ";
if(empty($text))
{
$text = 'IP: '.actt_get_the_user_ip();
}
return $text;
}
function &actt_get_instance()
{
global $Winter_MVC;
return $Winter_MVC;
}
function actt_get_title()
{
$print = '';
//$print.=get_admin_page_title();
//$print.=wp_title('|',false,'right');
//$print.=wp_get_document_title();
//$print.=get_the_title();
$print .= actt_generate_description();
if(actt_get_uri() == '/') {
$print = esc_html__('Home Page', 'activitytime');
}
return $print;
}
if ( ! function_exists('actt_resolve_wp_menu'))
{
function actt_resolve_wp_menu()
{
global $submenu, $menu, $pagenow;
$request_uri = actt_get_uri();
$page = '';
if(isset($_GET['page']))
$page = wmvc_xss_clean($_GET['page']);
$submenu_c = $submenu;
$menu_c = $menu;
$pagenow_c = $pagenow;
if(empty($page) && empty($request_uri))return;
if(!isset($submenu_c))
{
$menu_c = get_option( 'activitytime-menuitems' );
$submenu_c = get_option( 'activitytime-submenuitems' );
}
$text = '';
if(is_array($menu_c) && !empty($page))
foreach($menu_c as $key=>$row)
{
if(in_array($page, $row))
{
$text.=$row[0];
}
}
if(is_array($submenu_c) && !empty($page))
foreach($submenu_c as $key=>$row)
{
foreach($row as $key2=>$row2)
{
if(in_array($page, $row2))
{
if(empty($text))
{
$text.=$row2[0];
}
else
{
$text.=' > '.$row2[0];
}
}
}
}
if(strpos($request_uri, 'wp-admin') !== FALSE)
$request_uri = basename($request_uri);
if(is_array($menu_c) && !empty($request_uri))
foreach($menu_c as $key=>$row)
{
if(in_array($request_uri, $row))
{
if(empty($text))
{
$text.=$row[0];
}
else
{
$text.=' > '.$row[0];
}
}
}
if(is_array($submenu_c) && !empty($request_uri))
foreach($submenu_c as $key=>$row)
{
foreach($row as $key2=>$row2)
{
if(in_array($request_uri, $row2))
{
if(empty($text))
{
$text.=$row2[0];
}
else
{
$text.=' > '.$row2[0];
}
}
}
}
if(strpos($request_uri, 'post.php') !== FALSE)
{
if(empty($text))
{
$text.='Post';
}
else
{
$text.=' > Post';
}
}
if(strpos($request_uri, 'plugins.php') !== FALSE)
{
if(empty($text))
{
$text.='Plugins';
}
else
{
$text.=' > Plugins';
}
}
if(strpos($request_uri, 'post-new.php') !== FALSE)
{
if(empty($text))
{
$text.='Post Created';
}
else
{
$text.=' > Post Created';
}
}
if(strpos($request_uri, 'edit.php') !== FALSE && strpos($request_uri, 'trashed') !== FALSE)
{
if(empty($text))
{
$text.='Post';
}
else
{
$text.=' > Post';
}
}
if(strpos($request_uri, 'edit.php') !== FALSE && strpos($request_uri, 'deleted') !== FALSE)
{
if(empty($text))
{
$text.='Post';
}
else
{
$text.=' > Post';
}
}
if(strpos($request_uri, 'edit.php') !== FALSE && strpos($request_uri, 'post_status') !== FALSE)
{
if(empty($text))
{
$text.='Edit Post';
}
else
{
$text.=' > Edit Post';
}
}
if(!empty($text))return $text;
if(strpos($request_uri, 'admin-ajax.php') !== FALSE)
{
return 'Ajax request';
}
if(strpos($request_uri, 'wp-cron.php') !== FALSE)
{
return 'WP Cron';
}
if(strpos($request_uri, 'wp_scrape_nonce') !== FALSE)
{
return 'WP Scraping';
}
if(strpos($request_uri, 'wp-json') !== FALSE)
{
return 'WP JSON';
}
if(strpos($request_uri, 'post.php?') !== FALSE)
{
return 'Edit post/page';
}
if(strpos($request_uri, 'wp-login.php') !== FALSE)
{
return 'wp-login.php';
}
if(strpos($request_uri, 'options.php') !== FALSE)
{
return 'WP Options';
}
if(!empty(single_cat_title('', false)))
{
return 'Category: '.single_cat_title('', false);
}
if(!empty(get_the_title()))
{
return 'Post/Page: '.get_the_title();
}
return $request_uri;
}
}
function actt_generate_description()
{
$desc = '';
$desc .= actt_resolve_wp_menu();
if(!empty($_GET['action']))
$desc .= ' > '.esc_html(sanitize_text_field(wp_unslash(wmvc_xss_clean($_GET['action']))));
if(isset($_GET['function']))
{
$desc .= ' > '.esc_html(sanitize_text_field(wp_unslash(wmvc_xss_clean($_GET['function']))));
}
if(isset($_GET['trashed']))
{
$desc .= ' > Trashed';
}
if(isset($_GET['deleted']))
{
$desc .= ' > Deleted';
}
if(isset($_POST['post_ID']))
{
$post_link = get_edit_post_link(intval($_POST['post_ID']));
$post_title = '';
if(isset($_POST['post_title']))
$post_title = ' ('.esc_html(sanitize_text_field(wp_unslash(wmvc_xss_clean($_POST['post_title'])))).')';
$desc .= ' > '."Editing post with ID: ".intval($_POST['post_ID']).$post_title.'';
}
if(isset($_GET['action']) && $_GET['action'] == 'edit-theme-plugin-file')
{
if(isset($_POST['file']))
{
$desc .= ' > '.'File: '.esc_html(sanitize_text_field(wp_unslash(wmvc_xss_clean($_POST['file']))));
}
}
if(isset($_GET['plugin']))
{
$desc .= ' > Plugin: '.esc_html(sanitize_text_field(wp_unslash(wmvc_xss_clean($_GET['plugin']))));
}
if(isset($_GET['post_type']))
{
$desc .= ' > Post Type: '.esc_html(sanitize_text_field(wp_unslash(wmvc_xss_clean($_GET['post_type']))));
}
if(isset($_GET['post_status']))
{
$desc .= ' > Post status: '.esc_html(sanitize_text_field(wp_unslash(wmvc_xss_clean($_GET['post_status']))));
}
if(isset($_GET['ids']))
{
$desc .= ' > Ids: '.esc_html(sanitize_text_field(wp_unslash(wmvc_xss_clean($_GET['ids']))));
}
if(isset($_GET['post']) && is_numeric($_GET['post']))
{
$desc .= ' > Post ID: '.esc_html(sanitize_text_field(wp_unslash(wmvc_xss_clean($_GET['post']))));
}
if(isset($_GET['elementor-preview']) && is_numeric($_GET['elementor-preview']))
{
$desc .= ' > Elementor Editing Post/Page ID: '.esc_html(sanitize_text_field(wp_unslash(wmvc_xss_clean($_GET['elementor-preview']))));
}
if(isset($_GET['preview_id']) && is_numeric($_GET['preview_id']))
{
$desc .= ' > Elementor Preview Post/Page ID: '.intval($_GET['preview_id']);
}
if(isset($_GET['loggedout']))
{
$desc .= ' > Logged Out: '.esc_html(sanitize_text_field(wp_unslash(wmvc_xss_clean($_GET['loggedout']))));
}
return $desc;
}
if ( ! function_exists('actt_prepare_search_query_GET'))
{
function actt_prepare_search_query_GET($columns = array(), $model_name = NULL, $external_columns = array())
{
$CI = &actt_get_instance();
$_GET_clone = array_merge($_GET, $_POST);
$_GET_clone = wmvc_xss_clean($_GET_clone);
$smart_search = '';
if(isset($_GET_clone['search']))
$smart_search = sanitize_text_field(wp_unslash(wmvc_xss_clean($_GET_clone['search']['value'])));
$available_fields = $CI->$model_name->get_available_fields();
//$table_name = substr($model_name, 0, -2);
$columns_original = array();
foreach($columns as $key=>$val)
{
$columns_original[$val] = $val;
// if column contain also "table_name.*"
$splited = explode('.', $val);
if(wmvc_count($splited) == 2)
$val = $splited[1];
if(isset($available_fields[$val]))
{
}
else
{
if(!in_array($columns[$key], $external_columns))
{
unset($columns[$key]);
}
}
}
if(wmvc_count($_GET_clone) > 0)
{
unset($_GET_clone['search']);
// For quick/smart search
if(wmvc_count($columns) > 0 && !empty($smart_search))
{
$gen_q = '';
foreach($columns as $key=>$value)
{
if(substr_count($value, 'id') > 0 && is_numeric($smart_search))
{
$gen_q.="$value = $smart_search OR ";
}
else if(substr_count($value, 'date') > 0)
{
//$gen_search = wmvc_generate_slug($smart_search, ' ');
$gen_search = $smart_search;
$gen_q.="$value LIKE '%$gen_search%' OR ";
}
else
{
$gen_q.="$value LIKE '%$smart_search%' OR ";
}
}
$gen_q = substr($gen_q, 0, -4);
if(!empty($gen_q))
$CI->db->where("($gen_q)");
}
// For column search
if(isset($_GET_clone['columns']))
{
$gen_q = '';
//var_dump($_GET_clone['columns']);
foreach($_GET_clone['columns'] as $key=>$row)
{
if(!empty($row['search']['value']))
if(isset($columns[$key]))
{
$col_name = $columns[$key];
if(substr_count($row['data'], 'id') > 0 && is_numeric($row['search']['value']))
{
// ID is always numeric
$gen_q.=$col_name." = ".$row['search']['value']." AND ";
}
else if(substr_count($row['data'], 'time_start') > 0)
{
// DATE VALUES
$gen_search = $row['search']['value'];
$detect_date = strtotime($gen_search);
if(is_numeric($detect_date) && $detect_date > 1000)
{
$gen_search = date('Y-m-d H:i:s', $detect_date);
$gen_q.=$col_name." >= '".$gen_search."' AND ";
}
}
else if(substr_count($row['data'], 'time_end') > 0)
{
// DATE VALUES
$gen_search = $row['search']['value'];
$detect_date = strtotime($gen_search);
if(is_numeric($detect_date) && $detect_date > 1000)
{
$gen_search = date('Y-m-d H:i:s', $detect_date);
$gen_q.=$col_name." <= '".$gen_search."' AND ";
}
}
else if(substr_count($row['data'], 'request_uri') > 0)
{
// DATE VALUES
$gen_search = $row['search']['value'];
$filter_request_uri = $gen_search;
if(!empty($filter_request_uri))
{
if(strpos($filter_request_uri, ',') === FALSE)
{
$gen_q.= '(request_uri LIKE "%'.esc_html($filter_request_uri).'%") AND ';
}
else
{
$parts = explode(',', $filter_request_uri);
$or_s = array();
foreach($parts as $part)
{
$part = trim($part);
$or_s[] = ' request_uri LIKE "%'.esc_html($part).'%" ';
}
$gen_q.= '( '.join(' OR ', $or_s).') AND ';
}
}
}
else if(substr_count($row['data'], 'date') > 0)
{
// DATE VALUES
$gen_search = $row['search']['value'];
$detect_date = strtotime($gen_search);
if(is_numeric($detect_date) && $detect_date > 1000)
{
$gen_search = date('Y-m-d H:i:s', $detect_date);
$gen_q.=$col_name." > '".$gen_search."' AND ";
}
else
{
$gen_q.=$col_name." LIKE '%".$gen_search."%' AND ";
}
}
else if(substr_count($row['data'], 'is_') > 0)
{
// CHECKBOXES
if($row['search']['value']=='on')
{
$gen_search = 1;
$gen_q.=$col_name." LIKE '%".$gen_search."%' AND ";
}
else if($row['search']['value']=='off')
{
$gen_q.=$col_name." IS NULL AND ";
}
}
else
{
$gen_q.=$col_name." LIKE '%".$row['search']['value']."%' AND ";
}
}
}
$gen_q = substr($gen_q, 0, -5);
if(!empty($gen_q))
$CI->db->where("($gen_q)");
}
// order
/*
["order"]=>
array(1) {
[0]=>
array(2) {
["column"]=>
string(1) "0"
["dir"]=>
string(4) "desc"
}
}
*/
if (isset($_GET_clone['order'])) {
foreach ($_GET_clone['order'] as $order_row) {
// Ensure the column index is an integer and exists in $columns
$col_idx = isset($order_row['column']) ? intval($order_row['column']) : -1;
if ($col_idx >= 0 && array_key_exists($col_idx, $columns)) {
// Only allow ASC or DESC for direction, case-insensitive
$dir = (isset($order_row['dir']) && strtolower($order_row['dir']) === 'desc') ? 'DESC' : 'ASC';
// Remove any non-alphanumeric and underscore/dot chars from column name to prevent SQL injection
$column = preg_replace('/[^\w\.]/', '', $columns[$col_idx]);
if (!empty($column)) {
$CI->db->order_by($column . ' ' . $dir);
}
}
}
}
}
}
}
if(!function_exists('actt_get_user_data')) {
/**
* Get user data
*
* @param int $user id
* @return array user data ('userdata'=>$userdata, 'avatar'=>get_avatar_url($user_id),'user_id'=>$user_id);
*/
function actt_get_user_data ($user_id='') {
static $users_cache = array();
$user = array();
if(isset($users_cache[$user_id])) {
$user = $users_cache [$user_id];
} else {
$userdata = get_userdata($user_id);
if($userdata) {
$user = array('userdata'=>$userdata, 'avatar'=>get_avatar_url($user_id, array("size"=>300)),'user_id'=>$user_id);
}
if($user) {
$users_cache [$user_id] = $user;
} else {
$users_cache [$user_id] = $user;
}
}
if(!empty($user)) {
return $user;
}
return NULL;
}
}