Category Archives: programación

Leer archivo mdb (access) de php en ubuntu

Por motivos de trabajo tengo que leer/escribir archivos de MS Access (*.mdb) utilizando PHP. Después de leer varios foros y documentos les dejo la solución que encontré.

Primero debemos instalar algunos software.


sudo aptitude install php5-odbc mdbtools libmdbtools libmdbodbc

Luego deben editar los siguientes archivos /etc/odbcinst.ini y /etc/odbc.ini


[MDBToolsODBC]
Description = MDB Tools ODBC drivers
Driver = /usr/lib/libmdbodbc.so.0
Setup =
FileUsage = 1
CPTimeout =
CPReuse =

En este archivo deben indicar el path del archivo .mdb que desen leer.


[DSS]
Description = DSS-TMP
Driver = MDBToolsODBC
Database = /home/stefano/DSS/DB.mdb

Luego para probar si la conexión esta correcta en la consola deben escribir


stefano@arda:~$ isql DSS

Y aparecerá un mensaje indicando que ya están conectados a su base de datos. Ahora sólo queda leer el archivo desde PHP para eso pueden usar el siguiente snippet.


".odbc_result($result,"TABLE_NAME");
}
?>

Compilar LaTeX en windows

Desde hace un par de días he estado usando notepad++ como editor para trabajar en mi tesis de magister, principalmente por el soporte para utf-8, pero este editor si bien trae un coloreador de sintaxis  (Syntax highlighting) no trae soporte para compilar un documento .tex. Es por eso que me puse a  escribir un pequeño (muy pequeño) script en batch para poder compilar solo con un click.

Para poder utilizar este script solo deben crear un archivo con extensión .bat y editar una linea donde se establece el nombre del archivo a compilar, luego guardan y listo ya tienen un programilla que les permitirá compilar con un click.


@echo off
set FILE_tex=propuesta_tesis.tex
cd %CD%
IF EXIST %FILE_TEX% (GOTO existe) ELSE (GOTO noexiste)

:existe
pdflatex %FILE_TEX%
bibtex %FILE_TEX%
pdflatex %FILE_TEX%
pdflatex %FILE_TEX%
exit

:noexiste
echo 'El archivo NO existe'
pause
exit

CakePHP: Utilizar NOW() en saveField()

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());

CakePHP: Mini control de acceso

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!