NEW possibility to define global entity in user param (#35908)

* NEW possibility to define global entity in user param

* FIX travis error
This commit is contained in:
Regis Houssin 2025-10-23 13:43:53 +02:00 committed by GitHub
parent f203eace15
commit 1e8b3e5d01
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 18 additions and 11 deletions

View file

@ -1692,28 +1692,31 @@ function weight_convert($weight, &$from_unit, $to_unit)
/**
* Save personal parameter
*
* @param DoliDB $db Handler database
* @param Conf $conf Object conf
* @param User $user Object user
* @param array<string,string|int> $tab Array (key=>value) with all parameters to save/update
* @return int Return integer <0 if KO, >0 if OK
* @param DoliDB $db Handler database
* @param Conf $conf Object conf
* @param User $user Object user
* @param array<string,string|int> $tab Array (key=>value) with all parameters to save/update
* @param int $entity If a value is >= 0, we force the search on a specific entity. If -1, means search depends on default setup.
* @return int Return integer <0 if KO, >0 if OK
*
* @see dolibarr_get_const(), dolibarr_set_const(), dolibarr_del_const()
*/
function dol_set_user_param($db, $conf, &$user, $tab)
function dol_set_user_param($db, $conf, &$user, $tab, $entity = -1)
{
// Verification parameters
if (count($tab) < 1) {
return -1;
}
$entity = ($entity == -1 ? ((int) $conf->entity) : ((int) $entity));
$db->begin();
// We remove old parameters for all keys in $tab
$sql = "DELETE FROM ".MAIN_DB_PREFIX."user_param";
$sql .= " WHERE fk_user = ".((int) $user->id);
$sql .= " AND entity = ".((int) $conf->entity);
$sql .= " AND param in (";
$sql .= " AND entity = ".((int) $entity);
$sql .= " AND param IN (";
$i = 0;
foreach ($tab as $key => $value) {
if ($i > 0) {
@ -1742,8 +1745,8 @@ function dol_set_user_param($db, $conf, &$user, $tab)
$value = $value["value"];
}
if ($forcevalue == 1 || $value) {
$sql = "INSERT INTO ".MAIN_DB_PREFIX."user_param(fk_user,entity,param,value)";
$sql .= " VALUES (".((int) $user->id).",".((int) $conf->entity).",";
$sql = "INSERT INTO ".MAIN_DB_PREFIX."user_param (fk_user, entity, param, value)";
$sql .= " VALUES (".((int) $user->id).",".((int) $entity).",";
$sql .= " '".$db->escape($key)."','".$db->escape($value)."')";
dol_syslog("functions2.lib::dol_set_user_param", LOG_DEBUG);

View file

@ -794,7 +794,11 @@ class User extends CommonObject
// Load user->conf for user
$sql = "SELECT param, value FROM ".$this->db->prefix()."user_param";
$sql .= " WHERE fk_user = ".((int) $this->id);
$sql .= " AND entity = ".($entity == -1 ? (int) $conf->entity : (int) $entity);
if ($entity < 0) {
$sql .= " AND entity IN (0, ".((int) $conf->entity).")"; // IN (0, x)
} else {
$sql .= " AND entity = ".((int) $entity); // 0 or x
}
//dol_syslog(get_class($this).'::fetch load personalized conf', LOG_DEBUG);
$resql = $this->db->query($sql);