|
Server : LiteSpeed System : Linux premium92.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 User : rbnsfqys ( 805) PHP Version : 8.1.33 Disable Function : NONE Directory : /home/rbnsfqys/public_html/wp-content/plugins/latepoint/lib/helpers/ |
<?php
class OsRouterHelper {
public static function build_pre_route_link($route, $params = array()){
return self::build_link($route, array_merge(array('pre_route'=> 1), $params));
}
public static function add_extension($string = '', $extension = '.php'){
if(substr($string, -strlen($extension))===$extension) return $string;
else return $string.$extension;
}
public static function build_link($route, $params = array()){
$params_query = '';
if($params){
$params_query = '&'.http_build_query($params);
}
if(is_array($route) && (count($route) == 2)) $route = OsRouterHelper::build_route_name($route[0], $route[1]);
return admin_url('admin.php?page=latepoint&route_name='.$route.$params_query);
}
public static function build_admin_post_link($route, $params = array()){
$params_query = '';
if($params){
$params_query = '&'.http_build_query($params);
}
if(is_array($route) && (count($route) == 2)) $route = OsRouterHelper::build_route_name($route[0], $route[1]);
return admin_url('admin-post.php?action=latepoint_route_call&route_name='.$route.$params_query);
}
public static function link_has_route($route_name, $link){
$link_params = wp_parse_url($link);
if(empty($link_params['query'])) return false;
parse_str($link_params['query'], $link_query_params);
return ($link_query_params && isset($link_query_params['route_name']) && ($link_query_params['route_name'] == $route_name));
}
public static function build_front_link($route, $params = array()){
$params_query = '';
if($params){
$params_query = '&'.http_build_query($params);
}
if(is_array($route) && (count($route) == 2)) $route = OsRouterHelper::build_route_name($route[0], $route[1]);
return site_url('index.php?latepoint_is_custom_route=true&route_name='.$route.$params_query);
}
public static function build_route_name($controller, $action){
return $controller.'__'.$action;
}
public static function convert_route_name_to_controller_and_action($route_name): array{
list($controller_name, $action) = explode('__', $route_name);
if(empty($controller_name) || empty($action)) return [];
$controller_name = str_replace('_', '', ucwords($controller_name, '_'));
$controller_class_name = 'Os'.$controller_name.'Controller';
if(class_exists($controller_class_name)) {
$controller_obj = new $controller_class_name();
if(method_exists($controller_obj, $action)) {
// check if action is valid
return ['controller' => $controller_obj, 'action' => $action];
}else{
return [];
}
}else{
return [];
}
}
public static function call_by_route_name($route_name, $return_format = 'html'){
OsDebugHelper::log_route($route_name, $return_format);
$route_data = self::convert_route_name_to_controller_and_action($route_name);
if(!empty($route_data)){
$controller_obj = $route_data['controller'];
$action = $route_data['action'];
if($return_format) $controller_obj->set_return_format($return_format);
// check if user is allowed to access this route
if($controller_obj->can_current_user_access_action($action)){
$controller_obj->route_name = $route_name;
$controller_obj->$action();
}else{
if($controller_obj->get_return_format() == 'json'){
$controller_obj->send_json( ['status' => LATEPOINT_STATUS_ERROR, 'message' => __('Not Authorized', 'latepoint')] );
}else{
echo '<div class="latepoint-not-authorized"><div class="not-authorized-message">'.esc_html__('Not Authorized', 'latepoint').'</div></div>';
}
}
}else{
esc_html_e('Page Not Found', 'latepoint');
}
}
public static function get_request_param($name, $default = false){
if(isset($_GET[$name])){
$param = sanitize_text_field(wp_unslash($_GET[$name]));
}elseif(isset($_POST[$name])){
$param = sanitize_text_field(wp_unslash($_POST[$name]));
}else{
$param = $default;
}
return $param;
}
}