| Conditions | 28 |
| Paths | > 20000 |
| Total Lines | 132 |
| Code Lines | 74 |
| Lines | 17 |
| Ratio | 12.88 % |
| 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 |
||
| 44 | function public_parametrer_dist($fond, $contexte='', $cache='', $connect='') { |
||
| 45 | $page = tester_redirection($fond, $contexte, $connect); |
||
| 46 | if ($page) return $page; |
||
| 47 | |||
| 48 | if (isset($contexte['lang'])) |
||
| 49 | $lang = $contexte['lang']; |
||
| 50 | elseif (!isset($lang)) |
||
|
|
|||
| 51 | $lang = $GLOBALS['meta']['langue_site']; |
||
| 52 | |||
| 53 | $select = ((!isset($GLOBALS['forcer_lang']) OR !$GLOBALS['forcer_lang']) AND $lang <> $GLOBALS['spip_lang']); |
||
| 54 | if ($select) $select = lang_select($lang); |
||
| 55 | |||
| 56 | $debug = (isset($GLOBALS['var_mode']) && ($GLOBALS['var_mode'] == 'debug')); |
||
| 57 | |||
| 58 | $styliser = charger_fonction('styliser', 'public'); |
||
| 59 | list($skel,$mime_type, $gram, $sourcefile) = |
||
| 60 | $styliser($fond, $contexte, $GLOBALS['spip_lang'], $connect, _EXTENSION_SQUELETTES); |
||
| 61 | |||
| 62 | if ($skel) { |
||
| 63 | |||
| 64 | // sauver le nom de l'eventuel squelette en cours d'execution |
||
| 65 | // (recursion possible a cause des modeles) |
||
| 66 | if ($debug) { |
||
| 67 | $courant = @$GLOBALS['debug_objets']['courant']; |
||
| 68 | $GLOBALS['debug_objets']['contexte'][$sourcefile] = $contexte; |
||
| 69 | } |
||
| 70 | |||
| 71 | // charger le squelette en specifiant les langages cibles et source |
||
| 72 | // au cas il faudrait le compiler (source posterieure au resultat) |
||
| 73 | |||
| 74 | $composer = charger_fonction('composer', 'public'); |
||
| 75 | $code = $composer($skel, $mime_type, $gram, $sourcefile, $connect); |
||
| 76 | } else $code = ''; |
||
| 77 | |||
| 78 | if (!$code) { // squelette inconnu (==='') ou faux (===false) |
||
| 79 | $page = $code; |
||
| 80 | } else { |
||
| 81 | // Preparer l'appel de la fonction principale du squelette |
||
| 82 | |||
| 83 | list($fonc) = $code; |
||
| 84 | spip_timer($a = 'calcul page '.rand(0,1000)); |
||
| 85 | |||
| 86 | // On cree un marqueur de notes unique lie a cette composition |
||
| 87 | // et on enregistre l'etat courant des globales de notes... |
||
| 88 | $notes = charger_fonction('notes', 'inc'); |
||
| 89 | $notes('','empiler'); |
||
| 90 | |||
| 91 | // Rajouter d'office ces deux parametres |
||
| 92 | // (mais vaudrait mieux que le compilateur sache le simuler |
||
| 93 | // car ca interdit l'usage de criteres conditionnels dessus). |
||
| 94 | View Code Duplication | if (!isset($contexte['date'])) { |
|
| 95 | $contexte['date'] = date("Y-m-d H:i:s"); |
||
| 96 | $contexte['date_default'] = true; |
||
| 97 | } else $contexte['date'] = normaliser_date($contexte['date'], true); |
||
| 98 | |||
| 99 | View Code Duplication | if (!isset($contexte['date_redac'])) { |
|
| 100 | $contexte['date_redac'] = date("Y-m-d H:i:s"); |
||
| 101 | $contexte['date_redac_default'] = true; |
||
| 102 | } else $contexte['date_redac'] = normaliser_date($contexte['date_redac'], true); |
||
| 103 | |||
| 104 | // Passer le nom du cache pour produire sa destruction automatique |
||
| 105 | $page = $fonc(array('cache' => $cache), array($contexte)); |
||
| 106 | |||
| 107 | // Restituer les globales de notes telles qu'elles etaient avant l'appel |
||
| 108 | // Si l'inclus n'a pas affiche ses notes, tant pis (elles *doivent* |
||
| 109 | // etre dans son resultat, autrement elles ne seraient pas prises en |
||
| 110 | // compte a chaque calcul d'un texte contenant un modele, mais seulement |
||
| 111 | // quand le modele serait calcule, et on aurait des resultats incoherents) |
||
| 112 | $notes('','depiler'); |
||
| 113 | |||
| 114 | // reinjecter en dynamique la pile des notes |
||
| 115 | // si il y a des inclure dynamiques |
||
| 116 | // si la pile n'est pas vide |
||
| 117 | // la generalisation de cette injection permettrait de corriger le point juste au dessus |
||
| 118 | // en faisant remonter les notes a l'incluant (A tester et valider avant application) |
||
| 119 | $page['notes'] = $notes('','sauver_etat'); |
||
| 120 | |||
| 121 | // spip_log: un joli contexte |
||
| 122 | $infos = array(); |
||
| 123 | foreach (array_filter($contexte) as $var => $val) { |
||
| 124 | if (is_array($val)) $val = serialize($val); |
||
| 125 | if (strlen("$val") > 30) |
||
| 126 | $val = substr("$val", 0,27).'..'; |
||
| 127 | if (strstr($val,' ')) |
||
| 128 | $val = "'$val'"; |
||
| 129 | $infos[] = $var.'='.$val; |
||
| 130 | } |
||
| 131 | $profile = spip_timer($a); |
||
| 132 | spip_log("calcul ($profile) [$skel] " |
||
| 133 | . join(', ', $infos) |
||
| 134 | .' ('.strlen($page['texte']).' octets)'); |
||
| 135 | |||
| 136 | if ($debug) { |
||
| 137 | // si c'est ce que demande le debusqueur, lui passer la main |
||
| 138 | $t = strlen($page['texte']) ? $page['texte'] : " "; |
||
| 139 | $GLOBALS['debug_objets']['resultat'][$fonc . 'tout'] = $t; |
||
| 140 | $GLOBALS['debug_objets']['courant'] = $courant; |
||
| 141 | $GLOBALS['debug_objets']['profile'][$sourcefile] = $profile; |
||
| 142 | View Code Duplication | if ($GLOBALS['debug_objets']['sourcefile'] |
|
| 143 | AND (_request('var_mode_objet') == $fonc) |
||
| 144 | AND (_request('var_mode_affiche') == 'resultat')) { |
||
| 145 | erreur_squelette(); |
||
| 146 | } |
||
| 147 | } |
||
| 148 | // Si #CACHE{} n'etait pas la, le mettre a $delais |
||
| 149 | if (!isset($page['entetes']['X-Spip-Cache'])) |
||
| 150 | $page['entetes']['X-Spip-Cache'] = isset($GLOBALS['delais'])?$GLOBALS['delais']:36000; |
||
| 151 | |||
| 152 | $page['contexte'] = $contexte; |
||
| 153 | // faire remonter le fichier source |
||
| 154 | //if ($GLOBALS['var_inclure']) |
||
| 155 | |||
| 156 | static $var_inclure = false; |
||
| 157 | if ($GLOBALS['var_inclure']){ |
||
| 158 | $page['sourcefile'] = $sourcefile; |
||
| 159 | $page['texte'] = |
||
| 160 | "<div class='inclure_blocs'><h6>".$page['sourcefile']."</h6>".$page['texte']."</div>" |
||
| 161 | . ($var_inclure?"":"<script type='text/javascript'>jQuery(function(){jQuery('.inclure_blocs > h6:first-child').hover(function(){jQuery(this).parent().addClass('hover')},function(){jQuery(this).parent().removeClass('hover')})});</script>"); |
||
| 162 | $var_inclure = true; |
||
| 163 | } |
||
| 164 | |||
| 165 | // Si un modele contenait #SESSION, on note l'info dans $page |
||
| 166 | View Code Duplication | if (isset($GLOBALS['cache_utilise_session'])) { |
|
| 167 | $page['invalideurs']['session'] = $GLOBALS['cache_utilise_session']; |
||
| 168 | unset($GLOBALS['cache_utilise_session']); |
||
| 169 | } |
||
| 170 | } |
||
| 171 | |||
| 172 | if ($select) lang_select(); |
||
| 173 | |||
| 174 | return $page; |
||
| 175 | } |
||
| 176 | |||
| 221 |
This check marks calls to
isset(...)orempty(...)that are found before the variable itself is defined. These will always have the same result.This is likely the result of code being shifted around. Consider removing these calls.