From 1d51ee3aab51777332168681c317c19c4c0af131 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 17 Mar 2012 14:04:16 +0100 Subject: [PATCH] Perf: Reduce quantity of code for boxes. --- htdocs/admin/boxes.php | 260 ++++-------- htdocs/boxes.php | 632 +++++++++++++++--------------- htdocs/core/lib/functions.lib.php | 2 +- 3 files changed, 392 insertions(+), 502 deletions(-) diff --git a/htdocs/admin/boxes.php b/htdocs/admin/boxes.php index 2e7a4bdde0c..41272fa8e87 100644 --- a/htdocs/admin/boxes.php +++ b/htdocs/admin/boxes.php @@ -1,6 +1,6 @@ - * Copyright (C) 2004-2011 Laurent Destailleur + * Copyright (C) 2004-2012 Laurent Destailleur * Copyright (C) 2005-2011 Regis Houssin * * This program is free software; you can redistribute it and/or modify @@ -25,6 +25,7 @@ require("../main.inc.php"); include_once(DOL_DOCUMENT_ROOT."/core/boxes/modules_boxes.php"); include_once(DOL_DOCUMENT_ROOT."/core/lib/admin.lib.php"); +require_once(DOL_DOCUMENT_ROOT."/boxes.php"); $langs->load("admin"); @@ -82,7 +83,7 @@ if ($action == 'add') dol_syslog("boxes.php activate box sql=".$sql); $resql = $db->query($sql); - // Remove all personalized setup when a box is activated or disabled + // Remove all personalized setup when a box is activated or disabled (to be sure user see new box) $sql = "DELETE FROM ".MAIN_DB_PREFIX."user_param"; $sql.= " WHERE param LIKE 'MAIN_BOXES_%'"; dol_syslog("boxes.php delete user_param sql=".$sql); @@ -102,18 +103,26 @@ if ($action == 'add') if ($action == 'delete') { - $db->begin(); - $sql = "DELETE FROM ".MAIN_DB_PREFIX."boxes"; + $sql = "SELECT box_id FROM ".MAIN_DB_PREFIX."boxes"; $sql.= " WHERE rowid=".$rowid; $resql = $db->query($sql); + $obj=$db->fetch_object($resql); + if (! empty($obj->box_id)) + { + $db->begin(); - // Remove all personalized setup when a box is activated or disabled - $sql = "DELETE FROM ".MAIN_DB_PREFIX."user_param"; - $sql.= " WHERE param LIKE 'MAIN_BOXES_%'"; - $resql = $db->query($sql); + // Remove all personalized setup when a box is activated or disabled (why removing all ? We removed only removed boxes) + // $sql = "DELETE FROM ".MAIN_DB_PREFIX."user_param"; + // $sql.= " WHERE param LIKE 'MAIN_BOXES_%'"; + // $resql = $db->query($sql); - $db->commit(); + $sql = "DELETE FROM ".MAIN_DB_PREFIX."boxes"; + $sql.= " WHERE box_id=".$obj->box_id; + $resql = $db->query($sql); + + $db->commit(); + } } if ($action == 'switch') @@ -154,12 +163,17 @@ if ($action == 'switch') * View */ +$form=new Form($db); +$emptyuser=new User($db); +$infobox=new InfoBox($db); + llxHeader('',$langs->trans("Boxes")); print_fiche_titre($langs->trans("Boxes"),'','setup'); print $langs->trans("BoxesDesc")." ".$langs->trans("OnlyActiveElementsAreShown")."
\n"; + /* * Recherche des boites actives par defaut pour chaque position possible * On stocke les boites actives par defaut dans $boxes[position][id_boite]=1 @@ -202,13 +216,14 @@ if ($resql) if ($decalage) { - // Si on a renumerote, on corrige champ box_order + // Si on a renumerote, on corrige champ box_order // This occurs just after an insert. $sql = "SELECT box_order"; $sql.= " FROM ".MAIN_DB_PREFIX."boxes"; $sql.= " WHERE length(box_order) <= 2"; - $result = $db->query($sql); + dol_syslog("Execute requests to renumber box order sql=".$sql); + $result = $db->query($sql); if ($result) { while ($record = $db->fetch_array($result)) @@ -251,6 +266,7 @@ if ($resql) // Available boxes +$boxtoadd=$infobox->listboxes('available',-1,$emptyuser,$actives); print "
\n"; print_titre($langs->trans("BoxesAvailable")); @@ -262,103 +278,45 @@ print ''.$langs->trans("Note").'/'.$langs->trans("Parameters").''; print ''.$langs->trans("SourceFile").''; print ''.$langs->trans("ActivateOn").''; print "\n"; - -$sql = "SELECT rowid, file, note, tms"; -$sql.= " FROM ".MAIN_DB_PREFIX."boxes_def"; -$sql.= " WHERE entity = ".$conf->entity; -$resql = $db->query($sql); $var=true; - -if ($resql) +foreach($boxtoadd as $box) { - $form=new Form($db); + $var=!$var; - $num = $db->num_rows($resql); - $i = 0; + if (preg_match('/^([^@]+)@([^@]+)$/i',$box->boximg)) + { + $logo = $box->boximg; + } + else + { + $logo=preg_replace("/^object_/i","",$box->boximg); + } - // Boucle sur toutes les boites - while ($i < $num) - { - $obj = $db->fetch_object($resql); + print "\n".''."\n"; + print '
'; + print ''; + print ''; + print ''.img_object("",$logo).' '.$box->boxlabel.''; + print '' . ($box->note?$box->note:' ') . ''; + print '' . $box->sourcefile . ''; - if (preg_match('/^([^@]+)@([^@]+)$/i',$obj->file,$regs)) - { - $boxname = $regs[1]; - $module = $regs[2]; - $sourcefile = "/".$module."/core/boxes/".$boxname.".php"; - } - else - { - $boxname=preg_replace('/.php$/i','',$obj->file); - $sourcefile = "/core/boxes/".$boxname.".php"; - } + // Pour chaque position possible, on affiche un lien d'activation si boite non deja active pour cette position + print ''; + print $form->selectarray("pos",$pos_name); + print ''; + print ''; + print ' '; + print ''; - dol_include_once($sourcefile); - if (class_exists($boxname)) - { - $box=new $boxname($db,$obj->note); - - $enabled=true; - if ($box->depends && count($box->depends) > 0) - { - foreach($box->depends as $module) - { - if (empty($conf->$module->enabled)) $enabled=false; - } - } - - if ($enabled) - { - //if (in_array($obj->rowid, $actives) && $box->box_multiple <> 1) - if (in_array($obj->rowid, $actives)) - { - // La boite est deja activee - } - else - { - $var=!$var; - - if (preg_match('/^([^@]+)@([^@]+)$/i',$box->boximg)) - { - $logo = $box->boximg; - } - else - { - $logo=preg_replace("/^object_/i","",$box->boximg); - } - - print "\n".''."\n"; - print ''; - print ''; - print ''; - print ''.img_object("",$logo).' '.$box->boxlabel.''; - print '' . ($obj->note?$obj->note:' ') . ''; - print '' . $sourcefile . ''; - - // Pour chaque position possible, on affiche un lien - // d'activation si boite non deja active pour cette position - print ''; - print $form->selectarray("pos",$pos_name); - print ''; - print ''; - print ' '; - print ''; - - print '
'; - } - } - } - - $i++; - } - - $db->free($resql); + print ''; + print ''; } print ''; // Activated boxes +$boxactivated=$infobox->listboxes('activated',-1,$emptyuser); print "
\n\n"; print_titre($langs->trans("BoxesActivated")); @@ -372,89 +330,39 @@ print ''.$langs->trans("PositionByDefa print ''.$langs->trans("Disable").''; print ''."\n"; -$sql = "SELECT b.rowid, b.box_id, b.position,"; -$sql.= " bd.file, bd.note, bd.tms"; -$sql.= " FROM ".MAIN_DB_PREFIX."boxes as b, ".MAIN_DB_PREFIX."boxes_def as bd"; -$sql.= " WHERE b.box_id = bd.rowid"; -$sql.= " AND bd.entity = ".$conf->entity; -$sql.= " AND b.fk_user=0"; -$sql.= " ORDER by b.position, b.box_order"; // Note box_order return A01,A03...,B02,B04... - -$resql = $db->query($sql); - -if ($resql) +$var=true; +$box_order=1; +$foundrupture=1; +foreach($boxactivated as $key => $box) { - $num = $db->num_rows($resql); - $i = 0; - $var=true; + $var = ! $var; - $box_order=1; - $foundrupture=1; - - // On lit avec un coup d'avance - $obj = $db->fetch_object($resql); - - while ($obj && $i < $num) + if (preg_match('/^([^@]+)@([^@]+)$/i',$box->boximg)) { - $var = ! $var; - $objnext = $db->fetch_object($resql); - - if (preg_match('/^([^@]+)@([^@]+)$/i',$obj->file,$regs)) - { - $boxname = $regs[1]; - $module = $regs[2]; - $sourcefile = "/".$module."/core/boxes/".$boxname.".php"; - } - else - { - $boxname=preg_replace('/.php$/i','',$obj->file); - $sourcefile = "/core/boxes/".$boxname.".php"; - } - - dol_include_once($sourcefile); - if (class_exists($boxname)) - { - $box=new $boxname($db,$obj->note); - - if (preg_match('/^([^@]+)@([^@]+)$/i',$box->boximg)) - { - $logo = $box->boximg; - } - else - { - $logo=preg_replace("/^object_/i","",$box->boximg); - } - - print "\n".''."\n"; - print ''; - print ''.img_object("",$logo).' '.$box->boxlabel.''; - print '' . ($obj->note?$obj->note:' ') . ''; - print '' . $pos_name[$obj->position] . ''; - $hasnext=true; - $hasprevious=true; - if ($foundrupture) { $hasprevious=false; $foundrupture=0; } - if (! $objnext || $obj->position != $objnext->position) { $hasnext=false; $foundrupture=1; } - print ''.$box_order.''; - print ''; - print ($hasnext?''.img_down().' ':''); - print ($hasprevious?''.img_up().'':''); - print ''; - print ''; - print ''.img_delete().''; - print ''; - - print ''."\n"; - } - $i++; - - $box_order++; - - if (! $foundrupture) $objprevious = $obj; - else $box_order=1; - $obj=$objnext; + $logo = $box->boximg; + } + else + { + $logo=preg_replace("/^object_/i","",$box->boximg); } - $db->free($resql); + print "\n".''."\n"; + print ''; + print ''.img_object("",$logo).' '.$box->boxlabel.''; + print '' . ($box->note?$box->note:' ') . ''; + print '' . $pos_name[$box->position] . ''; + $hasnext=($key < (count($boxactivated)-1)); + $hasprevious=($key != 0); + print ''.($key+1).''; + print ''; + print ($hasnext?''.img_down().' ':''); + print ($hasprevious?''.img_up().'':''); + print ''; + print ''; + print ''.img_delete().''; + print ''; + + print ''."\n"; } print '
'; @@ -490,7 +398,7 @@ print ''; print ''; -$db->close(); - llxFooter(); + +$db->close(); ?> diff --git a/htdocs/boxes.php b/htdocs/boxes.php index c83a37ef87e..6f78d65075e 100644 --- a/htdocs/boxes.php +++ b/htdocs/boxes.php @@ -1,21 +1,21 @@ * Copyright (C) 2004-2011 Laurent Destailleur - * Copyright (C) 2005-2011 Regis Houssin - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ +* Copyright (C) 2005-2011 Regis Houssin +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ /** * \file htdocs/boxes.php @@ -35,87 +35,114 @@ */ function printBoxesArea($user,$areacode) { - global $conf,$langs,$db; + global $conf,$langs,$db; - $infobox=new InfoBox($db); - $boxarray=$infobox->listboxes($areacode,$user); + $infobox=new InfoBox($db); + $boxarray=$infobox->listboxes('activated',$areacode,$user); - if (count($boxarray)) - { - print load_fiche_titre($langs->trans("OtherInformationsBoxes"),'','','','otherboxes'); - print ''; - print '"; + print "
'."\n"; + $selectboxlist=''; + /* + if ($conf->use_javascript_ajax) + { + $sql = "SELECT rowid, file, note, tms"; + $sql.= " FROM ".MAIN_DB_PREFIX."boxes_def"; + $sql.= " WHERE entity = ".$conf->entity; + $resql = $db->query($sql); + $var=true; + + if ($resql) + { + $num = $db->num_rows($resql); + $i = 0; + + // Boucle sur toutes les boites + while ($i < $num) + { + $obj = $db->fetch_object($resql); + + + + } + } + }*/ + + if (count($boxarray)) + { + print load_fiche_titre($langs->trans("OtherInformationsBoxes"),$selectboxlist,'','','otherboxes'); + + print ''; + print '"; - print "
'."\n"; print '
'; - print "\n\n"; - print '
'."\n"; + print "\n\n"; + print '
'."\n"; - // Define $box_max_lines - $box_max_lines=5; - if (! empty($conf->global->MAIN_BOXES_MAXLINES)) $box_max_lines=$conf->global->MAIN_BOXES_MAXLINES; + // Define $box_max_lines + $box_max_lines=5; + if (! empty($conf->global->MAIN_BOXES_MAXLINES)) $box_max_lines=$conf->global->MAIN_BOXES_MAXLINES; - $ii=0; - foreach ($boxarray as $key => $box) - { - if (preg_match('/^A/i',$box->box_order)) // column A - { - $ii++; - //print 'box_id '.$boxarray[$ii]->box_id.' '; - //print 'box_order '.$boxarray[$ii]->box_order.'
'; - // Affichage boite key - $box->loadBox($box_max_lines); - $box->showBox(); - } - } + $ii=0; + foreach ($boxarray as $key => $box) + { + if (preg_match('/^A/i',$box->box_order)) // column A + { + $ii++; + //print 'box_id '.$boxarray[$ii]->box_id.' '; + //print 'box_order '.$boxarray[$ii]->box_order.'
'; + // Affichage boite key + $box->loadBox($box_max_lines); + $box->showBox(); + } + } - $emptybox=new ModeleBoxes($db); - $emptybox->box_id='A'; - $emptybox->info_box_head=array(); - $emptybox->info_box_contents=array(); - $emptybox->showBox(array(),array()); + $emptybox=new ModeleBoxes($db); + $emptybox->box_id='A'; + $emptybox->info_box_head=array(); + $emptybox->info_box_contents=array(); + $emptybox->showBox(array(),array()); - print "
\n"; - print "\n"; + print "
\n"; + print "\n"; print '
'; - print "\n\n"; - print '\n"; + print "\n"; - print '
'; - print "\n"; + print ''; + print "\n"; - print "
"; + print "
"; - if ($conf->use_javascript_ajax) - { - print "\n"; - print ''."\n"; - } - } + print 'var left_list = cleanSerialize(jQuery("#left").sortable("serialize" ));'."\n"; + print 'var right_list = cleanSerialize(jQuery("#right").sortable("serialize" ));'."\n"; + print 'var boxorder = \'A:\' + left_list + \'-B:\' + right_list;'."\n"; + //print 'alert(\'boxorder=\' + boxorder);'; + print 'var userid = \''.$user->id.'\';'."\n"; + print 'jQuery.get(\'core/ajax/box.php?boxorder=\'+boxorder+\'&userid=\'+'.$user->id.');'."\n"; + print '}'."\n"; + print ''."\n"; + } + } - return count($boxarray); + return count($boxarray); } @@ -153,171 +180,126 @@ function printBoxesArea($user,$areacode) */ class InfoBox { - var $db; + var $db; - /** - * Constructor - * - * @param DoliDb $db Database handler - */ - function InfoBox($db) - { - $this->db=$db; - } + /** + * Constructor + * + * @param DoliDb $db Database handler + */ + function InfoBox($db) + { + $this->db=$db; + } - /** - * Return array of boxes qualified for area and user - * - * @param string $zone Name or area (0 for Homepage, ...) - * @param User $user Objet user - * @return array Array of boxes - */ - function listBoxes($zone,$user) - { - global $conf; + /** + * Return array of boxes qualified for area and user + * + * @param string $mode 'available' or 'activated' + * @param string $zone Name or area (-1 for all, 0 for Homepage, 1 for xxx, ...) + * @param User $user Objet user to filter (used only if $zone >= 0) + * @param array $excludelist Array of box.box_id = boxes_def.rowid to exclude + * @return array Array of boxes + */ + function listBoxes($mode,$zone,$user,$excludelist=array()) + { + global $conf; - $boxes=array(); + $boxes=array(); - $confuserzone='MAIN_BOXES_'.$zone; - if ($user->id && $user->conf->$confuserzone) - { - // Get list of boxes of a particular user (if this one has its own list) - $sql = "SELECT b.rowid, b.box_id, b.position, b.box_order, b.fk_user,"; - $sql.= " d.file, d.note"; - $sql.= " FROM ".MAIN_DB_PREFIX."boxes as b, ".MAIN_DB_PREFIX."boxes_def as d"; - $sql.= " WHERE b.box_id = d.rowid"; - $sql.= " AND d.entity = ".$conf->entity; - $sql.= " AND b.position = ".$zone; - $sql.= " AND b.fk_user = ".$user->id; - $sql.= " ORDER BY b.box_order"; + $confuserzone='MAIN_BOXES_'.$zone; + if ($mode == 'activated') + { + $sql = "SELECT b.rowid, b.position, b.box_order, b.fk_user,"; + $sql.= " d.rowid as box_id, d.file, d.note, d.tms"; + $sql.= " FROM ".MAIN_DB_PREFIX."boxes as b, ".MAIN_DB_PREFIX."boxes_def as d"; + $sql.= " WHERE b.box_id = d.rowid"; + $sql.= " AND d.entity = ".$conf->entity; + if ($zone >= 0) $sql.= " AND b.position = ".$zone; + if ($user->id && $user->conf->$confuserzone) $sql.= " AND b.fk_user = ".$user->id; + else $sql.= " AND b.fk_user = 0"; + $sql.= " ORDER BY b.box_order"; + } + else + { + $sql = "SELECT d.rowid as box_id, d.file, d.note, d.tms"; + $sql.= " FROM ".MAIN_DB_PREFIX."boxes_def as d"; + $sql.= " WHERE entity = ".$conf->entity; + } - dol_syslog("InfoBox::listBoxes get user box list sql=".$sql, LOG_DEBUG); - $result = $this->db->query($sql); - if ($result) - { - $num = $this->db->num_rows($result); - $j = 0; - while ($j < $num) - { - $obj = $this->db->fetch_object($result); + dol_syslog(get_class($this)."::listBoxes get default box list sql=".$sql, LOG_DEBUG); + $resql = $this->db->query($sql); + if ($resql) + { + $num = $this->db->num_rows($resql); + $j = 0; + while ($j < $num) + { + $obj = $this->db->fetch_object($resql); - if (preg_match('/^([^@]+)@([^@]+)$/i',$obj->file,$regs)) - { - $boxname = $regs[1]; - $module = $regs[2]; - $sourcefile = dol_buildpath("/".$module."/core/boxes/".$boxname.".php"); - } - else - { - $boxname=preg_replace('/\.php$/i','',$obj->file); - $sourcefile = "/core/boxes/".$boxname.".php"; - } + if (! in_array($obj->box_id, $excludelist)) + { + if (preg_match('/^([^@]+)@([^@]+)$/i',$obj->file,$regs)) + { + $boxname = $regs[1]; + $module = $regs[2]; + $relsourcefile = "/".$module."/core/boxes/".$boxname.".php"; + } + else + { + $boxname=preg_replace('/.php$/i','',$obj->file); + $relsourcefile = "/core/boxes/".$boxname.".php"; + } - dol_include_once($sourcefile); // Do not use dol_include_once here because sourcefile is already good fullpath - if (class_exists($boxname)) - { - $box=new $boxname($this->db,$obj->note); + dol_include_once($relsourcefile); + if (class_exists($boxname)) + { + $box=new $boxname($this->db,$obj->note); - $box->rowid=$obj->rowid; - $box->box_id=$obj->box_id; - $box->position=$obj->position; - $box->box_order=$obj->box_order; - $box->fk_user=$obj->fk_user; - $enabled=true; - if ($box->depends && count($box->depends) > 0) - { - foreach($box->depends as $module) - { - //print $module.'
'; - if (empty($conf->$module->enabled)) $enabled=false; - } - } - if ($enabled) $boxes[]=$box; - } - $j++; - } - } - else - { - $this->error=$this->db->error(); - dol_syslog("InfoBox::listBoxes Error ".$this->error, LOG_ERR); - return array(); - } - } - else - { - // Recupere liste des boites active par defaut pour tous - $sql = "SELECT b.rowid, b.box_id, b.position, b.box_order, b.fk_user,"; - $sql.= " d.file, d.note"; - $sql.= " FROM ".MAIN_DB_PREFIX."boxes as b, ".MAIN_DB_PREFIX."boxes_def as d"; - $sql.= " WHERE b.box_id = d.rowid"; - $sql.= " AND d.entity = ".$conf->entity; - $sql.= " AND b.position = ".$zone; - $sql.= " AND b.fk_user = 0"; - $sql.= " ORDER BY b.box_order"; + // box properties + $box->rowid=$obj->rowid; + $box->position=$obj->position; + $box->box_order=$obj->box_order; + $box->fk_user=$obj->fk_user; + $box->sourcefile=$relsourcefile; + if ($mode == 'activated' && (! $user->id || ! $user->conf->$confuserzone)) + { + if (is_numeric($box->box_order)) + { + if ($box->box_order % 2 == 1) $box->box_order='A'.$box->box_order; + elseif ($box->box_order % 2 == 0) $box->box_order='B'.$box->box_order; + } + } + // box_def properties + $box->box_id=$obj->box_id; + $box->note=$obj->note; - dol_syslog("InfoBox::listBoxes get default box list sql=".$sql, LOG_DEBUG); - $result = $this->db->query($sql); - if ($result) - { - $num = $this->db->num_rows($result); - $j = 0; - while ($j < $num) - { - $obj = $this->db->fetch_object($result); + $enabled=true; + if ($box->depends && count($box->depends) > 0) + { + foreach($box->depends as $module) + { + //print $boxname.'-'.$module.'
'; + if (empty($conf->$module->enabled)) $enabled=false; + } + } + if ($enabled) $boxes[]=$box; + } + } + $j++; + } + } + else + { + //dol_print_error($this->db); + $this->error=$this->db->error(); + dol_syslog(get_class($this)."::listBoxes Error ".$this->error, LOG_ERR); + return array(); + } - if (preg_match('/^([^@]+)@([^@]+)$/i',$obj->file,$regs)) - { - $boxname = $regs[1]; - $module = $regs[2]; - $relsourcefile = "/".$module."/core/boxes/".$boxname.".php"; - } - else - { - $boxname=preg_replace('/.php$/i','',$obj->file); - $relsourcefile = "/core/boxes/".$boxname.".php"; - } - - dol_include_once($relsourcefile); - if (class_exists($boxname)) - { - $box=new $boxname($this->db,$obj->note); - - $box->rowid=$obj->rowid; - $box->box_id=$obj->box_id; - $box->position=$obj->position; - $box->box_order=$obj->box_order; - if (is_numeric($box->box_order)) - { - if ($box->box_order % 2 == 1) $box->box_order='A'.$box->box_order; - elseif ($box->box_order % 2 == 0) $box->box_order='B'.$box->box_order; - } - $box->fk_user=$obj->fk_user; - $enabled=true; - if ($box->depends && count($box->depends) > 0) - { - foreach($box->depends as $module) - { - //print $boxname.'-'.$module.'
'; - if (empty($conf->$module->enabled)) $enabled=false; - } - } - if ($enabled) $boxes[]=$box; - } - $j++; - } - } - else - { - $this->error=$this->db->error(); - dol_syslog("InfoBox::listBoxes Error ".$this->error, LOG_ERR); - return array(); - } - } - - return $boxes; - } + return $boxes; + } @@ -329,100 +311,100 @@ class InfoBox * @param int $userid Id of user * @return int <0 if KO, >= 0 if OK */ - function saveboxorder($zone,$boxorder,$userid=0) - { - global $conf; + function saveboxorder($zone,$boxorder,$userid=0) + { + global $conf; - $error=0; + $error=0; - require_once(DOL_DOCUMENT_ROOT."/core/lib/functions2.lib.php"); + require_once(DOL_DOCUMENT_ROOT."/core/lib/functions2.lib.php"); - dol_syslog("InfoBoxes::saveboxorder zone=".$zone." user=".$userid); + dol_syslog(get_class($this)."::saveboxorder zone=".$zone." user=".$userid); - if (! $userid || $userid == 0) return 0; + if (! $userid || $userid == 0) return 0; - $user = new User($this->db); + $user = new User($this->db); $user->id=$userid; - $this->db->begin(); + $this->db->begin(); - // Sauve parametre indiquant que le user a une - $confuserzone='MAIN_BOXES_'.$zone; - $tab[$confuserzone]=1; - if (dol_set_user_param($this->db, $conf, $user, $tab) < 0) - { - $this->error=$this->db->lasterror(); - $this->db->rollback(); - return -3; - } + // Sauve parametre indiquant que le user a une + $confuserzone='MAIN_BOXES_'.$zone; + $tab[$confuserzone]=1; + if (dol_set_user_param($this->db, $conf, $user, $tab) < 0) + { + $this->error=$this->db->lasterror(); + $this->db->rollback(); + return -3; + } - $sql = "DELETE FROM ".MAIN_DB_PREFIX."boxes"; - $sql.= " USING ".MAIN_DB_PREFIX."boxes, ".MAIN_DB_PREFIX."boxes_def"; - $sql.= " WHERE ".MAIN_DB_PREFIX."boxes.box_id = ".MAIN_DB_PREFIX."boxes_def.rowid"; - $sql.= " AND ".MAIN_DB_PREFIX."boxes_def.entity = ".$conf->entity; - $sql.= " AND ".MAIN_DB_PREFIX."boxes.fk_user = ".$userid; - $sql.= " AND ".MAIN_DB_PREFIX."boxes.position = ".$zone; + $sql = "DELETE FROM ".MAIN_DB_PREFIX."boxes"; + $sql.= " USING ".MAIN_DB_PREFIX."boxes, ".MAIN_DB_PREFIX."boxes_def"; + $sql.= " WHERE ".MAIN_DB_PREFIX."boxes.box_id = ".MAIN_DB_PREFIX."boxes_def.rowid"; + $sql.= " AND ".MAIN_DB_PREFIX."boxes_def.entity = ".$conf->entity; + $sql.= " AND ".MAIN_DB_PREFIX."boxes.fk_user = ".$userid; + $sql.= " AND ".MAIN_DB_PREFIX."boxes.position = ".$zone; - dol_syslog("InfoBox::saveboxorder sql=".$sql); - $result = $this->db->query($sql); - if ($result) - { - $colonnes=explode('-',$boxorder); - foreach ($colonnes as $collist) - { - $part=explode(':',$collist); - $colonne=$part[0]; - $list=$part[1]; - dol_syslog('InfoBox::saveboxorder column='.$colonne.' list='.$list); + dol_syslog(get_class($this)."::saveboxorder sql=".$sql); + $result = $this->db->query($sql); + if ($result) + { + $colonnes=explode('-',$boxorder); + foreach ($colonnes as $collist) + { + $part=explode(':',$collist); + $colonne=$part[0]; + $list=$part[1]; + dol_syslog('InfoBox::saveboxorder column='.$colonne.' list='.$list); - $i=0; - $listarray=explode(',',$list); - foreach ($listarray as $id) - { - if (is_numeric($id)) - { - //dol_syslog("aaaaa".count($listarray)); - $i++; - $ii=sprintf('%02d',$i); - $sql = "INSERT INTO ".MAIN_DB_PREFIX."boxes"; - $sql.= "(box_id, position, box_order, fk_user)"; - $sql.= " values ("; - $sql.= " ".$id.","; - $sql.= " ".$zone.","; - $sql.= " '".$colonne.$ii."',"; - $sql.= " ".$userid; - $sql.= ")"; + $i=0; + $listarray=explode(',',$list); + foreach ($listarray as $id) + { + if (is_numeric($id)) + { + //dol_syslog("aaaaa".count($listarray)); + $i++; + $ii=sprintf('%02d',$i); + $sql = "INSERT INTO ".MAIN_DB_PREFIX."boxes"; + $sql.= "(box_id, position, box_order, fk_user)"; + $sql.= " values ("; + $sql.= " ".$id.","; + $sql.= " ".$zone.","; + $sql.= " '".$colonne.$ii."',"; + $sql.= " ".$userid; + $sql.= ")"; - dol_syslog("InfoBox::saveboxorder sql=".$sql); - $result = $this->db->query($sql); - if ($result < 0) - { - $error++; - break; - } - } - } - } - if ($error) - { - $this->error=$this->db->error(); - $this->db->rollback(); - return -2; - } - else - { - $this->db->commit(); - return 1; - } - } - else - { - $this->error=$this->db->lasterror(); - $this->db->rollback(); - dol_syslog("InfoBox::saveboxorder ".$this->error); - return -1; - } - } + dol_syslog(get_class($this)."::saveboxorder sql=".$sql); + $result = $this->db->query($sql); + if ($result < 0) + { + $error++; + break; + } + } + } + } + if ($error) + { + $this->error=$this->db->error(); + $this->db->rollback(); + return -2; + } + else + { + $this->db->commit(); + return 1; + } + } + else + { + $this->error=$this->db->lasterror(); + $this->db->rollback(); + dol_syslog(get_class($this)."::saveboxorder ".$this->error); + return -1; + } + } } diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 0563209ed3c..666a3233374 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -2429,7 +2429,7 @@ function print_fiche_titre($titre, $mesg='', $picto='title.png', $pictoisfullpat * @param string $titre Title to show * @param string $mesg Added message to show on right * @param string $picto Icon to use before title (should be a 32x32 transparent png file) - * @param int $pictoisfullpath 1=Icon name is a full absolute url of image + * @param int $pictoisfullpath 1=Icon name is a full absolute url of image * @param int $id To force an id on html objects * @return void */