29require
'../main.inc.php';
37require_once DOL_DOCUMENT_ROOT.
'/core/boxes/modules_boxes.php';
38require_once DOL_DOCUMENT_ROOT.
'/core/class/infobox.class.php';
39require_once DOL_DOCUMENT_ROOT.
'/core/lib/admin.lib.php';
42$langs->loadLangs(array(
'admin',
'boxes',
'accountancy'));
49$action =
GETPOST(
'action',
'aZ09');
61if ($action ==
'addconst') {
65if ($action ==
'add') {
67 $boxids =
GETPOST(
'boxid',
'array');
70 if (is_array($boxids)) {
71 foreach ($boxids as $boxid) {
72 if (is_numeric($boxid[
'pos']) && $boxid[
'pos'] >= 0) {
76 $distinctfkuser = array();
78 $sql =
"SELECT fk_user";
79 $sql .=
" FROM ".MAIN_DB_PREFIX.
"user_param";
80 $sql .=
" WHERE param = 'MAIN_BOXES_".$db->escape($pos).
"' AND value = '1'";
81 $sql .=
" AND entity = ".((int)
$conf->entity);
82 dol_syslog(
"boxes.php search fk_user to activate box for", LOG_DEBUG);
83 $resql =
$db->query($sql);
85 $num =
$db->num_rows($resql);
88 $obj =
$db->fetch_object($resql);
89 $distinctfkuser[$obj->fk_user] = $obj->fk_user;
98 $distinctfkuser[
'0'] =
'0';
100 foreach ($distinctfkuser as $fk_user) {
101 if (!$error && $fk_user !=
'') {
102 $arrayofexistingboxid = array();
103 $nbboxonleft = $nbboxonright = 0;
104 $sql =
"SELECT box_id, box_order FROM ".MAIN_DB_PREFIX.
"boxes";
105 $sql .=
" WHERE position = ".((int) $pos).
" AND fk_user = ".((int) $fk_user).
" AND entity = ".((int)
$conf->entity);
106 dol_syslog(
"boxes.php activate box", LOG_DEBUG);
107 $resql =
$db->query($sql);
109 while ($obj =
$db->fetch_object($resql)) {
110 $boxorder = $obj->box_order;
111 if (preg_match(
'/A/', $boxorder)) {
114 if (preg_match(
'/B/', $boxorder)) {
117 $arrayofexistingboxid[$obj->box_id] = 1;
123 if (empty($arrayofexistingboxid[$boxid[
'value']])) {
124 $sql =
"INSERT INTO ".MAIN_DB_PREFIX.
"boxes (";
125 $sql .=
"box_id, position, box_order, fk_user, entity";
126 $sql .=
") VALUES (";
127 $sql .= ((int) $boxid[
'value']).
", ".((int) $pos).
", '".(($nbboxonleft > $nbboxonright) ?
'B01' :
'A01').
"', ".((int) $fk_user).
", ".
$conf->entity;
130 dol_syslog(
"boxes.php activate box", LOG_DEBUG);
131 $resql =
$db->query($sql);
137 dol_syslog(
"boxes.php activate box - already exists in database", LOG_DEBUG);
152if ($action ==
'delete') {
153 $sql =
"SELECT box_id FROM ".MAIN_DB_PREFIX.
"boxes";
154 $sql .=
" WHERE rowid=".((int) $rowid);
156 $resql =
$db->query($sql);
157 $obj =
$db->fetch_object($resql);
158 if (!empty($obj->box_id)) {
161 $sql =
"DELETE FROM ".MAIN_DB_PREFIX.
"boxes";
162 $sql .=
" WHERE entity = ".$conf->entity;
163 $sql .=
" AND box_id=".((int) $obj->box_id);
165 $resql =
$db->query($sql);
171if ($action ==
'switch') {
181 $resultupdatefrom = 0;
183 if (is_object($objfrom) && is_object($objto)) {
184 $newfirst = $objto->box_order;
185 $newsecond = $objfrom->box_order;
186 if ($newfirst == $newsecond) {
187 $newsecondchar = preg_replace(
'/[0-9]+/',
'', $newsecond);
188 $newsecondnum = (int) preg_replace(
'/[a-zA-Z]+/',
'', $newsecond);
189 $newsecond = sprintf(
"%s%02d", $newsecondchar ? $newsecondchar :
'A', $newsecondnum + 1);
192 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"boxes SET box_order='".
$db->escape($newfirst).
"' WHERE rowid=".((int) $objfrom->rowid);
194 $resultupdatefrom =
$db->query($sql);
195 if (!$resultupdatefrom) {
199 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"boxes SET box_order='".
$db->escape($newsecond).
"' WHERE rowid=".((int) $objto->rowid);
201 $resultupdateto =
$db->query($sql);
202 if (!$resultupdateto) {
207 if ($resultupdatefrom && $resultupdateto) {
221llxHeader(
'', $langs->trans(
"Boxes"),
'',
'', 0, 0,
'',
'',
'',
'mod-admin page-boxes');
225print
'<span class="opacitymedium">'.$langs->trans(
"BoxesDesc").
" ".$langs->trans(
"OnlyActiveElementsAreShown").
"</span><br>\n";
235$sql =
"SELECT b.rowid, b.box_id, b.position, b.box_order,";
236$sql .=
" bd.rowid as boxid";
237$sql .=
" FROM ".MAIN_DB_PREFIX.
"boxes as b, ".MAIN_DB_PREFIX.
"boxes_def as bd";
238$sql .=
" WHERE b.box_id = bd.rowid";
239$sql .=
" AND b.entity IN (0,".$conf->entity.
")";
240$sql .=
" AND b.fk_user = 0";
241$sql .=
" ORDER by b.position, b.box_order";
244dol_syslog(
"Search available boxes", LOG_DEBUG);
245$resql =
$db->query($sql);
247 $num =
$db->num_rows($resql);
253 $obj =
$db->fetch_object($resql);
254 $boxes[$obj->position][$obj->box_id] = 1;
257 array_push($actives, $obj->box_id);
259 if ($obj->box_order ==
'' || $obj->box_order ==
'0' || $decalage) {
265 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"boxes SET box_order='".
$db->escape($decalage).
"' WHERE rowid=".((int) $obj->rowid);
273 $sql =
"SELECT box_order";
274 $sql .=
" FROM ".MAIN_DB_PREFIX.
"boxes";
275 $sql .=
" WHERE entity = ".$conf->entity;
276 $sql .=
" AND LENGTH(box_order) <= 2";
278 dol_syslog(
"Execute requests to renumber box order", LOG_DEBUG);
279 $result =
$db->query($sql);
281 while ($record =
$db->fetch_array($result)) {
283 if (preg_match(
"/[13579]{1}/", substr($record[
'box_order'], -1))) {
284 $box_order =
"A0".$record[
'box_order'];
285 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"boxes SET box_order = '".
$db->escape($box_order).
"' WHERE entity = ".
$conf->entity.
" AND box_order = '".
$db->escape($record[
'box_order']).
"'";
286 $resql =
$db->query($sql);
287 } elseif (preg_match(
"/[02468]{1}/", substr($record[
'box_order'], -1))) {
288 $box_order =
"B0".$record[
'box_order'];
289 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"boxes SET box_order = '".
$db->escape($box_order).
"' WHERE entity = ".
$conf->entity.
" AND box_order = '".
$db->escape($record[
'box_order']).
"'";
290 $resql =
$db->query($sql);
292 } elseif (
dol_strlen($record[
'box_order']) == 2) {
293 if (preg_match(
"/[13579]{1}/", substr($record[
'box_order'], -1))) {
294 $box_order =
"A".$record[
'box_order'];
295 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"boxes SET box_order = '".
$db->escape($box_order).
"' WHERE entity = ".
$conf->entity.
" AND box_order = '".
$db->escape($record[
'box_order']).
"'";
296 $resql =
$db->query($sql);
297 } elseif (preg_match(
"/[02468]{1}/", substr($record[
'box_order'], -1))) {
298 $box_order =
"B".$record[
'box_order'];
299 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"boxes SET box_order = '".
$db->escape($box_order).
"' WHERE entity = ".
$conf->entity.
" AND box_order = '".
$db->escape($record[
'box_order']).
"'";
300 $resql =
$db->query($sql);
314print
'<form action="'.$_SERVER[
"PHP_SELF"].
'" method="POST">'.
"\n";
315print
'<input type="hidden" name="token" value="'.newToken().
'">'.
"\n";
316print
'<input type="hidden" name="action" value="add">'.
"\n";
321print
'<div class="div-table-responsive-no-min">';
322print
'<table class="tagtable liste centpercent">'.
"\n";
324print
'<tr class="liste_titre">';
325print
'<td>'.$langs->trans(
"Box").
'</td>';
326print
'<td>'.$langs->trans(
"Note").
'/'.$langs->trans(
"Parameters").
'</td>';
328print
'<td class="center" width="160">'.$langs->trans(
"ActivatableOn").
'</td>';
329print
'<td class="center" width="60" colspan="2">'.$langs->trans(
"PositionByDefault").
'</td>';
330print
'<td class="center" width="80"></td>';
333print
"\n\n".
'<!-- Boxes Available -->'.
"\n";
334foreach ($boxtoadd as $box) {
335 if (preg_match(
'/^([^@]+)@([^@]+)$/i', $box->boximg)) {
336 $logo = $box->boximg;
338 $logo = preg_replace(
"/^object_/i",
"", $box->boximg);
341 print
"\n".
'<!-- Box '.$box->boxcode.
' -->'.
"\n";
342 print
'<tr class="oddeven" style="height:3em !important;">'.
"\n";
343 print
'<td class="tdoverflowmax300" title="'.dol_escape_htmltag($langs->transnoentitiesnoconv($box->boxlabel)).
'">'.
img_object(
"", $logo,
'class="pictofixedwidth" height="14px"').
' '.$langs->transnoentitiesnoconv($box->boxlabel);
344 if (!empty($box->class) && preg_match(
'/graph_/', $box->class)) {
345 print
img_picto(
'',
'graph',
'class="paddingleft"');
347 if (!empty($box->version)) {
348 if ($box->version ==
'experimental') {
349 print
' <span class="opacitymedium">('.$langs->trans(
"Experimental").
')</span>';
350 } elseif ($box->version ==
'development') {
351 print
' <span class="opacitymedium">('.$langs->trans(
"Development").
')</span>';
355 print
'<td class="tdoverflowmax300" title="'.dol_escape_htmltag($box->note).
'">';
356 if ($box->note ==
'(WarningUsingThisBoxSlowDown)') {
357 $langs->load(
"errors");
358 print $langs->trans(
"WarningUsingThisBoxSlowDown");
360 print($box->note ? $box->note :
' ');
364 print $form->textwithpicto(
'', $langs->trans(
"SourceFile").
' : '.$box->sourcefile);
368 print
'<td class="center">';
369 print $form->selectarray(
"boxid[".$box->box_id.
"][pos]", $arrayofhomepages, -1, 1, 0, 0,
'', 1, 0, 0,
'',
'minwidth75', 1).
"\n";
370 print
'<input type="hidden" name="boxid['.$box->box_id.
'][value]" value="'.$box->box_id.
'">'.
"\n";
380 print
'<input type="submit" class="button small smallpaddingimp" value="'.$langs->trans(
"Activate").
'">';
385print
"\n".
'<!-- End Boxes Available -->'.
"\n";
390foreach ($boxactivated as $key => $box) {
391 if (preg_match(
'/^([^@]+)@([^@]+)$/i', $box->boximg)) {
392 $logo = $box->boximg;
394 $logo = preg_replace(
"/^object_/i",
"", $box->boximg);
397 print
"\n".
'<!-- Box '.$box->boxcode.
' -->'.
"\n";
398 print
'<tr class="oddeven" style="height:3em !important;">';
399 print
'<td>'.img_object(
"", $logo,
'class="pictofixedwidth" height="14px"').
' '.$langs->transnoentitiesnoconv($box->boxlabel);
400 if (!empty($box->class) && preg_match(
'/graph_/', $box->class)) {
401 print
img_picto(
'',
'graph',
'class="paddingleft"');
403 if (!empty($box->version)) {
404 if ($box->version ==
'experimental') {
405 print
' <span class="opacitymedium">('.$langs->trans(
"Experimental").
')</span>';
406 } elseif ($box->version ==
'development') {
407 print
' <span class="opacitymedium">('.$langs->trans(
"Development").
')</span>';
411 $langs->load(
"errors");
412 print
'<td class="tdoverflowmax300" title="'.dol_escape_htmltag($box->note ==
'(WarningUsingThisBoxSlowDown)' ? $langs->trans(
"WarningUsingThisBoxSlowDown") : $box->note).
'">';
413 if ($box->note ==
'(WarningUsingThisBoxSlowDown)') {
414 print
img_warning(
'',
'').
' '.$langs->trans(
"WarningUsingThisBoxSlowDown");
416 print($box->note ? $box->note :
' ');
420 print $form->textwithpicto(
'', $langs->trans(
"SourceFile").
' : '.$box->sourcefile);
422 print
'<td class="center">'.(empty($arrayofhomepages[$box->position]) ?
'' : $langs->trans($arrayofhomepages[$box->position])).
'</td>';
423 $hasnext = ($key < (count($boxactivated) - 1));
424 $hasprevious = ($key != 0);
425 print
'<td class="center">'.($key + 1).
'</td>';
426 print
'<td class="center nowraponall">';
427 print($hasnext ?
'<a class="reposition" href="boxes.php?action=switch&token='.newToken().
'&switchfrom='.$box->rowid.
'&switchto='.$boxactivated[$key + 1]->rowid.
'">'.
img_down().
'</a> ' :
'');
428 print($hasprevious ?
'<a class="reposition" href="boxes.php?action=switch&token='.newToken().
'&switchfrom='.$box->rowid.
'&switchto='.$boxactivated[$key - 1]->rowid.
'">'.
img_up().
'</a>' :
'');
430 print
'<td class="center">';
431 print
'<a class="reposition" href="boxes.php?rowid='.$box->rowid.
'&action=delete&token='.newToken().
'">'.
img_delete().
'</a>';
446print
"\n\n".
'<!-- Other Const -->'.
"\n";
448print
'<form action="'.$_SERVER[
"PHP_SELF"].
'" method="POST">';
449print
'<input type="hidden" name="token" value="'.newToken().
'">';
450print
'<input type="hidden" name="action" value="addconst">';
451print
'<input type="hidden" name="page_y" value="">';
452print
'<div class="div-table-responsive-no-min">';
453print
'<table class="noborder centpercent">';
455print
'<tr class="liste_titre">';
456print
'<td class="liste_titre">'.$langs->trans(
"Parameter").
'</td>';
457print
'<td class="liste_titre"></td>';
461print
'<tr class="oddeven"><td>';
462print $form->textwithpicto($langs->trans(
"EnableFileCache").
' <span class="opacitymedium">('.
getDolGlobalInt(
'MAIN_ACTIVATE_FILECACHE_DELAY', 900).
" ".$langs->trans(
"seconds").
")</span>", $langs->trans(
"DataWillBeRefreshedEvery",
getDolGlobalInt(
'MAIN_ACTIVATE_FILECACHE_DELAY', 900).
" ".$langs->trans(
"seconds")));
464if (
$conf->use_javascript_ajax) {
465 print ajax_constantonoff(
'MAIN_ACTIVATE_FILECACHE', array(),
null, 0, 0, 0, 2, 0, 1);
467 print $form->selectyesno(
'MAIN_ACTIVATE_FILECACHE',
getDolGlobalInt(
'MAIN_ACTIVATE_FILECACHE', 0), 1);
475print $form->buttonsSaveCancel(
"Save",
'', array(),
false,
'reposition');
478print
"\n".
'<!-- End Other Const -->'.
"\n";
dolibarr_set_const($db, $name, $value, $type='chaine', $visible=0, $note='', $entity=1)
Insert a parameter (key,value) into database (delete old key then insert it again).
llxFooter($comment='', $zone='private', $disabledoutputofmessages=0)
Empty footer.
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
Empty header.
static listBoxes($dbs, $mode, $zone, $user=null, $excludelist=array(), $includehidden=1)
Return array of boxes qualified for area and user.
static getListOfPagesForBoxes()
Name of positions (See below)
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2, $allowothertags=array())
Show picto whatever it's its name (generic function)
img_warning($titlealt='default', $moreatt='', $morecss='pictowarning')
Show warning logo.
img_delete($titlealt='default', $other='class="pictodelete"', $morecss='')
Show delete logo.
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
img_object($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $allowothertags=array())
Show a picto called object_picto (generic function)
dol_strlen($string, $stringencoding='UTF-8')
Make a strlen call.
img_down($titlealt='default', $selected=0, $moreclass='')
Show down arrow logo.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
load_fiche_titre($title, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='', $morecssonpicto='widthpictotitle')
Load a title with picto.
img_up($titlealt='default', $selected=0, $moreclass='')
Show top arrow logo.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.