Merge branch 'master' of bitbucket.org:colosa/processmaker

This commit is contained in:
Victor Saisa Lopez
2014-05-06 09:56:50 -04:00

View File

@@ -7,11 +7,11 @@ class User
/**
* Create User Uid
*
* @param array $arrayData Data
* @param array $arrayUserData Data
*
* return id
*/
public function createUser($aData)
public function createUser($userData)
{
require_once (PATH_RBAC_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "RbacUsers.php");
$this->userObj = new \RbacUsers();
@@ -29,11 +29,11 @@ class User
try {
$oRBACUsers = new \RbacUsers();
do {
$aData['USR_UID'] = \G::generateUniqueID();
} while ($oRBACUsers->load($aData['USR_UID']));
$oRBACUsers->fromArray($aData, \BasePeer::TYPE_FIELDNAME);
$userData['USR_UID'] = \G::generateUniqueID();
} while ($oRBACUsers->load($userData['USR_UID']));
$oRBACUsers->fromArray($userData, \BasePeer::TYPE_FIELDNAME);
$iResult = $oRBACUsers->save();
return $aData['USR_UID'];
return $userData['USR_UID'];
} catch (Exception $oError) {
$oConnection->rollback();
throw($oError);
@@ -144,23 +144,23 @@ class User
* updated an user
*
* @access public
* @param array $aData
* @param array $userData
* @param string $sRolCode
* @return void
*/
public function updateUser ($aData = array(), $sRolCode = '')
public function updateUser ($userData = array(), $sRolCode = '')
{
require_once (PATH_RBAC_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "RbacUsers.php");
$this->userObj = new \RbacUsers();
if (isset( $aData['USR_STATUS'] )) {
if ($aData['USR_STATUS'] == 'ACTIVE') {
$aData['USR_STATUS'] = 1;
if (isset( $userData['USR_STATUS'] )) {
if ($userData['USR_STATUS'] == 'ACTIVE') {
$userData['USR_STATUS'] = 1;
}
}
$this->userObj->update( $aData );
$this->userObj->update( $userData );
if ($sRolCode != '') {
$this->removeRolesFromUser( $aData['USR_UID'] );
$this->assignRoleToUser( $aData['USR_UID'], $sRolCode );
$this->removeRolesFromUser( $userData['USR_UID'] );
$this->assignRoleToUser( $userData['USR_UID'], $sRolCode );
}
}
@@ -201,16 +201,16 @@ class User
/**
* Create User
*
* @param array $arrayData Data
* @param array $arrayUserData Data
*
* return array Return data of the new User created
*/
public function create($arrayData)
public function create($arrayUserData)
{
try {
require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "Users.php");
$arrayData = array_change_key_case($arrayData, CASE_UPPER);
$form = $arrayData;
$arrayUserData = array_change_key_case($arrayUserData, CASE_UPPER);
$form = $arrayUserData;
if (array_key_exists('USR_REPLACED_BY', $form)) {
if ($form['USR_REPLACED_BY'] != '') {
$oReplacedBy = \UsersPeer::retrieveByPK($form['USR_REPLACED_BY']);
@@ -243,8 +243,8 @@ class User
}
}
}
if (isset($arrayData['USR_UID'])) {
$form['USR_UID'] = $arrayData['USR_UID'];
if (isset($arrayUserData['USR_UID'])) {
$form['USR_UID'] = $arrayUserData['USR_UID'];
} else {
$form['USR_UID'] = '';
}
@@ -274,28 +274,28 @@ class User
$criteria = new \Criteria();
$criteria->addSelectColumn(\UsersPeer::USR_USERNAME);
if (array_key_exists('USR_USERNAME', $form)) {
$criteria->add(\UsersPeer::USR_USERNAME, utf8_encode($arrayData['USR_USERNAME']));
$criteria->add(\UsersPeer::USR_USERNAME, utf8_encode($arrayUserData['USR_USERNAME']));
} else {
throw new \Exception('usr_name. '.\G::LoadTranslation('ID_MSG_ERROR_USR_USERNAME'));
}
if (\UsersPeer::doCount($criteria) > 0) {
throw new \Exception('usr_username. '.\G::LoadTranslation('ID_USERNAME_ALREADY_EXISTS', array('USER_ID' => $arrayData['USR_USERNAME'])));
throw new \Exception('usr_username. '.\G::LoadTranslation('ID_USERNAME_ALREADY_EXISTS', array('USER_ID' => $arrayUserData['USR_USERNAME'])));
}
if ($form['USR_USERNAME'] == '') {
throw new \Exception('usr_name. '.\G::LoadTranslation('ID_MSG_ERROR_USR_USERNAME'));
} else {
$aData['USR_USERNAME'] = $form['USR_USERNAME'];
$userData['USR_USERNAME'] = $form['USR_USERNAME'];
}
$aData['USR_PASSWORD'] = $form['USR_PASSWORD'];
$userData['USR_PASSWORD'] = $form['USR_PASSWORD'];
if ($form['USR_FIRSTNAME'] == '') {
throw new \Exception('usr_firstname. '.\G::LoadTranslation('ID_MSG_ERROR_USR_FIRSTNAME'));
} else {
$aData['USR_FIRSTNAME'] = $form['USR_FIRSTNAME'];
$userData['USR_FIRSTNAME'] = $form['USR_FIRSTNAME'];
}
if ($form['USR_LASTNAME'] == '') {
throw new \Exception('usr_lastname. '.\G::LoadTranslation('ID_MSG_ERROR_USR_LASTNAME'));
} else {
$aData['USR_LASTNAME'] = $form['USR_LASTNAME'];
$userData['USR_LASTNAME'] = $form['USR_LASTNAME'];
}
if ($form['USR_EMAIL'] == '') {
throw new \Exception('Invalid value specified for usr_email, can not be null.');
@@ -303,7 +303,7 @@ class User
if (!filter_var($form['USR_EMAIL'], FILTER_VALIDATE_EMAIL)) {
throw new \Exception('usr_email. '.\G::LoadTranslation('ID_INCORRECT_EMAIL'));
} else {
$aData['USR_EMAIL'] = $form['USR_EMAIL'];
$userData['USR_EMAIL'] = $form['USR_EMAIL'];
}
}
if ($form['USR_DUE_DATE'] == '') {
@@ -314,22 +314,22 @@ class User
if (checkdate($dueDate[1], $dueDate[2], $dueDate[0]) == false) {
throw new \Exception('usr_due_date. '.\G::LoadTranslation('ID_MSG_ERROR_DUE_DATE'));
} else {
$aData['USR_DUE_DATE'] = $form['USR_DUE_DATE'];
$userData['USR_DUE_DATE'] = $form['USR_DUE_DATE'];
}
} else {
throw new \Exception('usr_due_date. '.\G::LoadTranslation('ID_MSG_ERROR_DUE_DATE'));
}
}
$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'] = $form['USR_AUTH_USER_DN'];
$userData['USR_CREATE_DATE'] = date('Y-m-d H:i:s');
$userData['USR_UPDATE_DATE'] = date('Y-m-d H:i:s');
$userData['USR_BIRTHDAY'] = date('Y-m-d');
$userData['USR_AUTH_USER_DN'] = $form['USR_AUTH_USER_DN'];
$statusWF = $form['USR_STATUS'];
if ($form['USR_STATUS'] == '') {
throw new \Exception('Invalid value specified for usr_status, can not be null');
} else {
if ($form['USR_STATUS'] == 'ACTIVE' || $form['USR_STATUS'] == 'INACTIVE' || $form['USR_STATUS'] == 'VACATION') {
$aData['USR_STATUS'] = $form['USR_STATUS'];
$userData['USR_STATUS'] = $form['USR_STATUS'];
} else {
throw new \Exception('usr_status. Invalid value for status field.');
}
@@ -344,37 +344,37 @@ class User
$oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
if ($oDataset->getRow()) {
$aData['USR_ROLE'] = $form['USR_ROLE'];
$userData['USR_ROLE'] = $form['USR_ROLE'];
} else {
throw new \Exception('usr_role. Invalid value for role field.');
}
}
try {
if ($aData['USR_STATUS'] == 'ACTIVE') {
$aData['USR_STATUS'] = 1;
if ($userData['USR_STATUS'] == 'ACTIVE') {
$userData['USR_STATUS'] = 1;
}
if ($aData['USR_STATUS'] == 'INACTIVE') {
$aData['USR_STATUS'] = 0;
if ($userData['USR_STATUS'] == 'INACTIVE') {
$userData['USR_STATUS'] = 0;
}
$sUserUID = $this->createUser($aData);
$sUserUID = $this->createUser($userData);
if ($form['USR_ROLE'] != '') {
$this->assignRoleToUser($sUserUID, $form['USR_ROLE']);
}
} catch(Exception $oError) {
throw new \Exception($oError->getMessage());
}
$aData['USR_STATUS'] = $statusWF;
$aData['USR_UID'] = $sUserUID;
$aData['USR_COUNTRY'] = $form['USR_COUNTRY'];
$aData['USR_CITY'] = $form['USR_CITY'];
$aData['USR_LOCATION'] = $form['USR_LOCATION'];
$aData['USR_ADDRESS'] = $form['USR_ADDRESS'];
$aData['USR_PHONE'] = $form['USR_PHONE'];
$aData['USR_ZIP_CODE'] = $form['USR_ZIP_CODE'];
$aData['USR_POSITION'] = $form['USR_POSITION'];
$aData['USR_REPLACED_BY'] = $form['USR_REPLACED_BY'];
$userData['USR_STATUS'] = $statusWF;
$userData['USR_UID'] = $sUserUID;
$userData['USR_COUNTRY'] = $form['USR_COUNTRY'];
$userData['USR_CITY'] = $form['USR_CITY'];
$userData['USR_LOCATION'] = $form['USR_LOCATION'];
$userData['USR_ADDRESS'] = $form['USR_ADDRESS'];
$userData['USR_PHONE'] = $form['USR_PHONE'];
$userData['USR_ZIP_CODE'] = $form['USR_ZIP_CODE'];
$userData['USR_POSITION'] = $form['USR_POSITION'];
$userData['USR_REPLACED_BY'] = $form['USR_REPLACED_BY'];
$oUser = new \Users();
$oUser -> create( $aData );
$oUser -> create( $userData );
if ((isset($form['USR_CALENDAR']))) {
//Save Calendar ID for this user
\G::LoadClass("calendar");
@@ -392,17 +392,17 @@ class User
* Update User
*
* @param string $usrUid Unique id of User
* @param array $arrayData Data
* @param array $arrayUserData Data
* @param string $usrLoggedUid Unique id of User logged
*
* return array Return data of the User updated
*/
public function update($usrUid, $arrayData, $usrLoggedUid)
public function update($usrUid, $arrayUserData, $usrLoggedUid)
{
try {
global $RBAC;
$arrayData = array_change_key_case($arrayData, CASE_UPPER);
$form = $arrayData;
$arrayUserData = array_change_key_case($arrayUserData, CASE_UPPER);
$form = $arrayUserData;
$countPermission = 0;
$permission = $this->loadUserRolePermission('PROCESSMAKER', $usrLoggedUid);
foreach ($permission as $key => $value) {
@@ -413,11 +413,16 @@ class User
if ($countPermission != 1) {
throw new \Exception('This user: '.$usrLoggedUid. ', can not update the data.');
}
if (isset($arrayUserData['USR_USERNAME'])) {
$criteria = new \Criteria();
$criteria->addSelectColumn(\UsersPeer::USR_USERNAME);
$criteria->add(\UsersPeer::USR_USERNAME, utf8_encode($arrayData['USR_USERNAME']));
$criteria->add(\UsersPeer::USR_USERNAME, utf8_encode($arrayUserData['USR_USERNAME']));
if (\UsersPeer::doCount($criteria) > 0) {
throw new \Exception('usr_username. '.\G::LoadTranslation('ID_USERNAME_ALREADY_EXISTS', array('USER_ID' => $arrayData['USR_USERNAME'])));
throw new \Exception('usr_username. '.\G::LoadTranslation('ID_USERNAME_ALREADY_EXISTS', array('USER_ID' => $arrayUserData['USR_USERNAME'])));
}
if ($form['USR_USERNAME'] != '') {
$userData['USR_USERNAME'] = $form['USR_USERNAME'];
}
}
if (isset($usrUid)) {
$form['USR_UID'] = $usrUid;
@@ -433,23 +438,21 @@ class User
if (!isset($form['USR_AUTH_USER_DN'])) {
$form['USR_AUTH_USER_DN'] = '';
}
$aData['USR_UID'] = $form['USR_UID'];
if ($form['USR_USERNAME'] != '') {
$aData['USR_USERNAME'] = $form['USR_USERNAME'];
}
$userData['USR_UID'] = $form['USR_UID'];
if (isset($form['USR_PASSWORD'])) {
if ($form['USR_PASSWORD'] != '') {
if ($form['USR_NEW_PASS'] != $form['USR_CNF_PASS']) {
throw new \Exception('usr_new_pass or usr_cnf_pass. '.\G::LoadTranslation('ID_NEW_PASS_SAME_OLD_PASS'));
}
$aData['USR_PASSWORD'] = $form['USR_PASSWORD'];
$userData['USR_PASSWORD'] = $form['USR_PASSWORD'];
require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "UsersProperties.php");
$oUserProperty = new \UsersProperties();
$aUserProperty = $oUserProperty->loadOrCreateIfNotExists($form['USR_UID'], array('USR_PASSWORD_HISTORY' => serialize(array(md5($form['USR_PASSWORD'])))));
$memKey = 'rbacSession' . session_id();
$memcache = & \PMmemcached::getSingleton(defined('SYS_SYS') ? SYS_SYS : '' );
if (($RBAC->aUserInfo = $memcache->get($memKey)) === false) {
$this->loadUserRolePermission($RBAC->sSystem, $usrLoggedUid);
$this->loadUserRolePermission('PROCESSMAKER', $usrLoggedUid);
$memcache->set($memKey, $RBAC->aUserInfo, \PMmemcached::EIGHT_HOURS);
}
if ($RBAC->aUserInfo['PROCESSMAKER']['ROLE']['ROL_CODE'] == 'PROCESSMAKER_ADMIN') {
@@ -513,35 +516,46 @@ class User
$oUserProperty->update($aUserProperty);
}
}
if (isset($form['USR_FIRSTNAME'])) {
if ($form['USR_FIRSTNAME'] != '') {
$aData['USR_FIRSTNAME'] = $form['USR_FIRSTNAME'];
$userData['USR_FIRSTNAME'] = $form['USR_FIRSTNAME'];
}
}
if (isset($form['USR_LASTNAME'])) {
if ($form['USR_LASTNAME'] != '') {
$aData['USR_LASTNAME'] = $form['USR_LASTNAME'];
$userData['USR_LASTNAME'] = $form['USR_LASTNAME'];
}
}
if (isset($form['USR_EMAIL'])) {
if ($form['USR_EMAIL'] != '') {
if (!filter_var($form['USR_EMAIL'], FILTER_VALIDATE_EMAIL)) {
throw new \Exception('usr_email. '.\G::LoadTranslation('ID_INCORRECT_EMAIL'));
} else {
$aData['USR_EMAIL'] = $form['USR_EMAIL'];
$userData['USR_EMAIL'] = $form['USR_EMAIL'];
}
}
}
if (isset($form['USR_DUE_DATE'])) {
if ($form['USR_DUE_DATE'] != '') {
$dueDate = explode("-", $form['USR_DUE_DATE']);
if (ctype_digit($dueDate[0])) {
if (checkdate($dueDate[1], $dueDate[2], $dueDate[0]) == false) {
throw new \Exception('usr_due_date. '.\G::LoadTranslation('ID_MSG_ERROR_DUE_DATE'));
} else {
$aData['USR_DUE_DATE'] = $form['USR_DUE_DATE'];
$userData['USR_DUE_DATE'] = $form['USR_DUE_DATE'];
}
} else {
throw new \Exception('usr_due_date. '.\G::LoadTranslation('ID_MSG_ERROR_DUE_DATE'));
}
}
$aData['USR_UPDATE_DATE'] = date('Y-m-d H:i:s');
if ($form['USR_STATUS'] != '') {
$aData['USR_STATUS'] = $form['USR_STATUS'];
}
$userData['USR_UPDATE_DATE'] = date('Y-m-d H:i:s');
if (isset($form['USR_STATUS'])) {
if ($form['USR_STATUS'] != '') {
$userData['USR_STATUS'] = $form['USR_STATUS'];
}
}
if (isset($form['USR_ROLE'])) {
if ($form['USR_ROLE'] != '') {
require_once (PATH_RBAC_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "Roles.php");
$oCriteria = new \Criteria('rbac');
@@ -550,61 +564,90 @@ class User
$oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
if ($oDataset->getRow()) {
$aData['USR_ROLE'] = $form['USR_ROLE'];
$userData['USR_ROLE'] = $form['USR_ROLE'];
} else {
throw new \Exception('usr_role. Invalid value for field.');
}
$this->updateUser($aData, $form['USR_ROLE']);
$this->updateUser($userData, $form['USR_ROLE']);
} else {
$this->updateUser($aData);
$this->updateUser($userData);
}
} else {
$user = new \Users();
$dataUser = $user->load($usrUid);
$this->updateUser($userData, $dataUser['USR_ROLE']);
}
if (isset($form['USR_COUNTRY'])) {
if ($form['USR_COUNTRY'] != '') {
$oReplacedBy = \IsoCountryPeer::retrieveByPK($form['USR_COUNTRY']);
if (is_null($oReplacedBy)) {
throw new \Exception('Invalid value for usr_country: '.$form['USR_COUNTRY']);
} else {
$aData['USR_COUNTRY'] = $form['USR_COUNTRY'];
$aData['USR_CITY'] = '';
$aData['USR_LOCATION'] = '';
$userData['USR_COUNTRY'] = $form['USR_COUNTRY'];
$userData['USR_CITY'] = '';
$userData['USR_LOCATION'] = '';
}
}
}
if (isset($form['USR_CITY'])) {
if ($form['USR_CITY'] != '') {
$oCity = \IsoSubdivisionPeer::retrieveByPK($form['USR_COUNTRY'], $form['USR_CITY']);
if (is_null($oCity)) {
throw new \Exception('Invalid value for usr_city: '.$form['USR_CITY']);
} else {
$aData['USR_CITY'] = $form['USR_CITY'];
$userData['USR_CITY'] = $form['USR_CITY'];
}
}
}
if (isset($form['USR_LOCATION'])) {
if ($form['USR_LOCATION'] != '') {
$oLocation = \IsoLocationPeer::retrieveByPK($form['USR_COUNTRY'], $form['USR_LOCATION']);
if (is_null($oLocation)) {
throw new \Exception('Invalid value for usr_location: '.$form['USR_LOCATION']);
} else {
$aData['USR_LOCATION'] = $form['USR_LOCATION'];
$userData['USR_LOCATION'] = $form['USR_LOCATION'];
}
}
$aData['USR_ADDRESS'] = $form['USR_ADDRESS'];
$aData['USR_PHONE'] = $form['USR_PHONE'];
$aData['USR_ZIP_CODE'] = $form['USR_ZIP_CODE'];
$aData['USR_POSITION'] = $form['USR_POSITION'];
}
if (isset($form['USR_ADDRESS'])) {
$userData['USR_ADDRESS'] = $form['USR_ADDRESS'];
}
if (isset($form['USR_PHONE'])) {
$userData['USR_PHONE'] = $form['USR_PHONE'];
}
if (isset($form['USR_FAX'])) {
$userData['USR_FAX'] = $form['USR_FAX'];
}
if (isset($form['USR_CELLULAR'])) {
$userData['USR_CELLULAR'] = $form['USR_CELLULAR'];
}
if (isset($form['USR_ZIP_CODE'])) {
$userData['USR_ZIP_CODE'] = $form['USR_ZIP_CODE'];
}
if (isset($form['USR_POSITION'])) {
$userData['USR_POSITION'] = $form['USR_POSITION'];
}
if (isset($form['USR_ROLE'])) {
if ($form['USR_ROLE'] != '') {
$aData['USR_ROLE'] = $form['USR_ROLE'];
$userData['USR_ROLE'] = $form['USR_ROLE'];
}
}
if (isset($form['USR_REPLACED_BY'])) {
if ($form['USR_REPLACED_BY'] != '') {
$oReplacedBy = \UsersPeer::retrieveByPK($form['USR_REPLACED_BY']);
if (is_null($oReplacedBy)) {
throw new \Exception('usr_replaced_by:'.$form['USR_REPLACED_BY'].' '.\G::LoadTranslation('ID_AUTHENTICATION_SOURCE_INVALID'));
} else {
$aData['USR_REPLACED_BY'] = $form['USR_REPLACED_BY'];
$userData['USR_REPLACED_BY'] = $form['USR_REPLACED_BY'];
}
}
}
if (isset($form['USR_AUTH_USER_DN'])) {
$aData['USR_AUTH_USER_DN'] = $form['USR_AUTH_USER_DN'];
$userData['USR_AUTH_USER_DN'] = $form['USR_AUTH_USER_DN'];
}
require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "Users.php");
$oUser = new \Users();
$oUser->update($aData);
$oUser->update($userData);
$oCriteria = $this->getUser($usrUid);
return $oCriteria;
} catch (\Exception $e) {
@@ -615,11 +658,11 @@ class User
/**
* Authenticate User
*
* @param array $arrayData Data
* @param array $arrayUserData Data
*
* return array Return data of the User updated
*/
public function authenticate($arrayData)
public function authenticate($arrayUserData)
{
try {