diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php
index 52620f4445b..9b15634945e 100644
--- a/htdocs/comm/action/class/actioncomm.class.php
+++ b/htdocs/comm/action/class/actioncomm.class.php
@@ -35,7 +35,7 @@ class ActionComm extends CommonObject
public $element='action';
public $table_element = 'actioncomm';
public $table_rowid = 'id';
- protected $ismultientitymanaged = 2; // 0=No test on entity, 1=Test with field entity, 2=Test with link by societe
+ protected $ismultientitymanaged = 1; // 0=No test on entity, 1=Test with field entity, 2=Test with link by societe
var $id;
diff --git a/htdocs/comm/action/document.php b/htdocs/comm/action/document.php
index 6a576c580ca..7ad74302655 100755
--- a/htdocs/comm/action/document.php
+++ b/htdocs/comm/action/document.php
@@ -51,6 +51,8 @@ if ($user->societe_id > 0)
$socid = $user->societe_id;
}
+$result = restrictedArea($user, 'agenda', $objectid, 'actioncomm&societe', 'myactions&allactions', '', 'id');
+
$act = new ActionComm($db);
if ($objectid > 0)
diff --git a/htdocs/comm/action/fiche.php b/htdocs/comm/action/fiche.php
index a68427c9ef7..f230ba1a95b 100644
--- a/htdocs/comm/action/fiche.php
+++ b/htdocs/comm/action/fiche.php
@@ -53,7 +53,7 @@ $contactid=GETPOST('contactid','int');
$socid = GETPOST('socid','int');
$id = GETPOST('id','int');
if ($user->societe_id) $socid=$user->societe_id;
-//$result = restrictedArea($user, 'agenda', $id, 'actioncomm', 'actions', '', 'id');
+$result = restrictedArea($user, 'agenda', $id, 'actioncomm&societe', 'myactions&allactions', '', 'id');
$error=GETPOST("error");
$mesg='';
diff --git a/htdocs/comm/action/info.php b/htdocs/comm/action/info.php
index 7c775bf78ac..66dc178d4b8 100644
--- a/htdocs/comm/action/info.php
+++ b/htdocs/comm/action/info.php
@@ -31,6 +31,8 @@ require_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php';
$langs->load("commercial");
+$id = GETPOST('id','int');
+
// Security check
if ($user->societe_id > 0)
{
@@ -38,6 +40,7 @@ if ($user->societe_id > 0)
$socid = $user->societe_id;
}
+$result = restrictedArea($user, 'agenda', $id, 'actioncomm&societe', 'myactions&allactions', '', 'id');
/*
@@ -48,8 +51,8 @@ $help_url='EN:Module_Agenda_En|FR:Module_Agenda|ES:M&omodulodulo_Agenda';
llxHeader('',$langs->trans("Agenda"),$help_url);
$act = new ActionComm($db);
-$act->fetch($_GET["id"]);
-$act->info($_GET["id"]);
+$act->fetch($id);
+$act->info($act->id);
$head=actions_prepare_head($act);
dol_fiche_head($head, 'info', $langs->trans("Action"),0,'action');
diff --git a/htdocs/contact/class/contact.class.php b/htdocs/contact/class/contact.class.php
index 4cbc1d7fbcd..db8b408e6ed 100644
--- a/htdocs/contact/class/contact.class.php
+++ b/htdocs/contact/class/contact.class.php
@@ -36,6 +36,7 @@ class Contact extends CommonObject
{
public $element='contact';
public $table_element='socpeople';
+ protected $ismultientitymanaged = 1; // 0=No test on entity, 1=Test with field entity, 2=Test with link by societe
var $id;
var $civilite_id; // In fact we store civility_code
diff --git a/htdocs/contact/exportimport.php b/htdocs/contact/exportimport.php
index c3f9f2605ee..5149eed9efb 100644
--- a/htdocs/contact/exportimport.php
+++ b/htdocs/contact/exportimport.php
@@ -29,26 +29,28 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/contact.lib.php';
$langs->load("companies");
// Security check
-$contactid = isset($_GET["id"])?$_GET["id"]:'';
+$id = GETPOST('id', 'int');
if ($user->societe_id) $socid=$user->societe_id;
-$result = restrictedArea($user, 'contact', $contactid, 'socpeople&societe');
+$result = restrictedArea($user, 'contact', $id, 'socpeople&societe');
/*
* View
*/
-llxHeader('',$langs->trans("ContactsAddresses"),'EN:Module_Third_Parties|FR:Module_Tiers|ES:Módulo_Empresas');
+$title = (! empty($conf->global->SOCIETE_ADDRESSES_MANAGEMENT) ? $langs->trans("Contacts") : $langs->trans("ContactsAddresses"));
+
+llxHeader('',$title,'EN:Module_Third_Parties|FR:Module_Tiers|ES:Módulo_Empresas');
$form = new Form($db);
$contact = new Contact($db);
-$contact->fetch($_GET["id"], $user);
+$contact->fetch($id, $user);
$head = contact_prepare_head($contact);
-dol_fiche_head($head, 'exportimport', $langs->trans("ContactsAddresses"), 0, 'contact');
+dol_fiche_head($head, 'exportimport', $title, 0, 'contact');
/*
@@ -97,7 +99,7 @@ print '';
print '
';
print $langs->trans("ExportCardToFormat").': ';
-print '';
+print '';
print img_picto($langs->trans("VCard"),'vcard.png').' ';
print $langs->trans("VCard");
print '';
diff --git a/htdocs/contact/fiche.php b/htdocs/contact/fiche.php
index a41b01cb14c..abb19b2cc91 100644
--- a/htdocs/contact/fiche.php
+++ b/htdocs/contact/fiche.php
@@ -67,7 +67,7 @@ if (! empty($canvas))
}
// Security check
-$result = restrictedArea($user, 'contact', $id, 'socpeople&societe', '', '', '', $objcanvas); // If we create a contact with no company (shared contacts), no check on write permission
+$result = restrictedArea($user, 'contact', $id, 'socpeople&societe', '', '', 'rowid', $objcanvas); // If we create a contact with no company (shared contacts), no check on write permission
// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array
$hookmanager->initHooks(array('contactcard'));
diff --git a/htdocs/contact/ldap.php b/htdocs/contact/ldap.php
index bb1114c18da..f284ee1834d 100644
--- a/htdocs/contact/ldap.php
+++ b/htdocs/contact/ldap.php
@@ -35,12 +35,12 @@ $langs->load("admin");
$action=GETPOST('action');
// Security check
-$contactid = isset($_GET["id"])?$_GET["id"]:'';
+$id = GETPOST('id', 'int');
if ($user->societe_id) $socid=$user->societe_id;
-$result = restrictedArea($user, 'contact', $contactid, 'socpeople&societe');
+$result = restrictedArea($user, 'contact', $id, 'socpeople&societe');
$contact = new Contact($db);
-$contact->fetch($_GET["id"], $user);
+$contact->fetch($id, $user);
/*
@@ -79,13 +79,15 @@ if ($action == 'dolibarr2ldap')
* View
*/
-llxHeader('',$langs->trans("ContactsAddresses"),'EN:Module_Third_Parties|FR:Module_Tiers|ES:Módulo_Empresas');
+$title = (! empty($conf->global->SOCIETE_ADDRESSES_MANAGEMENT) ? $langs->trans("Contacts") : $langs->trans("ContactsAddresses"));
+
+llxHeader('',$title,'EN:Module_Third_Parties|FR:Module_Tiers|ES:Módulo_Empresas');
$form = new Form($db);
$head = contact_prepare_head($contact);
-dol_fiche_head($head, 'ldap', $langs->trans("ContactsAddresses"), 0, 'contact');
+dol_fiche_head($head, 'ldap', $title, 0, 'contact');
print '
';
diff --git a/htdocs/contact/perso.php b/htdocs/contact/perso.php
index d321e07a258..86462d05fae 100644
--- a/htdocs/contact/perso.php
+++ b/htdocs/contact/perso.php
@@ -69,7 +69,9 @@ if ($action == 'update' && ! $_POST["cancel"] && $user->rights->societe->contact
$now=dol_now();
-llxHeader('',$langs->trans("ContactsAddresses"),'EN:Module_Third_Parties|FR:Module_Tiers|ES:Módulo_Empresas');
+$title = (! empty($conf->global->SOCIETE_ADDRESSES_MANAGEMENT) ? $langs->trans("Contacts") : $langs->trans("ContactsAddresses"));
+
+llxHeader('',$title,'EN:Module_Third_Parties|FR:Module_Tiers|ES:Módulo_Empresas');
$form = new Form($db);
@@ -77,7 +79,7 @@ $object->fetch($id, $user);
$head = contact_prepare_head($object);
-dol_fiche_head($head, 'perso', $langs->trans("ContactsAddresses"), 0, 'contact');
+dol_fiche_head($head, 'perso', $title, 0, 'contact');
if ($action == 'edit')
{
diff --git a/htdocs/contact/vcard.php b/htdocs/contact/vcard.php
index f9f4c80fad1..48189eb60f6 100644
--- a/htdocs/contact/vcard.php
+++ b/htdocs/contact/vcard.php
@@ -29,8 +29,13 @@ require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/vcard.class.php';
+$id = GETPOST('id', 'int');
+
+// Security check
+$result = restrictedArea($user, 'contact', $id, 'socpeople&societe');
+
$contact = new Contact($db);
-$result=$contact->fetch($_GET["id"]);
+$result=$contact->fetch($id);
$physicalperson=1;
diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php
index 54aa10e23b4..5e288acaabc 100644
--- a/htdocs/core/lib/functions.lib.php
+++ b/htdocs/core/lib/functions.lib.php
@@ -4134,7 +4134,7 @@ function verifCond($strRights)
* This function is called by verifCond() or trans() and transnoentitiesnoconv().
*
* @param string $s String to evaluate
- * @param int $returnvalue 0=No return (used to execute $a=something). 1=Value of eval is returned (used to eval $something).
+ * @param int $returnvalue 0=No return (used to execute eval($a=something)). 1=Value of eval is returned (used to eval($something)).
* @return mixed Nothing or return of eval
*/
function dol_eval($s,$returnvalue=0)
@@ -4145,16 +4145,16 @@ function dol_eval($s,$returnvalue=0)
global $rights;
//print $s."
\n";
- if ($returnvalue) return eval('return '.$s.';');
- else eval($s);
+ if ($returnvalue) return @eval('return '.$s.';');
+ else @eval($s);
}
/**
-* Return if var element is ok
-*
-* @param string $element Variable to check
-* @return boolean Return true of variable is not empty
-*/
+ * Return if var element is ok
+ *
+ * @param string $element Variable to check
+ * @return boolean Return true of variable is not empty
+ */
function dol_validElement($element)
{
return (trim($element) != '');
diff --git a/htdocs/core/lib/security.lib.php b/htdocs/core/lib/security.lib.php
index ea2f58299ef..4acfd4912c6 100644
--- a/htdocs/core/lib/security.lib.php
+++ b/htdocs/core/lib/security.lib.php
@@ -112,11 +112,15 @@ function restrictedArea($user, $features, $objectid=0, $dbtablename='', $feature
if (method_exists($objcanvas->control,'restrictedArea')) return $objcanvas->control->restrictedArea($user,$features,$objectid,$dbtablename,$feature2,$dbt_keyfield,$dbt_select);
}
- if ($dbt_select != 'rowid') $objectid = "'".$objectid."'";
+ if ($dbt_select != 'rowid' && $dbt_select != 'id') $objectid = "'".$objectid."'";
// More features to check
$features = explode("&", $features);
+ // More subfeatures to check
+ if (!empty($feature2))
+ $feature2 = explode("&", $feature2);
+
// More parameters
$params = explode('&', $dbtablename);
$dbtablename=(! empty($params[0]) ? $params[0] : '');
@@ -160,8 +164,11 @@ function restrictedArea($user, $features, $objectid=0, $dbtablename='', $feature
}
else if (! empty($feature2)) // This should be used for future changes
{
- if (empty($user->rights->$feature->$feature2->lire)
- && empty($user->rights->$feature->$feature2->read)) $readok=0;
+ foreach($feature2 as $subfeature)
+ {
+ if (empty($user->rights->$feature->$subfeature->lire) && empty($user->rights->$feature->$subfeature->read)) $readok=0;
+ else { $readok=1; break; } // For bypass the second test if the first is ok
+ }
}
else if (! empty($feature) && ($feature!='user' && $feature!='usergroup')) // This is for old permissions
{
@@ -206,8 +213,11 @@ function restrictedArea($user, $features, $objectid=0, $dbtablename='', $feature
}
else if (! empty($feature2)) // This should be used for future changes
{
- if (empty($user->rights->$feature->$feature2->creer)
- && empty($user->rights->$feature->$feature2->write)) $createok=0;
+ foreach($feature2 as $subfeature)
+ {
+ if (empty($user->rights->$feature->$subfeature->creer) && empty($user->rights->$feature->$subfeature->write)) $createok=0;
+ else { $createok=1; break; } // For bypass the second test if the first is ok
+ }
}
else if (! empty($feature)) // This is for old permissions
{
@@ -267,8 +277,11 @@ function restrictedArea($user, $features, $objectid=0, $dbtablename='', $feature
}
else if (! empty($feature2)) // This should be used for future changes
{
- if (empty($user->rights->$feature->$feature2->supprimer)
- && empty($user->rights->$feature->$feature2->delete)) $deleteok=0;
+ foreach($feature2 as $subfeature)
+ {
+ if (empty($user->rights->$feature->$subfeature->supprimer) && empty($user->rights->$feature->$subfeature->delete)) $deleteok=0;
+ else { $deleteok=1; break; } // For bypass the second test if the first is ok
+ }
}
else if (! empty($feature)) // This is for old permissions
{
diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php
index ed73b895280..5c72ae6f1d7 100644
--- a/htdocs/core/menus/standard/eldy.lib.php
+++ b/htdocs/core/menus/standard/eldy.lib.php
@@ -40,8 +40,8 @@ function print_eldy_menu($db,$atarget,$type_user,&$tabMenu,&$menu,$noout=0)
{
global $user,$conf,$langs,$dolibarr_main_db_name;
- $mainmenu=$_SESSION["mainmenu"];
- $leftmenu=$_SESSION["leftmenu"];
+ $mainmenu=(empty($_SESSION["mainmenu"])?'':$_SESSION["mainmenu"]);
+ $leftmenu=(empty($_SESSION["leftmenu"])?'':$_SESSION["leftmenu"]);
$id='mainmenu';
$listofmodulesforexternal=explode(',',$conf->global->MAIN_MODULES_FOR_EXTERNAL);
diff --git a/htdocs/core/modules/modAgenda.class.php b/htdocs/core/modules/modAgenda.class.php
index 89c92a14c69..902320a2733 100644
--- a/htdocs/core/modules/modAgenda.class.php
+++ b/htdocs/core/modules/modAgenda.class.php
@@ -43,6 +43,8 @@ class modAgenda extends DolibarrModules
*/
function __construct($db)
{
+ global $conf;
+
$this->db = $db;
$this->numero = 2400;
diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php
index bf09cdf80c2..965b6c747b2 100644
--- a/htdocs/main.inc.php
+++ b/htdocs/main.inc.php
@@ -297,7 +297,11 @@ if (! empty($_SESSION["disablemodules"]))
$disabled_modules=explode(',',$_SESSION["disablemodules"]);
foreach($disabled_modules as $module)
{
- if ($module) $conf->$module->enabled=false;
+ if ($module)
+ {
+ if (empty($conf->$module)) $conf->$module=new stdClass();
+ $conf->$module->enabled=false;
+ }
}
}
diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php
index deae61c4a2a..3dd0910f7f0 100644
--- a/htdocs/projet/class/project.class.php
+++ b/htdocs/projet/class/project.class.php
@@ -833,11 +833,11 @@ class Project extends CommonObject
{
// To verify role of users
$userAccess = 0;
- if (($mode == 'read' && $user->rights->projet->all->lire) || ($mode == 'write' && $user->rights->projet->all->creer) || ($mode == 'delete' && $user->rights->projet->all->supprimer))
+ if (($mode == 'read' && ! empty($user->rights->projet->all->lire)) || ($mode == 'write' && ! empty($user->rights->projet->all->creer)) || ($mode == 'delete' && ! empty($user->rights->projet->all->supprimer)))
{
$userAccess = 1;
}
- else if ($this->public && (($mode == 'read' && $user->rights->projet->lire) || ($mode == 'write' && $user->rights->projet->creer) || ($mode == 'delete' && $user->rights->projet->supprimer)))
+ else if ($this->public && (($mode == 'read' && ! empty($user->rights->projet->lire)) || ($mode == 'write' && ! empty($user->rights->projet->creer)) || ($mode == 'delete' && ! empty($user->rights->projet->supprimer))))
{
$userAccess = 1;
}
diff --git a/htdocs/projet/index.php b/htdocs/projet/index.php
index 89aed92b99d..0cd8fd9ca64 100644
--- a/htdocs/projet/index.php
+++ b/htdocs/projet/index.php
@@ -31,7 +31,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/project.lib.php';
$langs->load("projects");
$langs->load("companies");
-$mine = $_REQUEST['mode']=='mine' ? 1 : 0;
+$mine = GETPOST('mode')=='mine' ? 1 : 0;
// Security check
$socid=0;
@@ -49,7 +49,7 @@ $sortorder = GETPOST("sortorder",'alpha');
$socstatic=new Societe($db);
$projectstatic=new Project($db);
-$projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,($mine?$mine:($user->rights->projet->all->lire?2:0)),1);
+$projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,($mine?$mine:(empty($user->rights->projet->all->lire)?0:2)),1);
//var_dump($projectsListId);
@@ -64,7 +64,7 @@ print_fiche_titre($text);
if ($mine) print $langs->trans("MyProjectsDesc").'
';
else
{
- if ($user->rights->projet->all->lire && ! $socid) print $langs->trans("ProjectsDesc").'
';
+ if (! empty($user->rights->projet->all->lire) && ! $socid) print $langs->trans("ProjectsDesc").'
';
else print $langs->trans("ProjectsPublicDesc").'
';
}
@@ -90,7 +90,7 @@ $sql.= ", s.nom, s.rowid as socid";
$sql.= " FROM ".MAIN_DB_PREFIX."projet as p";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s on p.fk_soc = s.rowid";
$sql.= " WHERE p.entity = ".$conf->entity;
-if ($mine || ! $user->rights->projet->all->lire) $sql.= " AND p.rowid IN (".$projectsListId.")";
+if ($mine || empty($user->rights->projet->all->lire)) $sql.= " AND p.rowid IN (".$projectsListId.")";
if ($socid) $sql.= " AND (p.fk_soc IS NULL OR p.fk_soc = 0 OR p.fk_soc = ".$socid.")";
$sql.= " GROUP BY s.nom, s.rowid";
diff --git a/htdocs/public/demo/index.php b/htdocs/public/demo/index.php
index 1c03c17c5b5..f4acea385ea 100644
--- a/htdocs/public/demo/index.php
+++ b/htdocs/public/demo/index.php
@@ -38,48 +38,55 @@ global $dolibarr_main_demo;
if (empty($dolibarr_main_demo)) accessforbidden('Parameter dolibarr_main_demo must be defined in conf file with value "default login,default pass" to enable the demo entry page',1,1,1);
// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array
-$hookmanager->initHooks(array('demo'));
-
-$demoprofiles=array(
- array('default'=>'1', 'key'=>'profdemoservonly','label'=>'DemoCompanyServiceOnly',
- 'disablemodules'=>'adherent,barcode,boutique,cashdesk,categorie,don,expedition,externalsite,mailmanspip,margin,prelevement,product,stock',
- 'icon'=>DOL_URL_ROOT.'/public/demo/dolibarr_screenshot8.png'),
- array('default'=>'-1','key'=>'profdemoshopwithdesk','label'=>'DemoCompanyShopWithCashDesk',
- 'disablemodules'=>'adherent,boutique,categorie,don,externalsite,ficheinter,mailmanspip,prelevement,product,stock',
- 'icon'=>DOL_URL_ROOT.'/public/demo/dolibarr_screenshot2.png'),
- array('default'=>'0', 'key'=>'profdemoprodstock','label'=>'DemoCompanyProductAndStocks',
- 'disablemodules'=>'adherent,boutique,contrat,categorie,don,externalsite,ficheinter,mailmanspip,prelevement,service',
- 'icon'=>DOL_URL_ROOT.'/public/demo/dolibarr_screenshot2.png'),
- array('default'=>'0', 'key'=>'profdemoall','label'=>'DemoCompanyAll',
- 'disablemodules'=>'adherent,boutique,don,externalsite,mailmanspip',
- 'icon'=>DOL_URL_ROOT.'/public/demo/dolibarr_screenshot9.png'),
- array('default'=>'-1', 'key'=>'profdemofun','label'=>'DemoFundation',
- 'disablemodules'=>'banque,barcode,boutique,cashdesk,commande,commercial,compta,comptabilite,contrat,expedition,externalsite,facture,ficheinter,fournisseur,mailmanspip,margin,prelevement,product,projet,propal,propale,service,societe,stock,tax',
- 'icon'=>DOL_URL_ROOT.'/public/demo/dolibarr_screenshot6.png'),
- array('default'=>'0', 'key'=>'profdemofun2','label'=>'DemoFundation2',
- 'disablemodules'=>'barcode,boutique,cashdesk,commande,commercial,compta,comptabilite,contrat,expedition,externalsite,facture,ficheinter,fournisseur,mailmanspip,margin,prelevement,product,projet,propal,propale,service,societe,stock,tax',
- 'icon'=>DOL_URL_ROOT.'/public/demo/dolibarr_screenshot6.png')
-);
+$res=$hookmanager->initHooks(array('demo'));
+$demoprofiles=array();
+$alwayscheckedmodules=array();
+$alwaysuncheckedmodules=array();
+$alwayshiddencheckedmodules=array();
+$alwayshiddenuncheckedmodules=array();
$tmpaction = 'view';
$parameters=array();
$object=new stdClass();
$reshook=$hookmanager->executeHooks('addDemoProfile', $parameters, $object, $tmpaction); // Note that $action and $object may have been modified by some hooks
$error=$hookmanager->error; $errors=$hookmanager->errors;
-
-// Visible
-$alwayscheckedmodules=array('barcode','bookmark','externalrss','fckeditor','geoipmaxmind','gravatar','memcached','syslog','user','webservices'); // Technical module we always want
-$alwaysuncheckedmodules=array('paybox','paypal','google','scanner','workflow'); // Module we never want
-// Not visible
-$alwayshiddencheckedmodules=array('accounting','barcode','bookmark','clicktodial','comptabilite','document','domain','externalrss','externalsite','fckeditor','geoipmaxmind','gravatar','label','ldap',
- 'mailmanspip','notification','syslog','user','webservices',
- // Extended modules
- 'memcached','numberwords','zipautofillfr');
-$alwayshiddenuncheckedmodules=array('boutique','ftp',
- // Extended modules
- 'awstats','bittorrent','bootstrap','cabinetmed','cmcic','concatpdf','customfield','dolicloud','filemanager','lightbox','mantis','monitoring','moretemplates','multicompany','nltechno','numberingpack','openstreetmap',
- 'ovh','phenix','phpsysinfo','pibarcode','postnuke','selectbank','skincoloreditor','submiteverywhere','survey','thomsonphonebook','topten','tvacerfa','voyage','webcalendar','webmail');
+if (empty($reshook))
+{
+ $demoprofiles=array(
+ array('default'=>'1', 'key'=>'profdemoservonly','label'=>'DemoCompanyServiceOnly',
+ 'disablemodules'=>'adherent,barcode,boutique,cashdesk,categorie,don,expedition,externalsite,mailmanspip,margin,prelevement,product,stock',
+ 'icon'=>DOL_URL_ROOT.'/public/demo/dolibarr_screenshot8.png'),
+ array('default'=>'-1','key'=>'profdemoshopwithdesk','label'=>'DemoCompanyShopWithCashDesk',
+ 'disablemodules'=>'adherent,boutique,categorie,don,externalsite,ficheinter,mailmanspip,prelevement,product,stock',
+ 'icon'=>DOL_URL_ROOT.'/public/demo/dolibarr_screenshot2.png'),
+ array('default'=>'0', 'key'=>'profdemoprodstock','label'=>'DemoCompanyProductAndStocks',
+ 'disablemodules'=>'adherent,boutique,contrat,categorie,don,externalsite,ficheinter,mailmanspip,prelevement,service',
+ 'icon'=>DOL_URL_ROOT.'/public/demo/dolibarr_screenshot2.png'),
+ array('default'=>'0', 'key'=>'profdemoall','label'=>'DemoCompanyAll',
+ 'disablemodules'=>'adherent,boutique,don,externalsite,mailmanspip',
+ 'icon'=>DOL_URL_ROOT.'/public/demo/dolibarr_screenshot9.png'),
+ array('default'=>'-1', 'key'=>'profdemofun','label'=>'DemoFundation',
+ 'disablemodules'=>'banque,barcode,boutique,cashdesk,commande,commercial,compta,comptabilite,contrat,expedition,externalsite,facture,ficheinter,fournisseur,mailmanspip,margin,prelevement,product,projet,propal,propale,service,societe,stock,tax',
+ 'icon'=>DOL_URL_ROOT.'/public/demo/dolibarr_screenshot6.png'),
+ array('default'=>'0', 'key'=>'profdemofun2','label'=>'DemoFundation2',
+ 'disablemodules'=>'barcode,boutique,cashdesk,commande,commercial,compta,comptabilite,contrat,expedition,externalsite,facture,ficheinter,fournisseur,mailmanspip,margin,prelevement,product,projet,propal,propale,service,societe,stock,tax',
+ 'icon'=>DOL_URL_ROOT.'/public/demo/dolibarr_screenshot6.png')
+ );
+
+ // Visible
+ $alwayscheckedmodules=array('barcode','bookmark','externalrss','fckeditor','geoipmaxmind','gravatar','memcached','syslog','user','webservices'); // Technical module we always want
+ $alwaysuncheckedmodules=array('paybox','paypal','google','scanner','workflow'); // Module we never want
+ // Not visible
+ $alwayshiddencheckedmodules=array('accounting','barcode','bookmark','clicktodial','comptabilite','document','domain','externalrss','externalsite','fckeditor','geoipmaxmind','gravatar','label','ldap',
+ 'mailmanspip','notification','syslog','user','webservices',
+ // Extended modules
+ 'memcached','numberwords','zipautofillfr');
+ $alwayshiddenuncheckedmodules=array('boutique','ftp',
+ // Extended modules
+ 'awstats','bittorrent','bootstrap','cabinetmed','cmcic','concatpdf','customfield','dolicloud','filemanager','lightbox','mantis','monitoring','moretemplates','multicompany','nltechno','numberingpack','openstreetmap',
+ 'ovh','phenix','phpsysinfo','pibarcode','postnuke','selectbank','skincoloreditor','submiteverywhere','survey','thomsonphonebook','topten','tvacerfa','voyage','webcalendar','webmail');
+}
// Search modules
$dirlist=$conf->file->dol_document_root;
@@ -151,8 +158,8 @@ foreach ($modulesdir as $dir)
// We discard modules according to features level (PS: if module is activated we always show it)
$const_name = 'MAIN_MODULE_'.strtoupper(preg_replace('/^mod/i','',get_class($objMod)));
- if ($objMod->version == 'development' && $conf->global->MAIN_FEATURES_LEVEL < 2 && ! $conf->global->$const_name) $modulequalified=0;
- if ($objMod->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1 && ! $conf->global->$const_name) $modulequalified=0;
+ if ($objMod->version == 'development' && $conf->global->MAIN_FEATURES_LEVEL < 2 && empty($conf->global->$const_name)) $modulequalified=0;
+ if ($objMod->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1 && empty($conf->global->$const_name)) $modulequalified=0;
if ($modulequalified)
{
diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php
index d6fbe61dcd0..0ea3253bdd1 100644
--- a/htdocs/societe/class/societe.class.php
+++ b/htdocs/societe/class/societe.class.php
@@ -2766,7 +2766,7 @@ class Societe extends CommonObject
*/
function getLibCustProspStatut()
{
- return $this->LibCustProspStatut($this->client,$mode);
+ return $this->LibCustProspStatut($this->client);
}
/**
@@ -2787,4 +2787,4 @@ class Societe extends CommonObject
}
-}
\ No newline at end of file
+}
diff --git a/htdocs/user/class/usergroup.class.php b/htdocs/user/class/usergroup.class.php
index 69d7855b8d3..8da493de97e 100644
--- a/htdocs/user/class/usergroup.class.php
+++ b/htdocs/user/class/usergroup.class.php
@@ -174,7 +174,7 @@ class UserGroup extends CommonObject
}
/**
- * Return array of users id for group
+ * Return array of users id for group this->id (or all if this->id not defined)
*
* @param string $excludefilter Filter to exclude
* @return array Array of users
@@ -214,8 +214,10 @@ class UserGroup extends CommonObject
$newuser->fetch($obj->rowid);
$ret[$obj->rowid]=$newuser;
}
-
- $ret[$obj->rowid]->usergroup_entity[]=$obj->usergroup_entity;
+ if (! empty($obj->usergroup_entity))
+ {
+ $ret[$obj->rowid]->usergroup_entity[]=$obj->usergroup_entity;
+ }
}
$this->db->free($resql);