Hello,
dans acp_gloss_body.html, tu te compliques la tâche pour gérer les boutons radio (qui au passage sont mals gérés).
Pourquoi ne pas faire comme c'est fait partout sur phpBB ?
Ta version
- Code: Tout sélectionner
<dl>
<dt><label>{L_ALLOW_FEATURE}{L_COLON}</label><br />
<span>{L_ALLOW_FEATURE_EXPLAIN}</span></dt>
<dd>
<label><input type="radio" id="lmdi_gloss_acp" name="lmdi_gloss_acp"
value="1" class="radio" {ALLOW_FEATURE_YES}/>{L_YES}</label>
<label><input type="radio" id="lmdi_gloss_acp" name="lmdi_gloss_acp"
value="0" class="radio" {ALLOW_FEATURE_NO}/>{L_NO}</label>
</dd>
</dl>
primo, tu déclares deux fois les
id et il n'y a pas de déclaration de
forsecundo, du côté PHP tu génère une quantité de ternaire pour rien.
Donc remplace par
- Code: Tout sélectionner
<dl>
<dt><label for="lmdi_gloss_acp">{L_ALLOW_FEATURE}{L_COLON}</label><br /><span>{L_ALLOW_FEATURE_EXPLAIN}</span></dt>
<dd><label><input type="radio" class="radio" id="lmdi_gloss_acp" name="lmdi_gloss_acp" value="1" <!-- IF S_ALLOW_FEATURE --> checked<!-- ENDIF -->/>{L_YES}</label>
<label><input type="radio" class="radio" name="lmdi_gloss_acp" value="0" <!-- IF S_ALLOW_FEATURE --> checked<!-- ENDIF -->/>{L_NO}</label>
</dd>
</dl>
Côté PHP ca donne
- Code: Tout sélectionner
$template->assign_vars (array(
'C_ACTION' => $action_config,
'S_ALLOW_FEATURE_NO' => $config['lmdi_glossary_acp'],
ou
- Code: Tout sélectionner
$template->assign_vars (array(
'C_ACTION' => $action_config,
'S_ALLOW_FEATURE_NO' => $config['lmdi_glossary_acp'] ? true : false,
au lieu de
- Code: Tout sélectionner
$template->assign_vars (array(
'C_ACTION' => $action_config,
'ALLOW_FEATURE_NO' => $config['lmdi_glossary_acp'] == 0 ? 'checked="checked"' : '',
'ALLOW_FEATURE_YES' => $config['lmdi_glossary_acp'] == 1 ? 'checked="checked"' : '',
En faisait ainsi tu évites l'utilisation de 4 ternaires.
Autres points... Factorise !
Rien que dans le fichier gloss_module j'ai noté au minimus deux portions de code qui sont très similaires et cela correspond à environ 80% du code du fichier.
Dans
contoller\main.phptu dois t'assurer de ne pas inclure inutilement les 3 fichiers que tu inclus
- Code: Tout sélectionner
include($this->phpbb_root_path . 'includes/functions_user.' . $this->phpEx);
include($this->phpbb_root_path . 'includes/functions_module.' . $this->phpEx);
include($this->phpbb_root_path . 'includes/functions_display.' . $this->phpEx);
Puis à quoi cela te servent ces inclusions de fichiers ?
Ta classe "main" ne semble ni être utilisée en tant qu'abstract, ni en tant qu'extends
Donc je ne vois pas trop l'utilité de ces inclusions.
Dans le même genre, pourquoi charger la mémoire avec des instanciations au niveau du constructeur alors que tu pourrais alléger le tout en les instanciant au niveau du switch / case
Vu que c'est long et fastidieux de faire le topo ici, voici ton fichier modifié avec ce dont je parle :https://gist.github.com/Skouat/4fc7f7bba0c39bcb75f644d69074f6d4
Note : ce n'est pas la version finale du fichier, ce que je suggère peux encore être optimisé/factorisé.
Les variables suivantes sont déclarées mais ne sont jamais utilisées.
- Code: Tout sélectionner
$action = $this->request->variable('action', '');
$code = $this->request->variable('code', '-1');
donc à quoi bon les déclarer ?
Dans core/glossaire.php
Je ne vois pas trop l'intéret de déclarer des clés de langues dans des variables qui ne sont utilisées qu'une seule fois dans l'ensemble du code.
- Code: Tout sélectionner
$str_terme = $this->user->lang['GLOSS_ED_TERM'];
$str_defin = $this->user->lang['GLOSS_ED_DEF'];
$str_illus = $this->user->lang['GLOSS_ED_PICT'];
$corps = '<table class="deg"><tr class="deg">';
$corps .= '<th class="deg0">' . $str_terme . '</th>';
$corps .= '<th class="deg0">' . $str_defin . '</th>';
$corps .= '<th class="deg1">' . $str_illus . '</th></tr>';
A remplacer simplement par
- Code: Tout sélectionner
$corps = '<table class="deg"><tr class="deg">';
$corps .= '<th class="deg0">' . $this->user->lang['GLOSS_ED_TERM'] . '</th>';
$corps .= '<th class="deg0">' . $this->user->lang['GLOSS_ED_DEF'] . '</th>';
$corps .= '<th class="deg1">' . $this->user->lang['GLOSS_ED_PICT'] . '</th></tr>';
Tu es trop linéaire dans ton code.
On a l'impression que tu développes un programme en language
BASIC
Dans core/glossaire.php
tu déclares
- Code: Tout sélectionner
$abc_links = "";
$illustration = "";
$corps = "";
$biblio = "";
Et tu n'appelles ces variables qu'à ce moment-là
- Code: Tout sélectionner
$this->template->assign_vars (array (
'TITRE' => $titre,
'ABC' => $abc_links,
'ILLUST' => $illustration,
'CORPS' => $corps,
'BIBLIO' => $biblio,
));
Entre la déclaration et l'utilisation des variables, ces dernières ne subissent aucune modification.
Et au passage, inutile d'inititier la variable $corps, vu qu'elle l'est à la ligne 92
Donc autant écrire :
- Code: Tout sélectionner
$this->template->assign_vars (array (
'TITRE' => $titre,
'ABC' => '',
'ILLUST' => '',
'CORPS' => $corps,
'BIBLIO' => '',
));
Bon je m'arrête ici car je n'en suis qu'au 4ème fichier analysé et j'ai déjà écrit un roman.
Revois ton code, essaies de factoriser et de supprimer ce qui ne sert à rien.
Fait de la Programation Orientée Objet.
Je pense t'avoir déjà suggéré cela, si ce n'est pas la cas alors je te le suggère maintenant… passe ton code à la moulinette de "Scrutinizer-ci".
Ce n'est aucunement une solution miracle, mais perso ca ma permis de déceler pas mal d'erreurs de code.