FAQ EasyMOD : développement [MAJ 11/02/2006]

Ce forum regroupe quelques documents de référence que j'ai rédigé
Répondre
Avatar de l’utilisateur
FTP
Messages : 1028
Inscription : 06 mars 2004 14h41
Contact :

FAQ EasyMOD : développement [MAJ 11/02/2006]

Message par FTP »

Dernière modification par FTP le 26 nov. 2006 13h01, modifié 6 fois.
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir 24h !
Avatar de l’utilisateur
FTP
Messages : 1028
Inscription : 06 mars 2004 14h41
Contact :

Message par FTP »

Introduction

Maintenant que tout le monde a pu apprécier tout l'intérêt d'EasyMOD, il ne reste plus pour les auteurs de MODs qu'à adapter leurs créations pour qu'elles soient compatibles avec ce fantastique outil.

Mais avant de rentrer dans le détail, voilà quelques explications générales...

Tout d'abord il faut bien comprendre plusieurs choses :
  1. phpBB fonctionne grâce à environ 300 fichiers de code (php ou html essentiellement). Quand vous téléchargez phpBB, vous récupérez la version originale de ces 300 fichiers (avec langue anglaise et thème subSilver inclus).
  2. Les MODs sont quant à eux des recueils d'instructions précises visant à vous expliquer comment MODifier le code de votre forum pour lui ajouter telle ou telle fonctionnalité, ou corriger tel ou tel pb. Ils sont toujours écrits pour qu'ils soient installables sur le code original des fichiers de phpBB, le seul qui fasse référence.
  3. Or précisément parce que les fichiers de phpBB peuvent être modifiés, que des thèmes différents de subSilver ou des langues différentes de l'anglais peuvent être installés, l'installation d'un MOD peut s'avérer problématique. Plusieurs facteurs peuvent rendre difficile voir impossible cette installation (et ça n'a rien à voir avec le fait que le MOD soit installé via EasyMOD ou à la main) :
    • Exemple : si dans le code original de phpBB on avait cette ligne...
      [php]$l_explain = "Yes";[/php]...et qu'un premier MOD l'ait fait remplacer par...
      [php]if( phpversion() == '4.0.4' )
      {
      $l_explain = "php 4.0.4";
      } elseif( ini_get('allow_url_fopen')==0 )
      {
      $l_explain = "allow_url_fopen: off";
      } else
      {
      $l_explain = "";
      }[/php]...on comprend immédiatement que la prochaine fois que les instructions d'un MOD demanderont à rechercher la ligne "$l_explain = "Yes";" ça sera impossible !
      Et que l'installation du MOD se fasse à la main ou via EasyMOD ne changera rien, cette instruction de recherche prise strictement échouera car elle sera impossible à réaliser sur votre code déjà modifié.
    • Autre exemple : si vous avez installé le thème trucMuche et que sur sa page d'index il y ait 3 colonnes...
      [php]<tr>
      <th colspan="2" class="thCornerL">&nbsp;{L_FORUM}&nbsp;</th>
      <th width="50" class="thTop">&nbsp;{L_TOPICS}&nbsp;</th>
      <th class="thCornerR">&nbsp;{L_LASTPOST}&nbsp;</th>
      </tr>[/php]...au lieu de 4 sur subSilver...
      [php]<tr>
      <th colspan="2" class="thCornerL">&nbsp;{L_FORUM}&nbsp;</th>
      <th width="50" class="thTop">&nbsp;{L_TOPICS}&nbsp;</th>
      <th width="50" class="thTop">&nbsp;{L_POSTS}&nbsp;</th>
      <th class="thCornerR">&nbsp;{L_LASTPOST}&nbsp;</th>
      </tr>[/php]Et bien si un MOD voulait faire modifier ces 4 lignes, l'instruction demandant de chercher puis de modifier la 3ème ligne serait inapplicable car la ligne recherchée ne serait jamais trouvée (ni manuellement, ni via EasyMOD).
    Il est donc très important d'avoir bien compris cela.
    Ca vous permettra ensuite de saisir l'importance de certaines consignes faites pour maximiser les chances d'un MOD de s'installer dans tous les cas, et de savoir faire la part des choses entre les limites d'EasyMOD et des limites qui n'ont rien à voir avec EasyMOD.
Mais revenons à EasyMOD.

Pour qu'un MOD soit installé par EM il faut réunir 2 conditions :
  • que les instructions du MOD soient reconnues par EM,
  • et que ces instructions soient applicables au code des fichiers de votre forum.
Pour ce qui est du point n°1, il suffit que le MOD soit correctement écrit, c'est à dire qu'il respecte certaines conventions. La suite de cette FAQ vous expliquera lesquelles.

Et pour ce qui est du point n°2, ça n'est que le rappel de mon propos général d'introduction appliqué à EasyMOD.
Car le principe d'EasyMOD est simple : il fait EXACTEMENT ce que vous feriez à la main mais de manière automatique pour vous faire gagner du temps. EasyMOD se charge d'installer les MODs en exécutant STRICTEMENT, ni plus, ni moins, les instructions rédigées dans le MOD !

Dès lors il est bon de rappeler ce qui peut apparaître comme une évidence : EasyMOD n'invente rien. Si toutes les instructions d'un MOD sont applicables au code présent dans les fichiers du forum tout se passera sans aucun problème ; mais à l'inverse si par hasard une ou plusieurs instructions veulent rechercher une portion de code précise qui a déjà été modifiée (et qui n'existe plus), ou qui n'existe pas sur l'un des thèmes de votre forum, EasyMOD ne pourra pas inventer les adaptations nécessaires. A la place, il vous préviendra avant de modifier quoi que ce soit qu'il y a un problème sur telle ou telle instruction, tout simplement.

Néanmoins en terme de développement de MOD rassurez vous, il existe quand même quelques astuces pour minimiser ce risque de plantage des instructions, pour les rendre les plus compatibles possibles. C'est tout l'objet des règles EMC que nous allons voir tout de suite... :wink:
Dernière modification par FTP le 05 févr. 2006 18h27, modifié 2 fois.
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir 24h !
Avatar de l’utilisateur
FTP
Messages : 1028
Inscription : 06 mars 2004 14h41
Contact :

Message par FTP »

Règles EMC (EasyMOD Compliant)

Pour permettre aux auteurs de MODs d'adapter leurs MODs et d'en développer de nouveaux pour EasyMOD, Nuttzy a entrepris de rédiger les règles à respecter. Elles ont pour but d'aider les auteurs à écrire leurs MODs de telle sorte qu'ils puissent être reconnus et installés dans le maximum de cas. Et pour appuyer cette démarche, il a aussi prévu de créer une certification de compatibilité des MODs avec ces règles, la future certification EMC ("EasyMOD Compliant").

Les MODs EMC seront censés s'installer dans le maximum de cas (même s'il sera toujours impossible d'atteindre 100%), et seront reconnaissables par un flag...

Code : Tout sélectionner

## easymod compliant
...placé en première ligne du MOD, ce qui permettra d'afficher le logo EMC dans la liste des MODs installables sur EasyMOD...
Image

Malheureusement, au jour d'aujourd'hui ces règles ne sont pas encore disponibles. Une première version d'une bonne moitié des règles a été publiée ici, mais non seulement elles n'y sont pas toutes, mais en plus elles ne sont pas en version définitives.

Voici la liste de celles déjà en ligne (en anglais) : Pour info, je traduirai toutes ces règles en français quand elles seront en version définitive :wink:

Important ! En attendant que ces règles et le principe de certification soient en place, aucun MOD ne doit être flagué EMC ! Nuttzy a très explicitement demandé à TOUS les développeurs de NE PAS utiliser le flag EMC tant que les règles EMC ne seraient pas complètes et en version définitives ! La seule exception concerne les MODs de Nuttzy lui même qui servent d'exemple.
Donc merci à tous ceux qui sont tentés d'utiliser ce flag de NE PAS le faire pour l'instant !
Dernière modification par FTP le 05 févr. 2006 18h55, modifié 1 fois.
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir 24h !
Avatar de l’utilisateur
FTP
Messages : 1028
Inscription : 06 mars 2004 14h41
Contact :

Message par FTP »

Environnement de test

Le développement et le test de MODs doit toujours se faire sur un environnement de test. N'installez jamais un nouveau MOD (à fortiori en cours de développement) directement sur votre forum en ligne !

L'installation d'un environnement de test est donc un préalable indispensable si vous voulez développer des MODs et/ou tester leur installation sous EasyMOD.

Pour ce faire, je vous conseil d'utiliser EasyPHP.
Voilà comment procéder...
  • Installez EasyPHP
  • puis...
    - installez un phpBB et un EasyMOD fraîchement téléchargés,
    - ou un clone de votre forum déjà en ligne (how-to à venir)
Une fois installé, utilisez cet environnement de test pour faire vos essais d'installation de MODs grâce à EM.
Si ces essais sont concluants et si les tests sont OK, alors seulement vous utiliserez les fichiers modifiés en local pour les transférer sur votre forum en ligne et appliquerez les modifications de la base de données.
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir 24h !
Avatar de l’utilisateur
FTP
Messages : 1028
Inscription : 06 mars 2004 14h41
Contact :

Message par FTP »

Structure de fichiers

Avertissement ! En attendant les règles EMC définitives, tout ce qui suit n'est pas officiel mais relève de mes conseils personnels.

La première étape pour qu'un MOD soit reconnu et correctement interprété est qu'il respecte certaine règle au niveau des répertoires et fichiers.
Dans l'ordre... (+ quelques conseils personnels)
  • Créez un répertoire pour votre MOD (obligatoire)
  • Donnez lui le nom du MOD + son numéro de version (facultatif)
    Exemple : monMod_1.0.0
    En effet Nuttzy demande à ce qu'une fois installés, on laisse les MODs dans les répertoires d'EasyMOD (on ne supprime pas les fichiers) pour qu'ils puissent éventuellement être réutilisés par les futures fonctionnalités de désinstallation des MODs. Or si vous appelez le répertoire de vos MODs du simple nom du MOD, les utilisateurs seraient très emmerdés à chaque mise à jour car la nouvelle version à installer viendrait écraser la précédente (même nom de répertoire !).
  • N'employez ni espaces, ni symbole "&", ni apostrophes dans le nom du répertoire. Utilisez des "_" pour matérialiser les espaces (obligatoire)
  • Placez le fichier d'instructions du MOD (un simple fichier texte) dans la racine de ce répertoire (obligatoire)
  • Donnez lui aussi le nom du MOD + son numéro de version (facultatif)
    Exemple : monMod_1.0.0.txt
  • Idem, ni espaces, ni apostrophes dans le nom du fichier ; le "&" est possible (obligatoire)
  • Pour le reste, vous pouvez faire ce que vous voulez !

    Néanmoins, je vous conseille de pas mettre d'autres fichiers dans la racine du MOD, mais de créer des sous répertoires pour classer ces autres fichiers.
    Exemples :
    • un répertoire "root" et des sous répertoires identiques à ceux de phpBB pour les fichiers devant être copier tel quel dans l'arborescence phpBB
    • un répertoire "translations" pour les fichiers contenant les instructions de traduction (qui ne doivent jamais être dans le MOD principal !)
    • un répertoire "styles" pour les fichiers contenant des instructions de modification spécifiques pour certains thèmes (qui ne doivent jamais être dans le MOD principal !)
    • un répertoire "optional" pour les fichiers contenant des instructions optionnelles, des fonctionnalités optionnelles
    • un répertoire "docs" pour les fichiers de documentation
    • un répertoire "processed" pour les fichiers modifiés, prêt à être installés sur un phpBB vièrge de toute modification
    • un répertoire "upgrades" pour les MODs de mis à jour depuis les précédentes versions
    • un répertoire "uninstall" pour les instructions/fichiers de désinstallation comme un fichier php permettant de revenir en arrière sur les modifications de la base de donées
    Voilà ce que ça pourrait donner si vous aviez besoin de tout, et en supposant que vous ayez des fichiers à faire copier dans les répertoires "admin" et "includes" de phpBB...
    Image
Dernière modification par FTP le 11 févr. 2006 14h20, modifié 3 fois.
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir 24h !
Avatar de l’utilisateur
FTP
Messages : 1028
Inscription : 06 mars 2004 14h41
Contact :

Message par FTP »

Template

Avertissement ! En attendant les règles EMC définitives, tout ce qui suit n'est pas officiel mais relève de mes conseils personnels.

Côté template à utiliser maintenant.
EasyMOD n'est pour l'instant compatible qu'avec le template officiel phpBB en anglais. Dans une prochaine version, EM sera aussi compatible avec des templates écrit dans d'autres langues mais ça n'est pas le cas actuellement.

Hormis ce pb de langue, EasyMOD exige un certain formalisme pour reconnaître correctement un simple fichier texte en tant que MOD phpBB.
Néanmoins je ne suis pas très motivé pour ne vous donner que le strict minimum requis, et ceci pour 2 raisons :
  1. Ca risque d'évoluer vers plus d'exigences alors mieux vaut respecter tout de suite complètement le template officiel, que de vous donner quelques libertés maintenant et de vous expliquer plus tard que votre MOD n'est plus compatible car on exige depuis peu plus de rigueur.
  2. Et par ailleurs je ne suis pas partisan des MODs écrit n'importe comment, pour lesquels il faut d'abord passer 1/4h à comprendre la logique de l'auteur qui n'a rien respecté des conventions habituelles avant de pouvoir l'installer.
Du coup, ma seule recommandation au sujet du template est que pour que votre MOD soit reconnu et installé par EasyMOD, il est IMPERATIF d'utiliser le template des MODs de phpBB.com et de le respecter scrupuleusement...
:arrow: Modèle à télécharger : cliquez ici

Code : Tout sélectionner

##############################################################
## MOD Title:          mod_title_goes_here
## MOD Author:         your_phpBB_username < your_email > (your_real_name) your_url
## MOD Description:    some_description_goes_here
## MOD Version:        x.x.x
##
## Installation Level: (Easy/Intermediate/Advanced) 
## Installation Time:  x Minutes
## Files To Edit:
##      file_1,
##      file_2,
##      etc
## Included Files:
##      file_1, or N/A
##      file_2,
##      etc
## License: https://opensource.org/licenses/gpl-license.php GNU General Public License v2
##############################################################
## For security purposes, please check: https://www.phpbb.com/mods/
## for the latest version of this MOD. Although MODs are checked
## before being allowed in the MODs Database there is no guarantee
## that there are no security problems within the MOD. No support
## will be given for MODs not found within the MODs Database which
## can be found at https://www.phpbb.com/mods/
##############################################################
## Author Notes:
##
##############################################################
## MOD History:
##
##   YYYY-MM-DD - Version x.x.x
##      - notes de version
##
##############################################################
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
##############################################################
# 
#-----[ SQL ]------------------------------------------------- 
#

# 
#-----[ COPY ]------------------------------------------------ 
#

# 
#-----[ OPEN ]------------------------------------------------ 
#

# 
#-----[ FIND ]------------------------------------------------ 
#

# 
#-----[ REPLACE WITH ]---------------------------------------- 
#

# 
#-----[ AFTER, ADD ]------------------------------------------ 
#

# 
#-----[ BEFORE, ADD ]----------------------------------------- 
#

# 
#-----[ IN-LINE FIND ]---------------------------------------- 
#

# 
#-----[ IN-LINE AFTER, ADD ]---------------------------------- 
#

# 
#-----[ IN-LINE BEFORE, ADD ]--------------------------------- 
#

# 
#-----[ IN-LINE REPLACE WITH ]-------------------------------- 
#

#
#-----[ IN-LINE INCREMENT ]-----------------------------------
#

#
#-----[ DIY INSTRUCTIONS ]------------------------------------
#

# 
#-----[ SAVE/CLOSE ALL FILES ]-------------------------------- 
# 
# EoM
Attention à...
  • N'intervertir aucune ligne de l'en-tête (tout ce qui est avant les actions)
  • Ne pas modifier ou traduire les libellés des rubriques ou des actions
  • Respecter les minuscules/majuscules et les espaces
  • Ne créer aucune autre action que les 12 officielles et respecter scrupuleusement leur formatage (min/maj, espaces, virgules, etc.)
Pour info : dans la version actuelle d'EM seules les 4 premières lignes de la description ("MOD Description") seront affichées dans EasyMOD. Si vous voulez mettre plus de commentaires, utilisez les notes d'auteur mais ne les mettez pas dans description !

:idea: Enfin, une fois écrit si vous voulez vérifier la syntaxe de votre MOD, je vous encourage vivement à utiliser le MOD validator de phpBB.com. Cet outil vous pointera la plupart des non-respect du template, et même plus.
D'ailleurs, l'autre grand intérêt de bien respecter ce template officiel et de passer votre MOD au MOD validator est qu'en plus de vous préparer une bonne compatibilité avec EasyMOD, ça vous rapprochera aussi d'une éventuelle validation de votre MOD par l'équipe des MODs de phpBB.com en vue de l'intégrer à leur base de données. Vous ferez d'une pierre 2 coups :wink:
Dernière modification par FTP le 11 févr. 2006 13h37, modifié 5 fois.
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir 24h !
Avatar de l’utilisateur
FTP
Messages : 1028
Inscription : 06 mars 2004 14h41
Contact :

Message par FTP »

Instructions SQL
:!: Ces instructions nécessitent EasyMOD 0.1.13 ou +

Avertissement ! En attendant les règles EMC définitives, tout ce qui suit n'est pas officiel mais relève de mes conseils personnels.

Le document de référence décrivant la syntaxe des requêtes SQL (en anglais) se trouve ici.

Pour résumer...
  • Les instructions supportées sont...
    • INSERT (insertion de ligne)
    • UPDATE (modification de ligne)
    • CREATE TABLE (création de table)
    • DROP TABLE (suppression de table)
    • ALTER TABLE (création, modification & suppression de colonnes)
    SELECT n'est pas encore supporté
  • Vous pouvez mettre autant de requêtes que vous voulez dans la même action [ SQL ] mais jamais plusieurs requêtes sur la même ligne
  • A l'inverse, chaque requête peut être écrite sur plusieurs lignes
  • Par contre il est obligatoire de terminer chaque requête par un ";"
  • Nommez TOUJOURS vos tables avec le préfixe d'origine "phpbb_". A l'installation du MOD, EasyMOD le reconnaîtra et le remplacera par celui utilisé sur le forum sur lequel il doit installer le MOD
  • Les types de données supportés sont...
    • TINYINT[(longueur)] [UNSIGNED]
    • SMALLINT[(longueur)] [UNSIGNED]
    • MEDIUMINT[(longueur)] [UNSIGNED]
    • INT[(longueur)] [UNSIGNED]
    • INTEGER[(longueur)] [UNSIGNED]
    • BIGINT[(longueur)] [UNSIGNED]
    • DOUBLE[(longueur,décimales)] [UNSIGNED]
    • FLOAT[(longueur,décimales)] [UNSIGNED]
    • DECIMAL(longueur,décimales) [UNSIGNED]
    • CHAR(longueur)
    • VARCHAR(longueur)
    • TINYTEXT
    • TEXT
    • MEDIUMTEXT
    • LONGTEXT
  • Les types de données non encore supportés sont...
    • ZEROFILL
    • BINARY
    • ASCII
    • UNICODE
    • SPACIAL_TYPE
    • REAL
    • DATE
    • TIME
    • TIMESTAMP
    • DATETIME
    • NUMERIC
    • TINYBLOB
    • BLOB
    • MEDIUMBLOB
    • LONGBLOB
    • ENUM
    • SET
Dernière modification par FTP le 14 août 2005 18h15, modifié 1 fois.
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir 24h !
Avatar de l’utilisateur
FTP
Messages : 1028
Inscription : 06 mars 2004 14h41
Contact :

Message par FTP »

Instructions COPY et OPEN

Avertissement ! En attendant les règles EMC définitives, tout ce qui suit n'est pas officiel mais relève de mes conseils personnels.

Ici aussi, respectez scrupuleusement ces quelques consignes...
  • Vous pouvez mettre autant d'instruction "copy" que vous voulez dans une seule action [ COPY ]. Exemple...

    Code : Tout sélectionner

    # 
    #-----[ COPY ]------------------------------------------------ 
    #
    copy birthday_db_update.php to birthday_db_update.php
    copy root/birthday_popup.php to birthday_popup.php
    copy root/templates/subSilver/greeting_popup.tpl to templates/subSilver/greeting_popup.tpl
  • Il est possible de réaliser la copie de tous les fichiers d'un répertoire d'un coup. Exemple...

    Code : Tout sélectionner

    copy root/templates/subSilver/*.* to templates/subSilver/*.*
    :!: Cette possibilité est disponnible depuis EasyMOD 0.1.13
  • Respectez scrupuleusement les minuscules/majuscules des chemins.
    Attention : "subSilver" n'est pas égal à "subsilver" !!!
    A défaut, vos chemins ne seront pas reconnus correctement et par exemple, si "subSilver" n'est pas reconnu vos autres thèmes ne seront pas modifiés (cf. ci-dessous) !
  • Vos instructions COPY ou OPEN ne doivent copier ou ouvrir que les fichiers du thème subSilver (chemin "templates/subSilver/...") et de la langue anglaise (chemin "language/lang_english") !
    EasyMOD reconnaîtra tout seul ces 2 chemins (attention à la remarque ci-dessus) et traitera tous les autres thèmes et langues sur le même modèle (avec les mêmes instructions), et ceci en attendant le support d'instructions spécifiques par style, et le support multilingue.
  • N'ouvrez jamais 2x le même fichier. Sinon seules les dernières modifications seront prises en comptes
Dernière modification par FTP le 14 août 2005 18h16, modifié 1 fois.
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir 24h !
Avatar de l’utilisateur
FTP
Messages : 1028
Inscription : 06 mars 2004 14h41
Contact :

Message par FTP »

Instructions FIND & IN-LINE FIND

Avertissement ! En attendant les règles EMC définitives, tout ce qui suit n'est pas officiel mais relève de mes conseils personnels.

Juste un petit rappel TRES important. Comme on l'a vu en introduction, le code de phpBB est modifié par l'installation de MODs, et ces modifications peuvent entraîner des difficultés d'installation de nouveaux MODs.
Or, l'une des principales méthodes pour éviter ce piège est de faire en sorte que vos MODs soient conçus pour ne rechercher/modifier que le MINIMUM nécessaire (car plus vous ferez rechercher de grandes portions de code, plus il y a de chance qu'au moins une toute petite partie ait déjà été modifiée, et plus les instructions échoueront). En clair, il est inutile de rechercher/remplacer toute une ligne pour n'ajouter qu'un mot par exemple ! Ca ne peut que conduire à rendre impossible l'installation du MOD dans certains cas.

Donc avant de créer une instruction qui touche au code réfléchissez bien à ce que vous voulez faire. En effet il existe 2 cas de figure TRES différents :
  • Si vous voulez modifier/compléter seulement une partie d'une ligne : dans ce cas, le but de votre [ FIND ] va être uniquement d'identifier la bonne ligne pour que des instructions [ IN-LINE ... ] puissent ensuite faire un travail précis au sein de la ligne. Le [ FIND ] devra donc porter sur la plus petite portion de code de la ligne suffisante pour être sûr d'identifier cette ligne au sein du fichier. Comme ça, même si la ligne a déjà été modifiée par ailleurs il y a plus de chance qu'elle soit trouvée quand même et que la modification précise par IN-LINE puisse se faire).
  • Si vous voulez remplacer complètement une ou plusieurs lignes : dans ce cas, si vous êtes bien sûr que c'est ABSOLUMENT nécessaire, le but de votre [ FIND ] va être de trouver la bonne ligne, mais aussi de vérifier qu'elle n'a pas déjà été modifiée par un MOD déjà installé. Dans ce cas, il est donc plus sûr de faire une recherche sur l'ensemble du code de la ou des lignes à remplacer et donc de faire générer une erreur si cette ligne a déjà été modifiée par un MOD déjà installé, qui risque de se retrouver planté par ce remplacement.
Voilà.
Une fois ces principes compris, voici mes conseils...
  • Respectez scrupuleusement les minuscules/majuscules des chaînes de texte à rechercher sous peine qu'elles ne soient tout simplement pas trouvées
  • Respectez aussi les espaces et les tabulations. Faire rechercher des espaces alors que le fichier original contient une tabulation fera échouer la recherche
  • Par ailleurs vos recherches doivent se faire dans l'ordre d'apparition des chaînes de texte dans le fichier. Vous ne pouvez pas faire rechercher la ligne 520 puis là 365.
  • Idem pour les IN-LINE FIND : si vous en avez 2 à faire de suite sur la même ligne, vous devez recherche d'abord le texte qui doit être trouvé en premier en cherchant de gauche à droite.
  • Idem aussi si après une recherche vous avez différentes actions à réaliser. Vous devez les faire dans l'ordre : un BEFORE avant un AFTER, etc.
  • Ne demandez jamais de recherche sur la chaîne "// That's all Folks!" d'un fichier de langue. Préférez rechercher "?>" et faites un BEFORE ADD pour insérer vos libellés. En effet, certains traducteurs phpBB ont traduit "That's all Folks!" et du coup votre recherche échouerait sur certaines langues.
  • Si vous voulez faire modifier une partie d'une ligne seulement, créez vos recherches de lignes ([ FIND ]) sur des portions significatives du code de la ligne concernée uniquement. Choisissez bien ces portions afin qu'elles soient uniques dans tout le fichier, mais aussi la moins susceptible d'être déjà modifiée par un autre MOD (pour maximiser les chances de succès de la recherche).
    Exemple : ne faites pas rechercher ce genre de ligne en entier...

    Code : Tout sélectionner

    # 
    #-----[ FIND ]------------------------------------------------ 
    # 
    SET " . $username_sql . $passwd_sql . "user_email = '" . str_replace("\'", "''", $email) . "', user_icq = '" . str_replace("\'", "''", $icq) . "', user_website = '" . str_replace("\'", "''", $website) . "', user_occ = '" . str_replace("\'", "''", $occupation) . "', user_from = '" . str_replace("\'", "''", $location) . "', user_interests = '" . str_replace("\'", "''", $interests) . "', user_sig = '" . str_replace("\'", "''", $signature) . "', user_viewemail = $viewemail, user_aim = '" . str_replace("\'", "''", $aim) . "', user_yim = '" . str_replace("\'", "''", $yim) . "', user_msnm = '" . str_replace("\'", "''", $msn) . "', user_attachsig = $attachsig, user_sig_bbcode_uid = '$signature_bbcode_uid', user_allowsmile = $allowsmilies, user_allowhtml = $allowhtml, user_allowavatar = $user_allowavatar, user_allowbbcode = $allowbbcode, user_allow_viewonline = $allowviewonline, user_notify = $notifyreply, user_allow_pm = $user_allowpm, user_notify_pm = $notifypm, user_popup_pm = $popuppm, user_lang = '" . str_replace("\'", "''", $user_lang) . "', user_style = $user_style, user_timezone = $user_timezone, user_dst_mode = '$dst_mode', user_dst_time_lag = '$dst_time_lag', user_dateformat = '" . str_replace("\'", "''", $user_dateformat) . "', user_active = $user_status, user_rank = $user_rank" . $avatar_sql . "
    
    Ce type de recherche complète NE DOIT PAS être utilisé (sauf en cas de remplacement complet de la ligne) !!!
    Il faut faire rechercher (en veillant à ce que la chaîne soit bien unique) une partie significative de la ligne uniquement, ce qui évitera tout échec de la recherche si un MOD avait déjà insérer une variable supplémentaire par exemple. La portion à rechercher doit être suffisante pour détecter le n° de la bonne ligne, et ensuite c'est le [ IN-LINE FIND ] qui se chargera du reste. Au besoin, pour être sûr de trouver la bonne ligne élargissez la recherche aux lignes précédentes ou suivantes.
    Dans notre exemple, utilisez plutôt (si cette portion est bien unique dans le fichier)...

    Code : Tout sélectionner

    # 
    #-----[ FIND ]------------------------------------------------ 
    #
    $sql = "UPDATE " . USERS_TABLE . "
    SET
  • En cas d'absolu nécessité de remplacer complètement une ligne avec un [ REPLACE WITH ] c'est différent car rechercher la totalité de la ligne permet de s'assurer qu'on remplace bien la ligne originale. Dans ce cas, il est donc plus sûr de faire générer une erreur si cette ligne a déjà été modifiée par un MOD déjà installé, qui risque de se retrouver planté par ce remplacement.
  • Si des noms de thèmes apparaissent dans des chemins dans le code à rechercher...

    Code : Tout sélectionner

    # 
    #-----[ FIND ]------------------------------------------------ 
    #
    <td colspan="7" height="1" class="spaceRow"><img src="../templates/subSilver/images/spacer.gif" alt="" width="1" height="1" /></td>
    
    ...faites là aussi une recherche sur une partie de la ligne. Sinon cette recherche échouera pour tous les autres thèmes car la chaîne présente dans le code comportera le nom des autres thèmes dans le chemin.
    Il faut alors faire votre recherche sur cette sous chaîne par exemple...

    Code : Tout sélectionner

    # 
    #-----[ FIND ]------------------------------------------------ 
    #
    <td colspan="7" height="1" class="spaceRow"><img src="../templates
    
    La fin de la ligne contenant le chemin a été enlevée. De toute façon, elle ne servait à rien pour identifier la bonne ligne. La première partie de la ligne à recherchée était déjà unique.
  • Attention à toujours placer une instruction [ IN-LINE FIND ] avant une ou plusieurs instructions [ IN-LINE AFTER, ADD ], [ IN-LINE BEFORE, ADD ] ou [ IN-LINE REPLACE WITH ]
  • Evitez de faire rechercher plusieurs lignes quand ça n'est pas nécessaire car une ligne a pu être insérée entre les 2 par un autre MOD. Exemple, faire rechercher ces 2 lignes pour insérer de nouvelles variables est inutile...

    Code : Tout sélectionner

    'OCCUPATION' =>
    'INTEREST' =>
    Dans un tableau les variables peuvent être ajoutées n'importe ou alors choisissez de rechercher un autre emplacement pour lequel la recherche d'une seule ligne suffit. Ca évitera le risque de plantage si un autre MOD avant déjà ajouter une ligne entre les 2.
    Au passage je rappelle aussi que même dans ce cas, il vaut mieux éviter d'utiliser à la place une recherche sur une ligne entière. Ca n'est pas la solution car notamment dans ce genre de cas d'affectation de variable la valeur de ces lignes ont pu elles aussi avoir été modifiées par un MOD.
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir 24h !
Avatar de l’utilisateur
FTP
Messages : 1028
Inscription : 06 mars 2004 14h41
Contact :

Message par FTP »

Instructions IN-LINE INCREMENT & DIY INSTRUCTIONS
:!: Ces instructions nécessitent EasyMOD 0.2.1a ou +

Code : Tout sélectionner

#
#-----[ FIND ]------------------------------------------------
#
Powered by <

#
#-----[ IN-LINE FIND ]----------------------------------------
#
&copy; 2001, {%:1} phpBB Group

#
#-----[ IN-LINE INCREMENT ]-----------------------------------
#
%:1 +1
  • Vous pouvez incrémenter le nombre à la hausse ou à la baisse de la valeur que vous souhaitez (+1, +3, -5, etc.). Si vous ne mettez rien (%:1), cela équivaudra à +1 (%:1 +1).
  • Vous pouvez aussi identifier plusieurs nombres à incrémenter en utilisant successivement {%:1}, {%:2}, {%:3}, etc., puis des actions d'incrémentation pour chacun.
  • Enfin, pour information sachez que vous pouvez aussi utiliser [ INCREMENT ] tout seul (sans IN-LINE), voir non précédé d'une action [ IN-LINE FIND ]. Cependant tout ça n'est pas logique donc je le déconseille ! L'action d'incrémentation modifie une petite portion de code au sein d'une ligne, et non pas une ligne entière. Il faut donc utiliser IN-LINE pour rester cohérant.

Code : Tout sélectionner

#
#-----[ DIY INSTRUCTIONS ]------------------------------------
#
Regardless how you've installed this MOD (by EasyMOD or manually), if you want to install other languages than English please copy manually the corresponding language files to the right phpBB language directories. If you have used EasyMOD, it will replace the English file duplicated by EM in every language directory (as for the moment EasyMOD is not able to install every available language automatically).
=> copy root/language/lang_xxxxx/lang_adv_time.php to language/lang_xxxxx/lang_adv_time.php
  • Cette action peut se placer ou vous voulez dans le MOD, même si généralement elle se place soit au début, soit à la fin du MOD.
  • Chaque paragraphe (matérialisé par un retour à la ligne à la fin) sera présentée comme un point (avec une puce à gauche), comme ceci...
    • Paragraphe 1, bla, bla, bla...
    • Paragraphe 2, bla, bla, bla...
    • Etc.
Dernière modification par FTP le 11 févr. 2006 14h03, modifié 18 fois.
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir 24h !
Avatar de l’utilisateur
FTP
Messages : 1028
Inscription : 06 mars 2004 14h41
Contact :

Message par FTP »

Commentaires

Un point extrêment important à respecter...
  • Ne créez JAMAIS d'instruction visant à mettre du code phpBB en commentaire en utilisant les conventions php ou html !
    Votre MOD serait alors automatiquement non compatible EasyMOD et même dangereux s'il était installé.
    En effet, pour fonctionner EasyMOD réalise des recherches de code via ses instructions FIND et IN-LINE FIND, y compris sur les lignes de commentaire (commençant par "//", "/*" ou "<!--") car ce sont de très bons points de repère dans les fichiers pour ajouter du code avant ou après. Or si vous mettiez du code phpBB en commentaire, EasyMOD serait complètement perdu dans ses recherches, risquant de trouver le code en commentaire avant et à la place du bon code à rechercher un peu plus loin.
    Ce type de commentaire est donc absolument interdit !
  • Si vous voulez mettre du code en commentaire, utilisez les balises EasyMOD prévu à cet effet.
    Pour du code dans un fichier php...

    Code : Tout sélectionner

    /*-MOD ... MOD-*/
    Pour du code dans un fichier tpl...

    Code : Tout sélectionner

    <!--MOD ... MOD-->
Dernière modification par FTP le 15 juil. 2005 12h44, modifié 1 fois.
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir 24h !
Avatar de l’utilisateur
FTP
Messages : 1028
Inscription : 06 mars 2004 14h41
Contact :

Message par FTP »

Tests et débugage

Une fois votre MOD prêt...
  • Transférez son répertoire dans le répertoire "admin/mods", et faites exactement comme si vous vouliez l'installer en allant jusqu'à cliquer sur "Process " (ou "Installer" en français).
    Là (à l'étape 1 sur 3 où aucun fichier de votre forum n'est encore modifié) vous obtiendrez vos ultimes infos de débugage en haut de la page, avant le cadre "MOD Data" (erreurs) et juste en dessous ("Unprocessed Commands" - "Commandes non traitées").
    S'il n'y a rien c'est tout bon, si par contre vous avez 1 ou des cadres avec des messages d'erreur, ne poursuivez pas l'installation, revenez en arrière, corrigez votre MOD en fonction des indications et re-testez le jusqu'à ne plus avoir d'erreur.
  • N'oubliez pas non plus le MOD validator pour débuger votre MOD.
  • Puis quand vous n'aurez plus d'erreur, réalisez votre première installation de votre MOD par EM en poursuivant jusqu'à l'étape 3
    Vérifiez notamment dans le bilan d'installation que toutes les langues et tous les styles (templates) aient bien été traités.
    Pour ce qui est des langues, comme je l'ai déjà mentionné, la version actuelle d'EM ne sait pas encore traiter des libellés dans plusieurs langues fournis dans le MOD. Néanmoins, à défaut et en attendant, EM copie le fichier ou ajoute les entrées en anglais à toutes les langues présente, et ceci afin d'éviter tout plantage lors de l'utilisation des autres langues.
    Les véritables libellés des autres langues sont donc à rajouter à la main après l'installation.
  • Enfin, testez votre MOD pour vérifier que tout se soit bien déroulé et qu'il fonctionne.
    Evidement, si vous aviez encore des messages d'erreur, ou que votre MOD ne fonctionnait pas bien, il faudrait finir de le corriger/modifier et refaire des essais.
Et voilà.
Finalement c'est pas si compliqué. Ca revient à créer vos MODs quasiment selon le tutorial habituel mais simplement un peu plus rigoureusement.

Au final vous verrez, c'est IMPRESSIONNANT d'efficacité et vous ne souhaiterez qu'une chose : qu'il se généralise vite !!! :D
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir 24h !
Répondre