domingo, 12 de enero de 2014

Codeigniter dinamic route from database

What if we want to route from a db table? I search all the web and I dont find a solution that makes me happy, so, I build one.

File /core/MY_Router.php: we extend the core router to add the database functionality.

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/*
CUSTOM ROUTER FUNCTION TO CHECK FOR CITY SLUG PLUS CONTROLLERS */
 class MY_Router extends CI_Router{

public function __construct(){
        parent::__construct();
        $this->config =& load_class('Config', 'core');
        $this->uri =& load_class('URI', 'core');

        require_once(BASEPATH.'database/DB'.EXT);
        $this->db = DB();
    }


public function _set_routing(){

$db_routes = $this->db
->where('active', 1)
->get('routes')
->result();

foreach ($db_routes as $route) {

$this->routes[$route->slug] = 'coupons/index/' . $city->slug;
$this->routes[$route->slug . '/(:any)'] = 'coupons/index/' . $city->slug . '/$1';
}

parent::_set_routing();
}
}

We need to change one character in system/core/Router.php to avoid overwrite the routes array.

In line 141 change this:
$this->routes = ( ! isset($route) OR ! is_array($route)) ? array() : $route; 

to this:
$this->routes += ( ! isset($route) OR ! is_array($route)) ? array() : $route;

(NOTE THE + SIGN)

That's all. Efective and Beautiful.

jueves, 19 de diciembre de 2013

codeigniter debug helper

Little helper to print_r variables with pre

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

if ( ! function_exists('pr'))
{
    function pr($thing)
    {
        echo '<pre>';
        var_dump($thing);
        echo '</pre>';
        die();        
    }   
}

martes, 17 de septiembre de 2013

restart and stop apache tomcat in linux

# Restart
sudo /etc/init.d/tomcat7 restart 

# Stop
sudo /etc/init.d/tomcat7 stop

miércoles, 28 de agosto de 2013

php ternary operator - operador ternario en php

muy util en vistas:

<?php
$agestr = ($age < 16) ? 'child' : 'adult';
?>
esa cosa, equivale a todo este if:
<?php
if ($age < 16) {
$agestr = 'child';
} else {
$agestr = 'adult';
}
?>

jueves, 22 de agosto de 2013

swap dom elements with jquery

Util función para intercambiar elementos en el dom:


function swapElements(elm1, elm2) {
var parent1, next1,
parent2, next2;

parent1 = elm1.parentNode;
next1 = elm1.nextSibling;
parent2 = elm2.parentNode;
next2 = elm2.nextSibling;

parent1.insertBefore(elm2, next1);
parent2.insertBefore(elm1, next2);
}

uso:
swapElements(i[0], k[0]);

no olvidarse si i y k fueron extraidos del dom con jquery de colocar el subindice.
 

miércoles, 31 de julio de 2013

Primeros pasos en laravel 4


Hoy les vengo a contar sobre este framework que llegó a mi casi por casualidad por ser el que utilizó un cliente para crear un CMS, al cual nos ha solicitado adaptar numerosos templates.

A primera vista parece un poco complejo comparado con codeigniter, pero a medida que fuí aprendiendo a utilizarlo no ha dejado de sorprenderme, lo práctico que resulta blade (el parseador de vistas y templates), y la potencia y flexibilidad que nos da el archivo de routes es increible, por ejemplo.

El ORM resulta fácil de aprender y nos simplifica la vida con las consultas evitando todos esos mugrosos joins que usaba antes en codeigniter. Todavía hay muchisimas funciones del framework que aún no he investigado pero en este momento ya puedo afirmar que aprender laravel vale la pena.

Me he descargado recientemente la versión 4 del framework recien sacada del horno. Comenzaré a utilizarla para un proyecto personal, no se sorprendan si muchas de las siguientes entradas del blog están dedicadas a laravel4.

lunes, 15 de julio de 2013

copy things from one server to another - copiar archivos entre servidores

Con scp copiamos carpetas o archivos entre servers sin tener que descargar todo y volverlo a subir. Solo ejecutar el comando y se arreglan entre ellos.

copy from a remote machine to my machine:
scp user@192.168.1.100:/home/remote_user/Desktop/file.txt /home/me/Desktop/file.txt

copy from my machine to a remote machine:
scp /home/me/Desktop/file.txt user@192.168.1.100:/home/remote_user/Desktop/file.txt

copy all file*.txt from a remote machine to my machine (file01.txt, file02.txt, etc.; note the quotation marks:
scp "user@192.168.1.100:/home/remote_user/Desktop/file*.txt" /home/me/Desktop/file.txt

copy a directory from a remote machien to my machine:
scp -r user@192.168.1.100:/home/remote_user/Desktop/files /home/me/Desktop/.