diff --git a/workflow/engine/classes/class.pmFunctions.php b/workflow/engine/classes/class.pmFunctions.php index 57310a6a1..efa194442 100755 --- a/workflow/engine/classes/class.pmFunctions.php +++ b/workflow/engine/classes/class.pmFunctions.php @@ -1040,21 +1040,27 @@ function WSAssignUserToGroup($userId, $groupId) * @param string(32) | $lastname | Lastname of the new user | The last name(s) of the new user, which can be up to 50 characters long. * @param string(32) | $email | Email the new user | The e-mail of the new user, which can be up to 100 characters long. * @param string(32) | $role | Rol of the new user | The role of the new user, such as 'PROCESSMAKER_ADMIN' and 'PROCESSMAKER_OPERATOR'. + * @param string(32) | $dueDate=null | Expiration date | Optional parameter. The expiration date must be a string in the format 'yyyy-mm-dd'. + * @param string(32) | $status=null | Status of the new user | Optional parameter. The user's status, such as 'ACTIVE', 'INACTIVE' or 'VACATION'. * @return array | $fields | WS array | A WS Response associative array. * */ -function WSCreateUser($userId, $password, $firstname, $lastname, $email, $role) +function WSCreateUser($userId, $password, $firstname, $lastname, $email, $role, $dueDate=null, $status=null) { $client = WSOpen(); $sessionId = $_SESSION["WS_SESSION_ID"]; - $params = array("sessionId" => $sessionId, - "userId" => $userId, - "firstname" => $firstname, - "lastname" => $lastname, - "email" => $email, - "role" => $role, - "password" => $password); + $params = array( + "sessionId" => $sessionId, + "userId" => $userId, + "firstname" => $firstname, + "lastname" => $lastname, + "email" => $email, + "role" => $role, + "password" => $password, + "dueDate" => $dueDate, + "status" => $status + ); $result = $client->__soapCall("CreateUser", array($params)); @@ -1679,14 +1685,17 @@ function PMFAssignUserToGroup($userId, $groupId) * @param string(32) | $lastname | Lastname of the new user | The last name of the user, which can be up to 50 characters long. * @param string(32) | $email | Email the new user | The email of the new user, which can be up to 100 characters long. * @param string(32) | $role | Rol of the new user | The role of the new user such as 'PROCESSMAKER_ADMIN' or 'PROCESSMAKER_OPERATOR'. + * @param string(32) | $dueDate=null | Expiration date | Optional parameter. The expiration date must be a string in the format 'yyyy-mm-dd'. + * @param string(32) | $status=null | Status of the new user | Optional parameter. The user's status, such as 'ACTIVE', 'INACTIVE' or 'VACATION'. * @return int | $result | Result of the creation | Returns 1 if the new user was created successfully; otherwise, returns 0 if an error occurred. * */ -function PMFCreateUser($userId, $password, $firstname, $lastname, $email, $role) +function PMFCreateUser($userId, $password, $firstname, $lastname, $email, $role, $dueDate=null, $status=null) { G::LoadClass('wsBase'); - $ws = new wsBase (); - $result = $ws->createUser($userId, $firstname, $lastname, $email, $role, $password); + + $ws = new wsBase(); + $result = $ws->createUser($userId, $firstname, $lastname, $email, $role, $password, $dueDate, $status); if ($result->status_code == 0) { return 1; @@ -2094,4 +2103,3 @@ function PMFGetCaseNotes ($applicationID, $type='array', $userUid='') $response = Cases::getCaseNotes($applicationID, $type, $userUid); return $response; } - diff --git a/workflow/engine/classes/class.wsBase.php b/workflow/engine/classes/class.wsBase.php index dadbb280a..6bee3880d 100755 --- a/workflow/engine/classes/class.wsBase.php +++ b/workflow/engine/classes/class.wsBase.php @@ -922,17 +922,19 @@ class wsBase /** * creates a new user - * @param string sessionId : The session ID - * @param string userId : The username for the new user. - * @param string firstname : The user's first name. - * @param string lastname : The user's last name. - * @param string email : The user's email address. - * @param string role : The user's role, such as 'PROCESSMAKER_ADMIN' or 'PROCESSMAKER_OPERATOR'. - * @param string password : The user's password such as 'Be@gle2'(It will be automatically encrypted - * with an MD5 hash). + * @param string sessionId : The session ID. + * @param string userId : The username for the new user. + * @param string firstname : The user's first name. + * @param string lastname : The user's last name. + * @param string email : The user's email address. + * @param string role : The user's role, such as 'PROCESSMAKER_ADMIN' or 'PROCESSMAKER_OPERATOR'. + * @param string password : The user's password such as 'Be@gle2'(It will be automatically encrypted + * with an MD5 hash). + * @param string dueDate : Optional parameter. The expiration date must be a string in the format 'yyyy-mm-dd'. + * @param string status : Optional parameter. The user's status, such as 'ACTIVE', 'INACTIVE' or 'VACATION'. * @return $result will return an object */ - public function createUser($userId, $firstname, $lastname, $email, $role, $password) + public function createUser($userId, $firstname, $lastname, $email, $role, $password, $dueDate=null, $status=null) { try { if ($userId == '') { @@ -990,21 +992,45 @@ class wsBase $strRole = $role; } - $aData['USR_USERNAME'] = $userId; - $aData['USR_PASSWORD'] = md5($password); - $aData['USR_FIRSTNAME'] = $firstname; - $aData['USR_LASTNAME'] = $lastname; - $aData['USR_EMAIL'] = $email; - $aData['USR_DUE_DATE'] = mktime(0, 0, 0, date("m"), date("d"), date("Y") + 1); - $aData['USR_CREATE_DATE'] = date('Y-m-d H:i:s'); - $aData['USR_UPDATE_DATE'] = date('Y-m-d H:i:s'); - $aData['USR_STATUS'] = 1; + if ($dueDate != null) { + if (!preg_match("/^(\d{4})-(\d{2})-(\d{2})$/", $dueDate, $matches)) { + $result = new wsCreateUserResponse(5, G::loadTranslation("ID_INVALID_DATA") . ", $dueDate"); - $sUserUID = $RBAC->createUser($aData, $strRole ); + return $result; + } else { + $mktimeDueDate = mktime(0, 0, 0, intval($matches[2]), intval($matches[3]), intval($matches[1])); + } + } else { + $mktimeDueDate = mktime(0, 0, 0, date("m"), date("d"), date("Y") + 1); + } + if ($status != null) { + if ($status != "ACTIVE" && $status != "INACTIVE" && $status != "VACATION") { + $result = new wsCreateUserResponse(5, G::loadTranslation("ID_INVALID_DATA") . ", $status"); + + return $result; + } + } else { + $status = "ACTIVE"; + } + + $aData['USR_USERNAME'] = $userId; + $aData['USR_PASSWORD'] = md5($password); + $aData['USR_FIRSTNAME'] = $firstname; + $aData['USR_LASTNAME'] = $lastname; + $aData['USR_EMAIL'] = $email; + $aData['USR_DUE_DATE'] = $mktimeDueDate; + $aData['USR_CREATE_DATE'] = date('Y-m-d H:i:s'); + $aData['USR_UPDATE_DATE'] = date('Y-m-d H:i:s'); + $aData['USR_BIRTHDAY'] = date('Y-m-d'); + $aData['USR_AUTH_USER_DN'] = ''; + $aData['USR_STATUS'] = ($status == 'ACTIVE')? 1 : 0; + + $sUserUID = $RBAC->createUser($aData, $strRole); + + $aData['USR_STATUS'] = $status; $aData['USR_UID'] = $sUserUID; $aData['USR_PASSWORD'] = md5($sUserUID); - $aData['USR_STATUS'] = 'ACTIVE'; $aData['USR_COUNTRY'] = ''; $aData['USR_CITY'] = ''; $aData['USR_LOCATION'] = ''; @@ -1012,9 +1038,9 @@ class wsBase $aData['USR_PHONE'] = ''; $aData['USR_ZIP_CODE'] = ''; $aData['USR_POSITION'] = ''; - $aData['USR_RESUME'] = ''; - $aData['USR_BIRTHDAY'] = date('Y-m-d'); + //$aData['USR_RESUME'] $aData['USR_ROLE'] = $strRole ; + //$aData['USR_REPLACED_BY'] $oUser = new Users(); $oUser->create($aData); diff --git a/workflow/engine/methods/services/pmos2.wsdl b/workflow/engine/methods/services/pmos2.wsdl index 68eaba752..4e3d56420 100755 --- a/workflow/engine/methods/services/pmos2.wsdl +++ b/workflow/engine/methods/services/pmos2.wsdl @@ -183,6 +183,8 @@ + + diff --git a/workflow/engine/methods/services/soap2.php b/workflow/engine/methods/services/soap2.php index 203c35575..73c110e69 100755 --- a/workflow/engine/methods/services/soap2.php +++ b/workflow/engine/methods/services/soap2.php @@ -701,9 +701,19 @@ function CreateUser($params) return $result; } - $ws = new wsBase (); - $res = $ws->createUser( $params->userId, $params->firstname, - $params->lastname, $params->email, $params->role, $params->password); + $ws = new wsBase(); + + $res = $ws->createUser( + $params->userId, + $params->firstname, + $params->lastname, + $params->email, + $params->role, + $params->password, + ((isset($params->dueDate))? $params->dueDate : null), + ((isset($params->status))? $params->status : null) + ); + return $res; } @@ -923,4 +933,3 @@ $server->addFunction("importProcessFromLibrary"); $server->addFunction("removeUserFromGroup"); $server->addFunction("getCaseNotes"); $server->handle(); -