Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.
Common duplication problems, and corresponding solutions are:
1 | <?php |
||
8 | class Profil { |
||
9 | private $vacances; |
||
10 | |||
11 | //-------------------------- BUILDER ----------------------------------------------------------------------------// |
||
12 | public function __construct() { |
||
28 | //-------------------------- END BUILDER ----------------------------------------------------------------------------// |
||
29 | |||
30 | |||
31 | //-------------------------- GETTER ----------------------------------------------------------------------------// |
||
32 | public function getVacances(){ |
||
35 | |||
36 | /** |
||
37 | * @return string |
||
38 | * fonction qui test si le compte est en mode vacances ou pas |
||
39 | */ |
||
40 | public function getTestModeVacances($id_identite = null) { |
||
62 | |||
63 | /** |
||
64 | * @return string |
||
65 | * fonction qui renvoi la durée depuis lquelle le compte est en vacances |
||
66 | */ |
||
67 | public function getDureeVacances() { |
||
75 | |||
76 | /** |
||
77 | * @param $id_base |
||
78 | * @return mixed |
||
79 | * permet de tester si une base est en vacances ou non |
||
80 | */ |
||
81 | public static function getTestVacancesBase($id_base) { |
||
82 | $dbc = App::getDb(); |
||
83 | |||
84 | $query = $dbc->select()->from("_bataille_base")->from("_bataille_infos_player") |
||
85 | ->where("_bataille_base.ID_base", "=", $id_base, "AND") |
||
86 | ->where("_bataille_base.ID_identite", "=", "_bataille_infos_player.ID_identite", "", true)->get(); |
||
87 | |||
88 | if (count($query) > 0) { |
||
89 | foreach ($query as $obj) { |
||
90 | return $obj->mode_vacances; |
||
91 | } |
||
92 | } |
||
93 | |||
94 | return 0; |
||
95 | } |
||
96 | |||
97 | /** |
||
98 | * @return bool |
||
99 | * fonction qui récupère toutes les construction en cours de la base |
||
100 | */ |
||
101 | View Code Duplication | private function getAllConstructionBases() { |
|
102 | $dbc = App::getDb(); |
||
103 | |||
104 | $query = $dbc->select()->from("_bataille_base")->from("_bataille_batiment") |
||
105 | ->where("_bataille_base.ID_identite", "=", Bataille::getIdIdentite(), "AND") |
||
106 | ->where("_bataille_batiment.construction", "=", 1, "AND") |
||
107 | ->where("_bataille_base.ID_base", "=", "_bataille_batiment.ID_base", "", true)->get(); |
||
108 | |||
109 | if (count($query) > 0) { |
||
110 | return true; |
||
111 | } |
||
112 | |||
113 | return false; |
||
114 | } |
||
115 | |||
116 | /** |
||
117 | * @return bool |
||
118 | * fonction qui récupère toutes les recherches, recrutement, missions et offre de marché en cours de la base |
||
119 | */ |
||
120 | private static function getAllThingsBases($table) { |
||
133 | |||
134 | /** |
||
135 | * @return bool |
||
136 | * fonction qui récupère toutes les transports en cours de la base |
||
137 | */ |
||
138 | View Code Duplication | private static function getAllMarcheBases() { |
|
152 | //-------------------------- END GETTER ----------------------------------------------------------------------------// |
||
153 | |||
154 | |||
155 | //-------------------------- SETTER ----------------------------------------------------------------------------// |
||
156 | /** |
||
157 | * fonction qui permet d'activer le mode vacances |
||
158 | */ |
||
159 | public static function setActiverModeVacances() { |
||
160 | $dbc = App::getDb(); |
||
161 | |||
162 | if ((self::getAllConstructionBases() == false) && (self::getAllMarcheBases() == false) && |
||
|
|||
163 | (self::getAllThingsBases("_bataille_marche_transport") == false) && |
||
164 | (self::getAllThingsBases("_bataille_marche_recrutement") == false) && |
||
165 | (self::getAllThingsBases("_bataille_missions_cours") == false) && |
||
166 | (self::getAllThingsBases("_bataille_marche_recherche") == false)) { |
||
167 | |||
168 | $dbc->update("mode_vacances", 1)->update("last_connexion", date("Y-m-d H:i:s"))->from("_bataille_infos_player")->where("ID_identite", "=", Bataille::getIdIdentite())->set(); |
||
169 | FlashMessage::setFlash("Le mode vacances a bien été activé"); |
||
170 | return true; |
||
171 | } |
||
172 | |||
173 | FlashMessage::setFlash("impossible de passer en mode vacances des actions sont encore en cours dans vos bases, merci d'en faire le tour pour vérifier"); |
||
174 | return false; |
||
175 | } |
||
176 | |||
177 | /** |
||
178 | * fonction qui permet de finir le mode vacances |
||
179 | */ |
||
180 | View Code Duplication | public function setDesactiverModeVacances() { |
|
190 | //-------------------------- END SETTER ----------------------------------------------------------------------------// |
||
191 | } |
When comparing two booleans, it is generally considered safer to use the strict comparison operator.