motores/ultimo/funcionesfunciones.php

Biblioteca de funciones genéricas, usadas en diversos lugares del motor.

Classes

ExcepcionXGAPUnserialize Indica un error de deserialización de un valor.

Constants

PREFIJO_PARAMETRO_XGAP

PREFIJO_PARAMETRO_XGAP

PREFIJO_PARAM_EXCLUIDO_POR_DEFECTO

PREFIJO_PARAM_EXCLUIDO_POR_DEFECTO

Prefijo para nombres de parámetros que deben quedar exluidos por defecto.

Se suman a los especificados explícitamente en PARAMS_EXCLUIDOS_POR_DEFECTO.

PARAMS_EXCLUIDOS_POR_DEFECTO

PARAMS_EXCLUIDOS_POR_DEFECTO

PARAMS_EXCLUIDOS_POR_DEFECTO_LISTADO_SELECCION

PARAMS_EXCLUIDOS_POR_DEFECTO_LISTADO_SELECCION

SERIALIZED_FALSE

SERIALIZED_FALSE

Valor booleano false serializado.

XGAP_GET_REMOTE_OPT_TIMEOUT

XGAP_GET_REMOTE_OPT_TIMEOUT

[float] Tiempo máximo en segundos que puede tomar unas operación de obtención de archivo remoto.

XGAP_GET_REMOTE_OPT_EXCLUDE_CURL

XGAP_GET_REMOTE_OPT_EXCLUDE_CURL

[boolean] Si es TRUE, evita que la operación se realice usando cURL.

XGAP_GET_REMOTE_OPT_EXCLUDE_FOPEN

XGAP_GET_REMOTE_OPT_EXCLUDE_FOPEN

[boolean] Si es TRUE, evita que la operación se realice usando fopen.

Functions

esParametroExcluido()

esParametroExcluido(string  $param, string  $excluidos) : boolean

Parameters

string $param

nombre del parámetro

string $excluidos

lista de parámetros excluidos separados por blancos

Returns

boolean

crearDireccionPagina()

crearDireccionPagina(string  $pagina, array  $parametros = array(), boolean  $escapar_caracteres = true, string  $relativa_a = null, boolean  $convertir_booleanos = false, boolean  $es_interno = true) : string

Crea la dirección de una página para usar en links.

Si la dirección es interna y la página actual es simple, la dirección creada incluye el parámetro

PARAMETRO_ESTRUCTURA_PAGINA_SIMPLE = 'true', a menos que éste ya esté incluido en $parametros.

Parameters

string $pagina

nombre de la pagina; por ejemplo 'index.php'

array $parametros

arreglo de parámetros GET a incluir en la dirección; sus valores también pueden ser arrays;
por ejemplo, si $parametros = array('k1'=>'v_1','k2'=>array('v 2a','v 2b')), entonces el resultado es: $pagina?k1=v_1&k2%5B1%5D=v+2a&k2%5B1%5D=v+2b (es decir, $pagina?k1=v_1&k2[]=v 2a&k2[]=v 2b).

boolean $escapar_caracteres

¿se deben traducir a entidades HTML los caracteres que tengan una traducción?

string $relativa_a

ruta respecto a la cual es relativa $pagina; por ejemplo, APP_ROOT

boolean $convertir_booleanos

¿se deben convertir los valores booleanos en $parametros en las cadenas 'true' y 'false'?

boolean $es_interno

¿la dirección lleva a una página interna a la aplicación?

Returns

string

agregarParametrosAUrl()

agregarParametrosAUrl(string  $url, array  $parametros = array(), boolean  $escapar_caracteres = true) : string

Agrega parámetros al final de un URL.

Parameters

string $url
array $parametros
boolean $escapar_caracteres

¿se deben traducir a entidades HTML los caracteres que tengan una traducción?

Returns

string

info_tipos_pagina_xgap()

info_tipos_pagina_xgap() : array

Retorna un array con información sobre los tipos de página definidos por XGAP.

La estructura que retorna tiene la forma:

array( $nombre => array( // clave: [string] Nombre del tipo 'descripcion' => $descripcion, // [string] Descripción del tipo 'sufijo' => $sufijo, // [string] Sufijo de los archivos generados para este tipo 'es-html' => $es_html // [boolean] ¿la página genera salida HTML? 'acciones' => array( // Lista de acciones definidas en el tipo $nombre_accion => array( 'descripcion' => $descripcion_accion // [string] Descripción de la acción ), ... ) ), ... )

Throws

\ExcepcionXGAP

si no se puede cargar la información

Returns

array

tipo_pagina()

tipo_pagina(string  $pagina) : string

Devuelve el tipo de una página. El tipo es el valor de la constante <var>XGAP_TIPO_PAGINA</var> en esa página.

Parameters

string $pagina

dirección de la página; puede o no incluir ruta y/o cadena de consulta

Throws

\ExcepcionXGAP

si hay un error al leer el archivo descriptor de seguridad (XGAP_ARCHIVO_DESCRIPCION_SEGURIDAD)

Returns

string —

el tipo de $pagina; si no corresponde a un tipo conocido, devuelve null

urlCompletoServidor()

urlCompletoServidor(string  $servidor = null, string  $esquema = null, integer  $puerto = null, boolean  $incluir_esquema = true) : string

Retorna el URL completo de un servidor, en la forma `$esquema://$servidor:$puerto`.

El esquema sólo se incluye si $incluir_esquema. El puerto sólo se incluye si no es el estándar para el esquema.

Ejemplos:

urlCompletoServidor('localhost', 'http', '8000'); // == http://localhost:8000 urlCompletoServidor('www.servidor.net', 'https', '443', true); // == https://www.servidor.net urlCompletoServidor('www.servidor.net', 'https', '443', false); // == www.servidor.net

Parameters

string $servidor

nombre del servidor, por ejemplo 'localhost' o 'www.servidor.net'; si es nulo o la cadena vacía, se usa el {@link Request::host() servidor de la aplicación}

string $esquema

el esquema a usar: 'http' o 'https'; si es vacío, se usa el {@link Request::esquema() esquema del request}; notar que aunque no se incluya en el resultado, se usa para determinar si el puerto es el estándar para el esquema

integer $puerto

número de puerto; es vacío o no es un número entero positivo, se usa el {@link Request::puerto() puerto} del servidor de la aplicación

boolean $incluir_esquema

¿se debe incluir el esquema en el resultado?

Returns

string

urlCompletoPagina()

urlCompletoPagina(string  $pagina, string  $servidor = null, string  $protocolo = 'http://', integer  $puerto = null) : string

Devuelve el URL completo de <var>$pagina</var>, incluyendo el servidor y opcionalmente el protocolo y el puerto.

Si $pagina es una dirección relativa, la convierte en absoluta asumiendo que es relativa a la página actual.

Parameters

string $pagina

ruta de la página

string $servidor

nombre del servidor, por ejemplo 'localhost' o 'www.servidor.net'; si es nulo o la cadena vacía, se usa el {@link Request::host() servidor de la aplicación}

string $protocolo

protocolo del url; si es vacío o nulo, no se incluye

integer $puerto

número de puerto; es vacío o no es un número entero positivo, se usa el {@link Request::puerto() puerto} del servidor de la aplicación

Returns

string

esDireccionInterna()

esDireccionInterna(String  $direccion) : boolean

Permite comprobar si una dirección dada es interna a la aplicación.

Las reglas que sigue son:

  1. Si la dirección contiene el esquema (por ejemplo, 'http://...') se considera externa. Se detecta si $direccion contiene un caracter ':'.
  2. Si la dirección no contiene un path (es sólo un nombre de página), se considera interna. Se detecta por la ausencia de caracter '/'.
  3. Si la dirección comienza con el directorio raíz de la aplicación ([Configuracion::raizAplicacion()](../classes/Configuracion.html#method_raizAplicacion)), se considera interna.

Parameters

String $direccion

Returns

boolean

registrarParametros()

registrarParametros() 

parametrosACondicion()

parametrosACondicion() : string

Genera una condición SQL con ANDs de todos los {@link esParametroXgap() parámetros XGAP} en <var>$_REQUEST</var>.

Returns

string

esParametroXgap()

esParametroXgap(string  $str) : boolean

Permite comprobar si <var>$str</var> corresponde al nombre de un parámetro de XGAP.

Esto ocurre si $str empieza en PREFIJO_PARAMETRO_XGAP.

Parameters

string $str

nombre de parámetro a comprobar

Returns

boolean

existeParametroXgapEnRequest()

existeParametroXgapEnRequest(string  $nombre) : boolean

Permite comprobar si en el request hay un parámetro de XGAP de nombre <var>$nombre</var>.

Parameters

string $nombre

Returns

boolean

parametrosParaPasar()

parametrosParaPasar(string  $excluidos = PARAMS_EXCLUIDOS_POR_DEFECTO, boolean  $quitar_entidad = false) : array

Genera y devuelve un arreglo con los parámetros en <var>$_REQUEST</var>, excluyendo los indicados en <var>$excluidos</var> y los que contienen 'PHP' en el nombre.

Parameters

string $excluidos

lista separada por espacios de los nombres de los parámetros a excluir

boolean $quitar_entidad

Returns

array

recuperarValorSinPuntos()

recuperarValorSinPuntos(string  $valor) : string

Dado un valor numérico representado como un string, retorna la parte entera.

Parameters

string $valor

Returns

string

recuperarParametros()

recuperarParametros(  $excluidos = PARAMS_EXCLUIDOS_POR_DEFECTO) 

Alias de parametrosParaPasar().

Parameters

$excluidos

prepararParametrosPagina()

prepararParametrosPagina(  $filtros,   $filtrosPersonalizados,   $parametros,   $urlRetorno) : array

Devuelve un arreglo con todos los parámetros consolidados.

Parameters

$filtros
$filtrosPersonalizados
$parametros
$urlRetorno

Returns

array

recuperarParametrosComoOcultos()

recuperarParametrosComoOcultos(string  $excluidos = PARAMS_EXCLUIDOS_POR_DEFECTO_LISTADO_SELECCION) : string

Retorna un string con código HTML que define campos hidden para todas las variables que están en $_REQUEST cuyo nombre no aparece en $excluidos y no contiene la cadena 'PHP'.

Parameters

string $excluidos

lista separada por espacios de los nombres de los parámetros a excluir

Returns

string

formatear_rtf()

formatear_rtf(string  $cadena) : string

Reemplaza entidades HTML en <var>$cadena</var> por los caracteres correspondientes.

Parameters

string $cadena

Returns

string

comparacion_fecha()

comparacion_fecha(string  $fecha1, string  $fecha2) : integer

Retorna la diferencia entre las dos fechas de entrada.

Ambas fechas deben darse en formato 'dd-mm-aaaa'.

Parameters

string $fecha1
string $fecha2

Returns

integer —

un timestamp de Unix

mkpath()

mkpath(string  $path) 

Intenta crear un directorio con $path.

Si $path contiene varios directorios, crea cada uno ellos.

Parameters

string $path

nombre_archivo_saneado()

nombre_archivo_saneado(string  $archivo) : string

Ajusta un nombre de archivo para que sólo contenga caracteres dentro del conjunto [a-zA-Z0-9._-].

Translitera algunos caracteres para llevarlos a la representación más similar dentro del conjunto aceptado; por ejemplo, lleva las vocales acentuadas a la vocal sin acento correspondiente, 'ñ' a 'n' y 'ç' a 'c'. Convierte en '_' los caracteres restantes.

Además se asegura que no empiece ni termine en puntos ni espacios.

Parameters

string $archivo

el nombre de archivo a sanear; debe ser sólo el nombre sin ruta (caso contrario, los separadores de directorio se van a transformar en '_')

Returns

string —

el nombre saneado

preparar_salida()

preparar_salida(  $str,   $tags_permitidos = array(),   $compactar_blancos = null,   $traducir_html = false,   $traducir_extras = true) 

Parameters

$str
$tags_permitidos
$compactar_blancos
$traducir_html
$traducir_extras

preparar_array_salida()

preparar_array_salida(array  $str_arr, array  $tags_permitidos = array(), string  $compactar_blancos = null, boolean  $traducir_html = false, boolean  $traducir_extras = true) 

Prepara un array de strings para salida a una página, de la misma manera que {@link preparar_salida()} lo hace con strings individuales.

$str_arr es el array a preparar, que queda modificado luego del llamado. Los parámetros restantes son iguales que los correspondientes en preparar_salida().

Parameters

array $str_arr

strings a preparar

array $tags_permitidos

un arreglo que indica los nombres de los tags HTML que se deben dejar intactos en $str; un arreglo vacío indica que se deben eliminar todos los tags; un valor nulo indica que se deben dejar pasar todos; por ejemplo: array('img','a','br') deja pasar imágenes, links y saltos de línea

string $compactar_blancos

especifica un string por el que se deben reemplazar las secuencias de blancos consecutivos; un valor nulo indica que los blancos se deben dejar intactos; por ejemplo: $str = " a b\t\t\tc\nd", $compactar_blancos = ' ' --> resultado = " a b c d"

boolean $traducir_html

¿se deben traducir a entidades los caracteres contemplados por {@link htmlspecialchars()}? Si $str contiene código HTML, este parámetro debe ser false

boolean $traducir_extras

¿se deben traducir a entidades los caracteres contemplados por {@link htmlentities()}, exceptuando los contemplados por {@link htmlspecialchars()}?

ceroCompletion()

ceroCompletion(  $numero,   $total) 

Parameters

$numero
$total

es_ip_valido()

es_ip_valido(string  $ip) : boolean

Permite determinar si un string representa un IP válido.

Funciona para direcciones IPv4 e IPv6 si PHP >= 5.2.0, o sólo para IPv4 con versiones anteriores de PHP.

Parameters

string $ip

Returns

boolean

preparar_parametros_imagen()

preparar_parametros_imagen(string  $params,   $img,   $ancho,   $alto,   $x,   $y) 

Extrae los parámetros para una imagen de un string dado en un formato espeecífico.

Parsea los parámetros dados en $params y los devuelve en $img, $ancho, $alto, $x y $y.

Los parámetros que no estén definidos o sean inválidos quedan con valor null.

El formato esperado de $params es:

{nombreimagen}&{ancho}x{alto}@{x}x{y}. Cualquier parámetro puede faltar, excepto el nombre de la imagen. Ejemplos: - 'img/milogo.png' --> $img='img/milogo.png', $ancho=$alto=$x=$y=null
  • 'img/milogo.png&100x30' --> $img='img/milogo.png', $ancho=100, $alto=30, $x=$y=null
  • 'img/milogo.png&100x@15' --> $img='img/milogo.png', $ancho=100, $x=15, $alto=$y=null
  • 'img/milogo.png&100x30@15x20' --> $img='img/milogo.png', $ancho=100, $alto=30, $x=15, $y=20
  • 'img/milogo.png&x@15' --> $img='img/milogo.png', $x=15, $ancho=$alto=$y=null

Parameters

string $params

parámetros de la imagen

$img
$ancho
$alto
$x
$y

unserialized_ok()

unserialized_ok(string  $serialized, string  $unserialized) : boolean

Permite determinar si un valor serializado se corresponde con uno deserializado.

Parameters

string $serialized

valor serializado

string $unserialized

valor deserializado

Returns

boolean

unserialize_with_exception()

unserialize_with_exception(string  $serialized) : mixed

Intenta deserializar un valor con {@link unserialize() unserialize()} y dispara una excepción si se produce un error.

Parameters

string $serialized

valor a deserializar

Throws

\ExcepcionXGAPUnserialize

si la deserialización falla

Returns

mixed —

el resultado de la deserialización

_find_classes_in_dir()

_find_classes_in_dir(  $dir,   $recursive,   $php_file_extensions,   $exclude_filenames) 

Parameters

$dir
$recursive
$php_file_extensions
$exclude_filenames

find_classes_in_dir()

find_classes_in_dir(string  $dir, boolean  $recursive = TRUE, array  $php_file_extensions = array('.php'), array  $exclude_filenames = array('CVS', '.svn', '.git', '.bzr', '.hg', '_darcs', 'RCS', 'SCCS')) : array

Retorna una lista con todos los nombres de clases, interfaces y traits definidos dentro de un directorio.

El resultado es un array con la estructura:

array( 'class' => array( array( 'name' => '{nombre de la clase}' 'file' => '{nombre del archivo que la define}' ), // ... ), 'interface' => array( array( 'name' => '{nombre de la interfaz}' 'file' => '{nombre del archivo que la define}' ), // ... ), 'trait' => array( array( 'name' => '{nombre del trait}' 'file' => '{nombre del archivo que lo define}' ), // ... ) )

Parameters

string $dir

directorio a buscar

boolean $recursive

¿buscar en subdirectorios?

array $php_file_extensions

extensiones de archivos que pueden contener código PHP

array $exclude_filenames

nombres de archivo a excluir en la búsqueda, por coincidencia exacta

Throws

\InvalidArgumentException

si $dir no es un directorio

Returns

array

xgap_get_remote_file_contents()

xgap_get_remote_file_contents(string  $url,   $offset = -1, array  $options = array()) : mixed

Retorna el contenido de un archivo remoto.

Requiere que esté habilitada la extensión cURL o que el parámetro de configuración de PHP allow_url_fopen sea true.

Parameters

string $url

la dirección del archivo a obtener

$offset
array $options

array de opciones XGAP_GET_REMOTEOPT*

Throws

\ExcepcionXGAP

si hay un error durante la operación. El {@link ExcepcionXGAP::getCode() código} es 0 si el error se produce al obtener el archivo, o 1 si no hay un método disponible para realizar la obtención.

Returns

mixed