| 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 |
||
| 139 | function balise_FORMULAIRE__contexte($form, $args) |
||
| 140 | { |
||
| 141 | // tester si ce formulaire vient d'etre poste (memes arguments) |
||
| 142 | // pour ne pas confondre 2 #FORMULAIRES_XX identiques sur une meme page |
||
| 143 | // si poste, on recupere les erreurs |
||
| 144 | |||
| 145 | $je_suis_poste = false; |
||
| 146 | if ($post_form = _request('formulaire_action') |
||
| 147 | AND $post_form==$form |
||
| 148 | AND $p = _request('formulaire_action_args') |
||
| 149 | AND is_array($p = decoder_contexte_ajax($p, $post_form))) { |
||
| 150 | // enlever le faux attribut de langue masque |
||
| 151 | array_shift($p); |
||
| 152 | if (formulaire__identifier($form, $args, $p)) |
||
| 153 | $je_suis_poste = true; |
||
| 154 | } |
||
| 155 | |||
| 156 | $editable = true; |
||
| 157 | $erreurs = $post = array(); |
||
| 158 | if ($je_suis_poste) { |
||
| 159 | $post = traiter_formulaires_dynamiques(true); |
||
| 160 | $e = "erreurs_$form"; |
||
| 161 | $erreurs = isset($post[$e]) ? $post[$e] : array(); |
||
| 162 | $editable = "editable_$form"; |
||
| 163 | $editable = (!isset($post[$e])) |
||
| 164 | || count($erreurs) |
||
| 165 | || (isset($post[$editable]) && $post[$editable]); |
||
| 166 | } |
||
| 167 | |||
| 168 | $valeurs = formulaire__charger($form, $args, $je_suis_poste); |
||
| 169 | |||
| 170 | // si $valeurs n'est pas un tableau, le formulaire n'est pas applicable |
||
| 171 | // C'est plus fort qu'editable qui est gere par le squelette |
||
| 172 | // Idealement $valeur doit etre alors un message explicatif. |
||
| 173 | if (!is_array($valeurs)) return is_string($valeurs) ? $valeurs : ''; |
||
| 174 | |||
| 175 | // charger peut passer une action si le formulaire ne tourne pas sur self() |
||
| 176 | // ou une action vide si elle ne sert pas |
||
| 177 | $action = (isset($valeurs['action'])) ? $valeurs['action'] : self('&', true); |
||
| 178 | // bug IEx : si action finit par / |
||
| 179 | // IE croit que le <form ... action=../ > est autoferme |
||
| 180 | if (substr($action,-1)=='/') { |
||
| 181 | // on ajoute une ancre pour feinter IE, au pire ca tue l'ancre qui finit par un / |
||
| 182 | $action .= '#'; |
||
| 183 | } |
||
| 184 | |||
| 185 | // recuperer la saisie en cours si erreurs |
||
| 186 | // seulement si c'est ce formulaire qui est poste |
||
| 187 | // ou si on le demande explicitement par le parametre _forcer_request = true |
||
| 188 | $dispo = ($je_suis_poste || (isset($valeurs['_forcer_request']) && $valeurs['_forcer_request'])); |
||
| 189 | foreach(array_keys($valeurs) as $champ){ |
||
| 190 | if ($champ[0]!=='_' AND !in_array($champ, array('message_ok','message_erreur','editable'))) { |
||
| 191 | if ($dispo AND (($v = _request($champ))!==NULL)) |
||
| 192 | $valeurs[$champ] = $v; |
||
| 193 | // nettoyer l'url des champs qui vont etre saisis |
||
| 194 | if ($action) |
||
| 195 | $action = parametre_url($action,$champ,''); |
||
| 196 | // proteger les ' et les " dans les champs que l'on va injecter |
||
| 197 | $valeurs[$champ] = protege_champ($valeurs[$champ]); |
||
| 198 | } |
||
| 199 | } |
||
| 200 | |||
| 201 | if ($action) { |
||
| 202 | // nettoyer l'url |
||
| 203 | $action = parametre_url($action,'formulaire_action',''); |
||
| 204 | $action = parametre_url($action,'formulaire_action_args',''); |
||
| 205 | } |
||
| 206 | |||
| 207 | if (isset($valeurs['_action'])){ |
||
| 208 | $securiser_action = charger_fonction('securiser_action','inc'); |
||
| 209 | $secu = $securiser_action(reset($valeurs['_action']),end($valeurs['_action']),'',-1); |
||
| 210 | $valeurs['_hidden'] = (isset($valeurs['_hidden'])?$valeurs['_hidden']:'') . |
||
| 211 | "<input type='hidden' name='arg' value='".$secu['arg']."' />" |
||
| 212 | . "<input type='hidden' name='hash' value='".$secu['hash']."' />"; |
||
| 213 | } |
||
| 214 | |||
| 215 | // empiler la lang en tant que premier argument implicite du CVT |
||
| 216 | // pour permettre de la restaurer au moment du Verifier et du Traiter |
||
| 217 | array_unshift($args, $GLOBALS['spip_lang']); |
||
| 218 | |||
| 219 | $valeurs['formulaire_args'] = encoder_contexte_ajax($args, $form); |
||
| 220 | $valeurs['erreurs'] = $erreurs; |
||
| 221 | $valeurs['action'] = $action; |
||
| 222 | $valeurs['form'] = $form; |
||
| 223 | |||
| 224 | if (!isset($valeurs['id'])) $valeurs['id'] = 'new'; |
||
| 225 | // editable peut venir de charger() ou de traiter() sinon |
||
| 226 | if (!isset($valeurs['editable'])) $valeurs['editable'] = $editable; |
||
| 227 | // dans tous les cas, renvoyer un espace ou vide (et pas un booleen) |
||
| 228 | $valeurs['editable'] = ($valeurs['editable']?' ':''); |
||
| 229 | |||
| 230 | if ($je_suis_poste) { |
||
| 231 | $valeurs['message_erreur'] = ""; |
||
| 232 | if (isset($erreurs['message_erreur'])) |
||
| 233 | $valeurs['message_erreur'] = $erreurs['message_erreur']; |
||
| 234 | |||
| 235 | $valeurs['message_ok'] = ""; |
||
| 236 | if (isset($post["message_ok_$form"])) |
||
| 237 | $valeurs['message_ok'] = $post["message_ok_$form"]; |
||
| 238 | elseif (isset($erreurs['message_ok'])) |
||
| 239 | $valeurs['message_ok'] = $erreurs["message_ok"]; |
||
| 240 | } |
||
| 241 | |||
| 242 | return $valeurs; |
||
| 243 | } |
||
| 244 | |||
| 310 |
This check looks for the generic type
arrayas a return type and suggests a more specific type. This type is inferred from the actual code.