diff --git a/core/trunk/core/class/resources_controler.php b/core/trunk/core/class/resources_controler.php index 99332c8d93ebcb124a1d410e59bc18a1b618d5fe..9e78c5717918ef75c9581467eea32a0b7c8f77bf 100755 --- a/core/trunk/core/class/resources_controler.php +++ b/core/trunk/core/class/resources_controler.php @@ -291,7 +291,7 @@ class resources_controler $mail = array(); $theString = str_replace(">", "", $data[$i]['value']); $mail = explode("<", $theString); - $queryUser = "select user_id from users where mail = " + $queryUser = "SELECT user_id FROM users WHERE mail = " . "'" . $dbQuery->protect_string_db($mail[count($mail) -1]) . "' and status = 'OK'"; $dbQuery->query($queryUser); $userIdFound = $dbQuery->fetch_object(); @@ -299,7 +299,7 @@ class resources_controler $toAddressFound = true; $destUser = $userIdFound->user_id; - $queryUserEntity = "select entity_id from users_entities where primary_entity = 'Y' and user_id = '".$destUser."'"; + $queryUserEntity = "SELECT entity_id FROM users_entities WHERE primary_entity = 'Y' and user_id = '".$destUser."'"; $dbQuery->query($queryUserEntity); $userEntityId = $dbQuery->fetch_object(); if (!empty($userEntityId->entity_id)) { diff --git a/core/trunk/core/class/users_controler.php b/core/trunk/core/class/users_controler.php index 4883a499c26d126e967a3561d03cb58ec1ac9309..0e102437ae26c6b6275586941b1d19af0d033a2a 100644 --- a/core/trunk/core/class/users_controler.php +++ b/core/trunk/core/class/users_controler.php @@ -878,7 +878,7 @@ class users_controler extends ObjectControler implements ObjectControlerIF * Check if the user exist in the database given his mail * * @param $userMail string user mail - * @return bool true if user exists, false otherwise + * @return Array or null */ public function checkUserMail($userMail) { @@ -886,18 +886,74 @@ class users_controler extends ObjectControler implements ObjectControlerIF self::$db->connect(); $func = new functions(); - $queryUser = "select user_id from users where mail = " - . "'" . $func->protect_string_db($userMail) . "'"; + $queryUser = "SELECT user_id FROM users WHERE mail = " + . "'" . $func->protect_string_db($userMail) . "' and status = 'OK'"; self::$db->query($queryUser); $userIdFound = self::$db->fetch_object(); + $UserEntities = array(); + if (!empty($userIdFound->user_id)) { $isUser = true; + $UserEntities = $this->getEntities($userIdFound->user_id); } else { $isUser = false; } self::$db->disconnect(); - return $isUser; + + $return = array(); + array_push( + $return, + array( + 'isUser' => $isUser, + 'userEntities' => $UserEntities + ) + ); + + return $return; + } + + /** + * Returns in an array all the entities associated with a user (user_id, + * entity_id, primary and role) + * + * @param $userId string User identifier + * @return Array or null + */ + public function getEntities($userId) + { + $entities = array(); + if (empty($userId)) { + return null; + } + + self::$db = new dbquery(); + self::$db->connect(); + $func = new functions(); + $query = "SELECT ue.entity_id, ue.user_role, ue.primary_entity + FROM users_entities ue, entities e + WHERE ue.user_id = '" . $func->protect_string_db($userId) . "' and e.enabled = 'Y' and e.entity_id = ue.entity_id + ORDER BY primary_entity desc"; + // set primary entity to the first row + try{ + self::$db->query($query); + } catch (Exception $e){ + echo _NO_USER_WITH_ID.' '.$userId.' // '; + } + + while ($res = self::$db->fetch_object()) { + array_push( + $entities, + array( + 'USER_ID' => $userId, + 'ENTITY_ID' => $res->entity_id, + 'PRIMARY' => $res->primary_entity, + 'ROLE' => $res->user_role, + ) + ); + } + // self::$db->disconnect(); + return $entities; } } diff --git a/core/trunk/core/class/ws.php b/core/trunk/core/class/ws.php index a2cb989a8d541c28f2a2a86956ad3e88663da559..2919a554b68c821643d24519193602a435a0d3b2 100755 --- a/core/trunk/core/class/ws.php +++ b/core/trunk/core/class/ws.php @@ -177,9 +177,27 @@ $SOAP_dispatch_map['userGet'] = array( 'out' => array('out' => '{urn:MySoapServer}users'), 'method' => "core#users::getWs" ); + +$SOAP_typedef['returnArrayUser'] = array( 'userEntities'=>'{urn:MySoapServer}arrayOfEntities', + 'isUser'=>'boolean', + ); + +$SOAP_typedef['arrayOfEntities'] = array( + array( + 'arrayOfEntitiesContent' => '{urn:MySoapServer}arrayOfEntitiesContent' + ) +); + +$SOAP_typedef['arrayOfEntitiesContent'] = array( + 'USER_ID' => 'string', + 'ENTITY_ID' => 'string', + 'PRIMARY' => 'string', + 'ROLE' => 'string', +); + $SOAP_dispatch_map['checkUserMail'] = array( 'in' => array('userMail' => 'string'), - 'out' => array('out' => 'boolean'), + 'out' => array('out' => '{urn:MySoapServer}returnArrayUser'), 'method' => "core#users::checkUserMail" );