Propagator

Ce script en PHP 5 permet de copier une balise dont l'attribut ID est donné d'une page HTML sur toutes les autres pages HTML dans le même répertoire et ses sous-répertoires.

Il peut servir notamment à insérer le code Analytics sur toutes les pages d'un site construit à partir de fichiers conservés localement.

Si le site est géré par un CMS, ce script est inutile si on place le code à propager dans le template, par exemple dans le footer ou un panneau latéral. Si on veut le placer dans le corps des articles, il faudrait utiliser des requêtes SQL pour le propager, en fonction des tables propres au CMS, cela va au-delà de son domaine d'action.

Limitation

A cause d'une bogue dans PHP 5.2.8, la copie est désactivée dans les pages contenant du code PHP.
Lorsqu'un script PHP est contenu dans une page Web, et que ce script contient une comparaison avec le code ">" (plus grand que), alors la fonction loadHTMLFile (utilisée par Propagator) remplace le code de fin de script "?>" par la chaîne de caractères "?&gt ;".

C'est manifestement une bogue dans PHP et il faudra attendre une version ultérieure pour que ce soit corrigé.
A ce moment là on pourra utiliser l'option -p pour prendre en charge les fichiers contenant du code PHP.

On peut utiliser le script php-test.php dans l'archive pour tester la fonction.

Utilisation du script

Il fonctionne en ligne de commande, sur Windows, Linux et autres systèmes supportant PHP. PHP 5 doit être installé.

  1. Vous devez avoir une copie locale du site. Le script ne fonctionne pas à distance.
  2. Faire une sauvegarde de cette copie.
  3. Insérer le code à propager dans un fichier source, généralement index.html.
  4. Donner un identifieur à la balise contenant ce code.
  5. Choisir l'option pour l'emplacement où copier le code dans les pages (voir options plus bas).
  6. Lancer le script.
  7. Vérifier les fichiers modifiés sur des échantillons de pages.
  8. Si le code d'une page est mal formé, les fonctions DOM de PHP ne fonctionneront pas, il faudra copier le code manuellement.

Le script peut être réutilisé indéfiniment sur le même site. Le code est ajouté dans les pages la première fois, puis il sera mis à jour les fois suivantes, quand on modifie la page source.

On peut aussi effacer les codes insérés avec la commande appropriée.

Commandes

La syntaxe générale de commande est la suivante.

php propag.php [option] ID fichiersource

ID est le nom de l'identifieur de la balise contenant le code à copier.

Exemple:

<div id="demo">
<script ....
</script>
</div>
php propag.php demo fichiersource

fichiersource est le chemin et le nom du fichier contenant le code à copier. Généralement index.html.

Vous pouvez taper php propag.php simplement, pour afficher la version et les options.

Les options

On peut combiner les options après le signe -, par exemple: -hbi

-h copier le code dans la partie <head> des pages. Par défaut il est copié dans <body>, à la fin.

-b copier le code au début du contenu de la balise head ou body. Par défaut il est ajouté à la fin.

-i se limiter au répertoire seul, ne rien modifier dans les sous-répertoires.

-d effacer le code dans toutes les pages où il a été inséré.

-v afficher le détail des opérations.

-q ne rien afficher (sauf les messages d'erreur).

-0..9 définit la taille minimale d'un fichier à prendre en compte. Le chiffre est multiplié par 1024. Par défaut c'est 1 donc les fichiers de moins de 1024 octets sont ignorés.

-t tester seulement pour voir ce qui se passe, s'utilise en conjonction avec -v sous la forme -tv. Aucun fichier ne sera modifié.

L'option -p ne doit pas être utilisée avec PHP 5.2.8 et toutes les versions qui ont le bogue de la méthode loadHTMLFile décrit plus haut.

Téléchargement

Le script est téléchargeable dans une archive au format ZIP.

Télécharger Propagator

Requiert PHP 5.
Licence GPL 3.0.

Versions