$value){ if($key==$section){ foreach($value as $item){ if($item==$method){ return true; } } } } return false; /*var_dump($key. ' '. $value[0]); echo '
';
        $rules = 
        echo '
'; dd();*/ } function getAllClass($controller = null){ try { helper('filesystem'); helper('directory'); if(strtolower(PHP_OS) == 'linux'){ $compatibility = '/'; }else{ $compatibility = '\\'; } if(empty($controller)){ $map = directory_map(APPPATH.'Controllers'); foreach ($map as $key=>$item) { if(!strpos(strtolower($key),$compatibility)){ $name = str_replace('.php', '', $item); if(!getIgnoreController($name)){ $controllers[] = [ 'name' => $name, 'path' => '', 'methods' => get_class_methods('App\Controllers\\'.$name) ]; } }else{ foreach ($item as $subitem){ $name = str_replace('.php', '', $subitem); if(!getIgnoreController($name)) { $controllers[] = [ 'name' => $name, 'path' => $key, 'methods' => get_class_methods('App\Controllers\\' . str_replace('/', '\\', $key) . $name) ]; } } } } }else{ $array = explode('/',$controller); $dir = count($array) > 1 ? $array[0] : ''; $name = count($array) > 1 ? '\\'.$array[1] : $array[0]; $controllers[] = [ 'name' => $name, 'path' => $dir, 'methods' => get_class_methods('App\Controllers\\'.str_replace('/','\\',$dir).$name) ]; } return $controllers??[]; } catch (Exception $e) { return []; } } // IMN function getCurrentLanguageFlag(){ try { $session = session(); if($session->get('lang') == 'en'){ return "fi-gb"; }else{ return "fi-es"; } } catch (Exception $e) { return "fi-es"; } } function getGravatarURL(int $size = 30) { return "https://gravatar.com/avatar/".md5(auth()->user()->getEmail())."?s=".$size; } if (!function_exists('gravatar_url')) { function gravatar_url(?string $email, int $size = 40): string { if (!$email) { return "https://www.gravatar.com/avatar/?s={$size}&d=mp"; } return "https://www.gravatar.com/avatar/" . md5(strtolower(trim($email))) . "?s={$size}&d=identicon"; } } function getAllClassFolder($folder = null){ try { helper('filesystem'); helper('directory'); if(!empty($folder)){ $map = directory_map(APPPATH.'Controllers'); foreach ($map as $key=>$item) { if(strtolower(PHP_OS) == 'linux'){ $compatibility = '/'; }else{ $compatibility = '\\'; } if(str_replace($compatibility,'',strtolower($key)) == strtolower($folder)){ foreach ($item as $subitem){ $name = str_replace('.php', '', $subitem); $controllers[] = [ 'name' => $name, 'path' => $key, 'methods' => get_class_methods('App\Controllers\\'.str_replace('/','\\',$key).$name) ]; } } } } return $controllers??[]; } catch (Exception $e) { return []; } } function getAllFolder(){ try { helper('filesystem'); helper('directory'); $map = directory_map(APPPATH.'Controllers',1); if(strtolower(PHP_OS) == 'linux'){ $compatibility = '/'; }else{ $compatibility = '\\'; } foreach ($map as $item) { if(strpos(strtolower($item),$compatibility)){ $folders[] = str_replace($compatibility,"",$item); } } return $folders??[]; } catch (Exception $e) { return []; } } function getIgnoreController($controller) { try { $loginAuthFilter = new \App\Filters\LoginAuthFilter(); foreach ($loginAuthFilter->whiteListController() as $item){ if($controller == $item){ return true; } } return false; } catch (Exception $e) { return []; } } function getIgnoreMethod($method) { try { $loginAuthFilter = new \App\Filters\LoginAuthFilter(); foreach ($loginAuthFilter->whiteListMethod() as $item){ if($method == $item){ return true; } } return false; } catch (Exception $e) { return []; } } function getDictionary($word=''){ try { $dictionary = [ 'index' => lang("App.permisos_index"), 'view' => lang("App.permisos_view"), 'add' => lang("App.permisos_add"), 'edit' => lang("App.permisos_editar"), 'delete' => lang("App.permisos_del"), 'store' => lang("App.permisos_save"), 'import' => lang("App.permisos_import"), 'export' => lang("App.permisos_export"), 'Profile' => lang("App.permisos_perfil"), 'Activity' => lang("App.permisos_actividad"), 'Settings' => lang("App.permisos_configuracion"), 'my' => lang("App.permisos_my"), 'Notification' => lang("App.permisos_notificacion"), 'Users' => lang("App.permisos_usuarios"), 'User' => lang("App.permisos_usuario"), 'Group' => lang("App.permisos_roles"), 'Logistica' => lang("App.permisos_logistica"), 'Tarifas' => lang("App.permisos_tarifas"), 'Tarifapreimpresion' => lang("App.permisos_tarifapreimpresion"), 'Tarifamanipulado' => lang("App.permisos_tarifamanipulado"), 'Tarifapapelcompra' => lang("App.permisos_tarifapapelcompra"), 'Tarifaacabado' => lang("App.permisos_tarifaacabado"), 'Tarifapapeldefecto' => lang("App.permisos_tarifapapeldefecto"), 'Tarifaenvio' => lang("App.permisos_tarifaenvio"), 'Tarifaimpresion' => lang("App.permisos_tarifaimpresion"), 'Configuracion' => lang("App.permisos_configuracion"), 'Tareaservicio' => lang("App.permisos_tareasservicio"), 'Formaspago' => lang("App.permisos_formaspago"), 'Papelgenerico' => lang("App.permisos_papelgenerico"), 'Tiposimpresion' => lang("App.permisos_tiposimpresion"), 'Trabajo' => lang("App.permisos_trabajo"), 'Maquina' => lang("App.permisos_maquina"), 'Tamaniolibros' => lang("App.permisos_tamaniolibros"), 'Imposiciones' => lang("App.permisos_imposiciones"), 'Seriefactura' => lang("App.permisos_seriefactura"), 'Tamanioformatos' => lang("App.permisos_tamanioformatos"), 'Serviciocliente' => lang("App.permisos_serviciocliente"), 'Calendario' => lang("App.permisos_calendario"), 'Correo' => lang("App.permisos_correo"), 'Paises' => lang("App.permisos_paises"), 'Tipologias' => lang("App.permisos_tipologias"), 'Presupuestos' => lang("App.permisos_presupuestos"), 'Presupuesto' => lang("App.permisos_presupuestos"), 'Presupuestomaquetacion' => lang("App.permisos_presupuestomaquetacion"), 'Catalogo' => lang("App.permisos_catalogo"), 'Cliente' => lang("App.permisos_clientes"), 'Tarifacliente' => lang("App.permisos_tarifacliente"), 'Proveedores' => lang("App.permisos_proveedores"), 'Proveedor' => lang("App.permisos_proveedores"), 'Informes' => lang("App.permisos_informes"), 'Informe' => lang("App.permisos_informes"), 'Facturacion' => lang("App.permisos_facturación"), 'Albaran' => lang("App.permisos_albaran"), 'Factura' => lang("App.permisos_facturas"), 'Pedidos' => lang("App.permisos_pedidos"), 'Pedido' => lang("App.permisos_pedidos"), 'Serviciosdigitalizacion' => lang("App.permisos_digitalización"), 'Digitalizacion' => lang("App.permisos_digitalización"), 'Produccion' => lang("App.permisos_produccion"), 'Ordentrabajomaquetacion' => lang("App.permisos_ordentrabajomaquetacion"), 'Ordenmaquina' => lang("App.permisos_ordenmaquina"), 'Pedidoproduccion' => lang("App.permisos_pedidoproduccion"), 'Ordentrabajo' => lang("App.permisos_ordentrabajo"), 'oauth' => lang("App.group_rules_label_oauth"), 'template' => lang("App.group_rules_label_template"), 'all' => lang("App.group_rules_label_all"), 'oauth_store' => lang("App.group_rules_label_oauth_store"), 'template_store' => lang("App.group_rules_label_template_store"), ]; return array_key_exists($word,$dictionary)?$dictionary[$word] : $word; } catch (Exception $e) { return ''; } } function getMenuControl(){ try { $getClass = getAllClass(); $getRules = json_decode(session()->get('rules')??'[]'); foreach ($getClass as $item){ foreach ($getRules as $key=>$value){ if($key == $item['name']){ $item['methods'] = $value; $data[] = $item; } } } return $data??[]; } catch (Exception $e) { session()->setFlashdata('alert', 'error_acesso'); return []; } } function allowMenuSection(array $array, array $keys, $method){ try{ $value = false; foreach($keys as $key){ if (count($temp=getArrayItem($array,'name',$key)) > 0){ if (count(getArrayItem($temp,'methods','index',true)) > 0){ $value = true; } } } return $value; } catch (Exception $e) { return []; } } function getArrayItem(array $array, $key, $word, $isArray=false) { try { foreach ($array as $item){ if ($isArray){ foreach ($item[$key] as $subitem){ if($subitem == $word){ $data[]=$subitem; } } }else{ if($item[$key] == $word){ $data[]=$item; } } } return $data??[]; } catch (Exception $e) { return []; } } //////////////////////////////////////////////////// /// Notification Messages //////////////////////////////////////////////////// function formAlert() { $session = session(); $alert = $session->getFlashdata('error'); $validation = \Config\Services::validation()->listErrors(); if (!empty($alert)){ return '
'. ' '. $validation . '
'; } } function sweetAlert() { try { $session = session(); $alert = $session->getFlashdata('sweet'); if (count((array)$alert) == 2){ return ""; } if (count((array)$alert) == 4){ return ""; } }catch (Exception $ex){ } } function toastAlert() { try { $session = session(); $alert = $session->getFlashdata('toast'); if (count((array)$alert) == 3) { return ""; } }catch (Exception $ex){ } } //////////////////////////////////////////////////// /// Security //////////////////////////////////////////////////// function generatePassword($length = 8) { $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_!@#$%&*()-+{[]}'; $count = mb_strlen($chars); for ($i = 0, $result = ''; $i < $length; $i++) { $index = Rand(0, $count - 1); $result .= mb_substr($chars, $index, 1); } return $result; } //////////////////////////////////////////////////// /// Others //////////////////////////////////////////////////// function now_db() { $unixdatetime = time(); return strftime("%Y-%m-%d %H:%M:%S", $unixdatetime); } function escape_value($value='') { $value = strip_tags(htmlentities($value)); return filter_var($value, FILTER_SANITIZE_STRING); } function escape_only($value='') { $value = strip_tags(htmlentities($value), '

'); return filter_var($value, FILTER_SANITIZE_SPECIAL_CHARS); } function unescape($value='') { //return html_entity_decode($value,null,'UTF-8');; return html_entity_decode($value,ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401,'UTF-8'); } function redirect_to( $location = NULL ) { if ($location != NULL) { header("Location: {$location}"); exit; } } function momentDateJS() { $format = session()->get('settings')['default_date_format']; switch ($format) { case "Y-m-d": return "YYYY-MM-DD"; case "d-m-Y": return "DD-MM-YYYY"; case "d/m/Y": return "DD/MM/YYYY"; case "m-d-Y": return "MM-DD-YYYY"; case "m/d/Y": return "MM/DD/YYYY"; default: return ""; } } function momentDateTimeJS() { $format = session()->get('settings')['default_date_format']; switch ($format) { case "Y-m-d": return "YYYY-MM-DD HH:mm:ss"; case "d-m-Y": return "DD-MM-YYYY HH:mm:ss"; case "d/m/Y": return "DD/MM/YYYY HH:mm:ss"; case "m-d-Y": return "MM-DD-YYYY HH:mm:ss"; case "m/d/Y": return "MM/DD/YYYY HH:mm:ss"; default: return ""; } } function dateFormatWeb($date) { $format = session()->get('settings')['default_date_format']; switch ($format) { case "Y-m-d": return $date; case "d-m-Y": case "d/m/Y": case "m-d-Y": case "m/d/Y": $phpDate = strtotime($date); if(strlen($date) > 10){ return date( $format.' H:i:s', $phpDate); }else{ return date( $format, $phpDate); } default: return null; } } function dateFormatMysql($date) { $format = session()->get('settings')['default_date_format']; switch ($format) { case "Y-m-d": return $date; case "d-m-Y": $dateTimeSplit = explode(' ',$date); $dateSplit = explode('-',$dateTimeSplit[0]); if(count($dateTimeSplit) > 1){ return $dateSplit[2].'-'.$dateSplit[1].'-'.$dateSplit[0].' '. $dateTimeSplit[1]; }else{ return $dateSplit[2].'-'.$dateSplit[1].'-'.$dateSplit[0]; } case "d/m/Y": $dateTimeSplit = explode(' ',$date); $dateSplit = explode('/',$dateTimeSplit[0]); if(count($dateTimeSplit) > 1){ return $dateSplit[2].'-'.$dateSplit[1].'-'.$dateSplit[0].' '. $dateTimeSplit[1]; }else{ return $dateSplit[2].'-'.$dateSplit[1].'-'.$dateSplit[0]; } case "m-d-Y": $dateTimeSplit = explode(' ',$date); $dateSplit = explode('-',$dateTimeSplit[0]); if(count($dateTimeSplit) > 1){ return $dateSplit[2].'-'.$dateSplit[0].'-'.$dateSplit[1].' '. $dateTimeSplit[1]; }else{ return $dateSplit[2].'-'.$dateSplit[0].'-'.$dateSplit[1]; } case "m/d/Y": $dateTimeSplit = explode(' ',$date); $dateSplit = explode('/',$dateTimeSplit[0]); if(count($dateTimeSplit) > 1){ return $dateSplit[2].'-'.$dateSplit[0].'-'.$dateSplit[1].' '. $dateTimeSplit[1]; }else { return $dateSplit[2] . '-' . $dateSplit[0] . '-' . $dateSplit[1]; } default: return null; } } function langJS() { $lang = session()->get('lang')??'en'; switch ($lang) { case "pt": return "pt-br"; default: return $lang; } } function socialBG() { return [ "facebook" => "bg-facebook", "linkedin" => "bg-linkedin", "google" => "bg-google-plus", "youtube" => "bg-youtube", "twitter" => "bg-twitter", "instagram" => "bg-instagram", "tiktok" => "bg-tiktok", "whatsapp" => "bg-whatsapp", "website" => "bg-website", "api" => "bg-api", "github" => "bg-github", "slack" => "bg-slack", "spotify" => "btn-spotify", "reddit" => "btn-reddit", "discord" => "btn-discord", "dribbble" => "btn-dribbble", "dropbox" => "btn-dropbox", "gitlab" => "btn-gitlab", "tumblr" => "btn-tumblr", "strava" => "btn-strava", "twitch" => "btn-twitch", "vkontakte" => "btn-vk", "wordpress" => "btn-wordpress", "yahoo" => "btn-yahoo", "bitbucket" => "btn-bitbucket", "wechat" => "btn-wechat", ]; } function keywordEmail() { return [ 'user_first_name', 'user_last_name', 'user_date_birth', 'user_address', 'user_city', 'user_state', 'user_country', 'user_zip_code', 'user_mobile', 'user_email', 'user_picture' ]; } function templateSelect($templates=[],$name='',$type='') { foreach ($templates as $item){ if($item['type'] == $type){ if($item['name'] == $name){ return $item; } } } return null; } function get_filter_datatables_columns($request){ $columnSearch = array(); if ( isset( $request['columns'] ) ) { for ( $i=0, $ien=count($request['columns']) ; $i<$ien ; $i++ ) { $requestColumn = $request['columns'][$i]; $str = $requestColumn['search']['value']; if ( $requestColumn['searchable'] == 'true' && $str != '' ) { array_push($columnSearch, [$i, $requestColumn['data'], $str]); } } } return $columnSearch; } // Devuelve true si los intervalos (a1,a2) (b1,b2) se solapan // https://stackoverflow.com/questions/3269434/whats-the-most-efficient-way-to-test-if-two-ranges-overlap function check_overlap($a1, $a2, $b1, $b2){ if (max($a2, $b2) - min($a1, $b1) <= ($a2 - $a1) + ($b2 - $b1)) return true; return false; } function check_overlap_with_extremos($a1, $a2, $b1, $b2){ if (max($a2, $b2) - min($a1, $b1) < ($a2 - $a1) + ($b2 - $b1)) return true; return false; } function version() { return "1.2.1"; }