jueves, 14 de junio de 2012

Convertir uri de Drupal 7

Cuando estamos trabajando con ficheros en Drupal 7 (Imágenes, vídeos, documentos, etc) y queremos hacer algo "a mano", es decir, desde el template del nodo queremos hacerlo a nuestra manera, vemos que al pintar el array de cualquier archivo adjunto a un nodo obtenemos algo así:

stdClass Object
(
    [uid] => 1
    [status] => 0
    [filename] => image_1.jpg
    [uri] => public://subcarpeta/image_1.jpg
    [filemime] => image/jpeg
    [filesize] => 121406
    [source] => field_imagen_und_4
    [destination] => public://subcarpeta/image_1.jpg
    [timestamp] => 1339667493
    [fid] => 24
)


Si queremos hacer algo así:
< img src="$imagen['uri']" />
No podremos, ya que esa "uri" es interna de Drupal y sólo él sabe cómo interpretarla.

Para obtener la ruta real al archivo debemos hacer lo siguiente:
$url = file_create_url('public://subcarpeta/image_1.jpg');
Esto nos devuelve una ruta absoluta al fichero tal de la forma http://www.example.com/sites/default/files/subcarpeta/imagen_1.jpg

Para tener la ruta referente a la raíz de Drupal podemos parsear la url con php:
$url = parse_url($url);
La ruta referente a Drupal es el parámetro path:
$path = $url['path'];

jueves, 16 de febrero de 2012

Cómo utilizar estilos de imágenes en Drupal 7

Para pintar las imágenes en Drupal 7 como lo hacíamos en Drupal 6 con nuestro querido imagecache desde el tema, recordemos:

 theme('imagecache', 'nombre_del_estilo', 'path_a_la_imagen);


En Drupal 7, como esto está implementado directamente en el núcleo de Drupal, hay que hacerlo a su manera. Esta es una de ellas:

 $image_path = image_style_url('nombre_del_estilo', uri_de_la_imagen);


Por ejemplo, mi estilo se llama Imagen_grande y la uri a mi imagen es public://imagen_test.jpg. Pues para pintarla en el tema sería:

 $image_path = image_style_url('Imagen_grande', 'public://imagen_test.jpg');
echo '< img src="' . $image_path .'" />';



Esto es todo por hoy :D

lunes, 30 de enero de 2012

Obtener resultados de una consulta en utf-8

Importando contenidos de otra base de datos, me ha surgido un problema que nunca había tenido, y es que al hacer la consulta, me devolvía algunos resultados como "???? ????????? ??". Al hacer un utf8_encode / utf8_decode al texto en cuestión, no lo codificaba bien, puesto que mysql me devolvía directamente esos caracteres, imposibilitando su conversión posterior.

Para obtener estos caracteres, que por cierto son textos en griego, ruso, japonés, etc. hay que añadir una simple función extra al crear la conexión con la base de datos: mysql_set_charset, de tal manera que la conexión quedaría:

$c = mysql_connect('localhost', 'user', 'pass');
mysql_set_charset('utf8', $c);
mysql_select_db("batabase", $c);



¡Saludos y hasta la próxima!

miércoles, 30 de noviembre de 2011

Parámetros opcionales en rutas para Symfony

Algunas veces, en algunas páginas necesitas que en la ruta vengan todos los parámetros, otras veces no todos e incluso ninguno es necesario.

Para ello en el sistema de routing de Symfony (Yo estoy usando la 1.4) se indica de la siguiente manera:



group_images:
  url:      /groups/images/:slug/:order
  param:    { module: group, action: indexImages, order: date-desc }




Donde slug es un parámetro obligatorio y order, si no se le pasa ningún valor, su valor por defecto será "date-desc".

Fuente: http://trac.symfony-project.org/ticket/2478

jueves, 17 de noviembre de 2011

Cómo obtener la extensión de un archivo fácilmente

Me suele surgir este "problema" cada cierto tiempo, y esta vez me he decidido a hacerlo de una manera un poco elegante y eficiente -es decir, sin switchs ni explodes, etc.-, y buscando un poco encontré la función pathinfo, que hace esto y algunas cosas más.

Para el caso que nos ocupa, la utilización sería:
$ext = pathinfo($filename, PATHINFO_EXTENSION);

Saludos!

martes, 30 de agosto de 2011

Cómo saber qué ips hay en una red


Ayer me preguntaba cómo sacar mediante consola, las ips que están activas en mi red wifi y encontré este sencillo pero potente método para escanear un rango de ips y comprobar cuales están activas:

nmap -sP 192.168.0.1-255

Esto nos devuelve un listado de las ips que están activas en ese momento en la red en la que nos encontramos:

Starting Nmap 4.62 ( http://nmap.org ) at 2011-08-30 08:42 CEST
Host 192.168.0.1 appears to be up.
Host 192.168.0.2 appears to be up.
Host 192.168.0.4 appears to be up.
Host 192.168.0.6 appears to be up.
Host 192.168.0.7 appears to be up.
Host 192.168.0.30 appears to be up.
Host 192.168.0.127 appears to be up.
Host 192.168.0.222 appears to be up.
Nmap done: 255 IP addresses (9 hosts up) scanned in 4.914 seconds



Obviamente dependemos de cómo sean las ips de nuestra red, puede que en lugar de ser 192.168.0.x sean 192.168.1.x, etc.



El comando nmap según wikipedia:

Nmap es un programa de código abierto que sirve para efectuar rastreo de puertos escrito originalmente por Gordon Lyon (más conocido por su alias Fyodor Vaskovich). Se usa para evaluar la seguridad de sistemas informáticos, así como para descubrir servicios o servidores en una red informática.


Enlaces:
http://es.wikipedia.org/wiki/Nmap
http://nmap.org/

jueves, 7 de abril de 2011

Cómo instalar una app en iphone desde el pc

Para instalar una app bajada de internet al pc, simplemente hace falta tener el iphone jailbreakeado, con installous y una red wifi.

Hay dos maneras de hacerlo, una para apps que ocupen poco y otra para apps de gran tamaño tipo Infinity Blade o Tom Tom. Hoy explicaré la de apps de gran tamaño.

Una vez tenemos el fichero .ipa en el pc, pasamos la app al iphone por cable. Yo utilizo el programa DiskAid, que lo que hace es tratar el iphone como si fuese un pendrive normal.

Ahora conectamos el iphone por ssh al pc o mac, y nos llevamos el .ipa que hemos subido con DiskAid a la carpeta de descargas del Installous. Para ello, desde la línea de comandos hacemos:

mv ubicacion/nombre_del_fichero.ipa /private/var/mobile/Documents/Installous/Downloads/

Por defecto, DiskAid deja los ficheros que pases al iphone en la ruta /private/var/mobile/Media/Recordings/nombre_del_fichero.ipa , aunque si usas otro método o cambias la ubicación, puede buscarla haciendo:
find -name "nombre" pudiendo utilizar * como comodín.

Y ya está, desconectamos del pc y abres el Installous y allí estará la aplicación que acabamos de pasar.

NOTA: Que no te mosquee que no se vea el ícono de la app en el listado, al instalarla, aparece bien ;)