/** * Create User * * @param array $arrayData Data * * return array Return data of the new User created */ public function create(array $arrayData) { try { \G::LoadSystem("rbac"); //Verify data $process = new \ProcessMaker\BusinessModel\Process(); $validator = new \ProcessMaker\BusinessModel\Validator(); $validator->throwExceptionIfDataIsNotArray($arrayData, "\$arrayData"); $validator->throwExceptionIfDataIsEmpty($arrayData, "\$arrayData"); //Set data $arrayData = array_change_key_case($arrayData, CASE_UPPER); unset($arrayData["USR_UID"]); $this->throwExceptionIfDataIsInvalid("", $arrayData); //Create $cnn = \Propel::getConnection("workflow"); try { $rbac = new \RBAC(); $user = new \Users(); $rbac->initRBAC(); $arrayData["USR_PASSWORD"] = \Bootstrap::hashPassword($arrayData["USR_NEW_PASS"]); $arrayData["USR_BIRTHDAY"] = (isset($arrayData["USR_BIRTHDAY"]))? $arrayData["USR_BIRTHDAY"] : date("Y-m-d"); $arrayData["USR_LOGGED_NEXT_TIME"] = (isset($arrayData["USR_LOGGED_NEXT_TIME"]))? $arrayData["USR_LOGGED_NEXT_TIME"] : 0; $arrayData["USR_CREATE_DATE"] = date("Y-m-d H:i:s"); $arrayData["USR_UPDATE_DATE"] = date("Y-m-d H:i:s"); //Create in rbac //$userStatus = $arrayData["USR_STATUS"]; // //if ($arrayData["USR_STATUS"] == "ACTIVE") { // $arrayData["USR_STATUS"] = 1; //} // //if ($arrayData["USR_STATUS"] == "INACTIVE") { // $arrayData["USR_STATUS"] = 0; //} // //$userUid = $this->createUser($arrayData); // //if ($arrayData["USR_ROLE"] != "") { // $this->assignRoleToUser($userUid, $arrayData["USR_ROLE"]); //} // //$arrayData["USR_STATUS"] = $userStatus; $userUid = $rbac->createUser($arrayData, $arrayData["USR_ROLE"]); //Create in workflow $arrayData["USR_UID"] = $userUid; $arrayData["USR_PASSWORD"] = "******"; $result = $user->create($arrayData); //User Properties $userProperty = new \UsersProperties(); $aUserProperty = $userProperty->loadOrCreateIfNotExists($arrayData["USR_UID"], array("USR_PASSWORD_HISTORY" => serialize(array(\Bootstrap::hashPassword($arrayData["USR_PASSWORD"]))))); $aUserProperty["USR_LOGGED_NEXT_TIME"] = $arrayData["USR_LOGGED_NEXT_TIME"]; $userProperty->update($aUserProperty); //Save Calendar assigment if (isset($arrayData["USR_CALENDAR"])) { //Save Calendar ID for this user \G::LoadClass("calendar"); $calendar = new \Calendar(); $calendar->assignCalendarTo($arrayData["USR_UID"], $arrayData["USR_CALENDAR"], "USER"); } //Return return $this->getUser($userUid); } catch (\Exception $e) { $cnn->rollback(); throw $e; } } catch (\Exception $e) { throw $e; } }