Ha salido la nueva versión de CodeIgniter (1.7.1) que soluciona algunos bugs y trae algunas mejoras, como por ejemplo evitar XSS en casos específicos contra Internet Explorer.
Sigo recomendando CodeIgniter a todos aquellos que programen PHP. CodeIgniter 1.7.1
Vía / PHPDeveloper.org
Aunque en varios artÃculos hemos hablado de cómo manipular imágenes mediante PHP y GD. No está nada mal, tener un tutorial que nos ayude con esta librerÃa. En el siguiente tutorial podremos encontrar:
PHP_Depend es una adaptación de JDepend que permite hacer un estudio de la calidad de tu diseño en términos de reusabilidad, extensibilidad y mantenibilidad.
Todos es hechos están influidos por las dependencias entre los paquetes y PHP_Depend visualiza en un gráfico y con un XML todas las dependencias.
Cuando estoy desarrollando para PHP siempre hago uso de la consola del navegador, antes de Firebug, pero ahora me he pasado a Firefox Web Console. Este plugin permite debuggear en la consola de Chrome o en la de Firefox (no Firebug).
Hace tiempo hablaba de una librería para trabajar con Jabber desde PHP y me preguntaban si se podía usar para realizar un cliente y realizar acciones con él. Pues he usado esta librería para crearme un cliente de jabber que espere mensajes y los publique en WordPress, para lo cual también he necesitado la librería phpxmlrpc.
Yo el ejemplo lo he hecho con DreamHost y la posibilidad que ofrece de crear un servidor Jabber, claro que también se puede hacer mediante GTalk.
Lo primero es tener dos cuentas: una para el cliente y otra para ti. Cuando ya las tengamos, deberemos autorizar la una a la otra para que puedan enviarse mensajes. Esto es la parte más chapuza ya que hay que hacerlo con clientes tipo Gtalk o Pidgin.
Tan solo nos queda instalar el script en nuestro servidor o en nuestro ordenador (aunque casi mejor en un servidor) y configurarlo. Se copia en el servidor y se edita el fichero orejas.php y modificar los siguientes valores:
$blog_usuario: nombre del usuario del blog
$blog_contraseña: contraseña del usuario del blog
$blog_url: url del blog de WordPress
$blog_xmlrpc_path: path al script xmlrpc de WordPress
$blog_puerto: puerto del blog (lo más seguro es que no haya que modificarlo)
$post_tags: etiquetas por defecto del post que se va a crear
$post_separador: separador para diferenciar en el mensaje entre título, contenido y etiquetas
$post_titulo_defecto: título por defecto del post
$jabber_host: servidor de Jabber, para GTalk creo que es gtalk.google.com
$jabber_usuario: usuario de jabber
$jabber_contraseña: contraseña del usuario de jabber
$jabber_puerto: puerto del servidor de jabber (lo más seguro es que no haya que modificarlo)
Para postear en WP habrá que mandar un mensaje al cliente con el siguiente formato:
Contenido admite HTML y retornos de carro que serán convertidos en párrafos. Si no se quiere indicar título o etiquetas, pues se puede escribir el contenido solamente. El separador ## es modificable. Cuidado si vais a escribir retornos de carro, porque si pulsas sólo INTRO te enviará el mensaje.
Una vez enviado el mensaje, el script posteará en WP y devolverá la URL del nuevo post.
Supongo que se pueden hacer más cosas y mejor, pero para lo que yo lo necesito me basta y me sobra.
Ahora viene la parte más complicada, y digo complicada porque sinceramente he tenido que mirar el código porque algo me fallaba cuando seguía lo que decía la documentación.
El nombre del fichero JSON tiene el siguiente formato [dominio de traducción]-[idioma]-[handler del fichero].json, total nada.
Dominio será el que usemos para traducir, en el ejemplo sería mi-plugin:
__( 'Hola que tal', 'mi-plugin' );
Idioma es el código del idioma, en este caso es_ES
Y por último el handler del fichero es el primer parámetro que usamos en wp_enqueue_script
Lo podemos ver todo en un ejemplo final:
wp_enqueue_script(
'mi-plugin-handler', // El handler mencionado anteriormente
$blocks_script, // Nuestro path
[
'wp-i18n', // De referenciar al menos a wp-i18n
],
);
wp_set_script_translations( 'mi-plugin-handler, 'mi-plugin', plugin_dir_path( __FILE__ ) . 'languages' );