Transformations

Note

Vous devez avoir configuré Configuration de stockage de phpMyAdmin pour utiliser la fonctionnalité de transformations.

Introduction

Pour permettre les transformations, vous devez paramétrer la table column_info et les directives appropriées. Veuillez consulter la section Configuration sur la manière de faire.

phpMyAdmin propose deux types de transformations : les transformations d’affichage du navigateur, qui n’affectent que l’affichage des données lors de la navigation dans phpMyAdmin, et les transformations d’entrée, qui affectent une valeur avant son insertion dans phpMyAdmin. Vous pouvez appliquer différentes transformations au contenu de chaque colonne. Chaque transformation dispose d’options permettant de définir comment elle affectera les données stockées.

Imaginons que vous ayez une colonne nom_de_fichier qui contient un nom de fichier. Normalement, vous ne verriez dans phpMyAdmin que ce nom de fichier. En utilisant l’affichage des transformations, vous pouvez transformer ce nom de fichier en lien HTML, et ainsi cliquer sur la structure de phpMyAdmin sur le lien du champ et voir le fichier affiché dans une nouvelle fenêtre de navigateur. En utilisant les options de transformation, vous pouvez également spécifier des chaînes pour préfixer ou suffixer des chaînes ou d’autres formats pour lesquels vous voulez voir le résultat avec ces transformations.

Pour avoir un aperçu général de toutes les transformations disponibles et de leurs options, vous pouvez soit cliquer sur le lien « Modifier » pour une colonne existante, soit créer une nouvelle colonne à partir de la boîte de dialogue. Dans les deux cas, il y a un lien sur la page de structure de la colonne pour « Transformation d’affichage » et « Transformation de saisie » qui vous donnera plus d’informations sur chaque transformation disponible sur votre système.

Pour un tutoriel sur la façon d’utiliser efficacement les transformations, voir notre section Liens sur la page d’accueil officielle de phpMyAdmin.

Utilisation

Consultez la page de structure de table (atteindre la page en cliquant le lien “Structure” d’une table). Cliquez alors sur « Modifier » (ou l’icône Modifier) et vous verrez alors trois nouveaux champs à la fin de la ligne : “Media type”, “Transformation” et “Options de transformation”.

  • Le champ “Media type” est un champ déroulant. Sélectionnez le Media type qui correspond au contenu de la colonne. Veuillez noter que beaucoup des transformations sont inactives jusqu’à ce que Media type ne soit sélectionné.
  • Le champ “Browser display transformation” est un champ à liste déroulante. Vous pouvez choisir à partir d’une liste grandissant sans cesse de transformations prédéfinies. Voir ci-dessous pour des informations sur la manière de construire vos propres transformations. Il existe des transformations globales et des transformations liées aux types MIME. Les transformations globales peuvent être utilisées pour tous les types MIME. Elles prendront si nécessaire le type MIME en considération. Les transformations liées au type MIME n’opèrent habituellement que sur un certain type MIME. Il existe des transformations qui opèrent sur le type MIME principal (comme “image”), et qui prendront très vraisemblablement en compte le sous-type, et celles qui n’opèrent que sur un sous-type spécifique (comme “image/jpeg”). Vous pouvez utiliser les transformations sur les types MIME pour lesquels la fonction n’a pas été prévue. Il n’y a pas de vérification pour s’assurer que vous avez choisi la bonne transformation, aussi, assurez-vous du résultat du traitement.
  • Le champ « Options de transformation de l’affichage du navigateur » est un champ de texte libre. Il vous faut saisir ici des options spécifiques de fonction de transformation. Habituellement, les transformations peuvent opérer avec les options par défaut, mais c’est généralement une bonne idée de jeter un œil à la vue générale pour voir quelles options sont nécessaires. Comme pour les champs ENUM/SET, il vous faut séparer plusieurs options en utilisant le format “a”,”b”,”c”,… (NOTEZ L’ABSENCE D’ESPACES). La raison est que les options seront analysées en interne comme un tableau, la première valeur étant vue comme le premier élément du tableau, et ainsi de suite. Pour spécifier un jeu de caractères MIME, il vous est possible de le définir dans transformation_options. Il vous faut mettre cela en dehors des options prédéfinies d’une transformation mime spécifique, en tant que dernière valeur de l’ensemble. Utiliser le format « “; charset=XXX” ». En cas d’utilisation d’une transformation pour laquelle il est possible de spécifier deux options et pour y ajouter un jeu de caractères, saisir « “premier paramètre”,”second paramètre”,”charset=us-ascii” ». Il est toutefois possible d’utiliser les paramètres par défaut : « ””,””,”charset =us-ascii” ». Les options par défaut peuvent être configurées en utilisant $cfg['DefaultTransformations'].
  • La « Transformation de saisie » est un autre menu déroulant qui correspond exactement aux instructions ci-dessus pour la « Transformation d’affichage », sauf que ces transformations affectent les données avant leur insertion dans la base de données. Elles sont le plus souvent utilisées pour fournir un éditeur spécialisé (par exemple, en utilisant l’interface de l’éditeur SQL de phpMyAdmin) ou un sélecteur (comme pour le téléchargement d’une image). Il est également possible de manipuler les données, par exemple en convertissant une adresse IPv4 en binaire ou en l’analysant au moyen d’une expression régulière.
  • Enfin, la section « Options de transformation de saisie » est l’équivalent de la section « Options de transformation d’affichage » ci-dessus et c’est là que les paramètres facultatifs et obligatoires sont saisis.

Structure de fichier

Toutes les transformations spécifiques des types MIME sont définies en fichiers de classes dans le répertoire libraries/classes/Plugins/Transformations/. Chacun d’eux étend une certaine classe abstraite de transformation déclarée dans libraries/classes/Plugins/Transformations/Abs.

Ils sont stockés dans des fichiers pour faciliter la personnalisation et permettre l’ajout facile de transformations nouvelles ou personnalisées.

Parce que l’utilisateur ne peut pas mettre ses propres types mime, on garde l’assurance que les transformations fonctionneront toujours. Cela n’a pas de sens d’appliquer une transformation à un type mime, que la fonction de transformation ne sait pas manipuler.

Il y a un fichier appelé libraries/classes/Plugins/Transformations.php qui fournit des fonctions de base qui peuvent être incluses dans une autre fonction de transformation.

La convention de nommage de fichier est [Mimetype]_[Subtype]_[Transformation Name].php, alors que la classe abstraite qui l’étend prend le nom [Transformation Name]TransformationsPlugin. Toutes les méthodes qui doivent être implémentées par un plugin de transformation sont :

  1. getMIMEType() et getMIMESubtype() dans la classe principale ;
  2. getName(), getInfo() et applyTransformation() dans la classe abstraite qui l’étend.

Les méthodes getMIMEType(), getMIMESubtype() et getName() renvoient le nom du type MIME, les sous-type MIME et la transformation respectivement. getInfo() renvoie la description de la transformation et les options éventuelles qu’il peut recevoir et applyTransformation() est la méthode qui effectue en fait le travail de transformation du plugin.

Merci de consulter les fichiers libraries/classes/Plugins/Transformations/TEMPLATE et libraries/classes/Plugins/Transformations/TEMPLATE_ABSTRACT pour ajouter un plugin de transformation propre à l’utilisateur. Il est aussi possible de générer un nouveau plugin de transformation (avec ou sans la classe abstraite de transformation), en utilisant scripts/transformations_generator_plugin.sh ou scripts/transformations_generator_main_class.sh.

La méthode applyTransformation() prend toujours 3 variables :

  1. $buffer - Contient le texte dans la colonne. C’est le texte à transformer.
  2. $options - Contient n’importe quelle option utilisateur vers une fonction transform en tableau.
  3. $meta - Contient un objet avec des informations sur la colonne. Les données sont acquises à partir de la sortie de la fonction mysql_fetch_field(). Cela signifie que toutes les propriétés d’objet décrites sur la page du manuel sont disponibles dans cette variable et peuvent être utilisées pour transformer une colonne selon les propriétés unsigned/zerofill/not_null/…. La variable $meta->mimetype contient le Media type d’origine de la colonne (i.e. “text/plain”, “image/jpeg” etc.)