Opérateur PHP avec eZ Publish

Opérateur PHP avec eZ Publish

Comme on me le suggérait récemment, j'ai regardé l'extension wrap_operator permettant de "sécuriser" les fonctions PHP que l'on peut utiliser dans un template eZPublish. Tout n'est pas parfait dans cette extension mais l'idée est plutôt bonne. J'ai donc extrait uniquement la fonctionnalité voulu et je l'ai adapté à eZ Publish 4 et supérieur.

L'extension SfxPHPFunction

J'ai donc repris l'idée de l'extension wrap_operator pour créer une extension qui se focalise sur une tache : fournir au moteur de template d'eZ Publish les fonctions natives de PHP, ces fonctions ne sont utilisables que si elle sont déclarés dans un fichier de settings.

Vous allez me dire, cette fonctionnalité existe deja dans eZ Publish mais elle est limité à 1 seul paramètre par fonction, ce qui limite grandement son utilité. De plus, cette manière de faire réserve parfois quelque surprise lorsqu'on passe en production, un vidage de cache assez sauvage est souvent nécessaire.

Pour information, il suffisait de déclarer dans le fichier template.ini.append.php la liste des opérateurs disponibles :

[PHP]
PHPOperatorList[addslashes]=addslashes

Il suffit alors d'utiliser l'opérateur dans des templates

{$variable|addslashes}

L'extension SfxPHPFunction fonctionnement selon le même principe :

Le fichier ini sfx_php_operator contient la liste des fonctions PHP autorisées :

[PHPFunctions]
PermittedFunctionList[]
PermittedFunctionList[]=addslashes
PermittedFunctionList[]=stripslashes
...

L'extension met à la disposition du développeur un seul opérateur php_func qui permet d'appeller les fonctions PHP. Le premier paramètre est le nom de la fonction PHP le deuxième est un tableau contenant les paramètres nécessaires à l'exécution de la fonction.

Par exemple, pour s'assurer que seul la mise en emphase forte et les saut de ligne ne soit affichés dans un block XML. On aura un template du genre.

{set-block variable=$block}
  {attribute_view_gui attribute=$node.data_map.intro}
{/set-block}
{php_func('strip_tags', array($block, '
'))}

Cette extension fait gagner un temps précieux dans la mise en place d'opérateur dans eZ Publish. De plus, l'interface proposé par les différents opérateurs est connu par la plupart des développeurs PHP ce qui évite les aller retour incessant à la documentation. Par ailleurs, les opérateurs s'enrichissent au même rythme que les évolutions de PHP sans qu'il n'est de retouche de code à effectuer

Télécharger l'extension sfxphpfunction

Commentaires

Ajouter un commentaire

Plain text

  • Aucune balise HTML autorisée.
  • Les adresses de pages web et de courriels sont transformées en liens automatiquement.
  • Les lignes et les paragraphes vont à la ligne automatiquement.
By submitting this form, you accept the Mollom privacy policy.