| Conditions | 33 |
| Paths | > 20000 |
| Total Lines | 105 |
| Code Lines | 59 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 0 | ||
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | <?php |
||
| 80 | function balise_FORMULAIRE__contexte($form, $args) |
||
| 81 | { |
||
| 82 | // tester si ce formulaire vient d'etre poste (memes arguments) |
||
| 83 | // pour ne pas confondre 2 #FORMULAIRES_XX identiques sur une meme page |
||
| 84 | // si poste, on recupere les erreurs |
||
| 85 | |||
| 86 | $je_suis_poste = false; |
||
| 87 | if ($post_form = _request('formulaire_action') |
||
| 88 | AND $post_form == $form |
||
| 89 | AND $p = _request('formulaire_action_args') |
||
| 90 | AND is_array($p = decoder_contexte_ajax($p, $post_form))) { |
||
| 91 | // enlever le faux attribut de langue masque |
||
| 92 | array_shift($p); |
||
| 93 | if (formulaire__identifier($form, $args, $p)) |
||
| 94 | $je_suis_poste = true; |
||
| 95 | } |
||
| 96 | |||
| 97 | $editable = true; |
||
| 98 | $erreurs = $post = array(); |
||
| 99 | if ($je_suis_poste) { |
||
| 100 | $post = traiter_formulaires_dynamiques(true); |
||
| 101 | $e = "erreurs_$form"; |
||
| 102 | $erreurs = isset($post[$e]) ? $post[$e] : array(); |
||
| 103 | $editable = "editable_$form"; |
||
| 104 | $editable = (!isset($post[$e])) |
||
| 105 | || count($erreurs) |
||
| 106 | || (isset($post[$editable]) && $post[$editable]); |
||
| 107 | } |
||
| 108 | |||
| 109 | $valeurs = formulaire__charger($form, $args, $je_suis_poste); |
||
| 110 | |||
| 111 | // si $valeurs n'est pas un tableau, le formulaire n'est pas applicable |
||
| 112 | // C'est plus fort qu'editable qui est gere par le squelette |
||
| 113 | // Idealement $valeur doit etre alors un message explicatif. |
||
| 114 | if (!is_array($valeurs)) return is_string($valeurs) ? $valeurs : ''; |
||
| 115 | |||
| 116 | // charger peut passer une action si le formulaire ne tourne pas sur self() |
||
| 117 | // ou une action vide si elle ne sert pas |
||
| 118 | $action = (isset($valeurs['action'])) ? $valeurs['action'] : self('&', true); |
||
| 119 | // bug IEx : si action finit par / |
||
| 120 | // IE croit que le <form ... action=../ > est autoferme |
||
| 121 | if (substr($action,-1)=='/') { |
||
| 122 | // on ajoute une ancre pour feinter IE, au pire ca tue l'ancre qui finit par un / |
||
| 123 | $action .= '#'; |
||
| 124 | } |
||
| 125 | |||
| 126 | // recuperer la saisie en cours si erreurs |
||
| 127 | // seulement si c'est ce formulaire qui est poste |
||
| 128 | // ou si on le demande explicitement par le parametre _forcer_request = true |
||
| 129 | $dispo = ($je_suis_poste || (isset($valeurs['_forcer_request']) && $valeurs['_forcer_request'])); |
||
| 130 | foreach(array_keys($valeurs) as $champ){ |
||
| 131 | if ($champ[0]!=='_' AND !in_array($champ, array('message_ok','message_erreur','editable'))) { |
||
| 132 | if ($dispo AND (($v = _request($champ))!==NULL)) |
||
| 133 | $valeurs[$champ] = $v; |
||
| 134 | if ($action) |
||
| 135 | $action = parametre_url($action,$champ,''); |
||
| 136 | // nettoyer l'url des champs qui vont etre saisis |
||
| 137 | // proteger les ' et les " dans les champs que l'on va injecter |
||
| 138 | $valeurs[$champ] = protege_champ($valeurs[$champ]); |
||
| 139 | } |
||
| 140 | } |
||
| 141 | |||
| 142 | if ($action) { |
||
| 143 | // nettoyer l'url |
||
| 144 | $action = parametre_url($action,'formulaire_action',''); |
||
| 145 | $action = parametre_url($action,'formulaire_action_args',''); |
||
| 146 | } |
||
| 147 | |||
| 148 | if (isset($valeurs['_action'])){ |
||
| 149 | $securiser_action = charger_fonction('securiser_action','inc'); |
||
| 150 | $secu = $securiser_action(reset($valeurs['_action']),end($valeurs['_action']),'',-1); |
||
| 151 | $valeurs['_hidden'] = (isset($valeurs['_hidden'])?$valeurs['_hidden']:'') . |
||
| 152 | "<input type='hidden' name='arg' value='".$secu['arg']."' />" |
||
| 153 | . "<input type='hidden' name='hash' value='".$secu['hash']."' />"; |
||
| 154 | } |
||
| 155 | |||
| 156 | // empiler la lang en tant que premier argument implicite du CVT |
||
| 157 | // pour permettre de la restaurer au moment du Verifier et du Traiter |
||
| 158 | array_unshift($args, $GLOBALS['spip_lang']); |
||
| 159 | |||
| 160 | $valeurs['formulaire_args'] = encoder_contexte_ajax($args, $form); |
||
| 161 | $valeurs['erreurs'] = $erreurs; |
||
| 162 | $valeurs['action'] = $action; |
||
| 163 | $valeurs['form'] = $form; |
||
| 164 | |||
| 165 | if (!isset($valeurs['id'])) $valeurs['id'] = 'new'; |
||
| 166 | // editable peut venir de charger() ou de traiter() sinon |
||
| 167 | if (!isset($valeurs['editable'])) $valeurs['editable'] = $editable; |
||
| 168 | // dans tous les cas, renvoyer un espace ou vide (et pas un booleen) |
||
| 169 | $valeurs['editable'] = ($valeurs['editable']?' ':''); |
||
| 170 | |||
| 171 | if ($je_suis_poste) { |
||
| 172 | $valeurs['message_erreur'] = ""; |
||
| 173 | if (isset($erreurs['message_erreur'])) |
||
| 174 | $valeurs['message_erreur'] = $erreurs['message_erreur']; |
||
| 175 | |||
| 176 | $valeurs['message_ok'] = ""; |
||
| 177 | if (isset($post["message_ok_$form"])) |
||
| 178 | $valeurs['message_ok'] = $post["message_ok_$form"]; |
||
| 179 | elseif (isset($erreurs['message_ok'])) |
||
| 180 | $valeurs['message_ok'] = $erreurs["message_ok"]; |
||
| 181 | } |
||
| 182 | |||
| 183 | return $valeurs; |
||
| 184 | } |
||
| 185 | |||
| 230 |
In PHP, under loose comparison (like
==, or!=, orswitchconditions), values of different types might be equal.For
stringvalues, the empty string''is a special case, in particular the following results might be unexpected: