XtraUpload, un “Megaupload” en CodeIgniter
Vía Webmastelibre me entero de que existe un software gratuito creado en CodeIgniter que nos permite fácilmente crear nuestro propio sistema de "uploads" de archivos, que ahora están de moda los típicos "Rapidshare", "MegaUpload", etc..
Si mas no es interesante echarle un vistazo a estas herramientas, ya que así podemos ver como están hechas las aplicaciones reales puesto que aquí normalmente trabajamos sobre tutoriales de ejemplos simples de aplicaciones.
XtraUpload, que asi se llama la aplición está escrito en PHP usando, como ya hemos dicho, el Framework de CodeIgniter. Tiene todas las caracteristicas que te esperarías para este tipo de paginas:
- Control de usuarios, tanto gratuitos como "Premium".
- Usuarios Premium tienen opciones interesantes adicionales.
- Puedes especificar tipos de fichero, tamaños y en general configurar la aplicación a tu gusto.
- Permite pagos con PayPal y otros.
Lo interesante tambien de estas aplicaciones es indagar un poco en el codigo y ver como hacen determinadas cosas, como utilizan ciertas librerias, tanto de CodeIgniter como creadas por ellos mismos. Yo os recomiendo que echeis un vistazo de:
- Como está hecho todo el tema de verificación de usuarios (login, etc..)
- Todo lo referente a las descargas de archivos, control deMB bajados, y otras caracteristicas
- Como hacen para conectar con las pasarelas de pagos de PayPal, 2CheckOut, MoneyBrokers, StormPay y eGold.
- Upload, como lo gestionan, como lo controlan, etc.
- Como funcionan con los templates y themes.
Yo la verdad que le he pegado un vistazo y he encontrado muchas cosas interesantes, y esta es otra manera de aprender.
Usando ‘Hooks’ en CodeIgniter
Muchas veces nos encontraremos, al programar nuestras aplicaciones, que necesitamos realizar una tarea en todas las paginas por igual, en un mismo momento. Hay una solución para eso, muy muy mala, que es hacer un copy&paste del código en todas las paginas (si.. si.. quien no ha hecho eso alguna vez...).
Por suerte CodeIgniter nos trae de la mano una buena herramienta llamada 'Hooks' o ganchos, que simplemente nos permite hacer eso, ejecutar determinadas funciones en un determinado momento.
El "determinado momento", básicamente puede ser:
- pre_system: al principio de la ejecución del sistema, sin haber cargado básicamente nada.
- pre_controller: ejecutar antes de cargar el controlador, una vez cargadas las librerías y todo el systema básico.
- post_controller_constructor: justo se ejecutar tras el constructor del controlador pero antes de cualquier función.
- post_controller: se ejecutará una vez lo haya hecho el controlador.
- display_override: esto es para sobrescribir la función que nos muestra la pagina finalizada en el navegador.
- cache_override: lo mismo pero para la función de cache, nos permite sobreescrivirla.
- scaffolding_override: para crear nuestro propio scaffolding.
- post_system: ejecutará el código al final de todos los procedimientos.
En la user_guide de Codeigniter podréis encontrar esta información más extendida.
Bien, para que quede más claro, vamos a ver un ejemplo. En este caso supondremos que estamos trabajando en una página web multilenguaje. Y queremos crear un 'hook' que nos lea una variable de sesión que contiene el idioma que hay seleccionada y con eso nos cargue el idioma especificado (para los que no sepáis como funciona la "language class", echarle un vistazo en la guía).
Extender Helpers en CodeIgniter
Los 'Helpers' de CodeIgniter son básicamente pequeñas librerías con 4 o 5 funciones que nos dan funcionalidades que nos ayudan con los problemas típicos al crear webs. A medida que vayamos experimentando y avanzando con la programación de una web nos encontraremos con que necesitamos añadir nuevas funcionalidades a los helpers existentes o a veces modificar las que ya están hechas.
Podemos pensar en ir a la carpeta "system" ahí buscar el helper y modificarlo. Si, se puede hacer pero es una manera muy "guarra" de proceder, básicamente por dos razones:
- Nos actualizan el CodeIgniter y coincide que modifican ese helper, vamos a tener un problema.
- Queremos reutilizar código, es muy engorroso ir haciendo copy&paste de funciones de algunos helpers.
Generar imagenes dinámicamente en CodeIgniter
A veces nos puede interesar crear imágenes dinámicamente a partir de alguna que ya tengamos alojada en nuestro servidor, a continuación veremos como hacerlo con la ayuda de CodeIgniter.
Una imagen generada dinámicamente puede tener varias ventajas como por ejemplo:
- Podemos controlar fácilmente cuanta gente la esta viendo
- Restringir la visión de esta a los usuarios que queramos
- Evitar que los usuarios tengan acceso a la imagen original
- Poder generar una imagen del tamaño que queramos según convenga
- Generar thumbnails, o modificaciones de la imagen original sin tener que generar copias
Esta ultima ventaja también nos trae a la desventaja, según lo que queramos, ya que al generar una imagen dinámicamente en PHP lo que estamos haciendo es aligerar la carga en el disco duro pero augmentar el tamaño del procesamiento, con lo que estamos cargando al servidor.