Conditions | 33 |
Paths | > 20000 |
Total Lines | 118 |
Code Lines | 76 |
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 |
||
100 | public static function listBoxes($dbs, $mode, $zone, $user = null, $excludelist = array(), $includehidden = 1) |
||
101 | { |
||
102 | global $conf; |
||
103 | |||
104 | $boxes = array(); |
||
105 | |||
106 | if ($mode == 'activated') { // activated |
||
107 | $sql = "SELECT b.rowid, b.position, b.box_order, b.fk_user,"; |
||
108 | $sql .= " d.rowid as box_id, d.file, d.note, d.tms"; |
||
109 | $sql .= " FROM " . $dbs->prefix() . "boxes as b, " . $dbs->prefix() . "boxes_def as d"; |
||
110 | $sql .= " WHERE b.box_id = d.rowid"; |
||
111 | $sql .= " AND b.entity IN (0," . $conf->entity . ")"; |
||
112 | if ($zone >= 0) { |
||
113 | $sql .= " AND b.position = " . ((int) $zone); |
||
114 | } |
||
115 | if (is_object($user)) { |
||
116 | $sql .= " AND b.fk_user IN (0," . $user->id . ")"; |
||
117 | } else { |
||
118 | $sql .= " AND b.fk_user = 0"; |
||
119 | } |
||
120 | $sql .= " ORDER BY b.box_order"; |
||
121 | } else { // available |
||
122 | $sql = "SELECT d.rowid as box_id, d.file, d.note, d.tms"; |
||
123 | $sql .= " FROM " . $dbs->prefix() . "boxes_def as d"; |
||
124 | $sql .= " WHERE d.entity IN (0, " . $conf->entity . ")"; |
||
125 | } |
||
126 | |||
127 | dol_syslog(self::class . "::listBoxes get default box list for mode=" . $mode . " userid=" . (is_object($user) ? $user->id : ''), LOG_DEBUG); |
||
128 | $resql = $dbs->query($sql); |
||
129 | if ($resql) { |
||
130 | $num = $dbs->num_rows($resql); |
||
131 | $j = 0; |
||
132 | while ($j < $num) { |
||
133 | $obj = $dbs->fetch_object($resql); |
||
134 | |||
135 | if (!in_array($obj->box_id, $excludelist)) { |
||
136 | $regs = array(); |
||
137 | if (preg_match('/^([^@]+)@([^@]+)$/i', $obj->file, $regs)) { |
||
138 | $boxname = preg_replace('/\.php$/i', '', $regs[1]); |
||
139 | $module = $regs[2]; |
||
140 | $relsourcefile = "/" . $module . "/core/boxes/" . $boxname . ".php"; |
||
141 | } else { |
||
142 | $boxname = preg_replace('/\.php$/i', '', $obj->file); |
||
143 | $relsourcefile = "/core/boxes/" . $boxname . ".php"; |
||
144 | } |
||
145 | |||
146 | //print $obj->box_id.'-'.$boxname.'-'.$relsourcefile.'<br>'; |
||
147 | |||
148 | // TODO PERF Do not make "dol_include_once" here, nor "new" later. This means, we must store a 'depends' field to store modules list, then |
||
149 | // the "enabled" condition for modules forbidden for external users and the depends condition can be done. |
||
150 | // Goal is to avoid making a "new" done for each boxes returned by select. |
||
151 | dol_include_once($relsourcefile); |
||
152 | if (class_exists($boxname)) { |
||
153 | $box = new $boxname($dbs, $obj->note); // Constructor may set properties like box->enabled. obj->note is note into box def, not user params. |
||
154 | //$box=new stdClass(); |
||
155 | |||
156 | // box properties |
||
157 | $box->rowid = (empty($obj->rowid) ? '' : $obj->rowid); |
||
158 | $box->id = (empty($obj->box_id) ? '' : $obj->box_id); |
||
159 | $box->position = ((isset($obj->position) && $obj->position == '') ? '' : (isset($obj->position) ? $obj->position : '')); // '0' must stay '0' |
||
160 | $box->box_order = (empty($obj->box_order) ? '' : $obj->box_order); |
||
161 | $box->fk_user = (empty($obj->fk_user) ? 0 : $obj->fk_user); |
||
162 | $box->sourcefile = $relsourcefile; |
||
163 | $box->class = $boxname; |
||
164 | |||
165 | if ($mode == 'activated' && !is_object($user)) { // List of activated box was not yet personalized into database |
||
166 | if (is_numeric($box->box_order)) { |
||
167 | if ($box->box_order % 2 == 1) { |
||
168 | $box->box_order = 'A' . $box->box_order; |
||
169 | } elseif ($box->box_order % 2 == 0) { |
||
170 | $box->box_order = 'B' . $box->box_order; |
||
171 | } |
||
172 | } |
||
173 | } |
||
174 | // box_def properties |
||
175 | $box->box_id = (empty($obj->box_id) ? '' : $obj->box_id); |
||
176 | $box->note = (empty($obj->note) ? '' : $obj->note); |
||
177 | |||
178 | // Filter on box->enabled (used for example by box_comptes) |
||
179 | // Filter also on box->depends. Example: array("product|service") or array("contrat", "service") |
||
180 | $enabled = $box->enabled; |
||
181 | if (isset($box->depends) && count($box->depends) > 0) { |
||
182 | foreach ($box->depends as $moduleelem) { |
||
183 | $arrayelem = explode('|', $moduleelem); |
||
184 | $tmpenabled = 0; // $tmpenabled is used for the '|' test (OR) |
||
185 | foreach ($arrayelem as $module) { |
||
186 | $tmpmodule = preg_replace('/@[^@]+/', '', $module); |
||
187 | if (!empty($conf->$tmpmodule->enabled)) { |
||
188 | $tmpenabled = 1; |
||
189 | } |
||
190 | //print $boxname.'-'.$module.'-module enabled='.(empty($conf->$tmpmodule->enabled)?0:1).'<br>'; |
||
191 | } |
||
192 | if (empty($tmpenabled)) { // We found at least one module required that is disabled |
||
193 | $enabled = 0; |
||
194 | break; |
||
195 | } |
||
196 | } |
||
197 | } |
||
198 | //print '=>'.$boxname.'-enabled='.$enabled.'<br>'; |
||
199 | |||
200 | //print 'xx module='.$module.' enabled='.$enabled; |
||
201 | if ($enabled && ($includehidden || empty($box->hidden))) { |
||
202 | $boxes[] = $box; |
||
203 | } else { |
||
204 | unset($box); |
||
205 | } |
||
206 | } else { |
||
207 | dol_syslog("Failed to load box '" . $boxname . "' into file '" . $relsourcefile . "'", LOG_WARNING); |
||
208 | } |
||
209 | } |
||
210 | $j++; |
||
211 | } |
||
212 | } else { |
||
213 | dol_syslog($dbs->lasterror(), LOG_ERR); |
||
214 | return array('error' => $dbs->lasterror()); |
||
215 | } |
||
216 | |||
217 | return $boxes; |
||
218 | } |
||
314 |