From 48d963a033e20aa6f7e791fd75a25fce16c3f2c1 Mon Sep 17 00:00:00 2001 From: Marco Antonio Nina Date: Mon, 22 Sep 2014 09:58:50 -0400 Subject: [PATCH 1/3] BUG-15561 Cambiar el algoritmo o metodo de cifrado... SOLVED - It don't have the functionality. - A function was add in class bootstrap hasPassword. - a function was add in class enterprise. --- gulliver/system/class.bootstrap.php | 28 + rbac/engine/classes/model/RbacUsers.php | 5 +- .../classes/model/map/RbacUsersMapBuilder.php | 115 +- .../engine/classes/model/om/BaseRbacUsers.php | 2557 +++++++++-------- .../classes/model/om/BaseRbacUsersPeer.php | 1228 ++++---- rbac/engine/config/schema.xml | 2 +- workflow/engine/bin/tasks/cliAddons.php | 52 + workflow/engine/classes/class.enterprise.php | 45 +- workflow/engine/classes/class.plugin.php | 3 +- .../engine/classes/class.pluginRegistry.php | 5 +- workflow/engine/classes/class.wsBase.php | 4 +- workflow/engine/classes/class.wsTools.php | 7 + workflow/engine/controllers/installer.php | 2 +- workflow/engine/controllers/main.php | 2 +- workflow/engine/menus/setup.php | 1 + .../engine/methods/enterprise/enterprise.php | 41 +- .../engine/methods/login/authentication.php | 8 + .../engine/methods/login/changePassword.php | 2 +- .../engine/methods/login/retrivePassword.php | 2 +- workflow/engine/methods/users/myInfo_Save.php | 2 +- workflow/engine/methods/users/usersAjax.php | 4 +- workflow/engine/methods/users/users_Save.php | 2 +- .../templates/installer/installer_cards.js | 2 +- 23 files changed, 2182 insertions(+), 1937 deletions(-) diff --git a/gulliver/system/class.bootstrap.php b/gulliver/system/class.bootstrap.php index 16dbce30d..98889dd61 100644 --- a/gulliver/system/class.bootstrap.php +++ b/gulliver/system/class.bootstrap.php @@ -2859,5 +2859,33 @@ class Bootstrap die(); } } + + public function hasPassword($pass, $previous=false) { + $passEncrypt = md5($pass); + try { + require_once PATH_CORE .'methods' . PATH_SEP .'enterprise/enterprise.php'; + $passEncrypt = enterprisePlugin::hashPassword($pass, $previous); + } catch (Exception $e) { + + } + error_log('hasPassword bootstrap ' . $passEncrypt); + + return $passEncrypt; + } + + public function verifyHashPassword ($pass, $userPass) + { + //$verify = Bootstrap::hasPassword($pass); + error_log('contraseña config...'); + if (Bootstrap::hasPassword($pass) == $userPass) { + return true; + } + error_log('contraseña anterior...'); + if (Bootstrap::hasPassword($pass, true) == $userPass) { + return true; + } + return false; + } + } diff --git a/rbac/engine/classes/model/RbacUsers.php b/rbac/engine/classes/model/RbacUsers.php index 2663ce01d..5759c15b8 100755 --- a/rbac/engine/classes/model/RbacUsers.php +++ b/rbac/engine/classes/model/RbacUsers.php @@ -80,10 +80,9 @@ class RbacUsers extends BaseRbacUsers if (is_array($rs) && isset($rs[0]) && is_object($rs[0]) && get_class($rs[0]) == 'RbacUsers') { $aFields = $rs[0]->toArray(BasePeer::TYPE_FIELDNAME); //verify password with md5, and md5 format - //if ( $aFields['USR_PASSWORD'] == md5 ($sPassword ) ) { if (mb_strtoupper($sUsername, 'utf-8') === mb_strtoupper($aFields['USR_USERNAME'], 'utf-8')) { - if ($aFields['USR_PASSWORD'] == md5($sPassword) || - 'md5:' . $aFields['USR_PASSWORD'] === $sPassword) { + error_log('contraseña bbdd... '. $aFields['USR_PASSWORD']); + if( Bootstrap::verifyHashPassword($sPassword, $aFields['USR_PASSWORD']) ) { if ($aFields['USR_DUE_DATE'] < date('Y-m-d')) { return -4; } diff --git a/rbac/engine/classes/model/map/RbacUsersMapBuilder.php b/rbac/engine/classes/model/map/RbacUsersMapBuilder.php index f74e7dafc..6e8ee8276 100755 --- a/rbac/engine/classes/model/map/RbacUsersMapBuilder.php +++ b/rbac/engine/classes/model/map/RbacUsersMapBuilder.php @@ -5,7 +5,7 @@ include_once 'creole/CreoleTypes.php'; /** - * This class adds structure of 'USERS' table to 'rbac' DatabaseMap object. + * This class adds structure of 'RBAC_USERS' table to 'rbac' DatabaseMap object. * * * @@ -14,84 +14,85 @@ include_once 'creole/CreoleTypes.php'; * ORDER BY clause to know whether it needs to apply SQL to make the ORDER BY case-insensitive * (i.e. if it's a text column type). * - * @package rbac-classes-model + * @package workflow.classes.model.map */ -class RbacUsersMapBuilder { +class RbacUsersMapBuilder +{ - /** - * The (dot-path) name of this class - */ - const CLASS_NAME = 'classes.model.map.RbacUsersMapBuilder'; + /** + * The (dot-path) name of this class + */ + const CLASS_NAME = 'classes.model.map.RbacUsersMapBuilder'; - /** - * The database map. - */ - private $dbMap; + /** + * The database map. + */ + private $dbMap; - /** - * Tells us if this DatabaseMapBuilder is built so that we - * don't have to re-build it every time. - * - * @return boolean true if this DatabaseMapBuilder is built, false otherwise. - */ - public function isBuilt() - { - return ($this->dbMap !== null); - } + /** + * Tells us if this DatabaseMapBuilder is built so that we + * don't have to re-build it every time. + * + * @return boolean true if this DatabaseMapBuilder is built, false otherwise. + */ + public function isBuilt() + { + return ($this->dbMap !== null); + } - /** - * Gets the databasemap this map builder built. - * - * @return the databasemap - */ - public function getDatabaseMap() - { - return $this->dbMap; - } + /** + * Gets the databasemap this map builder built. + * + * @return the databasemap + */ + public function getDatabaseMap() + { + return $this->dbMap; + } - /** - * The doBuild() method builds the DatabaseMap - * - * @return void - * @throws PropelException - */ - public function doBuild() - { - $this->dbMap = Propel::getDatabaseMap('rbac'); + /** + * The doBuild() method builds the DatabaseMap + * + * @return void + * @throws PropelException + */ + public function doBuild() + { + $this->dbMap = Propel::getDatabaseMap('rbac'); - $tMap = $this->dbMap->addTable('RBAC_USERS'); - $tMap->setPhpName('RbacUsers'); + $tMap = $this->dbMap->addTable('RBAC_USERS'); + $tMap->setPhpName('RbacUsers'); - $tMap->setUseIdGenerator(false); + $tMap->setUseIdGenerator(false); - $tMap->addPrimaryKey('USR_UID', 'UsrUid', 'string', CreoleTypes::VARCHAR, true, 32); + $tMap->addPrimaryKey('USR_UID', 'UsrUid', 'string', CreoleTypes::VARCHAR, true, 32); - $tMap->addColumn('USR_USERNAME', 'UsrUsername', 'string', CreoleTypes::VARCHAR, true, 100); + $tMap->addColumn('USR_USERNAME', 'UsrUsername', 'string', CreoleTypes::VARCHAR, true, 100); - $tMap->addColumn('USR_PASSWORD', 'UsrPassword', 'string', CreoleTypes::VARCHAR, true, 32); + $tMap->addColumn('USR_PASSWORD', 'UsrPassword', 'string', CreoleTypes::VARCHAR, true, 128); - $tMap->addColumn('USR_FIRSTNAME', 'UsrFirstname', 'string', CreoleTypes::VARCHAR, true, 50); + $tMap->addColumn('USR_FIRSTNAME', 'UsrFirstname', 'string', CreoleTypes::VARCHAR, true, 50); - $tMap->addColumn('USR_LASTNAME', 'UsrLastname', 'string', CreoleTypes::VARCHAR, true, 50); + $tMap->addColumn('USR_LASTNAME', 'UsrLastname', 'string', CreoleTypes::VARCHAR, true, 50); - $tMap->addColumn('USR_EMAIL', 'UsrEmail', 'string', CreoleTypes::VARCHAR, true, 100); + $tMap->addColumn('USR_EMAIL', 'UsrEmail', 'string', CreoleTypes::VARCHAR, true, 100); - $tMap->addColumn('USR_DUE_DATE', 'UsrDueDate', 'int', CreoleTypes::DATE, true, null); + $tMap->addColumn('USR_DUE_DATE', 'UsrDueDate', 'int', CreoleTypes::DATE, true, null); - $tMap->addColumn('USR_CREATE_DATE', 'UsrCreateDate', 'int', CreoleTypes::TIMESTAMP, false, null); + $tMap->addColumn('USR_CREATE_DATE', 'UsrCreateDate', 'int', CreoleTypes::TIMESTAMP, false, null); - $tMap->addColumn('USR_UPDATE_DATE', 'UsrUpdateDate', 'int', CreoleTypes::TIMESTAMP, false, null); + $tMap->addColumn('USR_UPDATE_DATE', 'UsrUpdateDate', 'int', CreoleTypes::TIMESTAMP, false, null); - $tMap->addColumn('USR_STATUS', 'UsrStatus', 'int', CreoleTypes::INTEGER, true, null); + $tMap->addColumn('USR_STATUS', 'UsrStatus', 'int', CreoleTypes::INTEGER, true, null); - $tMap->addColumn('USR_AUTH_TYPE', 'UsrAuthType', 'string', CreoleTypes::VARCHAR, true, 32); + $tMap->addColumn('USR_AUTH_TYPE', 'UsrAuthType', 'string', CreoleTypes::VARCHAR, true, 32); - $tMap->addColumn('UID_AUTH_SOURCE', 'UidAuthSource', 'string', CreoleTypes::VARCHAR, true, 32); + $tMap->addColumn('UID_AUTH_SOURCE', 'UidAuthSource', 'string', CreoleTypes::VARCHAR, true, 32); - $tMap->addColumn('USR_AUTH_USER_DN', 'UsrAuthUserDn', 'string', CreoleTypes::VARCHAR, true, 255); + $tMap->addColumn('USR_AUTH_USER_DN', 'UsrAuthUserDn', 'string', CreoleTypes::VARCHAR, true, 255); - $tMap->addColumn('USR_AUTH_SUPERVISOR_DN', 'UsrAuthSupervisorDn', 'string', CreoleTypes::VARCHAR, true, 255); + $tMap->addColumn('USR_AUTH_SUPERVISOR_DN', 'UsrAuthSupervisorDn', 'string', CreoleTypes::VARCHAR, true, 255); - } // doBuild() + } // doBuild() } // RbacUsersMapBuilder diff --git a/rbac/engine/classes/model/om/BaseRbacUsers.php b/rbac/engine/classes/model/om/BaseRbacUsers.php index 64dd0f2e8..8a8c8c8b8 100755 --- a/rbac/engine/classes/model/om/BaseRbacUsers.php +++ b/rbac/engine/classes/model/om/BaseRbacUsers.php @@ -10,1250 +10,1339 @@ include_once 'propel/util/Criteria.php'; include_once 'classes/model/RbacUsersPeer.php'; /** - * Base class that represents a row from the 'USERS' table. + * Base class that represents a row from the 'RBAC_USERS' table. * * * - * @package rbac-classes-model + * @package workflow.classes.model.om */ -abstract class BaseRbacUsers extends BaseObject implements Persistent { +abstract class BaseRbacUsers extends BaseObject implements Persistent +{ + + /** + * The Peer class. + * Instance provides a convenient way of calling static methods on a class + * that calling code may not be able to identify. + * @var RbacUsersPeer + */ + protected static $peer; + + /** + * The value for the usr_uid field. + * @var string + */ + protected $usr_uid = ''; + + /** + * The value for the usr_username field. + * @var string + */ + protected $usr_username = ''; + + /** + * The value for the usr_password field. + * @var string + */ + protected $usr_password = ''; + + /** + * The value for the usr_firstname field. + * @var string + */ + protected $usr_firstname = ''; + + /** + * The value for the usr_lastname field. + * @var string + */ + protected $usr_lastname = ''; + + /** + * The value for the usr_email field. + * @var string + */ + protected $usr_email = ''; + + /** + * The value for the usr_due_date field. + * @var int + */ + protected $usr_due_date; + + /** + * The value for the usr_create_date field. + * @var int + */ + protected $usr_create_date; + + /** + * The value for the usr_update_date field. + * @var int + */ + protected $usr_update_date; + + /** + * The value for the usr_status field. + * @var int + */ + protected $usr_status = 1; + + /** + * The value for the usr_auth_type field. + * @var string + */ + protected $usr_auth_type = ''; + + /** + * The value for the uid_auth_source field. + * @var string + */ + protected $uid_auth_source = ''; + + /** + * The value for the usr_auth_user_dn field. + * @var string + */ + protected $usr_auth_user_dn = ''; + + /** + * The value for the usr_auth_supervisor_dn field. + * @var string + */ + protected $usr_auth_supervisor_dn = ''; + + /** + * Flag to prevent endless save loop, if this object is referenced + * by another object which falls in this transaction. + * @var boolean + */ + protected $alreadyInSave = false; + + /** + * Flag to prevent endless validation loop, if this object is referenced + * by another object which falls in this transaction. + * @var boolean + */ + protected $alreadyInValidation = false; + + /** + * Get the [usr_uid] column value. + * + * @return string + */ + public function getUsrUid() + { + + return $this->usr_uid; + } + + /** + * Get the [usr_username] column value. + * + * @return string + */ + public function getUsrUsername() + { + + return $this->usr_username; + } + + /** + * Get the [usr_password] column value. + * + * @return string + */ + public function getUsrPassword() + { + + return $this->usr_password; + } + + /** + * Get the [usr_firstname] column value. + * + * @return string + */ + public function getUsrFirstname() + { + + return $this->usr_firstname; + } + + /** + * Get the [usr_lastname] column value. + * + * @return string + */ + public function getUsrLastname() + { + + return $this->usr_lastname; + } + + /** + * Get the [usr_email] column value. + * + * @return string + */ + public function getUsrEmail() + { + + return $this->usr_email; + } + + /** + * Get the [optionally formatted] [usr_due_date] column value. + * + * @param string $format The date/time format string (either date()-style or strftime()-style). + * If format is NULL, then the integer unix timestamp will be returned. + * @return mixed Formatted date/time value as string or integer unix timestamp (if format is NULL). + * @throws PropelException - if unable to convert the date/time to timestamp. + */ + public function getUsrDueDate($format = 'Y-m-d') + { + + if ($this->usr_due_date === null || $this->usr_due_date === '') { + return null; + } elseif (!is_int($this->usr_due_date)) { + // a non-timestamp value was set externally, so we convert it + $ts = strtotime($this->usr_due_date); + if ($ts === -1 || $ts === false) { + throw new PropelException("Unable to parse value of [usr_due_date] as date/time value: " . + var_export($this->usr_due_date, true)); + } + } else { + $ts = $this->usr_due_date; + } + if ($format === null) { + return $ts; + } elseif (strpos($format, '%') !== false) { + return strftime($format, $ts); + } else { + return date($format, $ts); + } + } + + /** + * Get the [optionally formatted] [usr_create_date] column value. + * + * @param string $format The date/time format string (either date()-style or strftime()-style). + * If format is NULL, then the integer unix timestamp will be returned. + * @return mixed Formatted date/time value as string or integer unix timestamp (if format is NULL). + * @throws PropelException - if unable to convert the date/time to timestamp. + */ + public function getUsrCreateDate($format = 'Y-m-d H:i:s') + { + + if ($this->usr_create_date === null || $this->usr_create_date === '') { + return null; + } elseif (!is_int($this->usr_create_date)) { + // a non-timestamp value was set externally, so we convert it + $ts = strtotime($this->usr_create_date); + if ($ts === -1 || $ts === false) { + throw new PropelException("Unable to parse value of [usr_create_date] as date/time value: " . + var_export($this->usr_create_date, true)); + } + } else { + $ts = $this->usr_create_date; + } + if ($format === null) { + return $ts; + } elseif (strpos($format, '%') !== false) { + return strftime($format, $ts); + } else { + return date($format, $ts); + } + } + + /** + * Get the [optionally formatted] [usr_update_date] column value. + * + * @param string $format The date/time format string (either date()-style or strftime()-style). + * If format is NULL, then the integer unix timestamp will be returned. + * @return mixed Formatted date/time value as string or integer unix timestamp (if format is NULL). + * @throws PropelException - if unable to convert the date/time to timestamp. + */ + public function getUsrUpdateDate($format = 'Y-m-d H:i:s') + { + + if ($this->usr_update_date === null || $this->usr_update_date === '') { + return null; + } elseif (!is_int($this->usr_update_date)) { + // a non-timestamp value was set externally, so we convert it + $ts = strtotime($this->usr_update_date); + if ($ts === -1 || $ts === false) { + throw new PropelException("Unable to parse value of [usr_update_date] as date/time value: " . + var_export($this->usr_update_date, true)); + } + } else { + $ts = $this->usr_update_date; + } + if ($format === null) { + return $ts; + } elseif (strpos($format, '%') !== false) { + return strftime($format, $ts); + } else { + return date($format, $ts); + } + } + + /** + * Get the [usr_status] column value. + * + * @return int + */ + public function getUsrStatus() + { + + return $this->usr_status; + } + + /** + * Get the [usr_auth_type] column value. + * + * @return string + */ + public function getUsrAuthType() + { + + return $this->usr_auth_type; + } + + /** + * Get the [uid_auth_source] column value. + * + * @return string + */ + public function getUidAuthSource() + { + + return $this->uid_auth_source; + } + + /** + * Get the [usr_auth_user_dn] column value. + * + * @return string + */ + public function getUsrAuthUserDn() + { + + return $this->usr_auth_user_dn; + } + + /** + * Get the [usr_auth_supervisor_dn] column value. + * + * @return string + */ + public function getUsrAuthSupervisorDn() + { + + return $this->usr_auth_supervisor_dn; + } + + /** + * Set the value of [usr_uid] column. + * + * @param string $v new value + * @return void + */ + public function setUsrUid($v) + { + + // Since the native PHP type for this column is string, + // we will cast the input to a string (if it is not). + if ($v !== null && !is_string($v)) { + $v = (string) $v; + } + + if ($this->usr_uid !== $v || $v === '') { + $this->usr_uid = $v; + $this->modifiedColumns[] = RbacUsersPeer::USR_UID; + } + + } // setUsrUid() + + /** + * Set the value of [usr_username] column. + * + * @param string $v new value + * @return void + */ + public function setUsrUsername($v) + { + + // Since the native PHP type for this column is string, + // we will cast the input to a string (if it is not). + if ($v !== null && !is_string($v)) { + $v = (string) $v; + } + + if ($this->usr_username !== $v || $v === '') { + $this->usr_username = $v; + $this->modifiedColumns[] = RbacUsersPeer::USR_USERNAME; + } + + } // setUsrUsername() + + /** + * Set the value of [usr_password] column. + * + * @param string $v new value + * @return void + */ + public function setUsrPassword($v) + { + + // Since the native PHP type for this column is string, + // we will cast the input to a string (if it is not). + if ($v !== null && !is_string($v)) { + $v = (string) $v; + } + + if ($this->usr_password !== $v || $v === '') { + $this->usr_password = $v; + $this->modifiedColumns[] = RbacUsersPeer::USR_PASSWORD; + } + + } // setUsrPassword() + + /** + * Set the value of [usr_firstname] column. + * + * @param string $v new value + * @return void + */ + public function setUsrFirstname($v) + { + + // Since the native PHP type for this column is string, + // we will cast the input to a string (if it is not). + if ($v !== null && !is_string($v)) { + $v = (string) $v; + } + + if ($this->usr_firstname !== $v || $v === '') { + $this->usr_firstname = $v; + $this->modifiedColumns[] = RbacUsersPeer::USR_FIRSTNAME; + } + + } // setUsrFirstname() + + /** + * Set the value of [usr_lastname] column. + * + * @param string $v new value + * @return void + */ + public function setUsrLastname($v) + { + + // Since the native PHP type for this column is string, + // we will cast the input to a string (if it is not). + if ($v !== null && !is_string($v)) { + $v = (string) $v; + } + + if ($this->usr_lastname !== $v || $v === '') { + $this->usr_lastname = $v; + $this->modifiedColumns[] = RbacUsersPeer::USR_LASTNAME; + } + + } // setUsrLastname() + + /** + * Set the value of [usr_email] column. + * + * @param string $v new value + * @return void + */ + public function setUsrEmail($v) + { + + // Since the native PHP type for this column is string, + // we will cast the input to a string (if it is not). + if ($v !== null && !is_string($v)) { + $v = (string) $v; + } + + if ($this->usr_email !== $v || $v === '') { + $this->usr_email = $v; + $this->modifiedColumns[] = RbacUsersPeer::USR_EMAIL; + } + + } // setUsrEmail() + + /** + * Set the value of [usr_due_date] column. + * + * @param int $v new value + * @return void + */ + public function setUsrDueDate($v) + { + + if ($v !== null && !is_int($v)) { + $ts = strtotime($v); + //Date/time accepts null values + if ($v == '') { + $ts = null; + } + if ($ts === -1 || $ts === false) { + throw new PropelException("Unable to parse date/time value for [usr_due_date] from input: " . + var_export($v, true)); + } + } else { + $ts = $v; + } + if ($this->usr_due_date !== $ts) { + $this->usr_due_date = $ts; + $this->modifiedColumns[] = RbacUsersPeer::USR_DUE_DATE; + } + + } // setUsrDueDate() + + /** + * Set the value of [usr_create_date] column. + * + * @param int $v new value + * @return void + */ + public function setUsrCreateDate($v) + { + + if ($v !== null && !is_int($v)) { + $ts = strtotime($v); + //Date/time accepts null values + if ($v == '') { + $ts = null; + } + if ($ts === -1 || $ts === false) { + throw new PropelException("Unable to parse date/time value for [usr_create_date] from input: " . + var_export($v, true)); + } + } else { + $ts = $v; + } + if ($this->usr_create_date !== $ts) { + $this->usr_create_date = $ts; + $this->modifiedColumns[] = RbacUsersPeer::USR_CREATE_DATE; + } + + } // setUsrCreateDate() + + /** + * Set the value of [usr_update_date] column. + * + * @param int $v new value + * @return void + */ + public function setUsrUpdateDate($v) + { + + if ($v !== null && !is_int($v)) { + $ts = strtotime($v); + //Date/time accepts null values + if ($v == '') { + $ts = null; + } + if ($ts === -1 || $ts === false) { + throw new PropelException("Unable to parse date/time value for [usr_update_date] from input: " . + var_export($v, true)); + } + } else { + $ts = $v; + } + if ($this->usr_update_date !== $ts) { + $this->usr_update_date = $ts; + $this->modifiedColumns[] = RbacUsersPeer::USR_UPDATE_DATE; + } + + } // setUsrUpdateDate() + + /** + * Set the value of [usr_status] column. + * + * @param int $v new value + * @return void + */ + public function setUsrStatus($v) + { + + // Since the native PHP type for this column is integer, + // we will cast the input value to an int (if it is not). + if ($v !== null && !is_int($v) && is_numeric($v)) { + $v = (int) $v; + } + + if ($this->usr_status !== $v || $v === 1) { + $this->usr_status = $v; + $this->modifiedColumns[] = RbacUsersPeer::USR_STATUS; + } + + } // setUsrStatus() + + /** + * Set the value of [usr_auth_type] column. + * + * @param string $v new value + * @return void + */ + public function setUsrAuthType($v) + { + + // Since the native PHP type for this column is string, + // we will cast the input to a string (if it is not). + if ($v !== null && !is_string($v)) { + $v = (string) $v; + } + + if ($this->usr_auth_type !== $v || $v === '') { + $this->usr_auth_type = $v; + $this->modifiedColumns[] = RbacUsersPeer::USR_AUTH_TYPE; + } + + } // setUsrAuthType() + + /** + * Set the value of [uid_auth_source] column. + * + * @param string $v new value + * @return void + */ + public function setUidAuthSource($v) + { + + // Since the native PHP type for this column is string, + // we will cast the input to a string (if it is not). + if ($v !== null && !is_string($v)) { + $v = (string) $v; + } + + if ($this->uid_auth_source !== $v || $v === '') { + $this->uid_auth_source = $v; + $this->modifiedColumns[] = RbacUsersPeer::UID_AUTH_SOURCE; + } + + } // setUidAuthSource() + + /** + * Set the value of [usr_auth_user_dn] column. + * + * @param string $v new value + * @return void + */ + public function setUsrAuthUserDn($v) + { + + // Since the native PHP type for this column is string, + // we will cast the input to a string (if it is not). + if ($v !== null && !is_string($v)) { + $v = (string) $v; + } + + if ($this->usr_auth_user_dn !== $v || $v === '') { + $this->usr_auth_user_dn = $v; + $this->modifiedColumns[] = RbacUsersPeer::USR_AUTH_USER_DN; + } + + } // setUsrAuthUserDn() + + /** + * Set the value of [usr_auth_supervisor_dn] column. + * + * @param string $v new value + * @return void + */ + public function setUsrAuthSupervisorDn($v) + { + + // Since the native PHP type for this column is string, + // we will cast the input to a string (if it is not). + if ($v !== null && !is_string($v)) { + $v = (string) $v; + } + + if ($this->usr_auth_supervisor_dn !== $v || $v === '') { + $this->usr_auth_supervisor_dn = $v; + $this->modifiedColumns[] = RbacUsersPeer::USR_AUTH_SUPERVISOR_DN; + } + + } // setUsrAuthSupervisorDn() + + /** + * Hydrates (populates) the object variables with values from the database resultset. + * + * An offset (1-based "start column") is specified so that objects can be hydrated + * with a subset of the columns in the resultset rows. This is needed, for example, + * for results of JOIN queries where the resultset row includes columns from two or + * more tables. + * + * @param ResultSet $rs The ResultSet class with cursor advanced to desired record pos. + * @param int $startcol 1-based offset column which indicates which restultset column to start with. + * @return int next starting column + * @throws PropelException - Any caught Exception will be rewrapped as a PropelException. + */ + public function hydrate(ResultSet $rs, $startcol = 1) + { + try { + + $this->usr_uid = $rs->getString($startcol + 0); + + $this->usr_username = $rs->getString($startcol + 1); + + $this->usr_password = $rs->getString($startcol + 2); + + $this->usr_firstname = $rs->getString($startcol + 3); + + $this->usr_lastname = $rs->getString($startcol + 4); + + $this->usr_email = $rs->getString($startcol + 5); + + $this->usr_due_date = $rs->getDate($startcol + 6, null); + + $this->usr_create_date = $rs->getTimestamp($startcol + 7, null); + + $this->usr_update_date = $rs->getTimestamp($startcol + 8, null); + + $this->usr_status = $rs->getInt($startcol + 9); + + $this->usr_auth_type = $rs->getString($startcol + 10); + + $this->uid_auth_source = $rs->getString($startcol + 11); + + $this->usr_auth_user_dn = $rs->getString($startcol + 12); + + $this->usr_auth_supervisor_dn = $rs->getString($startcol + 13); + + $this->resetModified(); + + $this->setNew(false); + + // FIXME - using NUM_COLUMNS may be clearer. + return $startcol + 14; // 14 = RbacUsersPeer::NUM_COLUMNS - RbacUsersPeer::NUM_LAZY_LOAD_COLUMNS). + + } catch (Exception $e) { + throw new PropelException("Error populating RbacUsers object", $e); + } + } + + /** + * Removes this object from datastore and sets delete attribute. + * + * @param Connection $con + * @return void + * @throws PropelException + * @see BaseObject::setDeleted() + * @see BaseObject::isDeleted() + */ + public function delete($con = null) + { + if ($this->isDeleted()) { + throw new PropelException("This object has already been deleted."); + } + + if ($con === null) { + $con = Propel::getConnection(RbacUsersPeer::DATABASE_NAME); + } + + try { + $con->begin(); + RbacUsersPeer::doDelete($this, $con); + $this->setDeleted(true); + $con->commit(); + } catch (PropelException $e) { + $con->rollback(); + throw $e; + } + } + + /** + * Stores the object in the database. If the object is new, + * it inserts it; otherwise an update is performed. This method + * wraps the doSave() worker method in a transaction. + * + * @param Connection $con + * @return int The number of rows affected by this insert/update + * @throws PropelException + * @see doSave() + */ + public function save($con = null) + { + if ($this->isDeleted()) { + throw new PropelException("You cannot save an object that has been deleted."); + } + + if ($con === null) { + $con = Propel::getConnection(RbacUsersPeer::DATABASE_NAME); + } + + try { + $con->begin(); + $affectedRows = $this->doSave($con); + $con->commit(); + return $affectedRows; + } catch (PropelException $e) { + $con->rollback(); + throw $e; + } + } + + /** + * Stores the object in the database. + * + * If the object is new, it inserts it; otherwise an update is performed. + * All related objects are also updated in this method. + * + * @param Connection $con + * @return int The number of rows affected by this insert/update and any referring + * @throws PropelException + * @see save() + */ + protected function doSave($con) + { + $affectedRows = 0; // initialize var to track total num of affected rows + if (!$this->alreadyInSave) { + $this->alreadyInSave = true; + + + // If this object has been modified, then save it to the database. + if ($this->isModified()) { + if ($this->isNew()) { + $pk = RbacUsersPeer::doInsert($this, $con); + $affectedRows += 1; // we are assuming that there is only 1 row per doInsert() which + // should always be true here (even though technically + // BasePeer::doInsert() can insert multiple rows). + + $this->setNew(false); + } else { + $affectedRows += RbacUsersPeer::doUpdate($this, $con); + } + $this->resetModified(); // [HL] After being saved an object is no longer 'modified' + } + + $this->alreadyInSave = false; + } + return $affectedRows; + } // doSave() + + /** + * Array of ValidationFailed objects. + * @var array ValidationFailed[] + */ + protected $validationFailures = array(); + + /** + * Gets any ValidationFailed objects that resulted from last call to validate(). + * + * + * @return array ValidationFailed[] + * @see validate() + */ + public function getValidationFailures() + { + return $this->validationFailures; + } + + /** + * Validates the objects modified field values and all objects related to this table. + * + * If $columns is either a column name or an array of column names + * only those columns are validated. + * + * @param mixed $columns Column name or an array of column names. + * @return boolean Whether all columns pass validation. + * @see doValidate() + * @see getValidationFailures() + */ + public function validate($columns = null) + { + $res = $this->doValidate($columns); + if ($res === true) { + $this->validationFailures = array(); + return true; + } else { + $this->validationFailures = $res; + return false; + } + } + + /** + * This function performs the validation work for complex object models. + * + * In addition to checking the current object, all related objects will + * also be validated. If all pass then true is returned; otherwise + * an aggreagated array of ValidationFailed objects will be returned. + * + * @param array $columns Array of column names to validate. + * @return mixed true if all validations pass; + array of ValidationFailed objects otherwise. + */ + protected function doValidate($columns = null) + { + if (!$this->alreadyInValidation) { + $this->alreadyInValidation = true; + $retval = null; + + $failureMap = array(); + + + if (($retval = RbacUsersPeer::doValidate($this, $columns)) !== true) { + $failureMap = array_merge($failureMap, $retval); + } + + + + $this->alreadyInValidation = false; + } + + return (!empty($failureMap) ? $failureMap : true); + } + + /** + * Retrieves a field from the object by name passed in as a string. + * + * @param string $name name + * @param string $type The type of fieldname the $name is of: + * one of the class type constants TYPE_PHPNAME, + * TYPE_COLNAME, TYPE_FIELDNAME, TYPE_NUM + * @return mixed Value of field. + */ + public function getByName($name, $type = BasePeer::TYPE_PHPNAME) + { + $pos = RbacUsersPeer::translateFieldName($name, $type, BasePeer::TYPE_NUM); + return $this->getByPosition($pos); + } + + /** + * Retrieves a field from the object by Position as specified in the xml schema. + * Zero-based. + * + * @param int $pos position in xml schema + * @return mixed Value of field at $pos + */ + public function getByPosition($pos) + { + switch($pos) { + case 0: + return $this->getUsrUid(); + break; + case 1: + return $this->getUsrUsername(); + break; + case 2: + return $this->getUsrPassword(); + break; + case 3: + return $this->getUsrFirstname(); + break; + case 4: + return $this->getUsrLastname(); + break; + case 5: + return $this->getUsrEmail(); + break; + case 6: + return $this->getUsrDueDate(); + break; + case 7: + return $this->getUsrCreateDate(); + break; + case 8: + return $this->getUsrUpdateDate(); + break; + case 9: + return $this->getUsrStatus(); + break; + case 10: + return $this->getUsrAuthType(); + break; + case 11: + return $this->getUidAuthSource(); + break; + case 12: + return $this->getUsrAuthUserDn(); + break; + case 13: + return $this->getUsrAuthSupervisorDn(); + break; + default: + return null; + break; + } // switch() + } + + /** + * Exports the object as an array. + * + * You can specify the key type of the array by passing one of the class + * type constants. + * + * @param string $keyType One of the class type constants TYPE_PHPNAME, + * TYPE_COLNAME, TYPE_FIELDNAME, TYPE_NUM + * @return an associative array containing the field names (as keys) and field values + */ + public function toArray($keyType = BasePeer::TYPE_PHPNAME) + { + $keys = RbacUsersPeer::getFieldNames($keyType); + $result = array( + $keys[0] => $this->getUsrUid(), + $keys[1] => $this->getUsrUsername(), + $keys[2] => $this->getUsrPassword(), + $keys[3] => $this->getUsrFirstname(), + $keys[4] => $this->getUsrLastname(), + $keys[5] => $this->getUsrEmail(), + $keys[6] => $this->getUsrDueDate(), + $keys[7] => $this->getUsrCreateDate(), + $keys[8] => $this->getUsrUpdateDate(), + $keys[9] => $this->getUsrStatus(), + $keys[10] => $this->getUsrAuthType(), + $keys[11] => $this->getUidAuthSource(), + $keys[12] => $this->getUsrAuthUserDn(), + $keys[13] => $this->getUsrAuthSupervisorDn(), + ); + return $result; + } + + /** + * Sets a field from the object by name passed in as a string. + * + * @param string $name peer name + * @param mixed $value field value + * @param string $type The type of fieldname the $name is of: + * one of the class type constants TYPE_PHPNAME, + * TYPE_COLNAME, TYPE_FIELDNAME, TYPE_NUM + * @return void + */ + public function setByName($name, $value, $type = BasePeer::TYPE_PHPNAME) + { + $pos = RbacUsersPeer::translateFieldName($name, $type, BasePeer::TYPE_NUM); + return $this->setByPosition($pos, $value); + } + + /** + * Sets a field from the object by Position as specified in the xml schema. + * Zero-based. + * + * @param int $pos position in xml schema + * @param mixed $value field value + * @return void + */ + public function setByPosition($pos, $value) + { + switch($pos) { + case 0: + $this->setUsrUid($value); + break; + case 1: + $this->setUsrUsername($value); + break; + case 2: + $this->setUsrPassword($value); + break; + case 3: + $this->setUsrFirstname($value); + break; + case 4: + $this->setUsrLastname($value); + break; + case 5: + $this->setUsrEmail($value); + break; + case 6: + $this->setUsrDueDate($value); + break; + case 7: + $this->setUsrCreateDate($value); + break; + case 8: + $this->setUsrUpdateDate($value); + break; + case 9: + $this->setUsrStatus($value); + break; + case 10: + $this->setUsrAuthType($value); + break; + case 11: + $this->setUidAuthSource($value); + break; + case 12: + $this->setUsrAuthUserDn($value); + break; + case 13: + $this->setUsrAuthSupervisorDn($value); + break; + } // switch() + } + + /** + * Populates the object using an array. + * + * This is particularly useful when populating an object from one of the + * request arrays (e.g. $_POST). This method goes through the column + * names, checking to see whether a matching key exists in populated + * array. If so the setByName() method is called for that column. + * + * You can specify the key type of the array by additionally passing one + * of the class type constants TYPE_PHPNAME, TYPE_COLNAME, TYPE_FIELDNAME, + * TYPE_NUM. The default key type is the column's phpname (e.g. 'authorId') + * + * @param array $arr An array to populate the object from. + * @param string $keyType The type of keys the array uses. + * @return void + */ + public function fromArray($arr, $keyType = BasePeer::TYPE_PHPNAME) + { + $keys = RbacUsersPeer::getFieldNames($keyType); + + if (array_key_exists($keys[0], $arr)) { + $this->setUsrUid($arr[$keys[0]]); + } + + if (array_key_exists($keys[1], $arr)) { + $this->setUsrUsername($arr[$keys[1]]); + } + + if (array_key_exists($keys[2], $arr)) { + $this->setUsrPassword($arr[$keys[2]]); + } + + if (array_key_exists($keys[3], $arr)) { + $this->setUsrFirstname($arr[$keys[3]]); + } + + if (array_key_exists($keys[4], $arr)) { + $this->setUsrLastname($arr[$keys[4]]); + } + + if (array_key_exists($keys[5], $arr)) { + $this->setUsrEmail($arr[$keys[5]]); + } + + if (array_key_exists($keys[6], $arr)) { + $this->setUsrDueDate($arr[$keys[6]]); + } + + if (array_key_exists($keys[7], $arr)) { + $this->setUsrCreateDate($arr[$keys[7]]); + } + + if (array_key_exists($keys[8], $arr)) { + $this->setUsrUpdateDate($arr[$keys[8]]); + } + + if (array_key_exists($keys[9], $arr)) { + $this->setUsrStatus($arr[$keys[9]]); + } + + if (array_key_exists($keys[10], $arr)) { + $this->setUsrAuthType($arr[$keys[10]]); + } + + if (array_key_exists($keys[11], $arr)) { + $this->setUidAuthSource($arr[$keys[11]]); + } + + if (array_key_exists($keys[12], $arr)) { + $this->setUsrAuthUserDn($arr[$keys[12]]); + } + + if (array_key_exists($keys[13], $arr)) { + $this->setUsrAuthSupervisorDn($arr[$keys[13]]); + } + + } + + /** + * Build a Criteria object containing the values of all modified columns in this object. + * + * @return Criteria The Criteria object containing all modified values. + */ + public function buildCriteria() + { + $criteria = new Criteria(RbacUsersPeer::DATABASE_NAME); + + if ($this->isColumnModified(RbacUsersPeer::USR_UID)) { + $criteria->add(RbacUsersPeer::USR_UID, $this->usr_uid); + } + + if ($this->isColumnModified(RbacUsersPeer::USR_USERNAME)) { + $criteria->add(RbacUsersPeer::USR_USERNAME, $this->usr_username); + } + + if ($this->isColumnModified(RbacUsersPeer::USR_PASSWORD)) { + $criteria->add(RbacUsersPeer::USR_PASSWORD, $this->usr_password); + } + + if ($this->isColumnModified(RbacUsersPeer::USR_FIRSTNAME)) { + $criteria->add(RbacUsersPeer::USR_FIRSTNAME, $this->usr_firstname); + } + + if ($this->isColumnModified(RbacUsersPeer::USR_LASTNAME)) { + $criteria->add(RbacUsersPeer::USR_LASTNAME, $this->usr_lastname); + } + + if ($this->isColumnModified(RbacUsersPeer::USR_EMAIL)) { + $criteria->add(RbacUsersPeer::USR_EMAIL, $this->usr_email); + } + + if ($this->isColumnModified(RbacUsersPeer::USR_DUE_DATE)) { + $criteria->add(RbacUsersPeer::USR_DUE_DATE, $this->usr_due_date); + } + + if ($this->isColumnModified(RbacUsersPeer::USR_CREATE_DATE)) { + $criteria->add(RbacUsersPeer::USR_CREATE_DATE, $this->usr_create_date); + } + if ($this->isColumnModified(RbacUsersPeer::USR_UPDATE_DATE)) { + $criteria->add(RbacUsersPeer::USR_UPDATE_DATE, $this->usr_update_date); + } - /** - * The Peer class. - * Instance provides a convenient way of calling static methods on a class - * that calling code may not be able to identify. - * @var RbacUsersPeer - */ - protected static $peer; + if ($this->isColumnModified(RbacUsersPeer::USR_STATUS)) { + $criteria->add(RbacUsersPeer::USR_STATUS, $this->usr_status); + } + if ($this->isColumnModified(RbacUsersPeer::USR_AUTH_TYPE)) { + $criteria->add(RbacUsersPeer::USR_AUTH_TYPE, $this->usr_auth_type); + } - /** - * The value for the usr_uid field. - * @var string - */ - protected $usr_uid = ''; + if ($this->isColumnModified(RbacUsersPeer::UID_AUTH_SOURCE)) { + $criteria->add(RbacUsersPeer::UID_AUTH_SOURCE, $this->uid_auth_source); + } + if ($this->isColumnModified(RbacUsersPeer::USR_AUTH_USER_DN)) { + $criteria->add(RbacUsersPeer::USR_AUTH_USER_DN, $this->usr_auth_user_dn); + } - /** - * The value for the usr_username field. - * @var string - */ - protected $usr_username = ''; + if ($this->isColumnModified(RbacUsersPeer::USR_AUTH_SUPERVISOR_DN)) { + $criteria->add(RbacUsersPeer::USR_AUTH_SUPERVISOR_DN, $this->usr_auth_supervisor_dn); + } - /** - * The value for the usr_password field. - * @var string - */ - protected $usr_password = ''; + return $criteria; + } + + /** + * Builds a Criteria object containing the primary key for this object. + * + * Unlike buildCriteria() this method includes the primary key values regardless + * of whether or not they have been modified. + * + * @return Criteria The Criteria object containing value(s) for primary key(s). + */ + public function buildPkeyCriteria() + { + $criteria = new Criteria(RbacUsersPeer::DATABASE_NAME); + + $criteria->add(RbacUsersPeer::USR_UID, $this->usr_uid); + + return $criteria; + } + + /** + * Returns the primary key for this object (row). + * @return string + */ + public function getPrimaryKey() + { + return $this->getUsrUid(); + } + + /** + * Generic method to set the primary key (usr_uid column). + * + * @param string $key Primary key. + * @return void + */ + public function setPrimaryKey($key) + { + $this->setUsrUid($key); + } + + /** + * Sets contents of passed object to values from current object. + * + * If desired, this method can also make copies of all associated (fkey referrers) + * objects. + * + * @param object $copyObj An object of RbacUsers (or compatible) type. + * @param boolean $deepCopy Whether to also copy all rows that refer (by fkey) to the current row. + * @throws PropelException + */ + public function copyInto($copyObj, $deepCopy = false) + { + + $copyObj->setUsrUsername($this->usr_username); + + $copyObj->setUsrPassword($this->usr_password); + + $copyObj->setUsrFirstname($this->usr_firstname); + + $copyObj->setUsrLastname($this->usr_lastname); + + $copyObj->setUsrEmail($this->usr_email); + + $copyObj->setUsrDueDate($this->usr_due_date); + + $copyObj->setUsrCreateDate($this->usr_create_date); + + $copyObj->setUsrUpdateDate($this->usr_update_date); + + $copyObj->setUsrStatus($this->usr_status); + + $copyObj->setUsrAuthType($this->usr_auth_type); + + $copyObj->setUidAuthSource($this->uid_auth_source); + + $copyObj->setUsrAuthUserDn($this->usr_auth_user_dn); + + $copyObj->setUsrAuthSupervisorDn($this->usr_auth_supervisor_dn); + + + $copyObj->setNew(true); + + $copyObj->setUsrUid(''); // this is a pkey column, so set to default value + + } + + /** + * Makes a copy of this object that will be inserted as a new row in table when saved. + * It creates a new object filling in the simple attributes, but skipping any primary + * keys that are defined for the table. + * + * If desired, this method can also make copies of all associated (fkey referrers) + * objects. + * + * @param boolean $deepCopy Whether to also copy all rows that refer (by fkey) to the current row. + * @return RbacUsers Clone of current object. + * @throws PropelException + */ + public function copy($deepCopy = false) + { + // we use get_class(), because this might be a subclass + $clazz = get_class($this); + $copyObj = new $clazz(); + $this->copyInto($copyObj, $deepCopy); + return $copyObj; + } + + /** + * Returns a peer instance associated with this om. + * + * Since Peer classes are not to have any instance attributes, this method returns the + * same instance for all member of this class. The method could therefore + * be static, but this would prevent one from overriding the behavior. + * + * @return RbacUsersPeer + */ + public function getPeer() + { + if (self::$peer === null) { + self::$peer = new RbacUsersPeer(); + } + return self::$peer; + } +} - - /** - * The value for the usr_firstname field. - * @var string - */ - protected $usr_firstname = ''; - - - /** - * The value for the usr_lastname field. - * @var string - */ - protected $usr_lastname = ''; - - - /** - * The value for the usr_email field. - * @var string - */ - protected $usr_email = ''; - - - /** - * The value for the usr_due_date field. - * @var int - */ - protected $usr_due_date; - - - /** - * The value for the usr_create_date field. - * @var int - */ - protected $usr_create_date; - - - /** - * The value for the usr_update_date field. - * @var int - */ - protected $usr_update_date; - - - /** - * The value for the usr_status field. - * @var int - */ - protected $usr_status = 1; - - - /** - * The value for the usr_auth_type field. - * @var string - */ - protected $usr_auth_type = ''; - - - /** - * The value for the uid_auth_source field. - * @var string - */ - protected $uid_auth_source = ''; - - - /** - * The value for the usr_auth_user_dn field. - * @var string - */ - protected $usr_auth_user_dn = ''; - - - /** - * The value for the usr_auth_supervisor_dn field. - * @var string - */ - protected $usr_auth_supervisor_dn = ''; - - /** - * Flag to prevent endless save loop, if this object is referenced - * by another object which falls in this transaction. - * @var boolean - */ - protected $alreadyInSave = false; - - /** - * Flag to prevent endless validation loop, if this object is referenced - * by another object which falls in this transaction. - * @var boolean - */ - protected $alreadyInValidation = false; - - /** - * Get the [usr_uid] column value. - * - * @return string - */ - public function getUsrUid() - { - - return $this->usr_uid; - } - - /** - * Get the [usr_username] column value. - * - * @return string - */ - public function getUsrUsername() - { - - return $this->usr_username; - } - - /** - * Get the [usr_password] column value. - * - * @return string - */ - public function getUsrPassword() - { - - return $this->usr_password; - } - - /** - * Get the [usr_firstname] column value. - * - * @return string - */ - public function getUsrFirstname() - { - - return $this->usr_firstname; - } - - /** - * Get the [usr_lastname] column value. - * - * @return string - */ - public function getUsrLastname() - { - - return $this->usr_lastname; - } - - /** - * Get the [usr_email] column value. - * - * @return string - */ - public function getUsrEmail() - { - - return $this->usr_email; - } - - /** - * Get the [optionally formatted] [usr_due_date] column value. - * - * @param string $format The date/time format string (either date()-style or strftime()-style). - * If format is NULL, then the integer unix timestamp will be returned. - * @return mixed Formatted date/time value as string or integer unix timestamp (if format is NULL). - * @throws PropelException - if unable to convert the date/time to timestamp. - */ - public function getUsrDueDate($format = 'Y-m-d') - { - - if ($this->usr_due_date === null || $this->usr_due_date === '') { - return null; - } elseif (!is_int($this->usr_due_date)) { - // a non-timestamp value was set externally, so we convert it - $ts = strtotime($this->usr_due_date); - if ($ts === -1 || $ts === false) { // in PHP 5.1 return value changes to FALSE - throw new PropelException("Unable to parse value of [usr_due_date] as date/time value: " . var_export($this->usr_due_date, true)); - } - } else { - $ts = $this->usr_due_date; - } - if ($format === null) { - return $ts; - } elseif (strpos($format, '%') !== false) { - return strftime($format, $ts); - } else { - return date($format, $ts); - } - } - - /** - * Get the [optionally formatted] [usr_create_date] column value. - * - * @param string $format The date/time format string (either date()-style or strftime()-style). - * If format is NULL, then the integer unix timestamp will be returned. - * @return mixed Formatted date/time value as string or integer unix timestamp (if format is NULL). - * @throws PropelException - if unable to convert the date/time to timestamp. - */ - public function getUsrCreateDate($format = 'Y-m-d H:i:s') - { - - if ($this->usr_create_date === null || $this->usr_create_date === '') { - return null; - } elseif (!is_int($this->usr_create_date)) { - // a non-timestamp value was set externally, so we convert it - $ts = strtotime($this->usr_create_date); - if ($ts === -1 || $ts === false) { // in PHP 5.1 return value changes to FALSE - throw new PropelException("Unable to parse value of [usr_create_date] as date/time value: " . var_export($this->usr_create_date, true)); - } - } else { - $ts = $this->usr_create_date; - } - if ($format === null) { - return $ts; - } elseif (strpos($format, '%') !== false) { - return strftime($format, $ts); - } else { - return date($format, $ts); - } - } - - /** - * Get the [optionally formatted] [usr_update_date] column value. - * - * @param string $format The date/time format string (either date()-style or strftime()-style). - * If format is NULL, then the integer unix timestamp will be returned. - * @return mixed Formatted date/time value as string or integer unix timestamp (if format is NULL). - * @throws PropelException - if unable to convert the date/time to timestamp. - */ - public function getUsrUpdateDate($format = 'Y-m-d H:i:s') - { - - if ($this->usr_update_date === null || $this->usr_update_date === '') { - return null; - } elseif (!is_int($this->usr_update_date)) { - // a non-timestamp value was set externally, so we convert it - $ts = strtotime($this->usr_update_date); - if ($ts === -1 || $ts === false) { // in PHP 5.1 return value changes to FALSE - throw new PropelException("Unable to parse value of [usr_update_date] as date/time value: " . var_export($this->usr_update_date, true)); - } - } else { - $ts = $this->usr_update_date; - } - if ($format === null) { - return $ts; - } elseif (strpos($format, '%') !== false) { - return strftime($format, $ts); - } else { - return date($format, $ts); - } - } - - /** - * Get the [usr_status] column value. - * - * @return int - */ - public function getUsrStatus() - { - - return $this->usr_status; - } - - /** - * Get the [usr_auth_type] column value. - * - * @return string - */ - public function getUsrAuthType() - { - - return $this->usr_auth_type; - } - - /** - * Get the [uid_auth_source] column value. - * - * @return string - */ - public function getUidAuthSource() - { - - return $this->uid_auth_source; - } - - /** - * Get the [usr_auth_user_dn] column value. - * - * @return string - */ - public function getUsrAuthUserDn() - { - - return $this->usr_auth_user_dn; - } - - /** - * Get the [usr_auth_supervisor_dn] column value. - * - * @return string - */ - public function getUsrAuthSupervisorDn() - { - - return $this->usr_auth_supervisor_dn; - } - - /** - * Set the value of [usr_uid] column. - * - * @param string $v new value - * @return void - */ - public function setUsrUid($v) - { - - // Since the native PHP type for this column is string, - // we will cast the input to a string (if it is not). - if ($v !== null && !is_string($v)) { - $v = (string) $v; - } - - if ($this->usr_uid !== $v || $v === '') { - $this->usr_uid = $v; - $this->modifiedColumns[] = RbacUsersPeer::USR_UID; - } - - } // setUsrUid() - - /** - * Set the value of [usr_username] column. - * - * @param string $v new value - * @return void - */ - public function setUsrUsername($v) - { - - // Since the native PHP type for this column is string, - // we will cast the input to a string (if it is not). - if ($v !== null && !is_string($v)) { - $v = (string) $v; - } - - if ($this->usr_username !== $v || $v === '') { - $this->usr_username = $v; - $this->modifiedColumns[] = RbacUsersPeer::USR_USERNAME; - } - - } // setUsrUsername() - - /** - * Set the value of [usr_password] column. - * - * @param string $v new value - * @return void - */ - public function setUsrPassword($v) - { - - // Since the native PHP type for this column is string, - // we will cast the input to a string (if it is not). - if ($v !== null && !is_string($v)) { - $v = (string) $v; - } - - if ($this->usr_password !== $v || $v === '') { - $this->usr_password = $v; - $this->modifiedColumns[] = RbacUsersPeer::USR_PASSWORD; - } - - } // setUsrPassword() - - /** - * Set the value of [usr_firstname] column. - * - * @param string $v new value - * @return void - */ - public function setUsrFirstname($v) - { - - // Since the native PHP type for this column is string, - // we will cast the input to a string (if it is not). - if ($v !== null && !is_string($v)) { - $v = (string) $v; - } - - if ($this->usr_firstname !== $v || $v === '') { - $this->usr_firstname = $v; - $this->modifiedColumns[] = RbacUsersPeer::USR_FIRSTNAME; - } - - } // setUsrFirstname() - - /** - * Set the value of [usr_lastname] column. - * - * @param string $v new value - * @return void - */ - public function setUsrLastname($v) - { - - // Since the native PHP type for this column is string, - // we will cast the input to a string (if it is not). - if ($v !== null && !is_string($v)) { - $v = (string) $v; - } - - if ($this->usr_lastname !== $v || $v === '') { - $this->usr_lastname = $v; - $this->modifiedColumns[] = RbacUsersPeer::USR_LASTNAME; - } - - } // setUsrLastname() - - /** - * Set the value of [usr_email] column. - * - * @param string $v new value - * @return void - */ - public function setUsrEmail($v) - { - - // Since the native PHP type for this column is string, - // we will cast the input to a string (if it is not). - if ($v !== null && !is_string($v)) { - $v = (string) $v; - } - - if ($this->usr_email !== $v || $v === '') { - $this->usr_email = $v; - $this->modifiedColumns[] = RbacUsersPeer::USR_EMAIL; - } - - } // setUsrEmail() - - /** - * Set the value of [usr_due_date] column. - * - * @param int $v new value - * @return void - */ - public function setUsrDueDate($v) - { - - if ($v !== null && !is_int($v)) { - $ts = strtotime($v); - if ($ts === -1 || $ts === false) { // in PHP 5.1 return value changes to FALSE - throw new PropelException("Unable to parse date/time value for [usr_due_date] from input: " . var_export($v, true)); - } - } else { - $ts = $v; - } - if ($this->usr_due_date !== $ts) { - $this->usr_due_date = $ts; - $this->modifiedColumns[] = RbacUsersPeer::USR_DUE_DATE; - } - - } // setUsrDueDate() - - /** - * Set the value of [usr_create_date] column. - * - * @param int $v new value - * @return void - */ - public function setUsrCreateDate($v) - { - - if ($v !== null && !is_int($v)) { - $ts = strtotime($v); - if ($ts === -1 || $ts === false) { // in PHP 5.1 return value changes to FALSE - throw new PropelException("Unable to parse date/time value for [usr_create_date] from input: " . var_export($v, true)); - } - } else { - $ts = $v; - } - if ($this->usr_create_date !== $ts) { - $this->usr_create_date = $ts; - $this->modifiedColumns[] = RbacUsersPeer::USR_CREATE_DATE; - } - - } // setUsrCreateDate() - - /** - * Set the value of [usr_update_date] column. - * - * @param int $v new value - * @return void - */ - public function setUsrUpdateDate($v) - { - - if ($v !== null && !is_int($v)) { - $ts = strtotime($v); - if ($ts === -1 || $ts === false) { // in PHP 5.1 return value changes to FALSE - throw new PropelException("Unable to parse date/time value for [usr_update_date] from input: " . var_export($v, true)); - } - } else { - $ts = $v; - } - if ($this->usr_update_date !== $ts) { - $this->usr_update_date = $ts; - $this->modifiedColumns[] = RbacUsersPeer::USR_UPDATE_DATE; - } - - } // setUsrUpdateDate() - - /** - * Set the value of [usr_status] column. - * - * @param int $v new value - * @return void - */ - public function setUsrStatus($v) - { - - // Since the native PHP type for this column is integer, - // we will cast the input value to an int (if it is not). - if ($v !== null && !is_int($v) && is_numeric($v)) { - $v = (int) $v; - } - - if ($this->usr_status !== $v || $v === 1) { - $this->usr_status = $v; - $this->modifiedColumns[] = RbacUsersPeer::USR_STATUS; - } - - } // setUsrStatus() - - /** - * Set the value of [usr_auth_type] column. - * - * @param string $v new value - * @return void - */ - public function setUsrAuthType($v) - { - - // Since the native PHP type for this column is string, - // we will cast the input to a string (if it is not). - if ($v !== null && !is_string($v)) { - $v = (string) $v; - } - - if ($this->usr_auth_type !== $v || $v === '') { - $this->usr_auth_type = $v; - $this->modifiedColumns[] = RbacUsersPeer::USR_AUTH_TYPE; - } - - } // setUsrAuthType() - - /** - * Set the value of [uid_auth_source] column. - * - * @param string $v new value - * @return void - */ - public function setUidAuthSource($v) - { - - // Since the native PHP type for this column is string, - // we will cast the input to a string (if it is not). - if ($v !== null && !is_string($v)) { - $v = (string) $v; - } - - if ($this->uid_auth_source !== $v || $v === '') { - $this->uid_auth_source = $v; - $this->modifiedColumns[] = RbacUsersPeer::UID_AUTH_SOURCE; - } - - } // setUidAuthSource() - - /** - * Set the value of [usr_auth_user_dn] column. - * - * @param string $v new value - * @return void - */ - public function setUsrAuthUserDn($v) - { - - // Since the native PHP type for this column is string, - // we will cast the input to a string (if it is not). - if ($v !== null && !is_string($v)) { - $v = (string) $v; - } - - if ($this->usr_auth_user_dn !== $v || $v === '') { - $this->usr_auth_user_dn = $v; - $this->modifiedColumns[] = RbacUsersPeer::USR_AUTH_USER_DN; - } - - } // setUsrAuthUserDn() - - /** - * Set the value of [usr_auth_supervisor_dn] column. - * - * @param string $v new value - * @return void - */ - public function setUsrAuthSupervisorDn($v) - { - - // Since the native PHP type for this column is string, - // we will cast the input to a string (if it is not). - if ($v !== null && !is_string($v)) { - $v = (string) $v; - } - - if ($this->usr_auth_supervisor_dn !== $v || $v === '') { - $this->usr_auth_supervisor_dn = $v; - $this->modifiedColumns[] = RbacUsersPeer::USR_AUTH_SUPERVISOR_DN; - } - - } // setUsrAuthSupervisorDn() - - /** - * Hydrates (populates) the object variables with values from the database resultset. - * - * An offset (1-based "start column") is specified so that objects can be hydrated - * with a subset of the columns in the resultset rows. This is needed, for example, - * for results of JOIN queries where the resultset row includes columns from two or - * more tables. - * - * @param ResultSet $rs The ResultSet class with cursor advanced to desired record pos. - * @param int $startcol 1-based offset column which indicates which restultset column to start with. - * @return int next starting column - * @throws PropelException - Any caught Exception will be rewrapped as a PropelException. - */ - public function hydrate(ResultSet $rs, $startcol = 1) - { - try { - - $this->usr_uid = $rs->getString($startcol + 0); - - $this->usr_username = $rs->getString($startcol + 1); - - $this->usr_password = $rs->getString($startcol + 2); - - $this->usr_firstname = $rs->getString($startcol + 3); - - $this->usr_lastname = $rs->getString($startcol + 4); - - $this->usr_email = $rs->getString($startcol + 5); - - $this->usr_due_date = $rs->getDate($startcol + 6, null); - - $this->usr_create_date = $rs->getTimestamp($startcol + 7, null); - - $this->usr_update_date = $rs->getTimestamp($startcol + 8, null); - - $this->usr_status = $rs->getInt($startcol + 9); - - $this->usr_auth_type = $rs->getString($startcol + 10); - - $this->uid_auth_source = $rs->getString($startcol + 11); - - $this->usr_auth_user_dn = $rs->getString($startcol + 12); - - $this->usr_auth_supervisor_dn = $rs->getString($startcol + 13); - - $this->resetModified(); - - $this->setNew(false); - - // FIXME - using NUM_COLUMNS may be clearer. - return $startcol + 14; // 14 = RbacUsersPeer::NUM_COLUMNS - RbacUsersPeer::NUM_LAZY_LOAD_COLUMNS). - - } catch (Exception $e) { - throw new PropelException("Error populating RbacUsers object", $e); - } - } - - /** - * Removes this object from datastore and sets delete attribute. - * - * @param Connection $con - * @return void - * @throws PropelException - * @see BaseObject::setDeleted() - * @see BaseObject::isDeleted() - */ - public function delete($con = null) - { - if ($this->isDeleted()) { - throw new PropelException("This object has already been deleted."); - } - - if ($con === null) { - $con = Propel::getConnection(RbacUsersPeer::DATABASE_NAME); - } - - try { - $con->begin(); - RbacUsersPeer::doDelete($this, $con); - $this->setDeleted(true); - $con->commit(); - } catch (PropelException $e) { - $con->rollback(); - throw $e; - } - } - - /** - * Stores the object in the database. If the object is new, - * it inserts it; otherwise an update is performed. This method - * wraps the doSave() worker method in a transaction. - * - * @param Connection $con - * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations. - * @throws PropelException - * @see doSave() - */ - public function save($con = null) - { - if ($this->isDeleted()) { - throw new PropelException("You cannot save an object that has been deleted."); - } - - if ($con === null) { - $con = Propel::getConnection(RbacUsersPeer::DATABASE_NAME); - } - - try { - $con->begin(); - $affectedRows = $this->doSave($con); - $con->commit(); - return $affectedRows; - } catch (PropelException $e) { - $con->rollback(); - throw $e; - } - } - - /** - * Stores the object in the database. - * - * If the object is new, it inserts it; otherwise an update is performed. - * All related objects are also updated in this method. - * - * @param Connection $con - * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations. - * @throws PropelException - * @see save() - */ - protected function doSave($con) - { - $affectedRows = 0; // initialize var to track total num of affected rows - if (!$this->alreadyInSave) { - $this->alreadyInSave = true; - - - // If this object has been modified, then save it to the database. - if ($this->isModified()) { - if ($this->isNew()) { - $pk = RbacUsersPeer::doInsert($this, $con); - $affectedRows += 1; // we are assuming that there is only 1 row per doInsert() which - // should always be true here (even though technically - // BasePeer::doInsert() can insert multiple rows). - - $this->setNew(false); - } else { - $affectedRows += RbacUsersPeer::doUpdate($this, $con); - } - $this->resetModified(); // [HL] After being saved an object is no longer 'modified' - } - - $this->alreadyInSave = false; - } - return $affectedRows; - } // doSave() - - /** - * Array of ValidationFailed objects. - * @var array ValidationFailed[] - */ - protected $validationFailures = array(); - - /** - * Gets any ValidationFailed objects that resulted from last call to validate(). - * - * - * @return array ValidationFailed[] - * @see validate() - */ - public function getValidationFailures() - { - return $this->validationFailures; - } - - /** - * Validates the objects modified field values and all objects related to this table. - * - * If $columns is either a column name or an array of column names - * only those columns are validated. - * - * @param mixed $columns Column name or an array of column names. - * @return boolean Whether all columns pass validation. - * @see doValidate() - * @see getValidationFailures() - */ - public function validate($columns = null) - { - $res = $this->doValidate($columns); - if ($res === true) { - $this->validationFailures = array(); - return true; - } else { - $this->validationFailures = $res; - return false; - } - } - - /** - * This function performs the validation work for complex object models. - * - * In addition to checking the current object, all related objects will - * also be validated. If all pass then true is returned; otherwise - * an aggreagated array of ValidationFailed objects will be returned. - * - * @param array $columns Array of column names to validate. - * @return mixed true if all validations pass; array of ValidationFailed objets otherwise. - */ - protected function doValidate($columns = null) - { - if (!$this->alreadyInValidation) { - $this->alreadyInValidation = true; - $retval = null; - - $failureMap = array(); - - - if (($retval = RbacUsersPeer::doValidate($this, $columns)) !== true) { - $failureMap = array_merge($failureMap, $retval); - } - - - - $this->alreadyInValidation = false; - } - - return (!empty($failureMap) ? $failureMap : true); - } - - /** - * Retrieves a field from the object by name passed in as a string. - * - * @param string $name name - * @param string $type The type of fieldname the $name is of: - * one of the class type constants TYPE_PHPNAME, - * TYPE_COLNAME, TYPE_FIELDNAME, TYPE_NUM - * @return mixed Value of field. - */ - public function getByName($name, $type = BasePeer::TYPE_PHPNAME) - { - $pos = RbacUsersPeer::translateFieldName($name, $type, BasePeer::TYPE_NUM); - return $this->getByPosition($pos); - } - - /** - * Retrieves a field from the object by Position as specified in the xml schema. - * Zero-based. - * - * @param int $pos position in xml schema - * @return mixed Value of field at $pos - */ - public function getByPosition($pos) - { - switch($pos) { - case 0: - return $this->getUsrUid(); - break; - case 1: - return $this->getUsrUsername(); - break; - case 2: - return $this->getUsrPassword(); - break; - case 3: - return $this->getUsrFirstname(); - break; - case 4: - return $this->getUsrLastname(); - break; - case 5: - return $this->getUsrEmail(); - break; - case 6: - return $this->getUsrDueDate(); - break; - case 7: - return $this->getUsrCreateDate(); - break; - case 8: - return $this->getUsrUpdateDate(); - break; - case 9: - return $this->getUsrStatus(); - break; - case 10: - return $this->getUsrAuthType(); - break; - case 11: - return $this->getUidAuthSource(); - break; - case 12: - return $this->getUsrAuthUserDn(); - break; - case 13: - return $this->getUsrAuthSupervisorDn(); - break; - default: - return null; - break; - } // switch() - } - - /** - * Exports the object as an array. - * - * You can specify the key type of the array by passing one of the class - * type constants. - * - * @param string $keyType One of the class type constants TYPE_PHPNAME, - * TYPE_COLNAME, TYPE_FIELDNAME, TYPE_NUM - * @return an associative array containing the field names (as keys) and field values - */ - public function toArray($keyType = BasePeer::TYPE_PHPNAME) - { - $keys = RbacUsersPeer::getFieldNames($keyType); - $result = array( - $keys[0] => $this->getUsrUid(), - $keys[1] => $this->getUsrUsername(), - $keys[2] => $this->getUsrPassword(), - $keys[3] => $this->getUsrFirstname(), - $keys[4] => $this->getUsrLastname(), - $keys[5] => $this->getUsrEmail(), - $keys[6] => $this->getUsrDueDate(), - $keys[7] => $this->getUsrCreateDate(), - $keys[8] => $this->getUsrUpdateDate(), - $keys[9] => $this->getUsrStatus(), - $keys[10] => $this->getUsrAuthType(), - $keys[11] => $this->getUidAuthSource(), - $keys[12] => $this->getUsrAuthUserDn(), - $keys[13] => $this->getUsrAuthSupervisorDn(), - ); - return $result; - } - - /** - * Sets a field from the object by name passed in as a string. - * - * @param string $name peer name - * @param mixed $value field value - * @param string $type The type of fieldname the $name is of: - * one of the class type constants TYPE_PHPNAME, - * TYPE_COLNAME, TYPE_FIELDNAME, TYPE_NUM - * @return void - */ - public function setByName($name, $value, $type = BasePeer::TYPE_PHPNAME) - { - $pos = RbacUsersPeer::translateFieldName($name, $type, BasePeer::TYPE_NUM); - return $this->setByPosition($pos, $value); - } - - /** - * Sets a field from the object by Position as specified in the xml schema. - * Zero-based. - * - * @param int $pos position in xml schema - * @param mixed $value field value - * @return void - */ - public function setByPosition($pos, $value) - { - switch($pos) { - case 0: - $this->setUsrUid($value); - break; - case 1: - $this->setUsrUsername($value); - break; - case 2: - $this->setUsrPassword($value); - break; - case 3: - $this->setUsrFirstname($value); - break; - case 4: - $this->setUsrLastname($value); - break; - case 5: - $this->setUsrEmail($value); - break; - case 6: - $this->setUsrDueDate($value); - break; - case 7: - $this->setUsrCreateDate($value); - break; - case 8: - $this->setUsrUpdateDate($value); - break; - case 9: - $this->setUsrStatus($value); - break; - case 10: - $this->setUsrAuthType($value); - break; - case 11: - $this->setUidAuthSource($value); - break; - case 12: - $this->setUsrAuthUserDn($value); - break; - case 13: - $this->setUsrAuthSupervisorDn($value); - break; - } // switch() - } - - /** - * Populates the object using an array. - * - * This is particularly useful when populating an object from one of the - * request arrays (e.g. $_POST). This method goes through the column - * names, checking to see whether a matching key exists in populated - * array. If so the setByName() method is called for that column. - * - * You can specify the key type of the array by additionally passing one - * of the class type constants TYPE_PHPNAME, TYPE_COLNAME, TYPE_FIELDNAME, - * TYPE_NUM. The default key type is the column's phpname (e.g. 'authorId') - * - * @param array $arr An array to populate the object from. - * @param string $keyType The type of keys the array uses. - * @return void - */ - public function fromArray($arr, $keyType = BasePeer::TYPE_PHPNAME) - { - $keys = RbacUsersPeer::getFieldNames($keyType); - - if (array_key_exists($keys[0], $arr)) $this->setUsrUid($arr[$keys[0]]); - if (array_key_exists($keys[1], $arr)) $this->setUsrUsername($arr[$keys[1]]); - if (array_key_exists($keys[2], $arr)) $this->setUsrPassword($arr[$keys[2]]); - if (array_key_exists($keys[3], $arr)) $this->setUsrFirstname($arr[$keys[3]]); - if (array_key_exists($keys[4], $arr)) $this->setUsrLastname($arr[$keys[4]]); - if (array_key_exists($keys[5], $arr)) $this->setUsrEmail($arr[$keys[5]]); - if (array_key_exists($keys[6], $arr)) $this->setUsrDueDate($arr[$keys[6]]); - if (array_key_exists($keys[7], $arr)) $this->setUsrCreateDate($arr[$keys[7]]); - if (array_key_exists($keys[8], $arr)) $this->setUsrUpdateDate($arr[$keys[8]]); - if (array_key_exists($keys[9], $arr)) $this->setUsrStatus($arr[$keys[9]]); - if (array_key_exists($keys[10], $arr)) $this->setUsrAuthType($arr[$keys[10]]); - if (array_key_exists($keys[11], $arr)) $this->setUidAuthSource($arr[$keys[11]]); - if (array_key_exists($keys[12], $arr)) $this->setUsrAuthUserDn($arr[$keys[12]]); - if (array_key_exists($keys[13], $arr)) $this->setUsrAuthSupervisorDn($arr[$keys[13]]); - } - - /** - * Build a Criteria object containing the values of all modified columns in this object. - * - * @return Criteria The Criteria object containing all modified values. - */ - public function buildCriteria() - { - $criteria = new Criteria(RbacUsersPeer::DATABASE_NAME); - - if ($this->isColumnModified(RbacUsersPeer::USR_UID)) $criteria->add(RbacUsersPeer::USR_UID, $this->usr_uid); - if ($this->isColumnModified(RbacUsersPeer::USR_USERNAME)) $criteria->add(RbacUsersPeer::USR_USERNAME, $this->usr_username); - if ($this->isColumnModified(RbacUsersPeer::USR_PASSWORD)) $criteria->add(RbacUsersPeer::USR_PASSWORD, $this->usr_password); - if ($this->isColumnModified(RbacUsersPeer::USR_FIRSTNAME)) $criteria->add(RbacUsersPeer::USR_FIRSTNAME, $this->usr_firstname); - if ($this->isColumnModified(RbacUsersPeer::USR_LASTNAME)) $criteria->add(RbacUsersPeer::USR_LASTNAME, $this->usr_lastname); - if ($this->isColumnModified(RbacUsersPeer::USR_EMAIL)) $criteria->add(RbacUsersPeer::USR_EMAIL, $this->usr_email); - if ($this->isColumnModified(RbacUsersPeer::USR_DUE_DATE)) $criteria->add(RbacUsersPeer::USR_DUE_DATE, $this->usr_due_date); - if ($this->isColumnModified(RbacUsersPeer::USR_CREATE_DATE)) $criteria->add(RbacUsersPeer::USR_CREATE_DATE, $this->usr_create_date); - if ($this->isColumnModified(RbacUsersPeer::USR_UPDATE_DATE)) $criteria->add(RbacUsersPeer::USR_UPDATE_DATE, $this->usr_update_date); - if ($this->isColumnModified(RbacUsersPeer::USR_STATUS)) $criteria->add(RbacUsersPeer::USR_STATUS, $this->usr_status); - if ($this->isColumnModified(RbacUsersPeer::USR_AUTH_TYPE)) $criteria->add(RbacUsersPeer::USR_AUTH_TYPE, $this->usr_auth_type); - if ($this->isColumnModified(RbacUsersPeer::UID_AUTH_SOURCE)) $criteria->add(RbacUsersPeer::UID_AUTH_SOURCE, $this->uid_auth_source); - if ($this->isColumnModified(RbacUsersPeer::USR_AUTH_USER_DN)) $criteria->add(RbacUsersPeer::USR_AUTH_USER_DN, $this->usr_auth_user_dn); - if ($this->isColumnModified(RbacUsersPeer::USR_AUTH_SUPERVISOR_DN)) $criteria->add(RbacUsersPeer::USR_AUTH_SUPERVISOR_DN, $this->usr_auth_supervisor_dn); - - return $criteria; - } - - /** - * Builds a Criteria object containing the primary key for this object. - * - * Unlike buildCriteria() this method includes the primary key values regardless - * of whether or not they have been modified. - * - * @return Criteria The Criteria object containing value(s) for primary key(s). - */ - public function buildPkeyCriteria() - { - $criteria = new Criteria(RbacUsersPeer::DATABASE_NAME); - - $criteria->add(RbacUsersPeer::USR_UID, $this->usr_uid); - - return $criteria; - } - - /** - * Returns the primary key for this object (row). - * @return string - */ - public function getPrimaryKey() - { - return $this->getUsrUid(); - } - - /** - * Generic method to set the primary key (usr_uid column). - * - * @param string $key Primary key. - * @return void - */ - public function setPrimaryKey($key) - { - $this->setUsrUid($key); - } - - /** - * Sets contents of passed object to values from current object. - * - * If desired, this method can also make copies of all associated (fkey referrers) - * objects. - * - * @param object $copyObj An object of RbacUsers (or compatible) type. - * @param boolean $deepCopy Whether to also copy all rows that refer (by fkey) to the current row. - * @throws PropelException - */ - public function copyInto($copyObj, $deepCopy = false) - { - - $copyObj->setUsrUsername($this->usr_username); - - $copyObj->setUsrPassword($this->usr_password); - - $copyObj->setUsrFirstname($this->usr_firstname); - - $copyObj->setUsrLastname($this->usr_lastname); - - $copyObj->setUsrEmail($this->usr_email); - - $copyObj->setUsrDueDate($this->usr_due_date); - - $copyObj->setUsrCreateDate($this->usr_create_date); - - $copyObj->setUsrUpdateDate($this->usr_update_date); - - $copyObj->setUsrStatus($this->usr_status); - - $copyObj->setUsrAuthType($this->usr_auth_type); - - $copyObj->setUidAuthSource($this->uid_auth_source); - - $copyObj->setUsrAuthUserDn($this->usr_auth_user_dn); - - $copyObj->setUsrAuthSupervisorDn($this->usr_auth_supervisor_dn); - - - $copyObj->setNew(true); - - $copyObj->setUsrUid(''); // this is a pkey column, so set to default value - - } - - /** - * Makes a copy of this object that will be inserted as a new row in table when saved. - * It creates a new object filling in the simple attributes, but skipping any primary - * keys that are defined for the table. - * - * If desired, this method can also make copies of all associated (fkey referrers) - * objects. - * - * @param boolean $deepCopy Whether to also copy all rows that refer (by fkey) to the current row. - * @return RbacUsers Clone of current object. - * @throws PropelException - */ - public function copy($deepCopy = false) - { - // we use get_class(), because this might be a subclass - $clazz = get_class($this); - $copyObj = new $clazz(); - $this->copyInto($copyObj, $deepCopy); - return $copyObj; - } - - /** - * Returns a peer instance associated with this om. - * - * Since Peer classes are not to have any instance attributes, this method returns the - * same instance for all member of this class. The method could therefore - * be static, but this would prevent one from overriding the behavior. - * - * @return RbacUsersPeer - */ - public function getPeer() - { - if (self::$peer === null) { - self::$peer = new RbacUsersPeer(); - } - return self::$peer; - } - -} // BaseRbacUsers diff --git a/rbac/engine/classes/model/om/BaseRbacUsersPeer.php b/rbac/engine/classes/model/om/BaseRbacUsersPeer.php index acde261c8..977bd890a 100755 --- a/rbac/engine/classes/model/om/BaseRbacUsersPeer.php +++ b/rbac/engine/classes/model/om/BaseRbacUsersPeer.php @@ -3,628 +3,630 @@ require_once 'propel/util/BasePeer.php'; // The object class -- needed for instanceof checks in this class. // actual class may be a subclass -- as returned by RbacUsersPeer::getOMClass() -//include_once 'classes/model/RbacUsers.php'; +include_once 'classes/model/RbacUsers.php'; /** - * Base static class for performing query and update operations on the 'USERS' table. + * Base static class for performing query and update operations on the 'RBAC_USERS' table. * * * - * @package rbac-classes-model + * @package workflow.classes.model.om */ -abstract class BaseRbacUsersPeer { +abstract class BaseRbacUsersPeer +{ + + /** the default database name for this class */ + const DATABASE_NAME = 'rbac'; + + /** the table name for this class */ + const TABLE_NAME = 'RBAC_USERS'; + + /** A class that can be returned by this peer. */ + const CLASS_DEFAULT = 'classes.model.RbacUsers'; + + /** The total number of columns. */ + const NUM_COLUMNS = 14; + + /** The number of lazy-loaded columns. */ + const NUM_LAZY_LOAD_COLUMNS = 0; + + + /** the column name for the USR_UID field */ + const USR_UID = 'RBAC_USERS.USR_UID'; + + /** the column name for the USR_USERNAME field */ + const USR_USERNAME = 'RBAC_USERS.USR_USERNAME'; + + /** the column name for the USR_PASSWORD field */ + const USR_PASSWORD = 'RBAC_USERS.USR_PASSWORD'; + + /** the column name for the USR_FIRSTNAME field */ + const USR_FIRSTNAME = 'RBAC_USERS.USR_FIRSTNAME'; + + /** the column name for the USR_LASTNAME field */ + const USR_LASTNAME = 'RBAC_USERS.USR_LASTNAME'; + + /** the column name for the USR_EMAIL field */ + const USR_EMAIL = 'RBAC_USERS.USR_EMAIL'; + + /** the column name for the USR_DUE_DATE field */ + const USR_DUE_DATE = 'RBAC_USERS.USR_DUE_DATE'; + + /** the column name for the USR_CREATE_DATE field */ + const USR_CREATE_DATE = 'RBAC_USERS.USR_CREATE_DATE'; + + /** the column name for the USR_UPDATE_DATE field */ + const USR_UPDATE_DATE = 'RBAC_USERS.USR_UPDATE_DATE'; + + /** the column name for the USR_STATUS field */ + const USR_STATUS = 'RBAC_USERS.USR_STATUS'; + + /** the column name for the USR_AUTH_TYPE field */ + const USR_AUTH_TYPE = 'RBAC_USERS.USR_AUTH_TYPE'; + + /** the column name for the UID_AUTH_SOURCE field */ + const UID_AUTH_SOURCE = 'RBAC_USERS.UID_AUTH_SOURCE'; + + /** the column name for the USR_AUTH_USER_DN field */ + const USR_AUTH_USER_DN = 'RBAC_USERS.USR_AUTH_USER_DN'; + + /** the column name for the USR_AUTH_SUPERVISOR_DN field */ + const USR_AUTH_SUPERVISOR_DN = 'RBAC_USERS.USR_AUTH_SUPERVISOR_DN'; + + /** The PHP to DB Name Mapping */ + private static $phpNameMap = null; + + + /** + * holds an array of fieldnames + * + * first dimension keys are the type constants + * e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id' + */ + private static $fieldNames = array ( + BasePeer::TYPE_PHPNAME => array ('UsrUid', 'UsrUsername', 'UsrPassword', 'UsrFirstname', 'UsrLastname', 'UsrEmail', 'UsrDueDate', 'UsrCreateDate', 'UsrUpdateDate', 'UsrStatus', 'UsrAuthType', 'UidAuthSource', 'UsrAuthUserDn', 'UsrAuthSupervisorDn', ), + BasePeer::TYPE_COLNAME => array (RbacUsersPeer::USR_UID, RbacUsersPeer::USR_USERNAME, RbacUsersPeer::USR_PASSWORD, RbacUsersPeer::USR_FIRSTNAME, RbacUsersPeer::USR_LASTNAME, RbacUsersPeer::USR_EMAIL, RbacUsersPeer::USR_DUE_DATE, RbacUsersPeer::USR_CREATE_DATE, RbacUsersPeer::USR_UPDATE_DATE, RbacUsersPeer::USR_STATUS, RbacUsersPeer::USR_AUTH_TYPE, RbacUsersPeer::UID_AUTH_SOURCE, RbacUsersPeer::USR_AUTH_USER_DN, RbacUsersPeer::USR_AUTH_SUPERVISOR_DN, ), + BasePeer::TYPE_FIELDNAME => array ('USR_UID', 'USR_USERNAME', 'USR_PASSWORD', 'USR_FIRSTNAME', 'USR_LASTNAME', 'USR_EMAIL', 'USR_DUE_DATE', 'USR_CREATE_DATE', 'USR_UPDATE_DATE', 'USR_STATUS', 'USR_AUTH_TYPE', 'UID_AUTH_SOURCE', 'USR_AUTH_USER_DN', 'USR_AUTH_SUPERVISOR_DN', ), + BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, ) + ); + + /** + * holds an array of keys for quick access to the fieldnames array + * + * first dimension keys are the type constants + * e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0 + */ + private static $fieldKeys = array ( + BasePeer::TYPE_PHPNAME => array ('UsrUid' => 0, 'UsrUsername' => 1, 'UsrPassword' => 2, 'UsrFirstname' => 3, 'UsrLastname' => 4, 'UsrEmail' => 5, 'UsrDueDate' => 6, 'UsrCreateDate' => 7, 'UsrUpdateDate' => 8, 'UsrStatus' => 9, 'UsrAuthType' => 10, 'UidAuthSource' => 11, 'UsrAuthUserDn' => 12, 'UsrAuthSupervisorDn' => 13, ), + BasePeer::TYPE_COLNAME => array (RbacUsersPeer::USR_UID => 0, RbacUsersPeer::USR_USERNAME => 1, RbacUsersPeer::USR_PASSWORD => 2, RbacUsersPeer::USR_FIRSTNAME => 3, RbacUsersPeer::USR_LASTNAME => 4, RbacUsersPeer::USR_EMAIL => 5, RbacUsersPeer::USR_DUE_DATE => 6, RbacUsersPeer::USR_CREATE_DATE => 7, RbacUsersPeer::USR_UPDATE_DATE => 8, RbacUsersPeer::USR_STATUS => 9, RbacUsersPeer::USR_AUTH_TYPE => 10, RbacUsersPeer::UID_AUTH_SOURCE => 11, RbacUsersPeer::USR_AUTH_USER_DN => 12, RbacUsersPeer::USR_AUTH_SUPERVISOR_DN => 13, ), + BasePeer::TYPE_FIELDNAME => array ('USR_UID' => 0, 'USR_USERNAME' => 1, 'USR_PASSWORD' => 2, 'USR_FIRSTNAME' => 3, 'USR_LASTNAME' => 4, 'USR_EMAIL' => 5, 'USR_DUE_DATE' => 6, 'USR_CREATE_DATE' => 7, 'USR_UPDATE_DATE' => 8, 'USR_STATUS' => 9, 'USR_AUTH_TYPE' => 10, 'UID_AUTH_SOURCE' => 11, 'USR_AUTH_USER_DN' => 12, 'USR_AUTH_SUPERVISOR_DN' => 13, ), + BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, ) + ); + + /** + * @return MapBuilder the map builder for this peer + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function getMapBuilder() + { + include_once 'classes/model/map/RbacUsersMapBuilder.php'; + return BasePeer::getMapBuilder('classes.model.map.RbacUsersMapBuilder'); + } + /** + * Gets a map (hash) of PHP names to DB column names. + * + * @return array The PHP to DB name map for this peer + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + * @deprecated Use the getFieldNames() and translateFieldName() methods instead of this. + */ + public static function getPhpNameMap() + { + if (self::$phpNameMap === null) { + $map = RbacUsersPeer::getTableMap(); + $columns = $map->getColumns(); + $nameMap = array(); + foreach ($columns as $column) { + $nameMap[$column->getPhpName()] = $column->getColumnName(); + } + self::$phpNameMap = $nameMap; + } + return self::$phpNameMap; + } + /** + * Translates a fieldname to another type + * + * @param string $name field name + * @param string $fromType One of the class type constants TYPE_PHPNAME, + * TYPE_COLNAME, TYPE_FIELDNAME, TYPE_NUM + * @param string $toType One of the class type constants + * @return string translated name of the field. + */ + static public function translateFieldName($name, $fromType, $toType) + { + $toNames = self::getFieldNames($toType); + $key = isset(self::$fieldKeys[$fromType][$name]) ? self::$fieldKeys[$fromType][$name] : null; + if ($key === null) { + throw new PropelException("'$name' could not be found in the field names of type '$fromType'. These are: " . print_r(self::$fieldKeys[$fromType], true)); + } + return $toNames[$key]; + } + + /** + * Returns an array of of field names. + * + * @param string $type The type of fieldnames to return: + * One of the class type constants TYPE_PHPNAME, + * TYPE_COLNAME, TYPE_FIELDNAME, TYPE_NUM + * @return array A list of field names + */ + + static public function getFieldNames($type = BasePeer::TYPE_PHPNAME) + { + if (!array_key_exists($type, self::$fieldNames)) { + throw new PropelException('Method getFieldNames() expects the parameter $type to be one of the class constants TYPE_PHPNAME, TYPE_COLNAME, TYPE_FIELDNAME, TYPE_NUM. ' . $type . ' was given.'); + } + return self::$fieldNames[$type]; + } + + /** + * Convenience method which changes table.column to alias.column. + * + * Using this method you can maintain SQL abstraction while using column aliases. + * + * $c->addAlias("alias1", TablePeer::TABLE_NAME); + * $c->addJoin(TablePeer::alias("alias1", TablePeer::PRIMARY_KEY_COLUMN), TablePeer::PRIMARY_KEY_COLUMN); + * + * @param string $alias The alias for the current table. + * @param string $column The column name for current table. (i.e. RbacUsersPeer::COLUMN_NAME). + * @return string + */ + public static function alias($alias, $column) + { + return str_replace(RbacUsersPeer::TABLE_NAME.'.', $alias.'.', $column); + } + + /** + * Add all the columns needed to create a new object. + * + * Note: any columns that were marked with lazyLoad="true" in the + * XML schema will not be added to the select list and only loaded + * on demand. + * + * @param criteria object containing the columns to add. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function addSelectColumns(Criteria $criteria) + { + + $criteria->addSelectColumn(RbacUsersPeer::USR_UID); + + $criteria->addSelectColumn(RbacUsersPeer::USR_USERNAME); + + $criteria->addSelectColumn(RbacUsersPeer::USR_PASSWORD); + + $criteria->addSelectColumn(RbacUsersPeer::USR_FIRSTNAME); + + $criteria->addSelectColumn(RbacUsersPeer::USR_LASTNAME); + + $criteria->addSelectColumn(RbacUsersPeer::USR_EMAIL); + + $criteria->addSelectColumn(RbacUsersPeer::USR_DUE_DATE); + + $criteria->addSelectColumn(RbacUsersPeer::USR_CREATE_DATE); + + $criteria->addSelectColumn(RbacUsersPeer::USR_UPDATE_DATE); + + $criteria->addSelectColumn(RbacUsersPeer::USR_STATUS); + + $criteria->addSelectColumn(RbacUsersPeer::USR_AUTH_TYPE); + + $criteria->addSelectColumn(RbacUsersPeer::UID_AUTH_SOURCE); + + $criteria->addSelectColumn(RbacUsersPeer::USR_AUTH_USER_DN); + + $criteria->addSelectColumn(RbacUsersPeer::USR_AUTH_SUPERVISOR_DN); + + } + + const COUNT = 'COUNT(RBAC_USERS.USR_UID)'; + const COUNT_DISTINCT = 'COUNT(DISTINCT RBAC_USERS.USR_UID)'; + + /** + * Returns the number of rows matching criteria. + * + * @param Criteria $criteria + * @param boolean $distinct Whether to select only distinct columns (You can also set DISTINCT modifier in Criteria). + * @param Connection $con + * @return int Number of matching rows. + */ + public static function doCount(Criteria $criteria, $distinct = false, $con = null) + { + // we're going to modify criteria, so copy it first + $criteria = clone $criteria; + + // clear out anything that might confuse the ORDER BY clause + $criteria->clearSelectColumns()->clearOrderByColumns(); + if ($distinct || in_array(Criteria::DISTINCT, $criteria->getSelectModifiers())) { + $criteria->addSelectColumn(RbacUsersPeer::COUNT_DISTINCT); + } else { + $criteria->addSelectColumn(RbacUsersPeer::COUNT); + } + + // just in case we're grouping: add those columns to the select statement + foreach ($criteria->getGroupByColumns() as $column) { + $criteria->addSelectColumn($column); + } + + $rs = RbacUsersPeer::doSelectRS($criteria, $con); + if ($rs->next()) { + return $rs->getInt(1); + } else { + // no rows returned; we infer that means 0 matches. + return 0; + } + } + /** + * Method to select one object from the DB. + * + * @param Criteria $criteria object used to create the SELECT statement. + * @param Connection $con + * @return RbacUsers + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doSelectOne(Criteria $criteria, $con = null) + { + $critcopy = clone $criteria; + $critcopy->setLimit(1); + $objects = RbacUsersPeer::doSelect($critcopy, $con); + if ($objects) { + return $objects[0]; + } + return null; + } + /** + * Method to do selects. + * + * @param Criteria $criteria The Criteria object used to build the SELECT statement. + * @param Connection $con + * @return array Array of selected Objects + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doSelect(Criteria $criteria, $con = null) + { + return RbacUsersPeer::populateObjects(RbacUsersPeer::doSelectRS($criteria, $con)); + } + /** + * Prepares the Criteria object and uses the parent doSelect() + * method to get a ResultSet. + * + * Use this method directly if you want to just get the resultset + * (instead of an array of objects). + * + * @param Criteria $criteria The Criteria object used to build the SELECT statement. + * @param Connection $con the connection to use + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + * @return ResultSet The resultset object with numerically-indexed fields. + * @see BasePeer::doSelect() + */ + public static function doSelectRS(Criteria $criteria, $con = null) + { + if ($con === null) { + $con = Propel::getConnection(self::DATABASE_NAME); + } + + if (!$criteria->getSelectColumns()) { + $criteria = clone $criteria; + RbacUsersPeer::addSelectColumns($criteria); + } + + // Set the correct dbName + $criteria->setDbName(self::DATABASE_NAME); + + // BasePeer returns a Creole ResultSet, set to return + // rows indexed numerically. + return BasePeer::doSelect($criteria, $con); + } + /** + * The returned array will contain objects of the default type or + * objects that inherit from the default. + * + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function populateObjects(ResultSet $rs) + { + $results = array(); + + // set the class once to avoid overhead in the loop + $cls = RbacUsersPeer::getOMClass(); + $cls = Propel::import($cls); + // populate the object(s) + while ($rs->next()) { + + $obj = new $cls(); + $obj->hydrate($rs); + $results[] = $obj; + + } + return $results; + } + /** + * Returns the TableMap related to this peer. + * This method is not needed for general use but a specific application could have a need. + * @return TableMap + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function getTableMap() + { + return Propel::getDatabaseMap(self::DATABASE_NAME)->getTable(self::TABLE_NAME); + } + + /** + * The class that the Peer will make instances of. + * + * This uses a dot-path notation which is tranalted into a path + * relative to a location on the PHP include_path. + * (e.g. path.to.MyClass -> 'path/to/MyClass.php') + * + * @return string path.to.ClassName + */ + public static function getOMClass() + { + return RbacUsersPeer::CLASS_DEFAULT; + } + + /** + * Method perform an INSERT on the database, given a RbacUsers or Criteria object. + * + * @param mixed $values Criteria or RbacUsers object containing data that is used to create the INSERT statement. + * @param Connection $con the connection to use + * @return mixed The new primary key. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doInsert($values, $con = null) + { + if ($con === null) { + $con = Propel::getConnection(self::DATABASE_NAME); + } + + if ($values instanceof Criteria) { + $criteria = clone $values; // rename for clarity + } else { + $criteria = $values->buildCriteria(); // build Criteria from RbacUsers object + } + + + // Set the correct dbName + $criteria->setDbName(self::DATABASE_NAME); + + try { + // use transaction because $criteria could contain info + // for more than one table (I guess, conceivably) + $con->begin(); + $pk = BasePeer::doInsert($criteria, $con); + $con->commit(); + } catch (PropelException $e) { + $con->rollback(); + throw $e; + } + + return $pk; + } + + /** + * Method perform an UPDATE on the database, given a RbacUsers or Criteria object. + * + * @param mixed $values Criteria or RbacUsers object containing data create the UPDATE statement. + * @param Connection $con The connection to use (specify Connection exert more control over transactions). + * @return int The number of affected rows (if supported by underlying database driver). + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doUpdate($values, $con = null) + { + if ($con === null) { + $con = Propel::getConnection(self::DATABASE_NAME); + } + + $selectCriteria = new Criteria(self::DATABASE_NAME); + + if ($values instanceof Criteria) { + $criteria = clone $values; // rename for clarity + + $comparison = $criteria->getComparison(RbacUsersPeer::USR_UID); + $selectCriteria->add(RbacUsersPeer::USR_UID, $criteria->remove(RbacUsersPeer::USR_UID), $comparison); + + } else { + $criteria = $values->buildCriteria(); // gets full criteria + $selectCriteria = $values->buildPkeyCriteria(); // gets criteria w/ primary key(s) + } + + // set the correct dbName + $criteria->setDbName(self::DATABASE_NAME); + + return BasePeer::doUpdate($selectCriteria, $criteria, $con); + } + + /** + * Method to DELETE all rows from the RBAC_USERS table. + * + * @return int The number of affected rows (if supported by underlying database driver). + */ + public static function doDeleteAll($con = null) + { + if ($con === null) { + $con = Propel::getConnection(self::DATABASE_NAME); + } + $affectedRows = 0; // initialize var to track total num of affected rows + try { + // use transaction because $criteria could contain info + // for more than one table or we could emulating ON DELETE CASCADE, etc. + $con->begin(); + $affectedRows += BasePeer::doDeleteAll(RbacUsersPeer::TABLE_NAME, $con); + $con->commit(); + return $affectedRows; + } catch (PropelException $e) { + $con->rollback(); + throw $e; + } + } + + /** + * Method perform a DELETE on the database, given a RbacUsers or Criteria object OR a primary key value. + * + * @param mixed $values Criteria or RbacUsers object or primary key or array of primary keys + * which is used to create the DELETE statement + * @param Connection $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). + * This includes CASCADE-related rows + * if supported by native driver or if emulated using Propel. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doDelete($values, $con = null) + { + if ($con === null) { + $con = Propel::getConnection(RbacUsersPeer::DATABASE_NAME); + } + + if ($values instanceof Criteria) { + $criteria = clone $values; // rename for clarity + } elseif ($values instanceof RbacUsers) { + + $criteria = $values->buildPkeyCriteria(); + } else { + // it must be the primary key + $criteria = new Criteria(self::DATABASE_NAME); + $criteria->add(RbacUsersPeer::USR_UID, (array) $values, Criteria::IN); + } + + // Set the correct dbName + $criteria->setDbName(self::DATABASE_NAME); + + $affectedRows = 0; // initialize var to track total num of affected rows + + try { + // use transaction because $criteria could contain info + // for more than one table or we could emulating ON DELETE CASCADE, etc. + $con->begin(); + + $affectedRows += BasePeer::doDelete($criteria, $con); + $con->commit(); + return $affectedRows; + } catch (PropelException $e) { + $con->rollback(); + throw $e; + } + } + + /** + * Validates all modified columns of given RbacUsers object. + * If parameter $columns is either a single column name or an array of column names + * than only those columns are validated. + * + * NOTICE: This does not apply to primary or foreign keys for now. + * + * @param RbacUsers $obj The object to validate. + * @param mixed $cols Column name or array of column names. + * + * @return mixed TRUE if all columns are valid or the error message of the first invalid column. + */ + public static function doValidate(RbacUsers $obj, $cols = null) + { + $columns = array(); + + if ($cols) { + $dbMap = Propel::getDatabaseMap(RbacUsersPeer::DATABASE_NAME); + $tableMap = $dbMap->getTable(RbacUsersPeer::TABLE_NAME); + + if (! is_array($cols)) { + $cols = array($cols); + } + + foreach ($cols as $colName) { + if ($tableMap->containsColumn($colName)) { + $get = 'get' . $tableMap->getColumn($colName)->getPhpName(); + $columns[$colName] = $obj->$get(); + } + } + } else { + + } + + return BasePeer::doValidate(RbacUsersPeer::DATABASE_NAME, RbacUsersPeer::TABLE_NAME, $columns); + } + + /** + * Retrieve a single object by pkey. + * + * @param mixed $pk the primary key. + * @param Connection $con the connection to use + * @return RbacUsers + */ + public static function retrieveByPK($pk, $con = null) + { + if ($con === null) { + $con = Propel::getConnection(self::DATABASE_NAME); + } + + $criteria = new Criteria(RbacUsersPeer::DATABASE_NAME); + + $criteria->add(RbacUsersPeer::USR_UID, $pk); + + + $v = RbacUsersPeer::doSelect($criteria, $con); + + return !empty($v) > 0 ? $v[0] : null; + } + + /** + * Retrieve multiple objects by pkey. + * + * @param array $pks List of primary keys + * @param Connection $con the connection to use + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function retrieveByPKs($pks, $con = null) + { + if ($con === null) { + $con = Propel::getConnection(self::DATABASE_NAME); + } + + $objs = null; + if (empty($pks)) { + $objs = array(); + } else { + $criteria = new Criteria(); + $criteria->add(RbacUsersPeer::USR_UID, $pks, Criteria::IN); + $objs = RbacUsersPeer::doSelect($criteria, $con); + } + return $objs; + } +} - /** the default database name for this class */ - const DATABASE_NAME = 'rbac'; - - /** the table name for this class */ - const TABLE_NAME = 'RBAC_USERS'; - - /** A class that can be returned by this peer. */ - const CLASS_DEFAULT = 'classes.model.RbacUsers'; - - /** The total number of columns. */ - const NUM_COLUMNS = 14; - - /** The number of lazy-loaded columns. */ - const NUM_LAZY_LOAD_COLUMNS = 0; - - - /** the column name for the USR_UID field */ - const USR_UID = 'RBAC_USERS.USR_UID'; - - /** the column name for the USR_USERNAME field */ - const USR_USERNAME = 'RBAC_USERS.USR_USERNAME'; - - /** the column name for the USR_PASSWORD field */ - const USR_PASSWORD = 'RBAC_USERS.USR_PASSWORD'; - - /** the column name for the USR_FIRSTNAME field */ - const USR_FIRSTNAME = 'RBAC_USERS.USR_FIRSTNAME'; - - /** the column name for the USR_LASTNAME field */ - const USR_LASTNAME = 'RBAC_USERS.USR_LASTNAME'; - - /** the column name for the USR_EMAIL field */ - const USR_EMAIL = 'RBAC_USERS.USR_EMAIL'; - - /** the column name for the USR_DUE_DATE field */ - const USR_DUE_DATE = 'RBAC_USERS.USR_DUE_DATE'; - - /** the column name for the USR_CREATE_DATE field */ - const USR_CREATE_DATE = 'RBAC_USERS.USR_CREATE_DATE'; - - /** the column name for the USR_UPDATE_DATE field */ - const USR_UPDATE_DATE = 'RBAC_USERS.USR_UPDATE_DATE'; - - /** the column name for the USR_STATUS field */ - const USR_STATUS = 'RBAC_USERS.USR_STATUS'; - - /** the column name for the USR_AUTH_TYPE field */ - const USR_AUTH_TYPE = 'RBAC_USERS.USR_AUTH_TYPE'; - - /** the column name for the UID_AUTH_SOURCE field */ - const UID_AUTH_SOURCE = 'RBAC_USERS.UID_AUTH_SOURCE'; - - /** the column name for the USR_AUTH_USER_DN field */ - const USR_AUTH_USER_DN = 'RBAC_USERS.USR_AUTH_USER_DN'; - - /** the column name for the USR_AUTH_SUPERVISOR_DN field */ - const USR_AUTH_SUPERVISOR_DN = 'RBAC_USERS.USR_AUTH_SUPERVISOR_DN'; - - /** The PHP to DB Name Mapping */ - private static $phpNameMap = null; - - - /** - * holds an array of fieldnames - * - * first dimension keys are the type constants - * e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id' - */ - private static $fieldNames = array ( - BasePeer::TYPE_PHPNAME => array ('UsrUid', 'UsrUsername', 'UsrPassword', 'UsrFirstname', 'UsrLastname', 'UsrEmail', 'UsrDueDate', 'UsrCreateDate', 'UsrUpdateDate', 'UsrStatus', 'UsrAuthType', 'UidAuthSource', 'UsrAuthUserDn', 'UsrAuthSupervisorDn', ), - BasePeer::TYPE_COLNAME => array (RbacUsersPeer::USR_UID, RbacUsersPeer::USR_USERNAME, RbacUsersPeer::USR_PASSWORD, RbacUsersPeer::USR_FIRSTNAME, RbacUsersPeer::USR_LASTNAME, RbacUsersPeer::USR_EMAIL, RbacUsersPeer::USR_DUE_DATE, RbacUsersPeer::USR_CREATE_DATE, RbacUsersPeer::USR_UPDATE_DATE, RbacUsersPeer::USR_STATUS, RbacUsersPeer::USR_AUTH_TYPE, RbacUsersPeer::UID_AUTH_SOURCE, RbacUsersPeer::USR_AUTH_USER_DN, RbacUsersPeer::USR_AUTH_SUPERVISOR_DN, ), - BasePeer::TYPE_FIELDNAME => array ('USR_UID', 'USR_USERNAME', 'USR_PASSWORD', 'USR_FIRSTNAME', 'USR_LASTNAME', 'USR_EMAIL', 'USR_DUE_DATE', 'USR_CREATE_DATE', 'USR_UPDATE_DATE', 'USR_STATUS', 'USR_AUTH_TYPE', 'UID_AUTH_SOURCE', 'USR_AUTH_USER_DN', 'USR_AUTH_SUPERVISOR_DN', ), - BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, ) - ); - - /** - * holds an array of keys for quick access to the fieldnames array - * - * first dimension keys are the type constants - * e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0 - */ - private static $fieldKeys = array ( - BasePeer::TYPE_PHPNAME => array ('UsrUid' => 0, 'UsrUsername' => 1, 'UsrPassword' => 2, 'UsrFirstname' => 3, 'UsrLastname' => 4, 'UsrEmail' => 5, 'UsrDueDate' => 6, 'UsrCreateDate' => 7, 'UsrUpdateDate' => 8, 'UsrStatus' => 9, 'UsrAuthType' => 10, 'UidAuthSource' => 11, 'UsrAuthUserDn' => 12, 'UsrAuthSupervisorDn' => 13, ), - BasePeer::TYPE_COLNAME => array (RbacUsersPeer::USR_UID => 0, RbacUsersPeer::USR_USERNAME => 1, RbacUsersPeer::USR_PASSWORD => 2, RbacUsersPeer::USR_FIRSTNAME => 3, RbacUsersPeer::USR_LASTNAME => 4, RbacUsersPeer::USR_EMAIL => 5, RbacUsersPeer::USR_DUE_DATE => 6, RbacUsersPeer::USR_CREATE_DATE => 7, RbacUsersPeer::USR_UPDATE_DATE => 8, RbacUsersPeer::USR_STATUS => 9, RbacUsersPeer::USR_AUTH_TYPE => 10, RbacUsersPeer::UID_AUTH_SOURCE => 11, RbacUsersPeer::USR_AUTH_USER_DN => 12, RbacUsersPeer::USR_AUTH_SUPERVISOR_DN => 13, ), - BasePeer::TYPE_FIELDNAME => array ('USR_UID' => 0, 'USR_USERNAME' => 1, 'USR_PASSWORD' => 2, 'USR_FIRSTNAME' => 3, 'USR_LASTNAME' => 4, 'USR_EMAIL' => 5, 'USR_DUE_DATE' => 6, 'USR_CREATE_DATE' => 7, 'USR_UPDATE_DATE' => 8, 'USR_STATUS' => 9, 'USR_AUTH_TYPE' => 10, 'UID_AUTH_SOURCE' => 11, 'USR_AUTH_USER_DN' => 12, 'USR_AUTH_SUPERVISOR_DN' => 13, ), - BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, ) - ); - - /** - * @return MapBuilder the map builder for this peer - * @throws PropelException Any exceptions caught during processing will be - * rethrown wrapped into a PropelException. - */ - public static function getMapBuilder() - { - include_once 'classes/model/map/RbacUsersMapBuilder.php'; - return BasePeer::getMapBuilder('classes.model.map.RbacUsersMapBuilder'); - } - /** - * Gets a map (hash) of PHP names to DB column names. - * - * @return array The PHP to DB name map for this peer - * @throws PropelException Any exceptions caught during processing will be - * rethrown wrapped into a PropelException. - * @deprecated Use the getFieldNames() and translateFieldName() methods instead of this. - */ - public static function getPhpNameMap() - { - if (self::$phpNameMap === null) { - $map = RbacUsersPeer::getTableMap(); - $columns = $map->getColumns(); - $nameMap = array(); - foreach ($columns as $column) { - $nameMap[$column->getPhpName()] = $column->getColumnName(); - } - self::$phpNameMap = $nameMap; - } - return self::$phpNameMap; - } - /** - * Translates a fieldname to another type - * - * @param string $name field name - * @param string $fromType One of the class type constants TYPE_PHPNAME, - * TYPE_COLNAME, TYPE_FIELDNAME, TYPE_NUM - * @param string $toType One of the class type constants - * @return string translated name of the field. - */ - static public function translateFieldName($name, $fromType, $toType) - { - $toNames = self::getFieldNames($toType); - $key = isset(self::$fieldKeys[$fromType][$name]) ? self::$fieldKeys[$fromType][$name] : null; - if ($key === null) { - throw new PropelException("'$name' could not be found in the field names of type '$fromType'. These are: " . print_r(self::$fieldKeys[$fromType], true)); - } - return $toNames[$key]; - } - - /** - * Returns an array of of field names. - * - * @param string $type The type of fieldnames to return: - * One of the class type constants TYPE_PHPNAME, - * TYPE_COLNAME, TYPE_FIELDNAME, TYPE_NUM - * @return array A list of field names - */ - - static public function getFieldNames($type = BasePeer::TYPE_PHPNAME) - { - if (!array_key_exists($type, self::$fieldNames)) { - throw new PropelException('Method getFieldNames() expects the parameter $type to be one of the class constants TYPE_PHPNAME, TYPE_COLNAME, TYPE_FIELDNAME, TYPE_NUM. ' . $type . ' was given.'); - } - return self::$fieldNames[$type]; - } - - /** - * Convenience method which changes table.column to alias.column. - * - * Using this method you can maintain SQL abstraction while using column aliases. - * - * $c->addAlias("alias1", TablePeer::TABLE_NAME); - * $c->addJoin(TablePeer::alias("alias1", TablePeer::PRIMARY_KEY_COLUMN), TablePeer::PRIMARY_KEY_COLUMN); - * - * @param string $alias The alias for the current table. - * @param string $column The column name for current table. (i.e. RbacUsersPeer::COLUMN_NAME). - * @return string - */ - public static function alias($alias, $column) - { - return str_replace(RbacUsersPeer::TABLE_NAME.'.', $alias.'.', $column); - } - - /** - * Add all the columns needed to create a new object. - * - * Note: any columns that were marked with lazyLoad="true" in the - * XML schema will not be added to the select list and only loaded - * on demand. - * - * @param criteria object containing the columns to add. - * @throws PropelException Any exceptions caught during processing will be - * rethrown wrapped into a PropelException. - */ - public static function addSelectColumns(Criteria $criteria) - { - - $criteria->addSelectColumn(RbacUsersPeer::USR_UID); - - $criteria->addSelectColumn(RbacUsersPeer::USR_USERNAME); - - $criteria->addSelectColumn(RbacUsersPeer::USR_PASSWORD); - - $criteria->addSelectColumn(RbacUsersPeer::USR_FIRSTNAME); - - $criteria->addSelectColumn(RbacUsersPeer::USR_LASTNAME); - - $criteria->addSelectColumn(RbacUsersPeer::USR_EMAIL); - - $criteria->addSelectColumn(RbacUsersPeer::USR_DUE_DATE); - - $criteria->addSelectColumn(RbacUsersPeer::USR_CREATE_DATE); - - $criteria->addSelectColumn(RbacUsersPeer::USR_UPDATE_DATE); - - $criteria->addSelectColumn(RbacUsersPeer::USR_STATUS); - - $criteria->addSelectColumn(RbacUsersPeer::USR_AUTH_TYPE); - - $criteria->addSelectColumn(RbacUsersPeer::UID_AUTH_SOURCE); - - $criteria->addSelectColumn(RbacUsersPeer::USR_AUTH_USER_DN); - - $criteria->addSelectColumn(RbacUsersPeer::USR_AUTH_SUPERVISOR_DN); - - } - - const COUNT = 'COUNT(RBAC_USERS.USR_UID)'; - const COUNT_DISTINCT = 'COUNT(DISTINCT RBAC_USERS.USR_UID)'; - - /** - * Returns the number of rows matching criteria. - * - * @param Criteria $criteria - * @param boolean $distinct Whether to select only distinct columns (You can also set DISTINCT modifier in Criteria). - * @param Connection $con - * @return int Number of matching rows. - */ - public static function doCount(Criteria $criteria, $distinct = false, $con = null) - { - // we're going to modify criteria, so copy it first - $criteria = clone $criteria; - - // clear out anything that might confuse the ORDER BY clause - $criteria->clearSelectColumns()->clearOrderByColumns(); - if ($distinct || in_array(Criteria::DISTINCT, $criteria->getSelectModifiers())) { - $criteria->addSelectColumn(RbacUsersPeer::COUNT_DISTINCT); - } else { - $criteria->addSelectColumn(RbacUsersPeer::COUNT); - } - - // just in case we're grouping: add those columns to the select statement - foreach($criteria->getGroupByColumns() as $column) - { - $criteria->addSelectColumn($column); - } - - $rs = RbacUsersPeer::doSelectRS($criteria, $con); - if ($rs->next()) { - return $rs->getInt(1); - } else { - // no rows returned; we infer that means 0 matches. - return 0; - } - } - /** - * Method to select one object from the DB. - * - * @param Criteria $criteria object used to create the SELECT statement. - * @param Connection $con - * @return RbacUsers - * @throws PropelException Any exceptions caught during processing will be - * rethrown wrapped into a PropelException. - */ - public static function doSelectOne(Criteria $criteria, $con = null) - { - $critcopy = clone $criteria; - $critcopy->setLimit(1); - $objects = RbacUsersPeer::doSelect($critcopy, $con); - if ($objects) { - return $objects[0]; - } - return null; - } - /** - * Method to do selects. - * - * @param Criteria $criteria The Criteria object used to build the SELECT statement. - * @param Connection $con - * @return array Array of selected Objects - * @throws PropelException Any exceptions caught during processing will be - * rethrown wrapped into a PropelException. - */ - public static function doSelect(Criteria $criteria, $con = null) - { - return RbacUsersPeer::populateObjects(RbacUsersPeer::doSelectRS($criteria, $con)); - } - /** - * Prepares the Criteria object and uses the parent doSelect() - * method to get a ResultSet. - * - * Use this method directly if you want to just get the resultset - * (instead of an array of objects). - * - * @param Criteria $criteria The Criteria object used to build the SELECT statement. - * @param Connection $con the connection to use - * @throws PropelException Any exceptions caught during processing will be - * rethrown wrapped into a PropelException. - * @return ResultSet The resultset object with numerically-indexed fields. - * @see BasePeer::doSelect() - */ - public static function doSelectRS(Criteria $criteria, $con = null) - { - if ($con === null) { - $con = Propel::getConnection(self::DATABASE_NAME); - } - - if (!$criteria->getSelectColumns()) { - $criteria = clone $criteria; - RbacUsersPeer::addSelectColumns($criteria); - } - - // Set the correct dbName - $criteria->setDbName(self::DATABASE_NAME); - - // BasePeer returns a Creole ResultSet, set to return - // rows indexed numerically. - return BasePeer::doSelect($criteria, $con); - } - /** - * The returned array will contain objects of the default type or - * objects that inherit from the default. - * - * @throws PropelException Any exceptions caught during processing will be - * rethrown wrapped into a PropelException. - */ - public static function populateObjects(ResultSet $rs) - { - $results = array(); - - // set the class once to avoid overhead in the loop - $cls = RbacUsersPeer::getOMClass(); - $cls = Propel::import($cls); - // populate the object(s) - while($rs->next()) { - - $obj = new $cls(); - $obj->hydrate($rs); - $results[] = $obj; - - } - return $results; - } - /** - * Returns the TableMap related to this peer. - * This method is not needed for general use but a specific application could have a need. - * @return TableMap - * @throws PropelException Any exceptions caught during processing will be - * rethrown wrapped into a PropelException. - */ - public static function getTableMap() - { - return Propel::getDatabaseMap(self::DATABASE_NAME)->getTable(self::TABLE_NAME); - } - - /** - * The class that the Peer will make instances of. - * - * This uses a dot-path notation which is tranalted into a path - * relative to a location on the PHP include_path. - * (e.g. path.to.MyClass -> 'path/to/MyClass.php') - * - * @return string path.to.ClassName - */ - public static function getOMClass() - { - return RbacUsersPeer::CLASS_DEFAULT; - } - - /** - * Method perform an INSERT on the database, given a RbacUsers or Criteria object. - * - * @param mixed $values Criteria or RbacUsers object containing data that is used to create the INSERT statement. - * @param Connection $con the connection to use - * @return mixed The new primary key. - * @throws PropelException Any exceptions caught during processing will be - * rethrown wrapped into a PropelException. - */ - public static function doInsert($values, $con = null) - { - if ($con === null) { - $con = Propel::getConnection(self::DATABASE_NAME); - } - - if ($values instanceof Criteria) { - $criteria = clone $values; // rename for clarity - } else { - $criteria = $values->buildCriteria(); // build Criteria from RbacUsers object - } - - - // Set the correct dbName - $criteria->setDbName(self::DATABASE_NAME); - - try { - // use transaction because $criteria could contain info - // for more than one table (I guess, conceivably) - $con->begin(); - $pk = BasePeer::doInsert($criteria, $con); - $con->commit(); - } catch(PropelException $e) { - $con->rollback(); - throw $e; - } - - return $pk; - } - - /** - * Method perform an UPDATE on the database, given a RbacUsers or Criteria object. - * - * @param mixed $values Criteria or RbacUsers object containing data that is used to create the UPDATE statement. - * @param Connection $con The connection to use (specify Connection object to exert more control over transactions). - * @return int The number of affected rows (if supported by underlying database driver). - * @throws PropelException Any exceptions caught during processing will be - * rethrown wrapped into a PropelException. - */ - public static function doUpdate($values, $con = null) - { - if ($con === null) { - $con = Propel::getConnection(self::DATABASE_NAME); - } - - $selectCriteria = new Criteria(self::DATABASE_NAME); - - if ($values instanceof Criteria) { - $criteria = clone $values; // rename for clarity - - $comparison = $criteria->getComparison(RbacUsersPeer::USR_UID); - $selectCriteria->add(RbacUsersPeer::USR_UID, $criteria->remove(RbacUsersPeer::USR_UID), $comparison); - - } else { // $values is RbacUsers object - $criteria = $values->buildCriteria(); // gets full criteria - $selectCriteria = $values->buildPkeyCriteria(); // gets criteria w/ primary key(s) - } - - // set the correct dbName - $criteria->setDbName(self::DATABASE_NAME); - - return BasePeer::doUpdate($selectCriteria, $criteria, $con); - } - - /** - * Method to DELETE all rows from the USERS table. - * - * @return int The number of affected rows (if supported by underlying database driver). - */ - public static function doDeleteAll($con = null) - { - if ($con === null) { - $con = Propel::getConnection(self::DATABASE_NAME); - } - $affectedRows = 0; // initialize var to track total num of affected rows - try { - // use transaction because $criteria could contain info - // for more than one table or we could emulating ON DELETE CASCADE, etc. - $con->begin(); - $affectedRows += BasePeer::doDeleteAll(RbacUsersPeer::TABLE_NAME, $con); - $con->commit(); - return $affectedRows; - } catch (PropelException $e) { - $con->rollback(); - throw $e; - } - } - - /** - * Method perform a DELETE on the database, given a RbacUsers or Criteria object OR a primary key value. - * - * @param mixed $values Criteria or RbacUsers object or primary key or array of primary keys - * which is used to create the DELETE statement - * @param Connection $con the connection to use - * @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows - * if supported by native driver or if emulated using Propel. - * @throws PropelException Any exceptions caught during processing will be - * rethrown wrapped into a PropelException. - */ - public static function doDelete($values, $con = null) - { - if ($con === null) { - $con = Propel::getConnection(RbacUsersPeer::DATABASE_NAME); - } - - if ($values instanceof Criteria) { - $criteria = clone $values; // rename for clarity - } elseif ($values instanceof RbacUsers) { - - $criteria = $values->buildPkeyCriteria(); - } else { - // it must be the primary key - $criteria = new Criteria(self::DATABASE_NAME); - $criteria->add(RbacUsersPeer::USR_UID, (array) $values, Criteria::IN); - } - - // Set the correct dbName - $criteria->setDbName(self::DATABASE_NAME); - - $affectedRows = 0; // initialize var to track total num of affected rows - - try { - // use transaction because $criteria could contain info - // for more than one table or we could emulating ON DELETE CASCADE, etc. - $con->begin(); - - $affectedRows += BasePeer::doDelete($criteria, $con); - $con->commit(); - return $affectedRows; - } catch (PropelException $e) { - $con->rollback(); - throw $e; - } - } - - /** - * Validates all modified columns of given RbacUsers object. - * If parameter $columns is either a single column name or an array of column names - * than only those columns are validated. - * - * NOTICE: This does not apply to primary or foreign keys for now. - * - * @param RbacUsers $obj The object to validate. - * @param mixed $cols Column name or array of column names. - * - * @return mixed TRUE if all columns are valid or the error message of the first invalid column. - */ - public static function doValidate(RbacUsers $obj, $cols = null) - { - $columns = array(); - - if ($cols) { - $dbMap = Propel::getDatabaseMap(RbacUsersPeer::DATABASE_NAME); - $tableMap = $dbMap->getTable(RbacUsersPeer::TABLE_NAME); - - if (! is_array($cols)) { - $cols = array($cols); - } - - foreach($cols as $colName) { - if ($tableMap->containsColumn($colName)) { - $get = 'get' . $tableMap->getColumn($colName)->getPhpName(); - $columns[$colName] = $obj->$get(); - } - } - } else { - - } - - return BasePeer::doValidate(RbacUsersPeer::DATABASE_NAME, RbacUsersPeer::TABLE_NAME, $columns); - } - - /** - * Retrieve a single object by pkey. - * - * @param mixed $pk the primary key. - * @param Connection $con the connection to use - * @return RbacUsers - */ - public static function retrieveByPK($pk, $con = null) - { - if ($con === null) { - $con = Propel::getConnection(self::DATABASE_NAME); - } - - $criteria = new Criteria(RbacUsersPeer::DATABASE_NAME); - - $criteria->add(RbacUsersPeer::USR_UID, $pk); - - - $v = RbacUsersPeer::doSelect($criteria, $con); - - return !empty($v) > 0 ? $v[0] : null; - } - - /** - * Retrieve multiple objects by pkey. - * - * @param array $pks List of primary keys - * @param Connection $con the connection to use - * @throws PropelException Any exceptions caught during processing will be - * rethrown wrapped into a PropelException. - */ - public static function retrieveByPKs($pks, $con = null) - { - if ($con === null) { - $con = Propel::getConnection(self::DATABASE_NAME); - } - - $objs = null; - if (empty($pks)) { - $objs = array(); - } else { - $criteria = new Criteria(); - $criteria->add(RbacUsersPeer::USR_UID, $pks, Criteria::IN); - $objs = RbacUsersPeer::doSelect($criteria, $con); - } - return $objs; - } - -} // BaseRbacUsersPeer // static code to register the map builder for this Peer with the main Propel class if (Propel::isInit()) { - // the MapBuilder classes register themselves with Propel during initialization - // so we need to load them here. - try { - BaseRbacUsersPeer::getMapBuilder(); - } catch (Exception $e) { - Propel::log('Could not initialize Peer: ' . $e->getMessage(), Propel::LOG_ERR); - } + // the MapBuilder classes register themselves with Propel during initialization + // so we need to load them here. + try { + BaseRbacUsersPeer::getMapBuilder(); + } catch (Exception $e) { + Propel::log('Could not initialize Peer: ' . $e->getMessage(), Propel::LOG_ERR); + } } else { - // even if Propel is not yet initialized, the map builder class can be registered - // now and then it will be loaded when Propel initializes. - require_once 'classes/model/map/RbacUsersMapBuilder.php'; - Propel::registerMapBuilder('classes.model.map.RbacUsersMapBuilder'); + // even if Propel is not yet initialized, the map builder class can be registered + // now and then it will be loaded when Propel initializes. + require_once 'classes/model/map/RbacUsersMapBuilder.php'; + Propel::registerMapBuilder('classes.model.map.RbacUsersMapBuilder'); } + diff --git a/rbac/engine/config/schema.xml b/rbac/engine/config/schema.xml index f9af4ef23..a113f0e1f 100755 --- a/rbac/engine/config/schema.xml +++ b/rbac/engine/config/schema.xml @@ -132,7 +132,7 @@ - + diff --git a/workflow/engine/bin/tasks/cliAddons.php b/workflow/engine/bin/tasks/cliAddons.php index c9abc8ffa..912296b38 100644 --- a/workflow/engine/bin/tasks/cliAddons.php +++ b/workflow/engine/bin/tasks/cliAddons.php @@ -19,6 +19,15 @@ EOT } */ +CLI::taskName('change-password-hash-method'); +CLI::taskDescription(<<name, "INFO")."\n"); + $path = PATH_DATA . 'sites' . PATH_SEP . $workspace->name . PATH_SEP; + try { + if (file_exists($path . 'plugin.singleton')) { + define('SYS_SYS', $workspace->name); + define('PATH_DATA_SITE', $path); + + $oPluginRegistry =& PMPluginRegistry::getSingleton(); + $oPluginRegistry->setupPlugins(); + $oPluginRegistry->unSerializeInstance(file_get_contents($path . 'plugin.singleton')); + $oPluginRegistry =& PMPluginRegistry::getSingleton(); + $oPluginRegistry->unSerializeInstance(file_get_contents($path . 'plugin.singleton')); + + if ($oPluginRegistry->existsTrigger ( PM_HASH_PASSWORD )) { + $response = new stdclass(); + $response->workspace = $workspace; + $response->hash = $hash; + $workspace->changeHashPassword($workspace->name, $response); + $workspace->close(); + CLI::logging(pakeColor::colorize("Changed...", "ERROR") . "\n"); + } else { + CLI::logging(pakeColor::colorize("You can't use the \"change-password-hash-method\" option because the license has expired or your workspace doesn't have the Enteprise plugin enabled.", "ERROR") . "\n"); + } + } else { + CLI::logging(pakeColor::colorize("You can't use the \"change-password-hash-method\" option because the license has expired or your workspace doesn't have the Enteprise plugin enabled.", "INFO") . "\n"); + } + } catch (Exception $e) { + echo "> Error: ".CLI::error($e->getMessage()) . "\n"; + } + } +} diff --git a/workflow/engine/classes/class.enterprise.php b/workflow/engine/classes/class.enterprise.php index 46e5202b8..19957b692 100644 --- a/workflow/engine/classes/class.enterprise.php +++ b/workflow/engine/classes/class.enterprise.php @@ -1,5 +1,5 @@ hash, $type)) { + throw new Exception( 'Type: ' . $object->hash. ' No valid.'); + return false; + } + + G::LoadClass( "configuration" ); + $config = new Configurations(); + $typeEncrypt = $config->getConfiguration('ENTERPRISE_SETTING_ENCRYPT', ''); + if ($typeEncrypt == null) { + $typeEncrypt = array('current' => $object->hash, 'previous' => 'md5'); + } else { + $typeEncrypt['previous'] = $typeEncrypt['current']; + $typeEncrypt['current'] = $object->hash; + } + if ($object->hash != $typeEncrypt['previous']) { + $config->aConfig = $typeEncrypt; + $config->saveConfig('ENTERPRISE_SETTING_ENCRYPT', ''); + } + + require_once 'classes/model/RbacUsersPeer.php'; + require_once 'classes/model/UsersProperties.php'; + $userProperty = new UsersProperties(); + + $criteria = new Criteria($object->workspace->dbInfo['DB_RBAC_NAME']); + $criteria->add(RbacUsersPeer::USR_STATUS, 0, Criteria::NOT_EQUAL); + $dataset = RbacUsersPeer::doSelectRS($criteria); + $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + + while ($dataset->next()) { + $row = $dataset->getRow(); + $property = $userProperty->loadOrCreateIfNotExists($row['USR_UID'], array()); + $property['USR_LOGGED_NEXT_TIME'] = 1; + $userProperty->update($property); + } + } } if (!class_exists("pmLicenseManager")) { - require_once (PATH_PLUGINS . 'enterprise/class.pmLicenseManager.php'); + require_once ("classes" . PATH_SEP . "class.pmLicenseManager.php"); } diff --git a/workflow/engine/classes/class.plugin.php b/workflow/engine/classes/class.plugin.php index f625bb3f5..71c8858aa 100755 --- a/workflow/engine/classes/class.plugin.php +++ b/workflow/engine/classes/class.plugin.php @@ -43,8 +43,7 @@ define('PM_SINGLE_SIGN_ON', 1014); define('PM_GET_CASES_AJAX_LISTENER', 1015); define('PM_BEFORE_CREATE_USER', 1016); define('PM_AFTER_LOGIN', 1017); - - +define('PM_HASH_PASSWORD', 1018); /** * @package workflow.engine.classes diff --git a/workflow/engine/classes/class.pluginRegistry.php b/workflow/engine/classes/class.pluginRegistry.php index 9bad6de30..45db3491b 100755 --- a/workflow/engine/classes/class.pluginRegistry.php +++ b/workflow/engine/classes/class.pluginRegistry.php @@ -985,7 +985,7 @@ class PMPluginRegistry $classFile = ''; foreach ($this->_aFolders as $row => $folder) { - $fname = PATH_PLUGINS . $folder->sFolderName . PATH_SEP . 'class.' . $folder->sFolderName . '.php'; + $fname = $folder->sNamespace == 'enterprise' ? PATH_CORE . 'classes' . PATH_SEP . 'class.' . $folder->sFolderName . '.php' : PATH_PLUGINS . $folder->sFolderName . PATH_SEP . 'class.' . $folder->sFolderName . '.php'; if ($detail->sNamespace == $folder->sNamespace && file_exists( $fname )) { $found = true; $classFile = $fname; @@ -1021,11 +1021,12 @@ class PMPluginRegistry if ($triggerId == $detail->sTriggerId) { //review all folders registered for this namespace foreach ($this->_aFolders as $row => $folder) { - $fname = PATH_PLUGINS . $folder->sFolderName . PATH_SEP . 'class.' . $folder->sFolderName . '.php'; + $fname = $folder->sNamespace == 'enterprise' ? PATH_CORE . 'classes' . PATH_SEP . 'class.' . $folder->sFolderName . '.php' : PATH_PLUGINS . $folder->sFolderName . PATH_SEP . 'class.' . $folder->sFolderName . '.php'; if ($detail->sNamespace == $folder->sNamespace && file_exists( $fname )) { $found = true; } } + } } return $found; diff --git a/workflow/engine/classes/class.wsBase.php b/workflow/engine/classes/class.wsBase.php index bee4c01af..500799f7a 100755 --- a/workflow/engine/classes/class.wsBase.php +++ b/workflow/engine/classes/class.wsBase.php @@ -1189,7 +1189,7 @@ class wsBase $arrayData = array (); $arrayData["USR_USERNAME"] = $userName; - $arrayData["USR_PASSWORD"] = md5( $password ); + $arrayData["USR_PASSWORD"] = Bootstrap::hasPassword( $password ); $arrayData["USR_FIRSTNAME"] = $firstName; $arrayData["USR_LASTNAME"] = $lastName; $arrayData["USR_EMAIL"] = $email; @@ -1380,7 +1380,7 @@ class wsBase } if (! empty( $password )) { - $arrayData["USR_PASSWORD"] = md5( $password ); + $arrayData["USR_PASSWORD"] = Bootstrap::hasPassword( $password ); } //Update user diff --git a/workflow/engine/classes/class.wsTools.php b/workflow/engine/classes/class.wsTools.php index 1faa86914..f293100df 100755 --- a/workflow/engine/classes/class.wsTools.php +++ b/workflow/engine/classes/class.wsTools.php @@ -1566,5 +1566,12 @@ class workspaceTools } } + public function changeHashPassword ($workspace,$response) { + G::LoadClass("patch"); + $this->initPropel( true ); + + $oPluginRegistry =& PMPluginRegistry::getSingleton(); + $oPluginRegistry->executeTriggers ( PM_HASH_PASSWORD , $response ); + } } diff --git a/workflow/engine/controllers/installer.php b/workflow/engine/controllers/installer.php index c7785368f..47c0e6786 100755 --- a/workflow/engine/controllers/installer.php +++ b/workflow/engine/controllers/installer.php @@ -306,7 +306,7 @@ class Installer extends Controller $info->pathLogFile->result = file_exists( $_REQUEST['pathLogFile'] ); if ($info->pathLogFile->result) { - $info->pathLogFile->message = G::LoadTranslation('ID_INSTALLATION_LOG'); + $info->pathLogFile->message = G::LoadTranslation('ID_INSTALLATION_FILE_LOG'); } if ($info->success) { diff --git a/workflow/engine/controllers/main.php b/workflow/engine/controllers/main.php index cc17f84eb..4d0dc52d4 100644 --- a/workflow/engine/controllers/main.php +++ b/workflow/engine/controllers/main.php @@ -379,7 +379,7 @@ class Main extends Controller $newPass = G::generate_password(); $aData['USR_UID'] = $userData['USR_UID']; - $aData['USR_PASSWORD'] = md5( $newPass ); + $aData['USR_PASSWORD'] = Bootstrap::hasPassword( $newPass ); $rbacUser->update( $aData ); $user->update( $aData ); diff --git a/workflow/engine/menus/setup.php b/workflow/engine/menus/setup.php index f57f211f0..74db2b135 100755 --- a/workflow/engine/menus/setup.php +++ b/workflow/engine/menus/setup.php @@ -109,6 +109,7 @@ require_once PATH_CORE . 'methods' . PATH_SEP . 'enterprise' . PATH_SEP . 'enter $enterprise = new enterprisePlugin('enterprise'); if (!file_exists(PATH_DATA_SITE . "plugin.singleton")) { + $enterprise->install(); $enterprise->enable(); } $enterprise->setup(); diff --git a/workflow/engine/methods/enterprise/enterprise.php b/workflow/engine/methods/enterprise/enterprise.php index 728ea4434..31e96a824 100644 --- a/workflow/engine/methods/enterprise/enterprise.php +++ b/workflow/engine/methods/enterprise/enterprise.php @@ -105,6 +105,12 @@ class enterprisePlugin extends PMPlugin public function install() { + $pluginRegistry = &PMPluginRegistry::getSingleton(); + + $pluginDetail = $pluginRegistry->getPluginDetails("enterprise.php"); + $pluginRegistry->enablePlugin($pluginDetail->sNamespace); + + file_put_contents(PATH_DATA_SITE . "plugin.singleton", $pluginRegistry->serializeInstance()); } public function uninstall() @@ -113,25 +119,16 @@ class enterprisePlugin extends PMPlugin public function setup() { - $urlPart = substr(SYS_SKIN, 0, 2) == 'ux' && SYS_SKIN != 'uxs' ? 'main/login' : 'login/login'; - $this->registerMenu("setup", "menuEnterprise.php"); - - //including the file inside the enterprise folder + ////including the file inside the enterprise folder require_once PATH_CORE . 'classes' . PATH_SEP . 'class.pmLicenseManager.php'; $this->registerTrigger(PM_LOGIN, "enterpriseSystemUpdate"); - - $licenseManager = &pmLicenseManager::getSingleton(); - $oHeadPublisher = &headPublisher::getSingleton(); - + $this->registerTrigger(PM_HASH_PASSWORD, 'setHashPassword'); } public function enable() { $this->setConfiguration(); - $pluginRegistry = &PMPluginRegistry::getSingleton(); - - file_put_contents(PATH_DATA_SITE . "plugin.singleton", $pluginRegistry->serializeInstance()); require_once (PATH_CORE . 'classes/model/AddonsStore.php'); AddonsStore::checkLicenseStore(); @@ -348,6 +345,28 @@ class enterprisePlugin extends PMPlugin fclose($file); } } + + public function hashPassword ($pass, $previous=false) + { + G::LoadClass( "configuration" ); + $config= new Configurations(); + $typeEncrypt = $config->getConfiguration('ENTERPRISE_SETTING_ENCRYPT', ''); + //$typeEncrypt = ($typeEncrypt == null) ? 'md5' : isset($typeEncrypt['current']) ? $typeEncrypt['current'] : 'md5'; + $encrypt = 'md5'; + if ($typeEncrypt != null) { + if (isset($typeEncrypt['current']) && $typeEncrypt['current'] != '') { + $encrypt = $typeEncrypt['current']; + error_log('hashPassword bootstrap ' . $encrypt); + } + if ($previous && isset($typeEncrypt['previous']) && $typeEncrypt['previous'] != '' ) { + $encrypt = $typeEncrypt['previous']; + error_log('hashPassword bootstrap ' . $encrypt); + } + } + eval("\$var = hash('" . $encrypt . "', '" . $pass . "');"); + + return $var; + } } $oPluginRegistry = &PMPluginRegistry::getSingleton(); diff --git a/workflow/engine/methods/login/authentication.php b/workflow/engine/methods/login/authentication.php index 38f5ed874..28c631062 100755 --- a/workflow/engine/methods/login/authentication.php +++ b/workflow/engine/methods/login/authentication.php @@ -40,6 +40,14 @@ try { $pwd = trim($frm['USR_PASSWORD']); } + require_once PATH_CORE . 'methods' . PATH_SEP . 'enterprise' . PATH_SEP . 'enterprise.php'; + + $enterprise = new enterprisePlugin('enterprise'); + + if (!file_exists(PATH_DATA_SITE . "plugin.singleton")) { + $enterprise->enable(); + } + $enterprise->setup(); $uid = $RBAC->VerifyLogin($usr , $pwd); $RBAC->cleanSessionFiles(72); //cleaning session files older than 72 hours diff --git a/workflow/engine/methods/login/changePassword.php b/workflow/engine/methods/login/changePassword.php index 12e6fc988..20bdaf3a4 100755 --- a/workflow/engine/methods/login/changePassword.php +++ b/workflow/engine/methods/login/changePassword.php @@ -5,7 +5,7 @@ $aUser = $oUser->load($_SESSION['USER_LOGGED']); global $RBAC; $aData['USR_UID'] = $aUser['USR_UID']; $aData['USR_USERNAME'] = $aUser['USR_USERNAME']; -$aData['USR_PASSWORD'] = md5($_POST['form']['USR_PASSWORD']); +$aData['USR_PASSWORD'] = Bootstrap::hasPassword($_POST['form']['USR_PASSWORD']); $aData['USR_FIRSTNAME'] = $aUser['USR_FIRSTNAME']; $aData['USR_LASTNAME'] = $aUser['USR_LASTNAME']; $aData['USR_EMAIL'] = $aUser['USR_EMAIL']; diff --git a/workflow/engine/methods/login/retrivePassword.php b/workflow/engine/methods/login/retrivePassword.php index 490541ffd..426f2ac05 100755 --- a/workflow/engine/methods/login/retrivePassword.php +++ b/workflow/engine/methods/login/retrivePassword.php @@ -22,7 +22,7 @@ if ($userData['USR_EMAIL'] != '' && $userData['USR_EMAIL'] === $data['USR_EMAIL' $newPass = G::generate_password(); $aData['USR_UID'] = $userData['USR_UID']; - $aData['USR_PASSWORD'] = md5($newPass); + $aData['USR_PASSWORD'] = Bootstrap::hasPassword($newPass); /* **Save after sending the mail $rbacUser->update($aData); $user->update($aData); diff --git a/workflow/engine/methods/users/myInfo_Save.php b/workflow/engine/methods/users/myInfo_Save.php index 66bf4c637..48ba3943c 100755 --- a/workflow/engine/methods/users/myInfo_Save.php +++ b/workflow/engine/methods/users/myInfo_Save.php @@ -50,7 +50,7 @@ try { $_POST['form']['USR_NEW_PASS'] = ''; } if ($_POST['form']['USR_NEW_PASS'] != '') { - $_POST['form']['USR_PASSWORD'] = md5( $_POST['form']['USR_NEW_PASS'] ); + $_POST['form']['USR_PASSWORD'] = Bootstrap::hasPassword( $_POST['form']['USR_NEW_PASS'] ); } if (! isset( $_POST['form']['USR_CITY'] )) { $_POST['form']['USR_CITY'] = ''; diff --git a/workflow/engine/methods/users/usersAjax.php b/workflow/engine/methods/users/usersAjax.php index 1be09c4fb..537582898 100755 --- a/workflow/engine/methods/users/usersAjax.php +++ b/workflow/engine/methods/users/usersAjax.php @@ -130,7 +130,7 @@ switch ($_POST['action']) { $form['USR_NEW_PASS'] = ''; } if ($form['USR_NEW_PASS'] != '') { - $form['USR_PASSWORD'] = md5($form['USR_NEW_PASS']); + $form['USR_PASSWORD'] = Bootstrap::hasPassword($form['USR_NEW_PASS']); } if (!isset($form['USR_CITY'])) { $form['USR_CITY'] = ''; @@ -214,7 +214,7 @@ switch ($_POST['action']) { */ require_once 'classes/model/UsersProperties.php'; $oUserProperty = new UsersProperties(); - $aUserProperty = $oUserProperty->loadOrCreateIfNotExists($aData['USR_UID'], array('USR_PASSWORD_HISTORY' => serialize(array(md5($aData['USR_PASSWORD']))))); + $aUserProperty = $oUserProperty->loadOrCreateIfNotExists($aData['USR_UID'], array('USR_PASSWORD_HISTORY' => serialize(array(Bootstrap::hasPassword($aData['USR_PASSWORD']))))); $aUserProperty['USR_LOGGED_NEXT_TIME'] = $form['USR_LOGGED_NEXT_TIME']; $oUserProperty->update($aUserProperty); } else { diff --git a/workflow/engine/methods/users/users_Save.php b/workflow/engine/methods/users/users_Save.php index d53f2177b..f816337c6 100755 --- a/workflow/engine/methods/users/users_Save.php +++ b/workflow/engine/methods/users/users_Save.php @@ -63,7 +63,7 @@ try { $form['USR_NEW_PASS'] = ''; } if ($form['USR_NEW_PASS'] != '') { - $form['USR_PASSWORD'] = md5( $form['USR_NEW_PASS'] ); + $form['USR_PASSWORD'] = Bootstrap::hasPassword( $form['USR_NEW_PASS'] ); } if (! isset( $form['USR_CITY'] )) { $form['USR_CITY'] = ''; diff --git a/workflow/engine/templates/installer/installer_cards.js b/workflow/engine/templates/installer/installer_cards.js index 622f255ac..da1a76130 100644 --- a/workflow/engine/templates/installer/installer_cards.js +++ b/workflow/engine/templates/installer/installer_cards.js @@ -430,7 +430,7 @@ Ext.onReady(function(){ }, { xtype: 'textfield', - fieldLabel: ' ' + _('ID_INSTALLATION_LOG'), + fieldLabel: ' ' + _('ID_INSTALLATION_FILE_LOG'), id: 'pathLogFile', width: 430, value: path_shared + 'log' + path_sep + 'install.log', From 9de2f3262be42afa0c8dccbed879f8c85f289679 Mon Sep 17 00:00:00 2001 From: Marco Antonio Nina Date: Mon, 22 Sep 2014 10:26:13 -0400 Subject: [PATCH 2/3] BUG-15561 Cambiar el algoritmo o metodo de cifrado... SOLVED - It don't have the functionality. - A function was add in class bootstrap hasPassword. - a function was add in class enterprise. --- gulliver/system/class.bootstrap.php | 3 --- rbac/engine/classes/model/RbacUsers.php | 1 - workflow/engine/methods/enterprise/enterprise.php | 3 --- 3 files changed, 7 deletions(-) diff --git a/gulliver/system/class.bootstrap.php b/gulliver/system/class.bootstrap.php index 98889dd61..7347495ad 100644 --- a/gulliver/system/class.bootstrap.php +++ b/gulliver/system/class.bootstrap.php @@ -2868,7 +2868,6 @@ class Bootstrap } catch (Exception $e) { } - error_log('hasPassword bootstrap ' . $passEncrypt); return $passEncrypt; } @@ -2876,11 +2875,9 @@ class Bootstrap public function verifyHashPassword ($pass, $userPass) { //$verify = Bootstrap::hasPassword($pass); - error_log('contraseña config...'); if (Bootstrap::hasPassword($pass) == $userPass) { return true; } - error_log('contraseña anterior...'); if (Bootstrap::hasPassword($pass, true) == $userPass) { return true; } diff --git a/rbac/engine/classes/model/RbacUsers.php b/rbac/engine/classes/model/RbacUsers.php index 5759c15b8..928d3dc7d 100755 --- a/rbac/engine/classes/model/RbacUsers.php +++ b/rbac/engine/classes/model/RbacUsers.php @@ -81,7 +81,6 @@ class RbacUsers extends BaseRbacUsers $aFields = $rs[0]->toArray(BasePeer::TYPE_FIELDNAME); //verify password with md5, and md5 format if (mb_strtoupper($sUsername, 'utf-8') === mb_strtoupper($aFields['USR_USERNAME'], 'utf-8')) { - error_log('contraseña bbdd... '. $aFields['USR_PASSWORD']); if( Bootstrap::verifyHashPassword($sPassword, $aFields['USR_PASSWORD']) ) { if ($aFields['USR_DUE_DATE'] < date('Y-m-d')) { return -4; diff --git a/workflow/engine/methods/enterprise/enterprise.php b/workflow/engine/methods/enterprise/enterprise.php index 31e96a824..75dbbef17 100644 --- a/workflow/engine/methods/enterprise/enterprise.php +++ b/workflow/engine/methods/enterprise/enterprise.php @@ -351,16 +351,13 @@ class enterprisePlugin extends PMPlugin G::LoadClass( "configuration" ); $config= new Configurations(); $typeEncrypt = $config->getConfiguration('ENTERPRISE_SETTING_ENCRYPT', ''); - //$typeEncrypt = ($typeEncrypt == null) ? 'md5' : isset($typeEncrypt['current']) ? $typeEncrypt['current'] : 'md5'; $encrypt = 'md5'; if ($typeEncrypt != null) { if (isset($typeEncrypt['current']) && $typeEncrypt['current'] != '') { $encrypt = $typeEncrypt['current']; - error_log('hashPassword bootstrap ' . $encrypt); } if ($previous && isset($typeEncrypt['previous']) && $typeEncrypt['previous'] != '' ) { $encrypt = $typeEncrypt['previous']; - error_log('hashPassword bootstrap ' . $encrypt); } } eval("\$var = hash('" . $encrypt . "', '" . $pass . "');"); From 94a8f21df32296942d757e7879675f7d40218ad3 Mon Sep 17 00:00:00 2001 From: Marco Antonio Nina Date: Tue, 23 Sep 2014 10:42:44 -0400 Subject: [PATCH 3/3] BUG-15561 Cambiar el algoritmo o metodo de cifrado... IMPROVEMENT - It don't have the functionality. - A function was add in class bootstrap hasPassword. - a function was add in class enterprise. --- rbac/engine/classes/model/om/BaseRbacUsersPeer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rbac/engine/classes/model/om/BaseRbacUsersPeer.php b/rbac/engine/classes/model/om/BaseRbacUsersPeer.php index 977bd890a..65c6a6724 100755 --- a/rbac/engine/classes/model/om/BaseRbacUsersPeer.php +++ b/rbac/engine/classes/model/om/BaseRbacUsersPeer.php @@ -3,7 +3,7 @@ require_once 'propel/util/BasePeer.php'; // The object class -- needed for instanceof checks in this class. // actual class may be a subclass -- as returned by RbacUsersPeer::getOMClass() -include_once 'classes/model/RbacUsers.php'; +//include_once 'classes/model/RbacUsers.php'; /** * Base static class for performing query and update operations on the 'RBAC_USERS' table.