106 public static function listBoxes($dbs, $mode, $zone, $user =
null, $excludelist = array(), $includehidden = 1)
112 if ($mode ==
'activated') {
113 $sql =
"SELECT b.rowid, b.position, b.box_order, b.fk_user,";
114 $sql .=
" d.rowid as box_id, d.file, d.note, d.tms";
115 $sql .=
" FROM ".$dbs->prefix().
"boxes as b, ".$dbs->prefix().
"boxes_def as d";
116 $sql .=
" WHERE b.box_id = d.rowid";
117 $sql .=
" AND b.entity IN (0,".((int)
$conf->entity).
")";
119 $sql .=
" AND b.position = ".((int) $zone);
121 if (is_object($user)) {
122 $sql .=
" AND b.fk_user IN (0,".((int) $user->id).
")";
124 $sql .=
" AND b.fk_user = 0";
126 $sql .=
" ORDER BY b.box_order, b.fk_user";
128 $sql =
"SELECT d.rowid as box_id, d.file, d.note, d.tms";
129 $sql .=
" FROM ".$dbs->prefix().
"boxes_def as d";
130 $sql .=
" WHERE d.entity IN (0, ".((int)
$conf->entity).
")";
133 dol_syslog(self::class.
"::listBoxes get default box list for mode=".$mode.
" userid=".(is_object($user) ? $user->id :
''), LOG_DEBUG);
134 $resql = $dbs->query($sql);
136 $num = $dbs->num_rows($resql);
139 $obj = $dbs->fetch_object($resql);
141 if (!in_array($obj->box_id, $excludelist)) {
143 if (preg_match(
'/^([^@]+)@([^@]+)$/i', $obj->file, $regs)) {
144 $boxname = preg_replace(
'/\.php$/i',
'', $regs[1]);
146 $relsourcefile =
"/".$module.
"/core/boxes/".$boxname.
".php";
148 $boxname = preg_replace(
'/\.php$/i',
'', $obj->file);
149 $relsourcefile =
"/core/boxes/".$boxname.
".php";
158 if (class_exists($boxname)) {
159 $box =
new $boxname($dbs, $obj->note);
160 '@phan-var-force ModeleBoxes $box';
164 $box->rowid = (empty($obj->rowid) ?
'' : $obj->rowid);
165 $box->id = (empty($obj->box_id) ?
'' : $obj->box_id);
166 $box->position = ((isset($obj->position) && $obj->position ==
'') ?
'' : (isset($obj->position) ? $obj->position :
''));
167 $box->box_order = (empty($obj->box_order) ?
'' : $obj->box_order);
168 $box->fk_user = (empty($obj->fk_user) ? 0 : $obj->fk_user);
169 $box->sourcefile = $relsourcefile;
170 $box->class = $boxname;
172 if ($mode ==
'activated' && !is_object($user)) {
173 if (is_numeric($box->box_order)) {
174 if (((
int) $box->box_order % 2) == 1) {
175 $box->box_order =
'A'.$box->box_order;
176 } elseif (((
int) $box->box_order % 2) == 0) {
177 $box->box_order =
'B'.$box->box_order;
182 $box->box_id = (empty($obj->box_id) ?
'' : $obj->box_id);
183 $box->note = (empty($obj->note) ?
'' : $obj->note);
187 $enabled = $box->enabled;
188 if (isset($box->depends) && count($box->depends) > 0) {
189 foreach ($box->depends as $moduleelem) {
190 $arrayelem = explode(
'|', $moduleelem);
192 foreach ($arrayelem as
$module) {
193 $tmpmodule = preg_replace(
'/@[^@]+/',
'',
$module);
199 if (empty($tmpenabled)) {
208 if ($enabled && ($includehidden || empty($box->hidden))) {
214 dol_syslog(
"Failed to load box '".$boxname.
"' into file '".$relsourcefile.
"'", LOG_WARNING);
221 return array(
'error' => $dbs->lasterror());
237 public static function saveboxorder($dbs, $zone, $boxorder, $userid = 0)
243 require_once DOL_DOCUMENT_ROOT.
'/core/lib/functions2.lib.php';
245 dol_syslog(self::class.
"::saveboxorder zone=".$zone.
" userid=".$userid);
247 if (!$userid || $userid == 0) {
251 $user =
new User($dbs);
258 $confuserzone =
'MAIN_BOXES_'.$zone;
259 $tab[$confuserzone] =
'1';
261 $error = $dbs->lasterror();
266 if (!is_numeric($zone)) {
271 $sql =
"DELETE FROM ".$dbs->prefix().
"boxes";
272 $sql .=
" WHERE entity = ".((int)
$conf->entity);
273 $sql .=
" AND fk_user = ".((int) $userid);
274 $sql .=
" AND position = ".((int) $zone);
276 dol_syslog(self::class.
"::saveboxorder", LOG_DEBUG);
277 $result = $dbs->query($sql);
279 $colonnes = explode(
'-', $boxorder);
280 foreach ($colonnes as $collist) {
281 $part = explode(
':', $collist);
284 dol_syslog(self::class.
"::saveboxorder column=".$colonne.
' list='.$list);
287 $listarray = explode(
',', $list);
288 foreach ($listarray as
$id) {
289 if (is_numeric(
$id)) {
292 $ii = sprintf(
'%02d', $i);
294 $sql =
"INSERT INTO ".$dbs->prefix().
"boxes";
295 $sql .=
"(box_id, position, box_order, fk_user, entity)";
297 $sql .=
" ".((int)
$id).
",";
298 $sql .=
" ".((int) $zone).
",";
299 $sql .=
" '".$dbs->escape($colonne.$ii).
"',";
300 $sql .=
" ".((int) $userid).
",";
301 $sql .=
" ".((int)
$conf->entity);
304 $result = $dbs->query($sql);