diff --git a/workflow/engine/classes/class.pmFunctions.php b/workflow/engine/classes/class.pmFunctions.php index 56301b5c3..c08b14391 100755 --- a/workflow/engine/classes/class.pmFunctions.php +++ b/workflow/engine/classes/class.pmFunctions.php @@ -87,19 +87,13 @@ function getCurrentTime () * @label User Info * @link http://wiki.processmaker.com/index.php/ProcessMaker_Functions#userInfo.28.29 * - * @param string(32) | $user_id | User ID | The user unique ID - * @return array | $userInfo | User Info | An associative array with Information + * @param string(32) | $userUid | User ID | The user unique ID + * @return array | $info | User Info | An associative array with Information * */ -function userInfo ($user_uid) +function userInfo($userUid) { - try { - require_once 'classes/model/Users.php'; - $oUser = new Users(); - return $oUser->getAllInformation( $user_uid ); - } catch (Exception $oException) { - throw $oException; - } + return PMFInformationUser($userUid); } /** @@ -1107,6 +1101,40 @@ function WSUpdateUser ($userUid, $userName, $firstName = null, $lastName = null, return $fields; } +/** + * + * @method Retrieves information about a user with a given ID. + * + * @name WSInformationUser + * @label WS Information User + * @link http://wiki.processmaker.com/index.php/ProcessMaker_Functions#WSInformationUser.28.29 + * + * @param string(32) | $userUid | User UID | The user UID. + * @return array | $response | WS array | A WS Response associative array. + * + */ +function WSInformationUser($userUid) +{ + $client = WSOpen(); + + $sessionId = $_SESSION["WS_SESSION_ID"]; + + $params = array( + "sessionId" => $sessionId, + "userUid" => $userUid + ); + + $result = $client->__soapCall("informationUser", array($params)); + + $response = array(); + $response["status_code"] = $result->status_code; + $response["message"] = $result->message; + $response["time_stamp"] = $result->timestamp; + $response["info"] = (isset($result->info))? $result->info : null; + + return $response; +} + /** * * @method Returns the unique ID for the current active session. @@ -1851,6 +1879,34 @@ function PMFUpdateUser ($userUid, $userName, $firstName = null, $lastName = null } } +/** + * + * @method Retrieves information about a user with a given ID. + * + * @name PMFInformationUser + * @label PMF Information User + * @link http://wiki.processmaker.com/index.php/ProcessMaker_Functions#PMFInformationUser.28.29 + * + * @param string(32) | $userUid | User UID | The user UID. + * @return array | $info | Information of user | An associative array with Information. + * + */ +function PMFInformationUser($userUid) +{ + G::LoadClass("wsBase"); + + $ws = new wsBase(); + $result = $ws->informationUser($userUid); + + $info = array(); + + if ($result->status_code == 0 && isset($result->info)) { + $info = $result->info; + } + + return $info; +} + /** * * @method Creates a random string of letters and/or numbers of a specified length,which diff --git a/workflow/engine/classes/class.wsBase.php b/workflow/engine/classes/class.wsBase.php index 86375f492..83735c483 100755 --- a/workflow/engine/classes/class.wsBase.php +++ b/workflow/engine/classes/class.wsBase.php @@ -1217,7 +1217,41 @@ class wsBase return $result; } catch (Exception $e) { - $result = wsResponse( 100, $e->getMessage() ); + $result = new wsResponse(100, $e->getMessage()); + + return $result; + } + } + + /** + * Information User + * @param string userUid : The user UID. + * @return $result will return an object + */ + public function informationUser($userUid) + { + try { + if (empty($userUid)) { + $result = new wsResponse(100, G::LoadTranslation("ID_REQUIRED_FIELD") . " userUid"); + + return $result; + } + + $user = new Users(); + $userInfo = $user->getAllInformation($userUid); + + //Response + $res = new wsResponse(0, G::LoadTranslation("ID_COMMAND_EXECUTED_SUCCESSFULLY")); + + $result = new stdClass(); + $result->status_code = $res->status_code; + $result->message = $res->message; + $result->timestamp = $res->timestamp; + $result->info = $userInfo; + + return $result; + } catch (Exception $e) { + $result = new wsResponse(100, $e->getMessage()); return $result; } @@ -1648,7 +1682,7 @@ class wsBase $this->originalValues['INDEX'] = $_SESSION['INDEX']; unset( $_SESSION['INDEX'] ); } - + if (isset( $_SESSION['USER_LOGGED'] )) { $this->originalValues['USER_LOGGED'] = $_SESSION['USER_LOGGED']; unset( $_SESSION['USER_LOGGED'] ); @@ -1664,7 +1698,7 @@ class wsBase unset( $_SESSION['STEP_POSITION'] ); } } - + /** * restore the Session variables with values of $originalValues array, if this is set. * @@ -1696,7 +1730,7 @@ class wsBase $_SESSION['USR_USERNAME'] = $this->originalValues['USR_USERNAME']; unset( $this->originalValues['USR_USERNAME']); } - + if (isset( $this->originalValues['USER_LOGGED'] )) { $_SESSION['USER_LOGGED'] = $this->originalValues['USER_LOGGED']; unset( $this->originalValues['USER_LOGGED']); @@ -1720,9 +1754,9 @@ class wsBase public function newCase ($processId, $userId, $taskId, $variables) { try { - + $this->saveTemporarySessionVars(); - + $Fields = array (); if (is_array( $variables ) && count( $variables ) > 0) { @@ -1796,7 +1830,7 @@ class wsBase $up_case = $oCase->updateCase( $caseId, $oldFields ); $this->restoreSessionVars(); - + $result = new wsResponse( 0, G::loadTranslation( 'ID_STARTED_SUCCESSFULLY' ) ); $result->caseId = $caseId; $result->caseNumber = $caseNr; @@ -2839,7 +2873,7 @@ class wsBase return $result; } catch (Exception $e) { - $result = wsResponse( 100, $e->getMessage() ); + $result = new wsResponse(100, $e->getMessage()); return $result; } @@ -2885,7 +2919,7 @@ class wsBase return $result; } catch (Exception $e) { - $result = wsResponse( 100, $e->getMessage() ); + $result = new wsResponse(100, $e->getMessage()); return $result; } @@ -2941,7 +2975,7 @@ class wsBase return $result; } catch (Exception $e) { - $result = wsResponse( 100, $e->getMessage() ); + $result = new wsResponse(100, $e->getMessage()); return $result; } @@ -2987,7 +3021,7 @@ class wsBase return $result; } catch (Exception $e) { - $result = wsResponse( 100, $e->getMessage() ); + $result = new wsResponse(100, $e->getMessage()); return $result; } diff --git a/workflow/engine/methods/services/pmos2.wsdl b/workflow/engine/methods/services/pmos2.wsdl index 7f5a83a0a..1ebd37649 100755 --- a/workflow/engine/methods/services/pmos2.wsdl +++ b/workflow/engine/methods/services/pmos2.wsdl @@ -225,6 +225,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -896,6 +940,12 @@ + + + + + + @@ -1091,6 +1141,10 @@ + + + + @@ -1301,6 +1355,15 @@ + + + + + + + + + diff --git a/workflow/engine/methods/services/soap2.php b/workflow/engine/methods/services/soap2.php index b94c61d5e..1544ff581 100755 --- a/workflow/engine/methods/services/soap2.php +++ b/workflow/engine/methods/services/soap2.php @@ -873,6 +873,26 @@ function updateUser ($params) return $result; } +function informationUser($params) +{ + $result = isValidSession($params->sessionId); + + if ($result->status_code != 0) { + return $result; + } + + if (ifPermission($params->sessionId, "PM_USERS") == 0) { + $result = new wsResponse(2, "You do not have privileges"); + + return $result; + } + + $ws = new wsBase(); + $result = $ws->informationUser($params->userUid); + + return $result; +} + function CreateGroup ($params) { $vsResult = isValidSession( $params->sessionId ); @@ -1170,46 +1190,48 @@ function unpauseCase ($params) return $result; } -$server = new SoapServer( $wsdl ); -$server->addFunction( "Login" ); -$server->addFunction( "ProcessList" ); -$server->addFunction( "CaseList" ); -$server->addFunction( "UnassignedCaseList" ); -$server->addFunction( "RoleList" ); -$server->addFunction( "GroupList" ); -$server->addFunction( "DepartmentList" ); -$server->addFunction( "UserList" ); -$server->addFunction( "TriggerList" ); -$server->addFunction( "outputDocumentList" ); -$server->addFunction( "inputDocumentList" ); -$server->addFunction( "inputDocumentProcessList" ); -$server->addFunction( "removeDocument" ); -$server->addFunction( "SendMessage" ); -$server->addFunction( "SendVariables" ); -$server->addFunction( "GetVariables" ); -$server->addFunction( "GetVariablesNames" ); -$server->addFunction( "DerivateCase" ); -$server->addFunction( "RouteCase" ); -$server->addFunction( "executeTrigger" ); -$server->addFunction( "NewCaseImpersonate" ); -$server->addFunction( "NewCase" ); -$server->addFunction( "AssignUserToGroup" ); -$server->addFunction( "AssignUserToDepartment" ); -$server->addFunction( "CreateGroup" ); -$server->addFunction( "CreateDepartment" ); -$server->addFunction( "CreateUser" ); -$server->addFunction( "updateUser" ); -$server->addFunction( "getCaseInfo" ); -$server->addFunction( "TaskList" ); -$server->addFunction( "TaskCase" ); -$server->addFunction( "ReassignCase" ); -$server->addFunction( "systemInformation" ); -$server->addFunction( "importProcessFromLibrary" ); -$server->addFunction( "removeUserFromGroup" ); -$server->addFunction( "getCaseNotes" ); -$server->addFunction( "deleteCase" ); -$server->addFunction( "cancelCase" ); -$server->addFunction( "pauseCase" ); -$server->addFunction( "unpauseCase" ); +$server = new SoapServer($wsdl); + +$server->addFunction("Login"); +$server->addFunction("ProcessList"); +$server->addFunction("CaseList"); +$server->addFunction("UnassignedCaseList"); +$server->addFunction("RoleList"); +$server->addFunction("GroupList"); +$server->addFunction("DepartmentList"); +$server->addFunction("UserList"); +$server->addFunction("TriggerList"); +$server->addFunction("outputDocumentList"); +$server->addFunction("inputDocumentList"); +$server->addFunction("inputDocumentProcessList"); +$server->addFunction("removeDocument"); +$server->addFunction("SendMessage"); +$server->addFunction("SendVariables"); +$server->addFunction("GetVariables"); +$server->addFunction("GetVariablesNames"); +$server->addFunction("DerivateCase"); +$server->addFunction("RouteCase"); +$server->addFunction("executeTrigger"); +$server->addFunction("NewCaseImpersonate"); +$server->addFunction("NewCase"); +$server->addFunction("AssignUserToGroup"); +$server->addFunction("AssignUserToDepartment"); +$server->addFunction("CreateGroup"); +$server->addFunction("CreateDepartment"); +$server->addFunction("CreateUser"); +$server->addFunction("updateUser"); +$server->addFunction("informationUser"); +$server->addFunction("getCaseInfo"); +$server->addFunction("TaskList"); +$server->addFunction("TaskCase"); +$server->addFunction("ReassignCase"); +$server->addFunction("systemInformation"); +$server->addFunction("importProcessFromLibrary"); +$server->addFunction("removeUserFromGroup"); +$server->addFunction("getCaseNotes"); +$server->addFunction("deleteCase"); +$server->addFunction("cancelCase"); +$server->addFunction("pauseCase"); +$server->addFunction("unpauseCase"); $server->handle();