Merge remote-tracking branch 'upstream/develop' into emailsubscription

This commit is contained in:
Frédéric FRANCE 2020-11-01 14:02:18 +01:00
commit f0d6029d60
No known key found for this signature in database
GPG Key ID: 06809324E4B2ABC1
13 changed files with 118 additions and 108 deletions

View File

@ -7,7 +7,7 @@
* Copyright (C) 2009-2017 Regis Houssin <regis.houssin@inodbox.com> * Copyright (C) 2009-2017 Regis Houssin <regis.houssin@inodbox.com>
* Copyright (C) 2014-2018 Alexandre Spangaro <aspangaro@open-dsi.fr> * Copyright (C) 2014-2018 Alexandre Spangaro <aspangaro@open-dsi.fr>
* Copyright (C) 2015 Marcos García <marcosgdf@gmail.com> * Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
* Copyright (C) 2015-2018 Frédéric France <frederic.france@netlogic.fr> * Copyright (C) 2015-2020 Frédéric France <frederic.france@netlogic.fr>
* Copyright (C) 2015 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr> * Copyright (C) 2015 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
* Copyright (C) 2016 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2016 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2018-2019 Thibault FOUCART <support@ptibogxiv.net> * Copyright (C) 2018-2019 Thibault FOUCART <support@ptibogxiv.net>
@ -60,6 +60,9 @@ class Adherent extends CommonObject
*/ */
public $ismultientitymanaged = 1; public $ismultientitymanaged = 1;
/**
* @var string picto
*/
public $picto = 'member'; public $picto = 'member';
@ -70,13 +73,19 @@ class Adherent extends CommonObject
*/ */
public $login; public $login;
//! Clear password in memory /**
* @var Clear password in memory
*/
public $pass; public $pass;
//! Clear password in database (defined if DATABASE_PWD_ENCRYPTED=0) /**
* @var Clear password in database (defined if DATABASE_PWD_ENCRYPTED=0)
*/
public $pass_indatabase; public $pass_indatabase;
//! Encrypted password in database (always defined) /**
* @var Encrypted password in database (always defined)
*/
public $pass_indatabase_crypted; public $pass_indatabase_crypted;
/** /**
@ -169,6 +178,11 @@ class Adherent extends CommonObject
*/ */
public $phone_perso; public $phone_perso;
/**
* @var string Professional Phone number
*/
public $phone_pro;
/** /**
* @var string Mobile phone number * @var string Mobile phone number
*/ */
@ -184,6 +198,9 @@ class Adherent extends CommonObject
*/ */
public $poste; public $poste;
/**
* @var string mor or phy
*/
public $morphy; public $morphy;
public $public; public $public;
@ -191,6 +208,10 @@ class Adherent extends CommonObject
// -1:brouillon, 0:resilie, >=1:valide,paye // -1:brouillon, 0:resilie, >=1:valide,paye
// def in common object // def in common object
//public $status; //public $status;
/**
* @var string photo of member
*/
public $photo; public $photo;
/** /**
@ -209,6 +230,9 @@ class Adherent extends CommonObject
public $datevalid; public $datevalid;
/**
* @var string gender
*/
public $gender; public $gender;
public $birth; public $birth;
@ -258,7 +282,11 @@ class Adherent extends CommonObject
*/ */
public $entity; public $entity;
public $fields = array('rowid' => array('type' => 'integer', 'label' => 'TechnicalID', 'enabled' => 1, 'visible' => -1, 'notnull' => 1, 'position' => 10), /**
* @var array fields
*/
public $fields = array(
'rowid' => array('type' => 'integer', 'label' => 'TechnicalID', 'enabled' => 1, 'visible' => -1, 'notnull' => 1, 'position' => 10),
'entity' => array('type' => 'integer', 'label' => 'Entity', 'default' => 1, 'enabled' => 1, 'visible' => -2, 'notnull' => 1, 'position' => 15, 'index' => 1), 'entity' => array('type' => 'integer', 'label' => 'Entity', 'default' => 1, 'enabled' => 1, 'visible' => -2, 'notnull' => 1, 'position' => 15, 'index' => 1),
'ref_ext' => array('type' => 'varchar(128)', 'label' => 'Ref ext', 'enabled' => 1, 'visible' => 0, 'position' => 20), 'ref_ext' => array('type' => 'varchar(128)', 'label' => 'Ref ext', 'enabled' => 1, 'visible' => 0, 'position' => 20),
'civility' => array('type' => 'varchar(6)', 'label' => 'Civility', 'enabled' => 1, 'visible' => -1, 'position' => 25), 'civility' => array('type' => 'varchar(6)', 'label' => 'Civility', 'enabled' => 1, 'visible' => -1, 'position' => 25),
@ -298,7 +326,8 @@ class Adherent extends CommonObject
'statut' => array('type' => 'smallint(6)', 'label' => 'Statut', 'enabled' => 1, 'visible' => -1, 'notnull' => 1, 'position' => 500, 'statut' => array('type' => 'smallint(6)', 'label' => 'Statut', 'enabled' => 1, 'visible' => -1, 'notnull' => 1, 'position' => 500,
'arrayofkeyval' => array(0 => 'Draft', 1 => 'Validated', -1 => 'MemberStatusResiliatedShort')), 'arrayofkeyval' => array(0 => 'Draft', 1 => 'Validated', -1 => 'MemberStatusResiliatedShort')),
'model_pdf' => array('type' => 'varchar(255)', 'label' => 'Model pdf', 'enabled' => 1, 'visible' => 0, 'position' => 800), 'model_pdf' => array('type' => 'varchar(255)', 'label' => 'Model pdf', 'enabled' => 1, 'visible' => 0, 'position' => 800),
'import_key' => array('type' => 'varchar(14)', 'label' => 'ImportId', 'enabled' => 1, 'visible' => -2, 'position' => 805)); 'import_key' => array('type' => 'varchar(14)', 'label' => 'ImportId', 'enabled' => 1, 'visible' => -2, 'position' => 805)
);
/** /**
@ -407,7 +436,8 @@ class Adherent extends CommonObject
$infos .= $langs->transnoentities("Public").": ".yn($this->public); $infos .= $langs->transnoentities("Public").": ".yn($this->public);
// Substitutions // Substitutions
$substitutionarray = array('__ID__' => $this->id, '__MEMBER_ID__' => $this->id, '__CIVILITY__' => $this->getCivilityLabel(), $substitutionarray = array(
'__ID__' => $this->id, '__MEMBER_ID__' => $this->id, '__CIVILITY__' => $this->getCivilityLabel(),
'__FIRSTNAME__' => $msgishtml ? dol_htmlentitiesbr($this->firstname) : ($this->firstname ? $this->firstname : ''), '__FIRSTNAME__' => $msgishtml ? dol_htmlentitiesbr($this->firstname) : ($this->firstname ? $this->firstname : ''),
'__LASTNAME__' => $msgishtml ? dol_htmlentitiesbr($this->lastname) : ($this->lastname ? $this->lastname : ''), '__LASTNAME__' => $msgishtml ? dol_htmlentitiesbr($this->lastname) : ($this->lastname ? $this->lastname : ''),
'__FULLNAME__' => $msgishtml ? dol_htmlentitiesbr($this->getFullName($langs)) : $this->getFullName($langs), '__FULLNAME__' => $msgishtml ? dol_htmlentitiesbr($this->getFullName($langs)) : $this->getFullName($langs),
@ -422,7 +452,8 @@ class Adherent extends CommonObject
'__PHONE__' => $msgishtml ? dol_htmlentitiesbr($this->phone) : ($this->phone ? $this->phone : ''), '__PHONE__' => $msgishtml ? dol_htmlentitiesbr($this->phone) : ($this->phone ? $this->phone : ''),
'__PHONEPRO__' => $msgishtml ? dol_htmlentitiesbr($this->phone_perso) : ($this->phone_perso ? $this->phone_perso : ''), '__PHONEPRO__' => $msgishtml ? dol_htmlentitiesbr($this->phone_perso) : ($this->phone_perso ? $this->phone_perso : ''),
'__PHONEMOBILE__' => $msgishtml ? dol_htmlentitiesbr($this->phone_mobile) : ($this->phone_mobile ? $this->phone_mobile : ''), '__PHONEMOBILE__' => $msgishtml ? dol_htmlentitiesbr($this->phone_mobile) : ($this->phone_mobile ? $this->phone_mobile : ''),
'__TYPE__' => $msgishtml ? dol_htmlentitiesbr($this->type) : ($this->type ? $this->type : '')); '__TYPE__' => $msgishtml ? dol_htmlentitiesbr($this->type) : ($this->type ? $this->type : '')
);
complete_substitutions_array($substitutionarray, $langs, $this); complete_substitutions_array($substitutionarray, $langs, $this);

View File

@ -2,6 +2,7 @@
/* Copyright (C) 2016 Xebax Christy <xebax@wanadoo.fr> /* Copyright (C) 2016 Xebax Christy <xebax@wanadoo.fr>
* Copyright (C) 2017 Regis Houssin <regis.houssin@inodbox.com> * Copyright (C) 2017 Regis Houssin <regis.houssin@inodbox.com>
* Copyright (C) 2020 Thibault FOUCART<support@ptibogxiv.net> * Copyright (C) 2020 Thibault FOUCART<support@ptibogxiv.net>
* Copyright (C) 2020 Frédéric France <frederic.france@netlogic.fr>
* *
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
@ -85,7 +86,7 @@ class Members extends DolibarrApi
* *
* @param int $thirdparty ID of third party * @param int $thirdparty ID of third party
* *
* @return array|mixed Data without useless information * @return Object Data without useless information
* *
* @url GET thirdparty/{thirdparty} * @url GET thirdparty/{thirdparty}
* *
@ -118,7 +119,7 @@ class Members extends DolibarrApi
* *
* @param string $email Email of third party * @param string $email Email of third party
* *
* @return array|mixed Data without useless information * @return Object Data without useless information
* *
* @url GET thirdparty/email/{email} * @url GET thirdparty/email/{email}
* *
@ -157,7 +158,7 @@ class Members extends DolibarrApi
* *
* @param string $barcode Barcode of third party * @param string $barcode Barcode of third party
* *
* @return array|mixed Data without useless information * @return Object Data without useless information
* *
* @url GET thirdparty/barcode/{barcode} * @url GET thirdparty/barcode/{barcode}
* *
@ -301,7 +302,7 @@ class Members extends DolibarrApi
* *
* @param int $id ID of member to update * @param int $id ID of member to update
* @param array $request_data Datas * @param array $request_data Datas
* @return int * @return Object Updated object
*/ */
public function put($id, $request_data = null) public function put($id, $request_data = null)
{ {

View File

@ -3,6 +3,7 @@
* Copyright (C) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com> * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
* Copyright (C) 2020 Tobias Sekan <tobias.sekan@startmail.com> * Copyright (C) 2020 Tobias Sekan <tobias.sekan@startmail.com>
* Copyright (C) 2020 Frédéric France <frederic.france@netlogic.fr>
* *
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
@ -39,8 +40,7 @@ $result = restrictedArea($user, 'adherent', $id, '', '', 'socid', 'rowid', $objc
$result = $adherent->fetch($id); $result = $adherent->fetch($id);
if ($result <= 0) if ($result <= 0) {
{
dol_print_error($adherent->error); dol_print_error($adherent->error);
exit; exit;
} }
@ -48,8 +48,7 @@ if ($result <= 0)
$physicalperson = 1; $physicalperson = 1;
$company = new Societe($db); $company = new Societe($db);
if ($adherent->socid) if ($adherent->socid) {
{
$result = $company->fetch($adherent->socid); $result = $company->fetch($adherent->socid);
} }
@ -72,37 +71,35 @@ $v->setAddress("", "", $adherent->address, $adherent->town, $adherent->state, $a
$v->setLabel("", "", $adherent->address, $adherent->town, $adherent->state, $adherent->zip, $country, "TYPE=WORK"); $v->setLabel("", "", $adherent->address, $adherent->town, $adherent->state, $adherent->zip, $country, "TYPE=WORK");
$v->setEmail($adherent->email); $v->setEmail($adherent->email);
$v->setNote($adherent->note); $v->setNote($adherent->note_public);
$v->setTitle($adherent->poste); $v->setTitle($adherent->poste);
// Data from linked company // Data from linked company
if ($company->id) if ($company->id) {
{
$v->setURL($company->url, "TYPE=WORK"); $v->setURL($company->url, "TYPE=WORK");
if (!$adherent->phone_pro) $v->setPhoneNumber($company->phone, "TYPE=WORK;VOICE"); if (!$adherent->phone_pro) {
if (!$adherent->fax) $v->setPhoneNumber($company->fax, "TYPE=WORK;FAX"); $v->setPhoneNumber($company->phone, "TYPE=WORK;VOICE");
if (!$adherent->zip) $v->setAddress("", "", $company->address, $company->town, $company->state, $company->zip, $company->country, "TYPE=WORK;POSTAL"); }
if (!$adherent->fax) {
$v->setPhoneNumber($company->fax, "TYPE=WORK;FAX");
}
if (!$adherent->zip) {
$v->setAddress("", "", $company->address, $company->town, $company->state, $company->zip, $company->country, "TYPE=WORK;POSTAL");
}
// when company e-mail is empty, use only adherent e-mail // when company e-mail is empty, use only adherent e-mail
if (empty(trim($company->email))) if (empty(trim($company->email))) {
{
// was set before, don't set twice // was set before, don't set twice
} } elseif (empty(trim($adherent->email))) {
// when adherent e-mail is empty, use only company e-mail // when adherent e-mail is empty, use only company e-mail
elseif (empty(trim($adherent->email)))
{
$v->setEmail($company->email); $v->setEmail($company->email);
} } elseif (strtolower(end(explode("@", $adherent->email))) == strtolower(end(explode("@", $company->email)))) {
// when e-mail domain of adherent and company are the same, use adherent e-mail at first (and company e-mail at second) // when e-mail domain of adherent and company are the same, use adherent e-mail at first (and company e-mail at second)
elseif (strtolower(end(explode("@", $adherent->email))) == strtolower(end(explode("@", $company->email))))
{
$v->setEmail($adherent->email); $v->setEmail($adherent->email);
// support by Microsoft Outlook (2019 and possible earlier) // support by Microsoft Outlook (2019 and possible earlier)
$v->setEmail($company->email, 'INTERNET'); $v->setEmail($company->email, 'INTERNET');
} } else {
// when e-mail of adherent and company complete different use company e-mail at first (and adherent e-mail at second) // when e-mail of adherent and company complete different use company e-mail at first (and adherent e-mail at second)
else {
$v->setEmail($company->email); $v->setEmail($company->email);
// support by Microsoft Outlook (2019 and possible earlier) // support by Microsoft Outlook (2019 and possible earlier)
@ -115,7 +112,9 @@ if ($company->id)
// Personal informations // Personal informations
$v->setPhoneNumber($adherent->phone_perso, "TYPE=HOME;VOICE"); $v->setPhoneNumber($adherent->phone_perso, "TYPE=HOME;VOICE");
if ($adherent->birthday) $v->setBirthday($adherent->birthday); if ($adherent->birth) {
$v->setBirthday($adherent->birth);
}
$db->close(); $db->close();

View File

@ -92,10 +92,13 @@ class DolGeoIP
} elseif (function_exists('geoip_open')) } elseif (function_exists('geoip_open'))
{ {
$this->gi = geoip_open($datfile, GEOIP_STANDARD); $this->gi = geoip_open($datfile, GEOIP_STANDARD);
} else { }
elseif (function_exists('geoip_country_code_by_name')) {
$this->gi = 'NOGI'; // We are using embedded php geoip functions $this->gi = 'NOGI'; // We are using embedded php geoip functions
//print 'function_exists(geoip_country_code_by_name))='.function_exists('geoip_country_code_by_name'); //print 'function_exists(geoip_country_code_by_name))='.function_exists('geoip_country_code_by_name');
//print geoip_database_info(); //print geoip_database_info();
} else {
$this->gi = ''; // For avoid error
} }
} }

View File

@ -86,7 +86,9 @@ class Users extends DolibarrApi
$sql .= ", ".MAIN_DB_PREFIX."categorie_user as c"; $sql .= ", ".MAIN_DB_PREFIX."categorie_user as c";
} }
$sql .= ' WHERE t.entity IN ('.getEntity('user').')'; $sql .= ' WHERE t.entity IN ('.getEntity('user').')';
if ($user_ids) $sql .= " AND t.rowid IN (".$user_ids.")"; if ($user_ids) {
$sql .= " AND t.rowid IN (".$user_ids.")";
}
// Select products of given category // Select products of given category
if ($category > 0) { if ($category > 0) {
@ -95,10 +97,8 @@ class Users extends DolibarrApi
} }
// Add sql filters // Add sql filters
if ($sqlfilters) if ($sqlfilters) {
{ if (!DolibarrApi::_checkFilters($sqlfilters)) {
if (!DolibarrApi::_checkFilters($sqlfilters))
{
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters); throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
} }
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^:\(\)]+)\)'; $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^:\(\)]+)\)';
@ -107,8 +107,7 @@ class Users extends DolibarrApi
$sql .= $this->db->order($sortfield, $sortorder); $sql .= $this->db->order($sortfield, $sortorder);
if ($limit) { if ($limit) {
if ($page < 0) if ($page < 0) {
{
$page = 0; $page = 0;
} }
$offset = $limit * $page; $offset = $limit * $page;
@ -118,13 +117,11 @@ class Users extends DolibarrApi
$result = $this->db->query($sql); $result = $this->db->query($sql);
if ($result) if ($result) {
{
$i = 0; $i = 0;
$num = $this->db->num_rows($result); $num = $this->db->num_rows($result);
$min = min($num, ($limit <= 0 ? $num : $limit)); $min = min($num, ($limit <= 0 ? $num : $limit));
while ($i < $min) while ($i < $min) {
{
$obj = $this->db->fetch_object($result); $obj = $this->db->fetch_object($result);
$user_static = new User($this->db); $user_static = new User($this->db);
if ($user_static->fetch($obj->rowid)) { if ($user_static->fetch($obj->rowid)) {
@ -158,13 +155,11 @@ class Users extends DolibarrApi
//} //}
$result = $this->useraccount->fetch($id); $result = $this->useraccount->fetch($id);
if (!$result) if (!$result) {
{
throw new RestException(404, 'User not found'); throw new RestException(404, 'User not found');
} }
if (!DolibarrApi::_checkAccessToResource('user', $this->useraccount->id, 'user')) if (!DolibarrApi::_checkAccessToResource('user', $this->useraccount->id, 'user')) {
{
throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
} }
@ -194,13 +189,11 @@ class Users extends DolibarrApi
//} //}
$result = $this->useraccount->fetch('', $login); $result = $this->useraccount->fetch('', $login);
if (!$result) if (!$result) {
{
throw new RestException(404, 'User not found'); throw new RestException(404, 'User not found');
} }
if (!DolibarrApi::_checkAccessToResource('user', $this->useraccount->id, 'user')) if (!DolibarrApi::_checkAccessToResource('user', $this->useraccount->id, 'user')) {
{
throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
} }
@ -230,13 +223,11 @@ class Users extends DolibarrApi
//} //}
$result = $this->useraccount->fetch('', '', '', 0, -1, $email); $result = $this->useraccount->fetch('', '', '', 0, -1, $email);
if (!$result) if (!$result) {
{
throw new RestException(404, 'User not found'); throw new RestException(404, 'User not found');
} }
if (!DolibarrApi::_checkAccessToResource('user', $this->useraccount->id, 'user')) if (!DolibarrApi::_checkAccessToResource('user', $this->useraccount->id, 'user')) {
{
throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
} }
@ -301,8 +292,7 @@ class Users extends DolibarrApi
if (!isset($request_data["lastname"])) if (!isset($request_data["lastname"]))
throw new RestException(400, "lastname field missing");*/ throw new RestException(400, "lastname field missing");*/
//assign field values //assign field values
foreach ($request_data as $field => $value) foreach ($request_data as $field => $value) {
{
$this->useraccount->$field = $value; $this->useraccount->$field = $value;
} }
@ -329,13 +319,11 @@ class Users extends DolibarrApi
//} //}
$result = $this->useraccount->fetch($id); $result = $this->useraccount->fetch($id);
if (!$result) if (!$result) {
{
throw new RestException(404, 'Account not found'); throw new RestException(404, 'Account not found');
} }
if (!DolibarrApi::_checkAccessToResource('user', $this->useraccount->id, 'user')) if (!DolibarrApi::_checkAccessToResource('user', $this->useraccount->id, 'user')) {
{
throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
} }
@ -356,8 +344,7 @@ class Users extends DolibarrApi
// If there is no error, update() returns the number of affected // If there is no error, update() returns the number of affected
// rows so if the update is a no op, the return value is zezo. // rows so if the update is a no op, the return value is zezo.
if ($this->useraccount->update(DolibarrApiAccess::$user) >= 0) if ($this->useraccount->update(DolibarrApiAccess::$user) >= 0) {
{
return $this->get($id); return $this->get($id);
} else { } else {
throw new RestException(500, $this->useraccount->error); throw new RestException(500, $this->useraccount->error);
@ -419,18 +406,15 @@ class Users extends DolibarrApi
//throw new RestException(401); //throw new RestException(401);
//} //}
$result = $this->useraccount->fetch($id); $result = $this->useraccount->fetch($id);
if (!$result) if (!$result) {
{
throw new RestException(404, 'User not found'); throw new RestException(404, 'User not found');
} }
if (!DolibarrApi::_checkAccessToResource('user', $this->useraccount->id, 'user')) if (!DolibarrApi::_checkAccessToResource('user', $this->useraccount->id, 'user')) {
{
throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
} }
if (!empty($conf->multicompany->enabled) && !empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE) && !empty(DolibarrApiAccess::$user->admin) && empty(DolibarrApiAccess::$user->entity)) if (!empty($conf->multicompany->enabled) && !empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE) && !empty(DolibarrApiAccess::$user->admin) && empty(DolibarrApiAccess::$user->entity)) {
{
$entity = (!empty($entity) ? $entity : $conf->entity); $entity = (!empty($entity) ? $entity : $conf->entity);
} else { } else {
// When using API, action is done on entity of logged user because a user of entity X with permission to create user should not be able to // When using API, action is done on entity of logged user because a user of entity X with permission to create user should not be able to
@ -439,8 +423,7 @@ class Users extends DolibarrApi
} }
$result = $this->useraccount->SetInGroup($group, $entity); $result = $this->useraccount->SetInGroup($group, $entity);
if (!($result > 0)) if (!($result > 0)) {
{
throw new RestException(500, $this->useraccount->error); throw new RestException(500, $this->useraccount->error);
} }
@ -480,10 +463,8 @@ class Users extends DolibarrApi
$sql .= ' WHERE t.entity IN ('.getEntity('user').')'; $sql .= ' WHERE t.entity IN ('.getEntity('user').')';
if ($group_ids) $sql .= " AND t.rowid IN (".$group_ids.")"; if ($group_ids) $sql .= " AND t.rowid IN (".$group_ids.")";
// Add sql filters // Add sql filters
if ($sqlfilters) if ($sqlfilters) {
{ if (!DolibarrApi::_checkFilters($sqlfilters)) {
if (!DolibarrApi::_checkFilters($sqlfilters))
{
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters); throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
} }
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^:\(\)]+)\)'; $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^:\(\)]+)\)';
@ -492,8 +473,7 @@ class Users extends DolibarrApi
$sql .= $this->db->order($sortfield, $sortorder); $sql .= $this->db->order($sortfield, $sortorder);
if ($limit) { if ($limit) {
if ($page < 0) if ($page < 0) {
{
$page = 0; $page = 0;
} }
$offset = $limit * $page; $offset = $limit * $page;
@ -548,8 +528,7 @@ class Users extends DolibarrApi
$group_static = new UserGroup($this->db); $group_static = new UserGroup($this->db);
$result = $group_static->fetch($group, '', $load_members); $result = $group_static->fetch($group, '', $load_members);
if (!$result) if (!$result) {
{
throw new RestException(404, 'Group not found'); throw new RestException(404, 'Group not found');
} }
@ -568,13 +547,11 @@ class Users extends DolibarrApi
//throw new RestException(401); //throw new RestException(401);
//} //}
$result = $this->useraccount->fetch($id); $result = $this->useraccount->fetch($id);
if (!$result) if (!$result) {
{
throw new RestException(404, 'User not found'); throw new RestException(404, 'User not found');
} }
if (!DolibarrApi::_checkAccessToResource('user', $this->useraccount->id, 'user')) if (!DolibarrApi::_checkAccessToResource('user', $this->useraccount->id, 'user')) {
{
throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
} }
$this->useraccount->oldcopy = clone $this->useraccount; $this->useraccount->oldcopy = clone $this->useraccount;
@ -636,8 +613,7 @@ class Users extends DolibarrApi
$canreadsalary = ((!empty($conf->salaries->enabled) && !empty(DolibarrApiAccess::$user->rights->salaries->read)) $canreadsalary = ((!empty($conf->salaries->enabled) && !empty(DolibarrApiAccess::$user->rights->salaries->read))
|| (!empty($conf->hrm->enabled) && !empty(DolibarrApiAccess::$user->rights->hrm->employee->read))); || (!empty($conf->hrm->enabled) && !empty(DolibarrApiAccess::$user->rights->hrm->employee->read)));
if (!$canreadsalary) if (!$canreadsalary) {
{
unset($object->salary); unset($object->salary);
unset($object->salaryextra); unset($object->salaryextra);
unset($object->thm); unset($object->thm);