Upload de fichier avec barre de progression en PHP

Il y a une petite nouveauté dans PHP 5.2 qui est passée un peu inaperçu, c’est la possibilité de suivre l’avancement de l’upload d’un fichier.

Je me suis un peu amusé à tester ça en local et ça marche :) Bon, le problème c’est qu’il faut l’extension APC pour pouvoir lire dans le cache PHP. Je vous aurai bien mis une petite démo en ligne mais mon hébergeur n’a pas installé l’extension et je ne peux pas la charger dynamiquement avec la fonction dl.

Du coup, je me demande si ça vaut vraiment la peine d’implémenter ça dans l’E2T… Combien d’hébergeurs propose APC ? Je doute qu’il y en ait beaucoup malheureusement. C’est dommage car le système est assez simple à mettre en place, quelques lignes de code (PHP et Javascript) suffisent.

Je pensais aussi l’utiliser dans FabCMS mais je vais finalement me diriger vers quelque chose en flash…

Mise à jour de mes mods IPB 2.1

Je viens de terminer le portage de mes mods IPB 2.1 vers la version 2.2 d’IP.Board. J’ai mis un peu plus de temps que j’avais prévu, sûrement parce que je n’étais pas très motivé pour le faire. J’en ai profité pour les mettre sur le serveur SVN d’Invision Board France. :)

Voici donc la liste des mods qui ont été mise à jour :

  • MiniChat – MiniChat (ou shoutbox si vous préférez) pour vos forums utilisant AJAX.
  • ChatComposant – Permet aux membres de se connecter à un ou plusieurs salons IRC depuis vos forums via une Applet Java.
  • Bloc de bienvenue – Plugin pour le portail permettant d’afficher un bloc de bienvenue.
  • Liste des forums – Plugin pour le portail affichant un bloc avec la liste des forums.
  • Bloc de connexion – Plugin pour le portail permettant de se connecter directement depuis le portail d’IPB.

Une nouvelle mod a fait son apparition Évènements à venir. Elle permet d’afficher un bloc sur le portail IPB avec la liste des évènements à venir.

Il reste également l’E2T qui est actuellement disponible en version beta. Je pense/espère qu’une nouvelle version de développement sortira bientôt (ça dépend de mes collègues Prolag et Youp3 :p).

Script d’Installation v2.0

Cette après-midi j’ai terminé la nouvelle version de mon script d’installation.

Vous ne connaissez peut-être pas directement ce script mais si vous avez déjà installé une de mes mods, vous l’avez déjà utilisé. Ce script permet d’installer (ou désinstaller d’ailleurs) facilement des paramètres, des templates, des composants, … dans IPB. C’est bien pratique et ça m’évite de créer un nouvel installer pour chacune de mes mods.

Avec cette nouvelle version, j’ai voulu, notamment, améliorer l’internationalisation du script. Ainsi, on peut maintenant spécifier les fichiers à importer pour chaque langue. C’est intéressant pour les mods qui seront disponibles en anglais et en français comme l’E2T. Ça évitera de devoir faire deux archives zip distinctes pour les deux langues. Il y a également la même chose pour la content:encoded de la mod.

J’en ai aussi profité pour ajouter l’importation de tâches et de macros. Même si c’est encore buggé actuellement (la faute à IPB), ça devrait être bon avec IPB 2.2 Finale. J’ai également pris en compte les suggestions de Franfrou et de Youp3. :)

J’ai déjà testé cette nouvelle version pour l’installation de l’E2T 2.3. Hors mis les tasks et les macros, ça passe bien. Maintenant il va falloir que m’occupe du système de mise à jour de l’E2T qui est basé sur mon script d’installation. Là, je sens que ça va pas du gâteau…

Multi-Upload en php/javascript

Ça y est ! Je viens de terminer la dernière fonctionnalité de mon CMS perso pour la prochaine version. Il s’agit d’un gestionnaire de fichiers. Le fonctionnement est plus ou moins similaire au gestionnaire de pages sauf que cette fois c’est des fichiers physiques. Par chance, j’avais déjà écrit une classe php pour gérer les fichiers physiques… sur un FTP distant. Comme je n’en ai plus besoin (les images et mon site sont chez le même hébergeur), j’ai dû écrit une nouvelle classe pour un dossier qui serait disponible localement.

Une des fonctions du gestionnaire est bien sûr de pouvoir envoyer des nouveaux fichiers. Le bût d’un CMS est normalement de pouvoir gérer tout son site via une interface web, il faut donc quelque chose d’assez ergonomique et rapide. Souvent le problème pour ce genre de fonction c’est l’upload de plusieurs fichiers. Si votre formulaire ne propose d’uploader qu’un seul fichier, cela va vite devenir chiant. Il y a bien une solution qui consiste à afficher plusieurs champs « fichier » dans la page mais nous allons être limité avec le temps d’exécution de php. Vous pourrez donc au maximum uploader que 2-3 fichiers en même temps…

Heureusement, il existe une autre solution : l’excellente classe javascript MultiUpload de Nem. Vous saisissez les fichiers à envoyer et seulement après vous validez le formulaire. Les fichiers seront envoyés un par un mais sans intervention de la part de l’utilisateur. Bien sûr, il faut toujours saisir les fichiers un par un mais ce n’est pas gênant pour une quantité raisonnable de fichiers (moins de 20).

Il reste maintenant plus que quelques petits détails ainsi que mettre à jour mes modules et je pourrais mettre à jour mon site :D

E2T 2.2

La version 2.2 de l’E2T, un composant permettant de créer un espace de téléchargements, est en cours de développement depuis quelques mois déjà.

Nous avons revu le week-end dernier la RoadMap pour l’alléger et reporter certaines tâches/améliorations à une probable version 2.3 ou 3.0. L’upload de fichier via AJAX et le moteur de recherche interne ne seront donc pas intégrés dans l’E2T 2.2 ( :( ) mais dans une prochaine version. Pour AJAX, le travail a toutefois été préparé avec une refonte du formulaire d’ajout/d’édition et une réorganisation des templates.

Autre nouveauté, on peut désormais exporter les fichiers dans des flux RSS. Très pratique pour être au courant des dernières nouveautés sans passer sur le site. La gestion des flux RSS de l’E2T se passe comme pour ceux d’IPB : choix des catégories, possibilité de mettre une image, choix du nombre d’éléments exportés,…

Autre changement majeur, l’installeur. L’E2T 2.2 utilise mon propre script ce qui a permis de proposer une désinstalleur et d’avoir une installation plus rapide. En effet, l’installeur n’exécute plus les requêtes de toutes les mises à jour, il y a un fichier avec la dernière version de la structure BDD de l’E2T.
Le script de mise à jour a donc dû être revu. Il utilise maintenant la librairie de fonctions de mon script d’installation.

Le développement continu… :-)