Arxiu

Entrades etiquetades ‘Codi’

Clase PHP para tratar imágenes (rotar, redimensionar, añadir marcas de agua..)

dissabte, 16 d'abril de 2011 36 comentaris

Actualizado: Tanto la clase como este post han sido actualizados a fecha 14 de enero de 2012.

Hace ya un tiempo publiqué (en inglés) un Componente para el tratamiento de imágenes en CakePHP. Hoy me he pasado un rato actualizándolo y aprovechando he decidido publicar una entrada con los cambios.

Aunque la he modificado considerablemente, he procurado no modificar el funcionamiento de ésta. Aquí vienen los cambios:

  • He eliminado el uso del método obsoleto mime_content_type.
  • Ahora utilizo la clase Exception para tratar los errores.
  • He añadido el método “flip” para hacer espejo de la imagen.
  • He limpiado el código y he arreglado algún que otro fallo.
  • Ahora las transparencias funcionan correctamente.

Podéis descargar el proyecto desde GibHub:

https://github.com/elboletaire/Watimage/archives/master

Si queréis utilizar la clase desde CakePHP simplemente tenéis que descomentar la primera línea de la clase, donde dice //Component extends Object, y utilizarlo como un componente cualquiera. Llegir més…

ucfirst y lcfirst compatibles con acentos (Multi Byte)

divendres, 1 d'abril de 2011 Comentaris desactivats

Llevo un rato peleándome con esto y finalmente he encontrado solución.

El caso es que los de PHP al hacer los métodos MultiByte (un apaño que harían al ver que se olvidaron del resto de juegos de caracteres…) no hicieron ni el de primera letra mayúscula ni minúscula.

Ambos métodos me son muy útiles para activar / desactivar usuarios de una wiki (ya que un usuario no puede acceder al sistema mediawiki si tiene la primera letra en minúscula), así que en realidad no he tenido más remedio que hacerlo (nooo, yo no queríaaa..!! xD) Llegir més…

Backups incrementales vía FTP en Linux

diumenge, 6 de febrer de 2011 4 comentaris

Recientemente he decidido pagar un servidor compartido para hacer las copias de seguridad de mis documentos, imágenes y demás. Es un servidor realmente barato pero con la pega que no tengo acceso vía SSH, lo que me ha impedido utilizar aplicaciones como rsync o similares.

Después de buscar un rato la única solución viable que he encontrado ha sido lftp, ya que es el único modo que he encontrado de hacer copias incrementales vía FTP.

lftp tiene un método llamado “mirror” que es el que nos permitirá hacer esto. Un ejemplo sencillo de su uso sería…

lftp -c "set ftp:list-options -a;
		open ftp://usuarioftp:passwordftp@hostftp;
		lcd /directorio/donde/copiar;
		cd /directorio/local/a/copiar;
		mirror --reverse \
		       --delete;
		close -a;"

Como también quería hacer backups de MySQL he decidido entretenerme un rato y hacer mi primer script de bash para hacer copias de mysql y directorios del sistema periódicamente (cada dos días a través de un cron).

Para utilizar el script necesitaréis tener instalado en vuestro servidor linux los paquetes lftp y mailx (o hairloom-mailx); este último servirá para enviarnos un e-mail en caso de error en la subida de nuestros backups. Llegir més…

Categories: Administració, Linux, Programació Etiquetes:, , , ,

Watermark & Image Component for CakePHP

dimarts, 6 d'abril de 2010 6 comentaris

Note: This Component has been updated and you can find the changes here: /2011/04/clase-php-para-tratar-imagenes-rotar-redimensionar-anadir-marcas-de-agua/

Time ago I created a CakePHP component for applying watermarks to images. Slowly I extended it and now in addition to applying watermarks is used to rotate and resize images.

You can still improve it a lot, especially in terms of code, but as it works and I have little time, I can barely make improvements.

Tested from:

  • Linux php 5.2.10
  • Linux php 5.2.13
  • Windows php 5.3.1
  • Windows php 5.3.2

Well Known Bugs:

  • Uses the method mime_content_type that as they say in php.net: This function has been deprecated as the PECL extension Fileinfo provides the same functionality (and more) in a much cleaner way. [ SOLVED ]
  • By rotating a transparent PNG image at an angle that is not a multiple of 90º the extra generated background is not transparent.

Download:

http://github.com/elboletaire/Watimage/archives/master

Llegir més…

Categories: Programació, Web Etiquetes:, , , ,

Validar datos duplicados en CakePHP

dijous, 25 de febrer de 2010 5 comentaris

Hoy mismo he necesitado de una validación para verificar si un dato ya existe en la base de datos. Dado que CakePHP 1.1 (en versiones posteriores a la 1.2 podéis utilizar “isUnique”) no lleva una validación en su núcleo para estos menesteres he tenido que crearla y ahora la comparto con vosotros:

/**
 * Verifica si un campo existe en la base de datos
 * Si estamos editando se excluye el valor guardado en la validación
 * @param array $data
 * @param string $field Nom de la cel·la a verificar
 * @return
 */

public function checkUnique($data)
{
	$field = array_pop(array_keys($data));
	$data = array_pop(array_values($data));

	// Si estem editant...
	if(isset($this->data[$this->name]['id']))
	{
		if ($field == $this->field($field, array($this->name . '.id' => $this->data[$this->name]['id'])))
		{
			return true;
		}
	}
	// Si no estem editant...
	if($this->hasField($field)) {
		return $this->isUnique(array($field => $data));
	}
}

Llegir més…

Categories: Programació, Web Etiquetes:, , , ,