Cuando necesiten validar un xml utilizando su dtd pueden utilizar el siguiente código (PHP5)
$dom = new DOMDocument;
$dom->Load('book.xml');
if ($dom->validate()) {
echo "This document is valid!\n";
}
?>
Cuando necesiten validar un xml utilizando su dtd pueden utilizar el siguiente código (PHP5)
$dom = new DOMDocument;
$dom->Load('book.xml');
if ($dom->validate()) {
echo "This document is valid!\n";
}
?>
Durante el desarrollo de la nueva versión de buscopension.com me ha surgido un pequeño problema el cual es: Como poder actualizar un campo de una tabla utilizando el método saveField() de los modelos de cakephp.
Después de una pequeña búsqueda en google encontré la solución:
//app_model.php
function now() {
return strftime('%Y-%m-%d %H:%M:%S', time());
}
//model o controler
$this->saveField('activate_date',$this->now());
Hoy comencé a trabajar sistema utilizando CakePHP en el cual necesito un control de acceso para distinguir entre dos usuarios, un administrador y un usuario normal, no quise usar ACL debido a lo básico de necesidad así que me puse a desarrollar mi propio sistema de control de acceso, con una pequeña variante en el software.
La solución es la siguiente:
En mi app_controller.php
function beforeFilter() { if($this->Session->check("Auth.User")) { if($this->_permisos($this->params,$this->Session->read("Auth.User.group_id")) == false) { $this->Session->setFlash("No tienes permiso para ingresar a esta area"); $this->redirect("/"); } } } function _permisos($params,$group) { $normal_permitido = array( 'users' => array(), 'tickets'=>array('add','view','index'), 'comments'=>array('add','view','index'), 'groups' => array(), 'types' => array(), 'subareas' => array(), 'areas' => array(), 'pages' => array('display') ); if($group != 1) { if(array_key_exists($params["controller"],$normal_permitido)) { if(in_array($params["action"], $normal_permitido[$params["controller"]])) { return true; } else { return false; } } else { return false; } } else { return true; } }
La idea es super simple si el usuario no es administrador solo podrá acceder a ciertas acciones los controladores. En el arreglo $normal_permitido se almacenan los controladores y las acciones que tiene permitido visitar.
Ojala les sirva.
Happy baking!
echo(date('U',strtotime($string)));
Con esta simple instrucción ignoramos el archivo de base de datos de cakephp (ideal cuando hacemos checkout en nuestro servidor de producción)
stefano@sheldon:~/directory/app/config$ svn propset svn:ignore database* .
propiedad 'svn:ignore' asignada en '.'
Tengo la siguiente estructura para almacenar los logs de los sitios que tiene el servidor sitio.tld/subdomino-<access|error>.log, necesitaba que cada uno los sitios tuviera su propio registro de estadisticas utilizando awstats, el problema es que no super como hacer que cada vez que se ejecutara el rotatelog se actualizaran todas las estadisticas para cada uno de los dominios. Por lo que decidí hacer mi pripio logrotate utilizando bash y cron, el script es el siguiente:
#! /bin/bash
/usr/lib/cgi-bin/awstats.pl -config=awstats -update
for i in $(ls /var/log/apache2/); do
cd /var/log/apache2/
if [ -d $i ]; then
#ejecutar awstats
cd /etc/awstats/
config=awstats.$i.conf
if [ -f $config ];then
/usr/lib/cgi-bin/awstats.pl -config=$i -update
fi
#ejecutar el rotate
cd /var/log/apache2/$i
for j in $(ls *.log); do
savelog -m777 -q $j
#reiniciar apache2
if [ -f "`. /etc/apache2/envvars ; echo ${APACHE_PID_FILE:-/var/run/apache2.pid}`" ]; then
/etc/init.d/apache2 reload > /dev/null
fi
done
else
#archivos sueltos
savelog -m777 -q $i
if [ -f "`. /etc/apache2/envvars ; echo ${APACHE_PID_FILE:-/var/run/apache2.pid}`" ]; then
/etc/init.d/apache2 reload > /dev/null
fi
fi
done
luego con un cron corro el script cada X dias
El funcionamiento es el siguiente. Reviso el directorio /var/www buscando los directorios que existen ahi (recordemos que un directorio es un sitio.tld) luego compruebo que exista el archivo de configuracion para ese dominio, de ser así ejecuto el awstats y luego realizo el savelog y reinicio el apache para que cree el nuevo log.
Soy un n00b en bash, se que el script se puede optimizar, espero sus mejoras :)
Recent Comments