Merge remote-tracking branch 'origin/3.3' into develop

This commit is contained in:
Laurent Destailleur 2013-01-15 12:06:41 +01:00
commit f57409ddcd
20 changed files with 87 additions and 66 deletions

View File

@ -211,8 +211,6 @@ if ($action == 'switch')
*/
$form=new Form($db);
$emptyuser=new User($db);
//$infobox=new InfoBox($db);
llxHeader('',$langs->trans("Boxes"));
@ -316,7 +314,7 @@ if ($resql)
// Available boxes
$boxtoadd=InfoBox::listBoxes($db,'available',-1,$emptyuser,$actives);
$boxtoadd=InfoBox::listBoxes($db,'available',-1,null,$actives);
print "<br>\n";
print_titre($langs->trans("BoxesAvailable"));
@ -366,7 +364,7 @@ print '</table>';
// Activated boxes
$boxactivated=InfoBox::listBoxes($db,'activated',-1,$emptyuser);
$boxactivated=InfoBox::listBoxes($db,'activated',-1,null);
print "<br>\n\n";
print_titre($langs->trans("BoxesActivated"));

View File

@ -37,7 +37,7 @@ $action = GETPOST("action");
$syslogModules = array();
$activeModules = array();
if (defined('SYSLOG_HANDLERS')) $activeModules = json_decode(SYSLOG_HANDLERS);
if (defined('SYSLOG_HANDLERS')) $activeModules = json_decode(constant('SYSLOG_HANDLERS'));
$dir = dol_buildpath('/core/modules/syslog/');

View File

@ -83,8 +83,8 @@ class box_clients extends ModeleBoxes
$sql.= " ORDER BY s.tms DESC";
$sql.= $db->plimit($max, 0);
dol_syslog(get_class($this)."::loadBox sql=".$sql,LOG_DEBUG);
$result = $db->query($sql);
if ($result)
{
$num = $db->num_rows($result);

View File

@ -1,6 +1,6 @@
<?php
/* Copyright (C) 2005 Christophe
* Copyright (C) 2005-2008 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2013 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com>
*
* This program is free software; you can redistribute it and/or modify
@ -38,20 +38,25 @@ class box_comptes extends ModeleBoxes
var $db;
var $param;
var $enabled = 1;
var $info_box_head = array();
var $info_box_contents = array();
/**
* Constructor
*/
function __construct()
{
global $langs;
global $conf, $langs, $user;
$langs->load("boxes");
$this->boxlabel=$langs->transnoentitiesnoconv('BoxCurrentAccounts');
// disable module for such cases
$listofmodulesforexternal=explode(',',$conf->global->MAIN_MODULES_FOR_EXTERNAL);
if (! in_array('banque',$listofmodulesforexternal) && ! empty($user->societe_id)) $this->enabled=0; // disabled for external users
}
/**

View File

@ -78,12 +78,11 @@ class box_contacts extends ModeleBoxes
if (! $user->rights->societe->client->voir && ! $user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
$sql.= " WHERE sp.entity IN (".getEntity('societe', 1).")";
if (! $user->rights->societe->client->voir && ! $user->societe_id) $sql.= " AND sp.rowid = sc.fk_soc AND sc.fk_user = " .$user->id;
if ($user->societe_id) $sql.= " AND sp.rowid = $user->societe_id";
if ($user->societe_id) $sql.= " AND sp.fk_soc = $user->societe_id";
$sql.= " ORDER BY sp.tms DESC";
$sql.= $db->plimit($max, 0);
$result = $db->query($sql);
if ($result)
{
$num = $db->num_rows($result);

View File

@ -1,6 +1,6 @@
<?php
/* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2012 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2004-2013 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
*
* This program is free software; you can redistribute it and/or modify
@ -19,8 +19,8 @@
/**
* \file htdocs/core/boxes/box_members.php
* \ingroup societes
* \brief Module de generation de l'affichage de la box clients
* \ingroup adherent
* \brief Module to show box of members
*/
include_once DOL_DOCUMENT_ROOT.'/core/boxes/modules_boxes.php';
@ -38,19 +38,25 @@ class box_members extends ModeleBoxes
var $db;
var $param;
var $enabled = 1;
var $info_box_head = array();
var $info_box_contents = array();
/**
* Constructor
*/
function __construct()
{
global $langs;
global $conf, $langs, $user;
$langs->load("boxes");
$this->boxlabel=$langs->transnoentitiesnoconv("BoxLastMembers");
// disable module for such cases
$listofmodulesforexternal=explode(',',$conf->global->MAIN_MODULES_FOR_EXTERNAL);
if (! in_array('banque',$listofmodulesforexternal) && ! empty($user->societe_id)) $this->enabled=0; // disabled for external users
}
/**

View File

@ -88,7 +88,7 @@ class box_prospect extends ModeleBoxes
$sql.= " ORDER BY s.tms DESC";
$sql.= $db->plimit($max, 0);
dol_syslog("box_prospect::loadBox sql=".$sql,LOG_DEBUG);
dol_syslog(get_class($this)."::loadBox sql=".$sql,LOG_DEBUG);
$resql = $db->query($sql);
if ($resql)
{

View File

@ -32,7 +32,8 @@ class ModeleBoxes // Can't be abtract as it is instanciated to build "empty"
var $db;
var $error='';
var $max=5;
var $enabled=1;
var $rowid;
var $id;
var $position;
@ -122,7 +123,7 @@ class ModeleBoxes // Can't be abtract as it is instanciated to build "empty"
$bcx[1] = 'class="box_impair"';
$var = false;
dol_syslog(get_Class($this));
dol_syslog(get_class($this).'::showBox');
// Define nbcol and nblines of the box to show
$nbcol=0;

View File

@ -147,7 +147,7 @@ class Conf
$value=$objp->value;
if ($key)
{
if (! defined("$key")) define("$key", $value); // In some cases, the constant might be already forced (Example: SYSLOG_FILE_ON and SYSLOG_FILE during install)
if (! defined("$key")) define("$key", $value); // In some cases, the constant might be already forced (Example: SYSLOG_HANDLERS during install)
$this->global->$key=$value;
if ($value && preg_match('/^MAIN_MODULE_/',$key))
@ -397,7 +397,7 @@ class Conf
$this->maxfilesize = (empty($this->global->MAIN_UPLOAD_DOC) ? 0 : $this->global->MAIN_UPLOAD_DOC * 1024);
// Define list of limited modules
if (! isset($this->global->MAIN_MODULES_FOR_EXTERNAL)) $this->global->MAIN_MODULES_FOR_EXTERNAL='facture,commande,contact,propal,projet,contrat,societe,ficheinter,expedition,agenda'; // '' means 'all'. Note that contact is added here as it should be a module later.
if (! isset($this->global->MAIN_MODULES_FOR_EXTERNAL)) $this->global->MAIN_MODULES_FOR_EXTERNAL='facture,commande,fournisseur,contact,propal,projet,contrat,societe,ficheinter,expedition,agenda'; // '' means 'all'. Note that contact is added here as it should be a module later.
// Timeouts
if (empty($this->global->MAIN_USE_CONNECT_TIMEOUT)) $this->global->MAIN_USE_CONNECT_TIMEOUT=10;

View File

@ -467,16 +467,17 @@ class ExtraFields
* Load array this->attribute_label
*
* @param string $elementtype Type of element
* @param boolean $forcecheck override test of MAIN_EXTRAFIELDS_DISABLED
* @return array Array of attributes for all extra fields
*/
function fetch_name_optionals_label($elementtype='member')
function fetch_name_optionals_label($elementtype='member',$forcecheck=false)
{
global $conf;
$array_name_label=array();
// For avoid conflicts with external modules
if (! empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))
if (!empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && !$forcecheck)
return $array_name_label;
$sql = "SELECT rowid,name,label,type,size,elementtype,fieldunique,fieldrequired";

View File

@ -808,24 +808,27 @@ class FormOther
include_once DOL_DOCUMENT_ROOT.'/core/class/infobox.class.php';
//$infobox=new InfoBox($db);
$boxactivated=InfoBox::listBoxes($db,'activated',$areacode,$user);
$arrayboxactivatedid=array();
foreach($boxactivated as $box) $arrayboxactivatedid[$box->id]=$box->id;
$selectboxlist='';
if (! empty($conf->use_javascript_ajax))
$confuserzone='MAIN_BOXES_'.$areacode;
$boxactivated=InfoBox::listBoxes($db,'activated',$areacode,(empty($user->conf->$confuserzone)?null:$user)); // Search boxes of user (or everybody if user has no specific setup)
$boxidactivatedforuser=array();
foreach($boxactivated as $box)
{
$emptyuser=new User($db);
$boxavailable=InfoBox::listBoxes($db,'activated',$areacode,$emptyuser,$arrayboxactivatedid); // Get list of box available for empty user (minus already activated for user)
$arrayboxtoactivatelabel=array();
foreach($boxavailable as $box)
{
$arrayboxtoactivatelabel[$box->id]=$box->boxlabel;
}
$form=new Form($db);
if (empty($user->conf->$confuserzone) || $box->fk_user == $user->id) $boxidactivatedforuser[$box->id]=$box->id; // We keep only boxes to show for user
}
$selectboxlist='';
$arrayboxtoactivatelabel=array();
if (! empty($user->conf->$confuserzone))
{
foreach($boxactivated as $box)
{
if (! empty($boxidactivatedforuser[$box->id])) continue; // Already visible for user
$arrayboxtoactivatelabel[$box->id]=$box->boxlabel; // We keep only boxes not shown for user, to show into combo list
}
$form=new Form($db);
$selectboxlist=$form->selectarray('boxcombo', $arrayboxtoactivatelabel,'',1);
}
@ -852,12 +855,14 @@ class FormOther
</script>';
}
$nbboxactivated=count($boxactivated);
$nbboxactivated=count($boxidactivatedforuser);
print load_fiche_titre(($nbboxactivated?$langs->trans("OtherInformationsBoxes"):''),$selectboxlist,'','','otherboxes');
if ($nbboxactivated)
{
$emptybox=new ModeleBoxes($db);
print '<table width="100%" class="notopnoleftnoright">';
print '<tr><td class="notopnoleftnoright">'."\n";
@ -873,6 +878,7 @@ class FormOther
$ii=0;
foreach ($boxactivated as $key => $box)
{
if ((! empty($user->conf->$confuserzone) && $box->fk_user == 0) || (empty($user->conf->$confuserzone) && $box->fk_user != 0)) continue;
if (empty($box->box_order) && $ii < ($nbboxactivated / 2)) $box->box_order='A'.sprintf("%02d",($ii+1)); // When box_order was not yet set to Axx or Bxx and is still 0
if (preg_match('/^A/i',$box->box_order)) // column A
{
@ -885,7 +891,6 @@ class FormOther
}
}
$emptybox=new ModeleBoxes($db);
$emptybox->box_id='A';
$emptybox->info_box_head=array();
$emptybox->info_box_contents=array();
@ -902,7 +907,8 @@ class FormOther
$ii=0;
foreach ($boxactivated as $key => $box)
{
if (empty($box->box_order) && $ii < ($nbboxactivated / 2)) $box->box_order='B'.sprintf("%02d",($ii+1)); // When box_order was not yet set to Axx or Bxx and is still 0
if ((! empty($user->conf->$confuserzone) && $box->fk_user == 0) || (empty($user->conf->$confuserzone) && $box->fk_user != 0)) continue;
if (empty($box->box_order) && $ii < ($nbboxactivated / 2)) $box->box_order='B'.sprintf("%02d",($ii+1)); // When box_order was not yet set to Axx or Bxx and is still 0
if (preg_match('/^B/i',$box->box_order)) // colonne B
{
$ii++;
@ -914,7 +920,6 @@ class FormOther
}
}
$emptybox=new ModeleBoxes($db);
$emptybox->box_id='B';
$emptybox->info_box_head=array();
$emptybox->info_box_contents=array();

View File

@ -33,7 +33,7 @@ class InfoBox
* @param DoliDB $db Database handler
* @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 User $user Objet user to filter
* @param array $excludelist Array of box id (box.box_id = boxes_def.rowid) to exclude
* @return array Array of boxes
*/
@ -52,7 +52,7 @@ class InfoBox
$sql.= " WHERE b.box_id = d.rowid";
$sql.= " AND b.entity IN (0,".(! empty($conf->multicompany->enabled) && ! empty($conf->multicompany->transverse_mode)?"1,":"").$conf->entity.")";
if ($zone >= 0) $sql.= " AND b.position = ".$zone;
if ($user->id && ! empty($user->conf->$confuserzone)) $sql.= " AND b.fk_user = ".$user->id;
if (is_object($user)) $sql.= " AND b.fk_user IN (0,".$user->id.")";
else $sql.= " AND b.fk_user = 0";
$sql.= " ORDER BY b.box_order";
}
@ -71,7 +71,7 @@ class InfoBox
}
}
dol_syslog(get_class()."::listBoxes get default box list sql=".$sql, LOG_DEBUG);
dol_syslog(get_class()."::listBoxes get default box list for mode=".$mode." userid=".(is_object($user)?$user->id:'')." sql=".$sql, LOG_DEBUG);
$resql = $db->query($sql);
if ($resql)
{
@ -101,13 +101,13 @@ class InfoBox
$box=new $boxname($db,$obj->note);
// box properties
$box->rowid = (! empty($obj->rowid) ? $obj->rowid : '');
$box->id = (! empty($obj->box_id) ? $obj->box_id : '');
$box->position = (! empty($obj->position) ? $obj->position : '');
$box->box_order = (! empty($obj->box_order) ? $obj->box_order : '');
$box->fk_user = (! empty($obj->fk_user) ? $obj->fk_user : '');
$box->rowid = (empty($obj->rowid) ? '' : $obj->rowid);
$box->id = (empty($obj->box_id) ? '' : $obj->box_id);
$box->position = (empty($obj->position) ? '' : $obj->position);
$box->box_order = (empty($obj->box_order) ? '' : $obj->box_order);
$box->fk_user = (empty($obj->fk_user) ? 0 : $obj->fk_user);
$box->sourcefile=$relsourcefile;
if ($mode == 'activated' && (! $user->id || empty($user->conf->$confuserzone))) // List of activated box was not yet personalized into database
if ($mode == 'activated' && ! is_object($user)) // List of activated box was not yet personalized into database
{
if (is_numeric($box->box_order))
{
@ -116,18 +116,20 @@ class InfoBox
}
}
// box_def properties
$box->box_id = (! empty($obj->box_id) ? $obj->box_id : '');
$box->note = (! empty($obj->note) ? $obj->note : '');
$box->box_id = (empty($obj->box_id) ? '' : $obj->box_id);
$box->note = (empty($obj->note) ? '' : $obj->note);
$enabled=true;
$enabled=$box->enabled;
if (isset($box->depends) && count($box->depends) > 0)
{
foreach($box->depends as $module)
{
//print $boxname.'-'.$module.'<br>';
if (empty($conf->$module->enabled)) $enabled=false;
if (empty($conf->$module->enabled)) $enabled=0;
}
}
//print 'xx module='.$module.' enabled='.$enabled;
if ($enabled) $boxes[]=$box;
}
}
@ -137,9 +139,8 @@ class InfoBox
else
{
//dol_print_error($db);
$error=$db->error();
$error=$db->lasterror();
dol_syslog(get_class()."::listBoxes Error ".$error, LOG_ERR);
return array();
}
return $boxes;

View File

@ -434,7 +434,7 @@ class Menubase
$this->newmenu = $newmenu;
// Load datas from database into $tabMenu, later we will complete this->newmenu with values into $tabMenu
if (count($tabMenu) == 0)
if (count($tabMenu) == 0) // To avoid to read into database a second time
{
$this->menuLoad($mainmenu, $leftmenu, $type_user, $menu_handler, $tabMenu);
}
@ -535,7 +535,7 @@ class Menubase
// If type_user == 2, no test required
$sql.= " ORDER BY m.position, m.rowid";
dol_syslog(get_class($this)."::menuLeftCharger sql=".$sql);
dol_syslog(get_class($this)."::menuLoad mymainmenu=".$mymainmenu." myleftmenu=".$myleftmenu." type_user=".$type_user." menu_handler=".$menu_handler." tabMenu size=".count($tabMenu)." sql=".$sql);
$resql = $this->db->query($sql);
if ($resql)
{

View File

@ -473,8 +473,8 @@ function dol_strtoupper($utf8_string)
/**
* Write log message into outputs. Possible outputs can be:
* A file if SYSLOG_FILE_ON defined: file name is then defined by SYSLOG_FILE
* Syslog if SYSLOG_SYSLOG_ON defined: facility is then defined by SYSLOG_FACILITY
* SYSLOG_HANDLERS = ["mod_syslog_file"] file name is then defined by SYSLOG_FILE
* SYSLOG_HANDLERS = ["mod_syslog_syslog"] facility is then defined by SYSLOG_FACILITY
* Warning, syslog functions are bugged on Windows, generating memory protection faults. To solve
* this, use logging to files instead of syslog (see setup of module).
* Note: If SYSLOG_FILE_NO_ERROR defined, we never output any error message when writing to log fails.

View File

@ -98,6 +98,8 @@ class MenuLeft
*/
function showmenu()
{
global $conf;
require_once DOL_DOCUMENT_ROOT.'/core/menus/standard/auguria.lib.php';
$res=print_left_auguria_menu($this->db,$this->menu_array,$this->menu_array_after);

View File

@ -444,7 +444,7 @@ function print_eldy_menu($db,$atarget,$type_user)
$tabMenu=array();
$menuArbo = new Menubase($db,'eldy','top');
$newTabMenu = $menuArbo->menuTopCharger('','',$type_user,'eldy',$tabMenu);
$newTabMenu = $menuArbo->menuTopCharger('','',$type_user,'eldy',$tabMenu); // Return tabMenu with only top entries
$num = count($newTabMenu);
for($i = 0; $i < $num; $i++)

View File

@ -96,6 +96,8 @@ class MenuLeft
*/
function showmenu()
{
global $conf;
require_once DOL_DOCUMENT_ROOT.'/core/menus/standard/eldy.lib.php';
$res=print_left_eldy_menu($this->db,$this->menu_array,$this->menu_array_after);

View File

@ -303,7 +303,7 @@ function conf($dolibarr_main_document_root)
// Force usage of log file for install and upgrades
$conf->syslog->enabled=1;
$conf->global->SYSLOG_LEVEL=constant('LOG_DEBUG');
if (! defined('SYSLOG_FILE_ON')) define('SYSLOG_FILE_ON',1);
if (! defined('SYSLOG_HANDLERS')) define('SYSLOG_HANDLERS','["mod_syslog_file"]');
if (! defined('SYSLOG_FILE')) // To avoid warning on systems with constant already defined
{
if (@is_writable('/tmp')) define('SYSLOG_FILE','/tmp/dolibarr_install.log');

View File

@ -85,6 +85,7 @@ INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'ILS'
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'JMD', '[74,36]', 1, 'Jamaica Dollar');
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'JPY', '[165]', 1, 'Japan Yen');
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'JEP', '[163]', 1, 'Jersey Pound');
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'KES', NULL, 1, 'Kenya Shilling');
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'KZT', '[1083,1074]', 1, 'Kazakhstan Tenge');
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'KPW', '[8361]', 1, 'Korea (North) Won');
INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'KRW', '[8361]', 1, 'Korea (South) Won');

View File

@ -35,7 +35,7 @@ insert into llx_const (name, value, type, note, visible, entity) values ('MAIN_N
insert into llx_const (name, value, type, note, visible, entity) values ('MAIN_FEATURES_LEVEL','0','chaine','Level of features to show (0=stable only, 1=stable+experimental, 2=stable+experimental+development',1,0);
-- Hidden and common to all entities
insert into llx_const (name, value, type, note, visible, entity) values ('SYSLOG_FILE_ON','1','chaine','Log to file Directory where to write log file',0,0);
insert into llx_const (name, value, type, note, visible, entity) values ('SYSLOG_HANDLERS','["mod_syslog_file"]','chaine','Which logger to use',0,0);
insert into llx_const (name, value, type, note, visible, entity) values ('SYSLOG_FILE','DOL_DATA_ROOT/dolibarr.log','chaine','Directory where to write log file',0,0);
insert into llx_const (name, value, type, note, visible, entity) values ('SYSLOG_LEVEL','7','chaine','Level of debug info to show',0,0);