Symfony 1.2 est disponible au téléchargement depuis aujourd'hui.
Parmi les nouveautés :
La fin de Dotclear 1 vient d'être officiellement annoncée par l'équipe chargée de son développement, quelques mois à peine après l'annonce d'une version 1.4 qui ne verra finalement jamais le jour.
Le manque de temps et un code bientôt obsolète, PHP 4 étant en fin de vie, sont les principales raisons de cet arrêt.
Cette version sera néanmoins supportée jusqu'en août 2009 pour vous laisser le temps de migrer vers Dotclear 2.
Lire la news sur le site officiel
Mise à jour de Dotclear 1.2 vers 2
Proposé par Fabien LACHAUD
J’ai publié avant-hier une nouvelle version de WampServer 2.0.
La principale nouveauté vient du passage à MySQL 5.1 (GA), nouvelle version de MySQL attendue depuis un certain temps.
Je ne vais pas vous lister les nouveautés de MySQL 5.1, d’autres sont plus compétents que moi et l’ont déjà fait sur leur blog comme Olivier, mon collègue spécialiste de cette base de données :
http://dasini.net/blog/
Sinon, j’en ai également profité pour mettre à jour Apache et PHPMyAdmin.
Voilà, pas de grandes nouveautés, juste des mises à jour.
Par contre, cette intervention m’a également permis de mettre en ligne une version modifiée de WampServer par Gildas de CADOUDAL comportant un gestionnaire de module ce qui rend WampServer beaucoup plus évolutif. Cette version est pour le moment en beta1. N’hésitez pas à la tester et à nous faire un retour dessus :
http://www.wampserver.com/add-ons.php
Article original publié sur Glagla Dot Org. Tous droits réservés.
Le rendez-vous annuel de PHP Brésil vient de se dérouler et quelques photos sont arrivés jusqu'à moi pour montrer qu'il possédait aussi un BIG BIG elePHPant.

D'après la photo, je dirais qu'il s'agit d'un éléPHPant gonflabe qui doit faire au moins 2 m de haut

et la j'ai une pensais au Créateur Vincent Pontier (El roulbio) et au PHPère de la pelluche (Damien Seguy de Nexen/AlterWay) qui n'ont pas du y penser à cette réalisation.
Est ce que l'on verra des elePHPants au Forum PHP organisé par AFUP (www.afup.org) ??? c'est une très bonne question et pour le savoir, il faut être présent
Le rendez-vous annuel de PHP Brésil vient de se dérouler et quelques photos sont arrivés jusqu'à moi pour montrer qu'il possédait aussi un BIG BIG elePHPant.

D'après la photo, je dirais qu'il s'agit d'un éléPHPant gonflabe qui doit faire au moins 2 m de haut

et la j'ai une pensais au Créateur Vincent Pontier (El roulbio) et au PHPère de la pelluche (Damien Seguy de Nexen/AlterWay) qui n'ont pas du y penser à cette réalisation.
Est ce que l'on verra des elePHPants au Forum PHP organisé par AFUP (www.afup.org) ??? c'est une très bonne question et pour le savoir, il faut être présent
Une nouvelle version de MySQL vient d'être mise en ligne.
Bien que cette version corrige quelques bogues de la version précédente, Michael Widenius (le cofondateur du SGBD) conseille de ne pas déployer cette version avant d'en avoir fait un test complet.
En effet, bien qu'il soit préférable d'utiliser cette version plutôt que la version communautaire de la 5.0, Michael Widenius rappelle qu'il reste de nombreux "bogues fatals" à corriger et qu'il est conseillé d'attendre la sortie des premiers patchs correctifs avant de l'utiliser sur une plateforme en production.
Consulter le changelog
Télécharger MySQL 5.1 GA (General Availability)
Site officiel
Petit memento à critiquer
Un search and replace normal
search <% replace by <?
suivi d'un search and replace normal
search <?= replace by <?php echo
suivi d'un search and replace regexp
search <\?[^p] replace by <?phpPour ceux qui ne savent pas pourquoi je veux cela, un petit rafraichissement de mémoire se trouve ici : Pourquoi il est déconseillé d'utiliser les balises courtes...
Deux versions mineures de PHP sont disponibles depuis le 4 décembre. PHP 5.2.7 et la troisième version alpha de PHP 5.3.
Il aura fallu plus de six mois pour voir arriver un version stable de PHP 5.2.7. Cette version apporte son lot de corrections de bugs avec pas moins de 170 anomalies corrigées dont certaines concernent la sécurité. Parmi les correctifs de sécurités, on retiendra :
A screencast is better than several words. It's not (yet ?) really useful as you can only browse and read content, but it was fun to write. Nevertheless, I can imagine a real and serious use of an eZ Publish shell for example to write simple scripts without the need to learn the eZ Publish API in details or to provide a quick interface to developers. The source code is available if someone is interested...
Une belle nouvelle mouture du framework PHP 5 qu’est Jelix voit le jour aujourd’hui.
Au menu des réjouissances on trouve :
jForms : système de gestion automatique de formulaire
* nouveau contrôles : captcha, champ caché, groupe, choix avancé, éditeur html, sélectionneur de date…
* modification dynamique d’un formulaire : vous pouvez ajouter, supprimer, activer, désactiver des contrôles
* possiblité de savoir quels sont les valeurs modifiées
* intégration et utilisation de jquery
* les générateurs de sorties deviennent des plugins. Vous pouvez donc créer et modifier “facilement” votre propre format de sortie
jAcl2, un nouveau système de gestion des droits fait son apparition.
jTpl en version 1.0 “inside” : le système de template du framework
* support des déclarations dynamiques de modificateurs et fonctions
* support des tags sur plusieurs lignes
* nouveau plugins : cycle, flash, breadcrumb, link_to_remote, number_format, const, jmessage, jimage, ifctrl
Et entre autres :
* support de SOAP
* nouvelle réponse “htmlfragment” pour réponse ajax en html
* nouveau moteur d’url “basic_significant”
* nouvelles classes jIniModifier, jHttp, jMessage, jImageModifier…
* jDuration (pour jDateTime)
Téléchargement dispo ici http://jelix.org/articles/fr/telechargement/stable/1.1
Proposé par foxmask
- Amélioration de l'interface
- La gestion des sources (SVN)
- Suivi d'activité par les flux RSS et Atom
- Gestion des téléchargements
- Forum
- Intégration de Jabber
- Statistique SVG
- etc..
Traduction d'un tutorial de pradeep pradeep, écrit le 6 Mai 2007.
Quand il devient nécessaire de comparer deux ou plusieurs fichiers texte sous UNIX, la plupart des développeurs vont chercher le programme diff. Ce logiciel, est inclus par défaut dans presque toutes les distributions Unix, compare les fichiers ligne par ligne et affiche les changements dans un certain nombre de différents formats de sortie.
Bien qu'à l'origine, diff est un utilitaire de ligne de commande, des paquets pour reproduire ses fonctionnalités sont disponibles pour la plupart des environnements de développement et les languages, y compris Perl, JSP, et PHP. Venons en à Text_Diff, une classe PEAR qui permet de comparer le fichier contenu dans l'environnement PHP et proposer un rendu en différents formats.
Ce tutoriel va faire la démonstration de cette classe en l'action, illustrant la façon dont vous pouvez l'utiliser pour comparer dynamiquement du contenu des fichiers avec PHP, et de rendre les résultats sous forme de page Web. Je vais supposer que vous avez une installation Apache et PHP et que la classe PEAR Text_Diff a été correctement installé.
Note: Vous pouvez installer le paquet PEAR Text_Diff directement à partir du Web, soit en le téléchargeant ou en utilisant les instructions fournies.
Avant d'écrire le moindre code, il est nécessaire de mettre en place les fichiers de test, nous allons utiliser dans ce tutoriel. Ce sont deux fichiers simple, avec quelques différences délibérée que Text_Diff devrait être en mesure de reperer.
L'extrait A est le premier fichier, nommé data1.txt.
[txt] apple banana cantaloupe drumstick enchilada fig grape horseradish
Et l'extrait B est le second fichier, nommé data2.txt.
[txt] apple bat cantaloupe drumstick enchilada fig peach pear zebra
Après avoir créé les fichiers, nous allons commencer par une simple illustration de la manière dont fonctionne Text_Diff.
Commençons avec l'extrait C.
[php] <?php // ici il faut adapter les chemins à votre install include_once "Text/Diff.php"; include_once "Text/Diff/Renderer.php"; // On défini les fichiers à comparer $file1 = "data1.txt"; $file2 = "data2.txt"; // On effectue le diff $diff = &new Text_Diff(file($file1), file($file2)); // On construit le rendu et on affiche le résultat $renderer = &new Text_Diff_Renderer(); echo $renderer->render($diff); ?>
C'est assez simple à première vue. Il ya deux classes de base dans le paquet Text_Diff:
Le Text_Diff () l'objet, en particulier, doit être initialisé avec le contenu réel (et non pas l'emplacement) des deux fichiers à comparer.
Le script commence par l'initialisation de ces deux objets, en utilisant la fonction file() de PHP pour extraire le contenu de chaque fichier en une série de tableaux. L'objet Text_Renderer() est ensuite utilisé pour créer le rendu au format standard diff, un résultat qui devrait être familier à tout développeur UNIX:
[diff] 2c2 <banana --- >bat 7,8c7,12 <grape <horseradish --- >peach >pear > > > >zebra
Maintenant, la sortie ci-dessus n'est pas particulièrement facile à lire, sauf si vous avez beaucoup d'expérience au décodage diff résultats. C'est la raison pour laquelle Text_Diff est livré avec une série d'options de reformater ce résultat en quelque chose de plus lisible. Ces options sont accessibles au travers de classes enfant de l'objet Text_Diff_Renderer() et cela rend possible d'afficher le résultat de la comparaison en soit format unifié ou inline .
Le script suivant (extraits D) est une modification de l'exemple précédent pour obtenir un format unifié:
[php]
<html>
<head></head>
<body>
<pre>
<?php
// ici il faut adapter les chemins à votre install
include_once "Text/Diff.php";
include_once "Text/Diff/Renderer.php";
include_once "Text/Diff/Renderer/unified.php";
// On défini les fichiers à comparer
$file1 = "data1.txt";
$file2 = "data2.txt";
// perform diff, print output
$diff = &new Text_Diff(file($file1), file($file2));
$renderer = &new Text_Diff_Renderer_unified();
echo $renderer->render($diff);
?>
</pre>
</body>
</html>
Constatez l'appel à la classe enfant lors de l'initialisation du moteur de rendu.
Et voici le résultat:
[diff] @@ -1,8 +1,12 @@ apple -banana +bat cantaloupe drumstick enchilada fig -grape -horseradish +peach +pear + + + +zebra
Une rapide explication est ici nécéssaire: dans le format unifié, le signe plus (+) préfixe les lignes ajoutées, le signe (-) préfixe les lignes supprimées, et sans préfixe on a les lignes inchangées . Si l'on compare les résultats ci-dessus avec les fichiers originaux, il est assez facile de voir comment les diff générés reflètent les lignes qui ont changé et quel sont les changements.
Bien sûr, il est possible de le rendre encore plus facile à utiliser - et c'est précisément ce que le formatage en ligne tente d'accomplir.
Dans ce format, des biffures sont utilisées pour indiquer visuellement les caractères et les lignes qui ont changés.
L'extrait E vous montre comment l'utiliser.
[php]
<html>
<head></head>
<body>
<pre>
<?php
// ici il faut adapter les chemins à votre install
include_once "Text/Diff.php";
include_once "Text/Diff/Renderer.php";
include_once "Text/Diff/Renderer/inline.php";
// On défini les fichiers à comparer
$file1 = "data1.txt";
$file2 = "data2.txt";
// perform diff, print output
$diff = &new Text_Diff(file($file1), file($file2));
$renderer = &new Text_Diff_Renderer_inline();
echo $renderer->render($diff);
?>
</pre>
</body>
</html>
Et voici le rendu:
[html] apple <strike>banana</strike>bat cantaloupe drumstick enchilada fig <strike> grape</strike> <strike>horseradishpeach</strike> pear zebra
Voilà, ca c'est fait. J'espère que vous avez maintenant une idée claire de la façon dont Text_Diff peut être utilisé pour rapidement et efficacement comparer des fichiers dans l'environnement PHP et de la façon dont le rendu peut être formaté pour faciliter la lisibilité. Codez bien!
Une nouvelle version de Symfony est à présent disponible.
Cette version corrige essentiellement quelques bugs présent sur la précédente release.
Pour plus d'informations, consultez le changelog.
Télécharger Symfony 1.2.1
Site officel
Deux nouvelles versions de Drupal sont disponibles en téléchargement.
Ces versions n'apportent aucune nouvelle fonctionnalité et se contentent de corriger un bug de comptabilité avec PHP 5.2 présent sur les versions 6.7 et 5.13 de Drupal.
Il est fortement recommandé d'effectuer cette mise à jour.
Pour te plus ample informations, consultez les guides d'installation ci-dessous :
Drupal 6.x
Drupal 5.x
Nous avons le plaisir de vous annoncer la naissance d'un magnifique bébé (18 mois de gestation) nommé SPIP 2.0, d'un poids de 15,56 Mo (dont 8,39Mo de traductions - 80 langues dont 30 finalisées)
Cet enfant extrèmement bien conçu, comme tout SPIP qui se respecte, propose de publier du contenu pour internet et de créer des sites avec une grande facilité. Son apprentissage est très souple et les améliorations permettent de l'utiliser comme plateforme de développement.
Un article complet explique en détail l'évolution : http://www.spip.net/fr_article3784.html
Voici quelques nouveautés pour vous mettre l'eau à la bouche :
Proposé par Jacques PYRAT
- La prévision
- La capture
- La fixation
Dans un filtre on peut vérifier si une valeur est un nombre, une chaine, un objet, un tableau, ...
Pour tout ce qui est scalaire ca va mais pour un tableau par exemple, on ne vérifie que "l'enveloppe", la "structure" d'un ensemble de données, plus les données elles-même comme avec un is_numeric()
Voici une fonction que j'ai tenté d'écrire pour palier à cela.
Je suis parti d'un commentaire du manuel de la fonction PHP is_array()
Elle est sans doute encore à améliorer Edit:Lisez les commentaires ils sont "utiles"
I've just release the first beta of my first symfony plugin: sfConsolePlugin. This plugins provides a PHP shell, with tab-completion, history support, and symfony capabilities. To install and use it, you need symfony 1.2 and the readline extension. From your project root:
$ ./symfony plugin:install sfConsolePlugin --release=0.0.2 $ ./symfony console:run
see the README file for more info.
Traduction d'une série d'articles de Lorenzo Alberton
Il lui est souvent posé des questions sur la façon d'utiliser PEAR::Pager. Cela va
de la manière efficace de paginer des résultats lu dans une base de données,
à l'utilisation combinée de PEAR::Pager et javascript
ou de PEAR::Pager et AJAX,
en passant par l'utilisation de PEAR::Pager et de mod_rewrite.
Étant donné que ces questions sont de plus en plus récurrentes sur sa boîte mail ou sur les mailing-lists de PEAR,
il a décidé d'écrire cette série de petits tutoriaux :
Vous désirez un sujet particulier? vous voulez utiliser Pager de façon inhabituelle? S’il vous plaît envoyez un mail à Lorenzo avec votre idée.
Sur le site developer.com, W. Jason Gilmore a publié un tutoriel présentant différentes façons d'envoyer des emails avec PHP.
Pour cela l'auteur nous propose trois possibilités :
Dotclear 2.1.4 vient de sortir et est disponible au téléchargement.
Parmi les modifications :
La version de phpMyAdmin 3.1.1 est sortie, elle corrige plusieurs bugs et notamment un bug de sécurité. Ce correctif s'applique aussi à la version 2.11 de phpMyAdmin.
Free vient d'inaugurer une nouvelle plateforme de blog utilisant le moteur de blog libre DotClear2.
Ce nouveau service est ouvert à tous et vous permet de créer votre blog sans vous soucier de trouver un hébergement ou de choisir un nom de domaine. Vous n'aurez même pas besoin d'installer DotClear sur votre espace, puisque vous accéderez à un blog préconfiguré.
Après votre inscription, vous disposerez d'un blog à l'adresse suivante : pseudo.blog.free.fr. Vous pouvez alors gérer votre blog avec les principales fonctionnalités de DotClear2, gestion des billets, des commentaires, des tags et modification du thème. Cependant, Free.fr limite au maximum les fonctions avancées de DotClear, puisqu'il ne vous sera pas possible d'accéder à la configuration avancée de votre blog, de charger votre propre thème ou d'installer vous même des plugins.
S'inscrireEn attendant qu’une prochaine version de CSS gère les variables, voici quelques techniques simples pour ajouter du code PHP à vos CSS de manière à pouvoir gérer des feuilles de style dynamiques.
La première solution consiste à se servir d’un fichier PHP en tant que « text/css ». Pour cela il suffit d’appeler le fichier PHP au sein d’une balise comme ceci :
< link rel="stylesheet" href="styles.php" type="text/css" />
Le fichier style.php, quand a lui, doit faire l’objet de quelques configurations supplémentaires au niveau du header afin de préciser explicitement au navigateur que le fichier doit être considéré comme une feuille de style. Pour cela il suffit d’ajouter avant la génération du contenu le code suivant:
header('content-type: text/css');
A noter aussi, qu’à la différence d’une feuille de style, le fichier PHP ne sera pas placé en cache et sera rechargé systématiquement. Pour remédier à ce problème quelques configurations supplémentaires s’imposent :
header('HTTP/1.0 304 Not Modified');
header('Cache-Control: max-age=3600, must-revalidate');
Une second solution est possible mais nécessite l’utilisation du .htaccess. Cette technique consiste à spécifier au serveur d’interpréter les feuilles de style comme étant des fichiers PHP en ajoutant au .htaccess la ligne ci-dessous :
AddType application/x-httpd-php .css
A présent, il ne reste plus qu’a inclure du code au sein de la feuille de style. Voici un exemple simple permettant de modifier la couleur de fond en fonction d’une variable stockée en session :
< ?php
header( 'content-type: text/css' );
session_start();
$_SESSION[‘background_color’] = ‘#666666’;
?>
body {
background: < ?php $_SESSION[‘background_color’]; ?>;
}
Source : developpez.com
La version 4.1.0alpha1 de eZ Publish est sortie le 18 décembre.
Cette nouvelle version inclue des modifications, de nouvelles fonctionnalités et des corrections des bugs, parmi lesquelles :
Une nouvelle version stable de SPIP 2 a été mis en ligne le 23 décembre suite à la découverte de trois failles de sécurités importantes. Ces failles étant présentes depuis bien longtemps, l'équipe de SPIP a également pensé à ceux qui ne sont pas encore passés à la version 2 de SPIP et a publié deux versions corrigées : la 1.9.2g et la 1.8.3b.
Concernant SPIP 2.02, voici quelques modifications apportées depuis la sortie, il y a quelques jours, de la version 2.0 :
Réseaux sociaux, blogs et autres applications communautaires regroupés sous le terme « marketing » de Web 2.0, ont depuis 3 ou 4 ans fait évoluer les usages liés à l'Internet et la conception que les néophytes pouvaient s'en faire.
Le Monde Informatique propose un bilan 2008 de ces technologies en posant le problème de l'utilisation et de l'utilité dans l'Entreprise. Il est vrai que si l'évolution des mœurs des particuliers concernant l'utilisation du Web est flagrante, il est cependant intéressant de voir les profits que peuvent tirer les professionnels de ces nouvelles méthodes et techniques de communications.
« Bilan 2008 : la percée du Web 2.0 en entreprise » regroupe donc une dizaine d'articles qui présentent entre autre:
Un cadeau pour Noël : un SPIP bien sécurisé suite à la découverte de 3 failles.
Bonjour,
un message important si vous avez un site en SPIP : c'est Noël !!!
Oui certes c'est noël mais aussi, trois failles importantes nous ont été signalées depuis la semaine dernière. Elles ont été corrigées aussitôt et nous sortons donc de nouvelles versions.
Nouvelles au pluriel car les failles sont là depuis bien longtemps.
Nous vous encourageons bien sur à en profiter pour passer à la dernière version stable de SPIP (2.0.2) disponible ici : http://www.spip.net/fr_download
Cependant si vous êtes "coincé" avec une version plus ancienne de SPIP et
en attendant de passer à une version plus récente, vous trouverez une version
1.8.3b et une version 1.9.2g dans le répertoire
http://files.spip.org/spip/archives/
Merci a Jean Bon, Julien Cayssol et Pierre Gardenat pour nous avoir signalé les failles. N'hésitez pas à faire de même en signalant toute faille sur la
liste privée des cores développeurs : spip-team@rezo.net
Si vous avez des questions d'ordre général deux listes sont à disposition :
la liste des utilisateurs : http://listes.rezo.net/mailman/listinfo/spip
la liste des développeurs : http://listes.rezo.net/mailman/listinfo/spip-dev
Autre rappel, la mailing liste SPIP-annonce :
http://listes.rezo.net/mailman/listinfo/spip-ann est une
liste utilisée pour vous signaler les éventuels problèmes ou les
nouvelles versions. N'hésitez pas à vous y inscrire pour rester au
courant de l'actualité SPIP (le volume d'envoi est très faible).
Pour finir, quelques détails concernant les différences depuis la
sortie de la 2.0 :
2.0.1 -> 2.0.2
- refuser les urls avec le pseudo protocole data (13521)
- bonne année (13520)
- Unifier la mise en page dans les 3 onglets de gestion des langues (13519)
- encore quelques retouches sur l'agenda de l'espace publique (13517)
- le champ type de la balise A d'un logo de document était toujours vide (13512)
- la boucle DOCUMENTS ne donnait pas les documents attachés aux
messages de forums (13511)
- accepter les notes nommees <*> <+> <.> et autres caracteres
significatifs (13510)
- un peeling pour évacuer le point noir. (13508)
- amélioration du calcul de popularité (13506)
- lien incorrect dans le message à un visiteur venant de s'inscrire (13504)
- support du png8 comme format de image_format (l'extension sera bien
'png') (13501)
- authentification via LDAP/AD, lire le Samaccountname (13500)
- proteger l'$id fournit a calcul_branche_in (13498)
2.0.0 -> 2.0.1
- réparation d'un bug sur les urls standard et autres anciennes
implémentations (13489)
- problème de création du répertoire cache à l'install (13487)
- correction mineure sur le calcul des visites (13485)
- Compilateur : défaut sur la prise en compte sur le champ statut dans
le cas d'une requête sur une table principale (13484)
- correction pour IE6/7 sur les formulaires de l'espace privé (13481)
- il était impossible de déplacer SPIP dans un sous répertoire (13478)
Nous vous souhaitons de joyeuses fêtes.
Ben. (pour la tendre équipe SPIP)
Proposé par Jacques PYRAT
Choisir un CMS n'est pas toujours évident. Pour nous aider, le site www.devshed.com propose un comparatif entre divers CMS.
Avant de vouloir choisir un CMS, il est important de savoir précisément quelles fonctionnalités seront nécessaires au site, il faut essayer de les classer par ordre de priorité.
Voici une liste classique de fonctionnalités :
- Les attaques XSS (Cross Site Scripting)
- Les variables globales
- Le code SQL
Si vous avez besoin d’une connexion sFTP, vous devez d’abord établir une connexion SSH sur votre serveur. Cependant cela donnera aussi un accès Shell aux utilisateurs utilisant cette connexion, ce qui n’est toujours pas souhaitable. Voici comment procéder pour faire du “sFTP only” :
# find /usr/ -name sftp-server /usr/libexec/sftp-server
# usermod -s /usr/libexec/sftp-server ftp_admin
# echo "/usr/libexec/sftp-server" >> /etc/shells
C’est fait !
Cela peut se révéler nécessaire pour diverses raisons
La solution consiste a créer un index UNIQUE sur les champs voulus. Cependant en cas de lignes dupliquées sur ces champs, le processus d’ajout de cette contrainte d’unicité va s’annuler avec une error du type “duplicate entry for key XXX”.
Il faut alors utiliser le mot clé IGNORE lors de l’ajout de cette clé unique :
"IGNORE est une extension MySQL pour ANSI SQL92. Cette option contrôle la façon dont ALTER TABLE fonctionne s’il y a des duplications sur une clef unique de la nouvelle table. Si IGNORE n’est pas spécifiée, la copie est annulée et la table originale est restaurée. Si IGNORE est spécifiée, les lignes contenant les éléments doublons de la table seront effacées, hormis la première, qui sera conservée.” (documentation MySQL)
Ainsi la requête suivante supprimera tous les doublons sur champ1, champ2 et champ3:
ALTER IGNORE TABLE ma_table ADD UNIQUE KEY ( champ1, champ2, champ3 );
En cette fin d'année 2008, je vous souhaite une bonne et heureuse année 2009 (Happy New Year 2009)....
et bien sur les ElePHPants le font si bien

En cette fin d'année 2008, je vous souhaite une bonne et heureuse année 2009 (Happy New Year 2009)....
et bien sur les ElePHPants le font si bien
