PHP con Apache 2.4


Como desarrollador PHP , mi trabajo diario lo hago sobre un Debian Gnu Linux ( SID ) , que luego de una actualizacion

$ sudo apt-get update; sudo apt-get dist-upgrade -y

Me deja de funcionar la re escritura de direcciones en wordpress y CakePHP ( Por suerte en django no tengo estos problemas ), revisando un poco de documentación, veo que se necesita tener activo la directiva Add Require all granted

Finalmente, edito el archivo /etc/apache2/sites-enabled/000-default.conf

ServerName localhost
ServerAlias localhost
ServerAdmin webmaster@localhost
DocumentRoot /home/csotelo/public_html/
<Directory "/home/csotelo/public_html/">
allow from all
Require all granted
AllowOverride All
Options +Indexes
</Directory>
LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Anuncios

Call current_user_can after init()


This error appears on wordpress when I activate debug mode, and using bbpress and buddypress, the error was a requiremnt on using the init function before use a restriction related with the function current_user_can

After having this using on a theme development, I have check some pages like

Finally my solution was create a function as http://codex.wordpress.org/Plugin_API/Action_Reference/admin_init says and warning disappear

function restrict_admin(){
//if not administrator, kill WordPress execution and provide a message
if ( ! current_user_can( 'manage_options' ) ) {
wp_die( __('You are not allowed to access this part of the site') );
}
}
add_action( 'admin_init', 'restrict_admin', 1 );

Cakephp vs Codeigniter


Este artículo no esta basado en ninún tipo de benchmarking, ni comparativa ni mucho menos prueba de tiempos, solo una recopilación de experiencias a la hora de escoger un framework o no, claro, algo resumido, eso creo, en un solo artículo. Aclaro al lector que esta es solo una opinión personal, no una verdad.

A lo largo del tiempo que llevo como desarrollador, me he visto en ma s de una oportunidad, en la desición de que herramienta usar, desde el lenguage, las bases de datos etc. Por ahora me centrare en PHP como herramienta, por llevar mas tiempo en este lenguaje.

Escoger entre usar o no un framework va mucho de la mano con el proyecto, de hecho proyectos pequeños, no considero que requieran un framework, asi como un gran proyecto requerirá de una herramienta mas productiva, claro que también se podra realizar sin usar un framework, aun que el uso de un framework agilizaria el trabajo, y si trabajamos en un equipo, ayudaria al equipo en el uso de un estandar de codificacion y trabajo.

La pregunta es ¿qué framework debo usar ahora para desarrollar?. La búsqueda en internet me dará muchas respuestas de los aficionados, fanáticos, seguidores, etc. de uno u otro framework, demostrando y dando sus experiencias, asi como yo lo hago en este momento.

Por ahora trabajo con Cakephp, pero en algun momento trabaje con codeigniter. Ahora explico el por qué del cambio.

Codeigniter es un framework super ligero, pero casi todo hay que hacerlo o hay que prepararlo antes de empezar a trabajar; es decir, el modelo de datos, control de accesos, herramientas, etc. Mientras tanto, cakephp ya tiene todo esto hecho, incluso hasta un crud integrado, solo era cuestion de usarlo.

Mi deseo es tener una herramienta lista, que me permita empezar a trabajar ya, por otro lado symfony me ofrecia algo mejor que cakephp, sin ambargo al final decidí por cakephp por una simple razon, eocntrar una comunidad en mi idioma, con uno de los desarrolladores de cakephp como miembro, dispuesto a ayudar y resolver mis dudas. Esto me parecio la razon mas importante.

Conversando con otro desarrolador cambio de cakephp a codeigniter, el proceso inverso de lo que yo hice, y su razon, como me lo cuenta es que codeigniter no lo encasillaba en una forma de trabajo, si no el podia usar la forma que a él mas le agradaba.

Mi conclusión, no solo los factores de tiempo de ejcucion, tiempo de desarrollo, etc y otras pruebas de benchmarking son necesarias, si nola comodidad y el objetivo que un desarrolador persigue, asi como la forma de trabajo y el framework que mas se adapta a esta.

Al final la herramienta debe ser de acuerdo a lo que el desarrollador busca y no al contrario.

Gallo Released


Gallo is a simple php framework

Model Library for Codeigniter


I have made a model library for codeigniter. It is based on the article http://maestric.com/doc/php/codeigniter_models

if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class MY_Model extends Model {
    
    var $table = "";
    
    function My_Model() {
        parent::Model();
        $this->load->database();
    }
    
    function find($type = 'all', $options = array()) {
        if ($type == 'first') {
            $this->db->limit(1);
        }
        if(array_key_exists('fields', $options)) {
            $this->db->select(implode(",", $options['fields']));
        }
        if(array_key_exists('where', $options)) {
            foreach ($option['where'] as $key=>$value) {
                $this->db->where($key, $value);
            }
        }
        if(array_key_exists('order', $options)) {
            foreach ($option['where'] as $key=>$value) {
                $this->db->order_by($key, $value);
            }
        }
        if(array_key_exists('limit', $options)) {
            $limit = $options['limit'];
            if(array_key_exists('limit', $limit) && !array_key_exists('offset', $limit)) {
                $this->db->limit($limit['limit']);
            }
            if(array_key_exists('limit', $limit) && array_key_exists('offset', $limit)) {
                $this->db->limit($limit['limit'], $limit['offset']);
            }
        }
        $query = $this->db->get($this->table);
        $result = $query->result_array();
        return (count($result) > 0 ? $result[0] : NULL);
    }
    
    function find_first($options) {
        return $this->find('first', $options);
    }
    
    function find_all($options) {
        return $this->find('all', $options);
    }
    
    function find_id($id) {
        if ($id == NULL) {
            return NULL;
        }
        return $this->find('first', array('where'=>array('id'=>$id)));
    }
    
    function insert($data) {
        $this->db->insert($this->table, $data);
        return $this->db->insert_id();
    }
    
    function update($id, $data) {
        $this->db->where('id', $id);
        $this->db->update($this->table, $data);
    }
    
    function delete($id) {
        if ($id != NULL) {
            $this->db->where('id', $id);
            $this->db->delete($this->table);
        }
    }
}

No such file or directory


Hace unos dias, en mi centro de vtrabajo desarrollaba una aplicacion en php, bueno nuestros terminales son windozes, y trabajo es trabajo y ni vuelta que darle, y bueno cuando mis companheros de equipo de desarrollo, actualizaron su directorio de trabajo desde el servidor svn les salio un error medio extraño:

Error [2, unlink(C:/wamp/sites/myapp/templates_c/\512a83e34504f5109048256d707838fe^%%4B^4B0^4B01E7AD%%UserLayout.tpl.php) [function.unlink]: No such file or directory, C:\wamp\sites\myapp\include\smarty\internals\core.write_file.php, 45]

Luego de buscar un poco en google, y habia paginas que daban la solucion y hablaban de un tal core.write_file y bueno, yo me preguntaba: si bueno, ya… pero donde esta este archivo core.write_file.php, bueno si leen en la ultima linea del mensaje de error, aparece la ruta de este archivo, lo editan de manera que la linea que dice:

@unlink($params['filename']);

quede de la siguiente manera:

if (file_exists($params['filename'])) {
@unlink($params['filename']);
}

Y listo, ya esta funcionando sin problemas