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();
-