Archivos de la categoría: PHP

Corrección en Twitter Tools

Hace unos días instalé en la bitácora el plugin Twitter Tools de Alex King principalmente para automatizar la notificación de las nuevas entradas en la bitácora en mi twitter. Efectivamente, el plugin se encargaba de enviar los tweets cada vez que escribía un nuevo post, pero me di cuenta de que también estaba enviando tweets cuando modificaba entradas antiguas (por ejemplo, las que todavía están pendientes de asignar categoría). Mirando el código del plugin, me encontré con lo siguiente (alrededor de la línea :

function do_blog_post_tweet($post_id = 0) {
  if ($this->notify_twitter == '0'
    || $post_id == 0
    || get_post_meta($post_id, 'aktt_tweeted', true) == '1'
  ) {
    return;
  }

  $post = get_post($post_id);

  $tweet = new aktt_tweet;
  $tweet->tw_text = sprintf(
    __($this->tweet_format, 'twitter-tools'),
    $post->post_title, get_permalink($post_id)
  );
  $this->do_tweet($tweet);
  add_post_meta($post_id, 'aktt_tweeted', '1', true);
}

Al principio de la función se puede ver como entre otras cosas se comprueba si dentro de los metadatos de la entrada aktt_tweeted tiene valor 1. En caso afirmativo, no se envía un tweet, ya que se interpreta como que ya se envió en el momento de la publicación. El problema viene dado en que en las historias antiguas ya publicadas dicho metadato no está definido, con lo cual al editar las historias se procede a enviar el tweet y añadir el metadato de que ha sido “twiteada”.

Una posible solución a este problema dejar la última parte de la función de la siguiente manera:

if ($post->post_date == current_time('mysql')) {
  $tweet = new aktt_tweet;
  $tweet->tw_text = sprintf(
    __($this->tweet_format, 'twitter-tools'),
    $post->post_title, get_permalink($post_id)
  );
  $this->do_tweet($tweet);
}

add_post_meta($post_id, 'aktt_tweeted', '1', true);

Como podéis ver, lo que hemos hecho es añadir una comprobación de si la fecha de la entrada y la actual del sistema es la misma, ya que esto solo ocurre en el momento en el que se está publicando una nueva entrada. Si las fechas son distintas lo que nos indica es que nos encontramos en la modificación de una entrada ya publicada en el pasado, con lo cual no se debería enviar el tweet. Por último, guardamos como metadato de la entrada aktt_tweeted con valor 1 para evitar en futuras modificaciones de la entrada el pasar del primer if.

Con estos dos pequeños cambios conseguimos evitar el problema del envío de tweets en modificaciones de entradas antiguas ya publicadas.
Espero que os sirva :)

Frameworks PHP

Aquí tenéis una buena lista de frameworks “a la Rails” para PHP, cada uno con una explicación de sus pros y sus contras. Personalmente, yo me quedo con CakePHP.

Más de 300 libros gratuitos

En TechToolBlog han hecho una recopilación de más de 300 libros gratuitos y/o libres, en diferentes formatos.

MTMeneame 0.2

Gracias a la contribución de Álex Sancho procedo a publicar esta nueva versión, cuya única novedad es el soporte del método de publicación dinámico de Movable Type. Mientras no monte una página específica para los plugins, el nombre de los archivos será el mismo, así que podéis descargar desde estos enlaces la nueva versión: MTMeneame.tar.gz o MTMeneame.zip.

AVISO: El procedimiento de instalación cambia. Ahora una vez que descomprimáis el archivo os encontraréis dentro de la carpeta MTMeneame con dos carpetas, una llamada plugins y otra llamada php. Debéis copiar el contenido de dichas carpetas tal cual en sus homónimas dentro de vuestra instalación de Movable Type.

CMS propios

Después de leer este post en Blogpocket acerca de los blogs con CMS propio me ha recordado la época antes de volver a Blogalia, en la que mediante un CMS propio existía Mayoral @ Home (esta es la única captura web que existe), y me he planteado retomar el proyecto.

No es que no me guste Blogalia, al contrario. Llevo aquí desde sus inicios. El tema de retomar el CMS es no oxidarme, ya que hace mucho tiempo que no programo nada (las desventajas que tiene el ser ciudadrrealeño y estar estudiando). Desde el 87 he estado programando, ya sea con Basic, Clipper, C o casi cualquier lenguaje no funcional. Y estos periodos sin tirar líneas de código no los llevo demasiado bien… estoy que me subo por las paredes.

La verdad es que me estaba quedando un CMS para bitácoras majete… separación de la lógica y el contenido gracias al uso del sistema de templates Smarty, abstracción del acceso a la base de datos mediante el uso de ADODB, código bastante limpio y bien documentado (y no es porque lo diga yo)… Entre otras cosas tenía implementados el sistema de noticias, comentarios, edición de noticias mediante las blogatex (igual que en Blogalia, gracias al código que me dejó rvr), libro de visitas, generación del RSS. Lo que me quedaría por hacer, aparte de comprobar que funciona bien con las últimas versiones de Smarty y ADODB sería implementar el sistema de trackback, finalizar el panel de administración, implementar soporte para w.bloggar y similares mediante XML-RPC y probablemente generar para la sindicación en ATOM en vez de RSS (o mantener los dos).

Así pues, desde hoy doy por “vuelto a la vida” el proyecto M@H CMS. Si, ya se que es un nombre muy tonto para el CMS, pero no se me ocurrió ningún otro cuando lo empecé. Alguna sugerencia para el nombre? :P

PD: Aun a riesgo de dar una definición inexacta, voy a explicar qué son lo lenguajes funcionales: Los lenguajes funcionales son aquellos tipo Haskell, en los que cuando se programa en ellos lo que se hace es declarar el problema a solucionar, y es el propio lenguaje el que soluciona el problema. En lenguajes tipo C/Java/{ponga aquí su favorito} lo que se hace cuando se programa es implementar la solución a un problema.

PD2: ¿Alguno que conozca alguna oferta de teletrabajo? :P

© 2002-2008 LinuxAdicto.org. El contenido y algunas imágenes están bajo la licencia Reconocimiento-NoComercial-CompartirIgual 3.0