Kanecode proporciona una serie de funciones internas que se pueden utilizar en filtros, valores por defecto, editor de expresiones, etc. Estas funciones dan acceso a un conjunto de funcionalidades o variables internas, y están agrupadas en objetos abstractos según las funcionalidades que proporcionan. La sintaxis para acceder a estos objetos es:

#[Nombre.funcion(p1,p2)] o #[Nombre.atributo]

Por ejemplo

#[eBDUser.Username]

Los objetos disponibles son:

eBDUser

Atributos:

  • Username -> string Devuelve el usuario actual

  • Name -> string Devuelve el nombre del usuario actual

  • Email -> string Devuelve el email del usuario actual

  • IsAdmin -> bool Devuelve S o N según sea o no administrador

  • IsAnonymous -> bool Devuelve S o N según sea el usuario anónimo o no

  • IsRemote -> bool Devuelve S o N dependiendo si se ha logado a través de un acceso remoto

  • SessionId -> string Devuelve el string identificador de la sesión

  • RemoteUserSource -> string Devuelve el nombre del Origen de Usuarios Remotos con el que se ha validado el usuario actual

  • NTLMUser -> string Devuelve el nombre de usuario autenticado con

  • NTLM NTLMDomain -> string Devuelve el dominio usado para autenticar con

  • NTLM NTLMEnabled -> bool Es cierto si se ha autenticado el usuario con NTLM

  • Rejected -> bool Es cierto si se ha intentado autenticar con NTLM pero el usuario ha sido rechazado

Métodos:

  • in_group(name) -> bool Recibe como parámetro el nombre de un grupo y devuelve 1 ó 0 dependiendo si el usuario está o no en el grupo

  • set_attribute(name,value) -> Permite asignar el valor a un atributo del usuario (definido por el desarrollador)

  • get_attribute(name) -> string Devuelve el valor del atributo del usuario

eBDServer

Atributos

  • InstanceName -> string Devuelve el nombre de la instancia de eBD

  • InstancePath -> string Devuelve el path absoluto al "userdata" de la instancia actual.

Métodos:

  • get_label(name) -> string Devuelve el valor de la etiqueta name configurada en el servidor (véase archivo ebd.xml en el manual del Administrador)

eBDSession

Atributos

  • Id -> int Devuelve el identificador de la sesión

  • Expired -> bool Indica si la sesión acaba de expirar o no

  • ExpirationInterval -> int Permite obtener el tiempo de expiracion de la sesion (en segundos)

Métodos:

  • get_temporal(name) -> string Devuelve el valor de una variable temporal

  • set_temporal(name, string) -> int Modifica el valor de una variable temporal

  • get_global(name) -> string Devuelve el valor de una variable global

  • set_global(name, string) -> int Modifica el valor de una variable global

eBDProject

Atributos:

  • Name -> string Devuelve el nombre del proyecto

  • Id -> int Devuelve el identificador del proyecto

  • IsPublic -> bool Devuelve S o N dependiendo de si el proyecto es público o no

  • get_env -> string Permite acceder a las variables de entorno creadas en el proyecto.

eBDRequest

Atributos:

  • Language -> string Devuelve el ‘iso_lang’ del navegador del usuario

  • Url -> string Devuelve la URL actual sin el dominio, sólo carpetas y parámetros

  • Referer -> string Devuelve la URL completa de la página anterior

  • RequestMethod -> string Devuelve el método de la request actual

  • RequestProtocol -> string Devuelve el protocolo de la request actual

  • RemoteIp -> string Devuelve la IP del usuario

  • RemoteHost -> string Devuelve el dominio del usuario, si el servidor reconoce la IP

  • Https -> bool Indica si la request se ha ejecutado usando HTTPS o no

  • WebDAV -> bool Indica si la request es de tipo WebDAV o no

  • Host -> string Devuelve el dominio introducido por el usuario

  • Port -> string Devuelve el puerto que se está usando para la conexión HTTP

  • RemoteUser -> string Devuelve el usuario con el que se esta conectando

  • UserAgent -> string Devuelve es UserAgent del usuario, ‘navegador’

  • ParamX -> string Devuelve el valor del parámetro X indicado

  • Filename -> string Devuelve el nombre del fichero que solicita la request actual

  • GeoIPCountry -> string Devuelve el nombre del país desde el que está conectando el usuario (según su IP de origen)

  • GeoIPCountryCode -> string Devuelve el código ISO del país desde el que está conectando el usuario (según su IP de origen)

Métodos:

  • get_param(name) -> string Devuelve el valor del parámetro especificado

  • get_params -> hash_of_string Devuelve un hash con todos los parámetros de la página

  • get_header(name) -> string Devuelve el valor de la cabecera HTTP especificada

  • get_headers -> hash_of_string Devuelve un hash con todas las cabeceras HTTP recibidas

  • get_cookie(name) -> string Devuelve el valor de la cookie especificada

  • get_cookies -> hash_of_string Devuelve un hash con todas las cookies recibidas

  • get_ssl_var(name) -> string Devuelve el valor de la variable de entorno SSL especificada.

Las variables disponibles son:

  • get_content ->string Devuelve el valor del contenido de la request http sin decodificar (raw data)

  • set_arg(param_name,value) -> Modifica el valor del parámetro especificado

  • set_param(param_name,value) -> Permite modificar el valor de un parámetro recibido en la request

eBDResponse

Métodos:

  • header(name,value) -> int Modifica el valor de una cabecera HTTP

  • status(int) -> int Modifica el valor de la respuesta HTTP (status code)

  • type(value) -> int Modifica el valor del la cabecera “Content-Type”

  • add_styles_text(text) -> int Añade el texto dentro del tag head

  • add_style(url) -> int Añade ficheros CSS a la cabecera.

  • add_script(url) -> int Añade un fichero javascript a la cabecera de la respuesta, controlando que no se repita.

  • add_scripts_text(text) -> int Añade el texto dentro del tag head

  • get_head_content() -> string Devuelve el contenido (tags de estilos y scripts) del head generado automáticamente al ejecutar secciones

  • set_cookie(name,value,expires,path,domain) -> int Añade la cabecera "Set-Cookie" en la respuesta HTTP.
    Los parámetros "expires","path2 y "domain" son opcionales.

Algunos ejemplos de posibles valores del parámetro "expires":

+30s (dentro de 30 segundos)
+10m (dentro de 10 minutos)
+1h (dentro de 1 hora)
-1d (hace 1 hora!)
now (inmediatamente)
+3M (dentro de 3 meses)
+10y (dentro de 10 años)
Thursday, 25-Apr-1999 00:40:33 GMT (a la fecha/hora indicada)

eBDZone

Atributos:

  • Name -> string Devuelve el nombre de la zona actual

  • Id -> int Devuelve el identificador de la zona actual

  • IsInitial -> bool Devuelve S o N según la zona actual sea la inicial o no

eBDPage

Atributos:

  • Name -> string Devuelve el nombre de la página actual

  • Id -> int Devuelve el identificador de la página actual

  • Title -> string Devuelve el título de la página actual

eBDSection

Atributos:

  • Name -> string Devuelve el nombre de la sección actual

  • Id -> id Devuelve el identificador de la sección actual

  • Title -> string Devuelve el título de la sección actual

  • CurrentRecord -> int Devuelve el número de registro que se esta tratando en ese momento

  • TotalRecords -> int Devuelve el número total de registros de la sección

  • ShowRecords -> int Devuelve el número de registros que se están mostrando de la sección

  • UniqueID ->int Devuelve un identificador numérico único para la ejecución de la sección actual. Los widgets envían automáticamente este valor en la URL de sus eventos, por lo que al ejecutar esta función en un evento de widget recibiremos el mismo valor que tenía antes de la ejecución del código principal.

eBDDate

Atributos:

  • CurrentYear -> int Devuelve el año actual

  • CurrentMonth -> int Devuelve el mes actual

  • CurrentDay -> int Devuelve el día actual

  • CurrentDate -> string Devuelve la fecha actual en formato del locale actual

  • CurrentTime -> string Devuelve la hora actual

  • CurrentMilis ->string Devuelve la fecha Epoch en milisegundos.

Métodos:

  • date_add(string,int) -> string Suma en la fecha enviada el número de días especificado

  • date_sub(string,string) -> int Devuelve la diferencia de días entre las dos fechas, si la primera fecha es antes en el tiempo será positivo, sino negativo y si son iguales un 0

  • week_number(string) -> int Devuelve el número de la semana de la fecha indicada

  • day_of_week(string) -> int Devuelve el día de la semana de la fecha indicada

  • monday_of_week(int,year) -> date Devuelve la fecha del lunes de la semana y año indicado

  • date_format(date,driver) -> date formated Devuelve la fecha enviada en el formato del driver indicado

  • date_to_epoch(data) -> integer Devuelve la fecha en formato epoch (número de segundos desde 1/1/1970)

  • epoch_to_date(int) -> integer Devuelve la fecha en formato estándar a partir del epoch

  • mask(date, src_mask, dst_mask, opt_src_mask, opt_dst_mask) -> Transforma una fecha entre dos formatos especificados (de src_mask a dst_mask). También tiene en cuenta partes de la máscara que pueden ser opcionales (opt_src_mask y opt_dst_mask)

25/06/2009 -> 2009-06-25
#[eBDDate.mask('25/06/2009','dd/mm/yyyy','yyyy-mm-dd')]

25/06/2009 12:34:52 -> 2009-06-25 12.34
#[eBDDate.mask('25/06/2009 12:34:52','dd/mm/yyyy','yyyy-mm-dd','hh:ii:ss',' hh.ii')]

25 06 2009 -> 25_06_09 #[eBDDate.mask('25 06 2009','dd mm yyyy','dd_mm_yy')] 20090625T141529Z -> 25-06-2009 14:15:29

#[eBDDate.mask('20090625T141529Z','yyyymmddThhiissZ','dd-mm-yyyy','ThhiissZ',' hh:ii:ss')]
  • parse(string) -> string Parsea una fecha almacenada en un string y la devuelve formateada según la localización actual. Es capaz de reconocer los siguientes formatos:
"Wed, 09 Feb 1994 22:23:32 GMT" ## HTTP format
"Thu Feb 3 17:03:55 GMT 1994" ## ctime(3) format
"Thu Feb 3 00:00:00 1994", ## ANSI C asctime() format
"Tuesday, 08#Feb#94 14:15:29 GMT" ## old rfc850 HTTP format
"Tuesday, 08#Feb#1994 14:15:29 GMT" ## broken rfc850 HTTP format

"03/Feb/1994:17:03:55 #0700" ## common logfile format
"09 Feb 1994 22:23:32 GMT" ## HTTP format (no weekday)
"08#Feb#94 14:15:29 GMT" ## rfc850 format (no weekday)
"08#Feb#1994 14:15:29 GMT" ## broken rfc850 format (no weekday)

"1994#02#03 14:15:29 #0100" ## ISO 8601 format
"1994#02#03 14:15:29" ## zone is optional
"1994#02#03" ## only date
"1994#02#03T14:15:29" ## Use T as separator
"19940203T141529Z" ## ISO 8601 compact format
"19940203" ## only date

"08#Feb#94" ## old rfc850 HTTP format (no weekday, no time)
"08#Feb#1994" ## broken rfc850 HTTP format (no weekday, no time)
"09 Feb 1994" ## proposed new HTTP format (no weekday, no time)
"03/Feb/1994" ## common logfie format (no time, no offset)

"Feb 3 1994" ## Unix ’ls #l’ format
"Feb 3 17:03" ## Unix ’ls #l’ format

"11#15#96 03:52PM" ## Windows ’dir’ format
  • httpdate(string) -> string Devuelve la fecha recibida (en segundos, epoch), convertida a formato estándard para _HTTP

eBDDB

Atributos:

  • CurrentId -> int Devuelve el identificador del registro que se está modificando / borrando

  • LastInsertId -> int Devuelve el identificador de la última inserción

  • LastUpdateId -> int Devuelve el identificador de la última actualización

  • LastDeleteId -> int Devuelve el identificador de la última eliminación

  • ErrCode -> int Devuelve el código de error generado

  • ErrMsg -> string Devuelve el mensaje de error generado

Métodos:

  • abort(errmsg) -> string Aborta la ejecución de la inserción / modificación / eliminación, y muestra el mensaje de error especificado. Se debe usar en un evento antes de insertar en una Vista mediante _eBD:SET

  • last_insert(fieldname) -> string Devuelve el valor del campo especificado de la última inserción

  • last_update(fieldname) -> string Devuelve el valor del campo especificado de la última actualización

  • current(fieldname) -> string Devuelve el valor del campo especificado del registro que se está modificando / borrando

  • set_new_value(fieldname,value) Permite modificar el valor que se guardará en un campo de la base de datos, si se ejecuta desde un evento de Vista o Tabla disparado antes de la inserción o modificación

  • http_date(string) -> string Devuelve la fecha recibida (en segundos, epoch), convertida a formato estándard para HTTP

  • xml_document(string) ->string Devuelve el nombre del fichero XML relativo a una Tabla XML, para poder ejecutar una consulta XQuery de forma manual

eBDLocale

Atributos:

  • Name -> string Devuelve el nombre del locale actual

  • Iso -> string Devuelve la ‘iso_lang’ del locale actual

  • Id -> int Devuelve el identificador del locale actual

  • Language -> string Devuelve el language del locale actual

  • DateFormat -> string Devuelve el formato de fecha del locale actual

Métodos:

  • set(string | int) -> int Activa el locale especificado por el nombre o por el identificador

  • literal(string) -> string Devuelve el valor del literal especificado

  • get_locales -> array of hashes Devuelve una lista de las localizaciones, se puede accceder a los

Atributos:
id,name,iso_lang,language,number_format y date_format

  • get_literal_names(folder) -> array Devuelve la lista de claves de los literales disponibles. El parámetro 'folder' es opcional, si se indica el idCarpeta o el nombre de la carpeta devolverá los literales de esa carpeta; en caso de no enviarle ningún parámetro devuelve todos los literales.

  • get_literal_value(literal,idLocalizacion) -> string Devuelve el valor de un literal para una localización determinada

  • set_literal_value(literal,idLocalizacion,newLiteral) Modifica el valor de un literal para una localización determinada

  • find_literal(string) -> array Busca un literal que contenga las palabras indicadas en el nombre o los valores

eBDUtil

  • eBDVersion -> string devuelve la versión actual de eBD

  • ErrCode -> int devuelve el código de error del último error generado

  • ErrMsg -> string devuelve el mensaje de error del último error generado

  • ErrLine -> int devuelve el numero de linea del último error generado

Métodos:

  • random() -> int Devuelve un número aleatorio

  • random(min,max) -> int Devuelve un número aleatorio entre min i max

  • quote(string) -> string Escapa el contenido enviado

  • trim(field,len,[concat]) -> string Acota a la longitud elegida el campo especificado y añade el ‘concat’ al final

  • uc(string) -> string convierte el string a mayúsculas

  • lc(string) -> string convierte el string a minúsculas

  • ucfirst(string) -> string convierte la primera letra del string a mayúsculas

  • lcfirst(string) -> string convierte la primera letra del string a minúsculas

  • length(string) -> int devuelve la longitud de un string

  • defined(string) -> bool devuelve true (1) si el string está definido

  • substr(string,start,count)-> string develve un substring del string inicial, comenzando en la posición “start”, y seleccionando “count” caracteres

  • is_eof -> bool devuelve true si se ha llegado al final de un fichero después de la última lectura

  • chr(int) -> string Devuelve un carácter representado por el código ASCII o la secuencia de escape indicada (\n, \t,...)

  • ord(string) -> int Devuelve el código ASCII del carácter indicado.

  • eval_expr(string) -> string evalua expresiones númericas a partir de un string (requiere que el sistema disponga del comando 'bc')

Ejemplo:

<ebd:set var="myString" value=" $a == 1 "/>
<ebd:set var="isTrue" value="#[eBDUtil.eval_expr($myString)]"/>

eBDMath

Métodos:

  • int(number) -> int Devuelve la parte entera del número enviado

  • abs(number) -> int Devuelve el valor absoluto del número enviado

  • cos(number) -> float Devuelve el coseno del número enviado

  • sin(number) -> float Devuelve el seno del número enviado

  • tan(number) -> float Devuelve el valor de la tangente del ángulo especificado

  • atan2(number) -> float Devuelve el resultado de la función arcotangente en el rango -PI .. PI

  • exp(number) -> int Devuelve la inversa del logaritmo neperiano

  • hex2dec(hex) -> int Recibe un hexadecimal y devuelve su valor decimal

  • dec2hex(number) -> hex Recibe un decimal y devuelve su valor hexadecimal

  • log(number) -> float Devuelve el logaritmo neperiano del número enviado

  • oct2dec(oct) -> int Recibe un octal y devuelve su valor decimal

  • dec2oct(number) -> oct Recibe un decimal y devuelve su valor octal

  • sqrt(number) -> float Devuelve el resultado de la raíz cuadrada del número enviado

  • round (number,decimals) -> float Devuelve el número enviado acotado al número de decimales especificado, redondeando +0.5

  • ceil(number) -> int Devuelve el entero más pequeño que sea más grande o igual al número enviado

  • floor(number) -> int Devuelve el entero más grande que sea más pequeño o igual al número enviado

  • eval(expr) -> number Evalúa la expresión matemática enviada

eBDSecurity

Función para proteger frente ataques XSRF.

Métodos:

  • xsrf_security_token() -> string Devuelve el valor del token XSRF.

  • xsrf_security_input(input_name) -> string Devuelve el token dentro de un input oculto, se le puede pasar el nombre del input (por defecto: xsrf_security_token)

  • checkxsrf_security(name) -> bool Devuelve 0 si el token es valido ó 1 si no lo és. Se le puede pasar el nombre del parámetro, que por defecto es _xsrf_security_token.

  • isvalid_arg(name) -> bool Devuelve 0 ó 1 dependiendo de si el argumento es válido o no. Para que valide el parámetro se debe de indicar el _TYPE en eBD:ARGS

  • is_valid_args() -> bool Devuelve 0 ó 1, según si todos los argumentos eBD:ARGS con algún _TYPE _son válidos o no.

  • validate_value(value,type,null,[validos|mask,optional_mask,biggerthan,lowerthan]) -> bool Devuelve un boleano según si el valor es válido. Se debe pasar el valor, el tipo (string,bool,date,datetime,integer,word,enum), si puede ser nulo(boleano) y en caso de ser un enum la lista de valores validos (separado por comas o un puntero a un array).

Ejemplo:

<ebd:out value="#[eBDSecurity.validate_value('sadfkasdfkasdf asdf asdfad f',string)]"/>
Return -> 1
<ebd:out value="#[eBDSecurity.validate_value('',string,1)]"/>
Return -> 0
<ebd:out value="#[eBDSecurity.validate_value(0,bool)]"/>
Return -> 1
<ebd:out value="#[eBDSecurity.validate_value(uno,enum,1,tres,dos,uno,zero)]"/>
Return -> 1
<ebd:out value="#[eBDSecurity.validate_value(12-01-1980,date,1,DD-MM-YYYY,,,12-12-1970)]"/>
Return -> 0
  • quote_for_input(value, simple|tag) -> string Devuelve el valor recibido escapado para introducirlo en un atributo de un tag o entre tag de inicio y final de tag. Se Debe pasar el valor y el literal 'simple' en el caso que el atributo este con comillas simples o el literal 'tag' si queremos ponerlo entre dos tags

Ejemplo:

<ebd:set var="doble" value='"'/>
<input type="text" name="dummy_a" value="<ebd:out value="#[eBDSecurity.quote_for_input(Hallo
${doble}World${doble} K's)]"/>">
<br>
input type="text" name="dummy_b" value='<ebd:out value="#[eBDSecurity.quote_for_input(Hallo
${doble}World${doble} K's, simple)]"/>'>
<br>
<textarea>
<ebd:out value="#[eBDSecurity.quote_for_input(Hallo ${doble}World${doble} K's</textarea>
out of the tag, tag)]"/>
</textarea>
<br>

  • quote_for_javascript(value,simple) -> string Devuelve el valor recibido escapado para introducirlo como un literal de una variable. Se debe pasar el valor y el literal 'simple' si la variable está entre comillas simples.

Ejemplo:

<ebd:set var="doble" value='"'/>
<ebd:out value="#[eBDSecurity.quote_for_javascript(Hello ${doble}world${doble})]"/>
Returns -> Hello \"world\"

eBDWidget

Permite acceder a funciones útiles del objeto Widget que se está ejecutando.

Atributos:
Name -> string Devuelve el nombre del widget actual.

Id -> int Devuelve el identificador del widget actual.

Métodos:

  • eventsURL(event_name, [idSection]) -> string Devuelve la URL necesaria para invocar al evento indicado. Si no se indica evento, devolverá el path hacia los eventos. Opcionalmente se puede añadir el ID de la sección sobre la que queremos calcular la URL.

  • filesURL(path, [idSection]) -> string Devuelve el path absoluto del fichero. Opcionalmente se puede añadir el ID de la sección sobre la que queremos calcular la URL.

  • getAttribute(name) ->string Recupera el atributo que hayamos definido en el widget. Esta función puede ser utilizada por cualquier parte del widget (datasources, events, ...)