diff --git a/gulliver/system/class.database_mysql.php b/gulliver/system/class.database_mysql.php
index 658330431..fb6e56b93 100644
--- a/gulliver/system/class.database_mysql.php
+++ b/gulliver/system/class.database_mysql.php
@@ -82,6 +82,9 @@ class database extends database_base
} else {
$sSQL .= ' NOT NULL';
}
+ if (isset( $aParameters['AutoIncrement'] ) && $aParameters['AutoIncrement']) {
+ $sSQL .= ' AUTO_INCREMENT PRIMARY KEY';
+ }
if (isset( $aParameters['Key'] ) && $aParameters['Key'] == 'PRI') {
$sKeys .= $this->sQuoteCharacter . $sColumnName . $this->sQuoteCharacter . ',';
}
@@ -139,6 +142,52 @@ class database extends database_base
return $sSQL;
}
+ /**
+ * This method has to refactor
+ * @param $sTable
+ * @param $sColumn
+ * @param $aParameters
+ * @return string
+ */
+ public function generateCheckAddColumnSQL($sTable, $sColumn, $aParameters)
+ {
+ $sSQL = 'ALTER TABLE ' . $this->sQuoteCharacter . $sTable . $this->sQuoteCharacter . ' DROP PRIMARY KEY ';
+ $sSQL .= $this->sEndLine;
+ return $sSQL;
+ }
+
+ /**
+ * This method has to refactor
+ * @param $sTable
+ * @param $sColumn
+ * @param $aParameters
+ * @return string
+ */
+ public function deleteAllIndexesIntable($sTable, $sColumn, $aParameters)
+ {
+ $sSQL = 'ALTER TABLE ' . $this->sQuoteCharacter . $sTable . $this->sQuoteCharacter . ' DROP INDEX indexLoginLog ';
+ $sSQL .= $this->sEndLine;
+ return $sSQL;
+ }
+
+ /**
+ * This method is used exclusively to verify if it was made changes in the DB to solve the HOR-1787 issue, later
+ * a generic method which covers all the possible similar problems found in the HOR-1787 issue will be generated.
+ * @param $sTable
+ * @param $sColumn
+ * @param $aParameters
+ * @return bool
+ */
+ public function checkPatchHor1787($sTable, $sColumn, $aParameters)
+ {
+ if (isset($aParameters['AutoIncrement']) && $aParameters['AutoIncrement'] && $sTable == 'LOGIN_LOG') {
+ return true;
+ }
+ return false;
+ }
+
+
+
/**
* generate an add column sentence
*
@@ -157,6 +206,9 @@ class database extends database_base
$sSQL .= ' NOT NULL';
}
}
+ if (isset( $aParameters['AutoIncrement'] ) && $aParameters['AutoIncrement']) {
+ $sSQL .= ' AUTO_INCREMENT PRIMARY KEY';
+ }
/*if ($aParameters['Key'] == 'PRI') {
$sKeys .= 'ALTER TABLE ' . $this->sQuoteCharacter . $sTable . $this->sQuoteCharacter .
' ADD PRIMARY KEY (' . $this->sQuoteCharacter . $sColumn . $this->sQuoteCharacter . ')' . $this->sEndLine;
diff --git a/workflow/engine/classes/class.system.php b/workflow/engine/classes/class.system.php
index 6838131c2..582c88ed3 100644
--- a/workflow/engine/classes/class.system.php
+++ b/workflow/engine/classes/class.system.php
@@ -758,40 +758,40 @@ class System
* @param string $sSchemaFile schema filename
* @return $sContent
*/
- public static function getSchema ($sSchemaFile)
+ public static function getSchema($sSchemaFile)
{
/* This is the MySQL mapping that Propel uses (from MysqlPlatform.php) */
- $mysqlTypes = array ('NUMERIC' => "DECIMAL",'LONGVARCHAR' => "MEDIUMTEXT",'TIMESTAMP' => "DATETIME",'BU_TIMESTAMP' => "DATETIME",'BINARY' => "BLOB",'VARBINARY' => "MEDIUMBLOB",'LONGVARBINARY' => "LONGBLOB",'BLOB' => "LONGBLOB",'CLOB' => "LONGTEXT",
- /* This is not from Propel, but is required to get INT right */
- 'INTEGER' => "INT"
+ $mysqlTypes = array('NUMERIC' => "DECIMAL", 'LONGVARCHAR' => "MEDIUMTEXT", 'TIMESTAMP' => "DATETIME", 'BU_TIMESTAMP' => "DATETIME", 'BINARY' => "BLOB", 'VARBINARY' => "MEDIUMBLOB", 'LONGVARBINARY' => "LONGBLOB", 'BLOB' => "LONGBLOB", 'CLOB' => "LONGTEXT",
+ /* This is not from Propel, but is required to get INT right */
+ 'INTEGER' => "INT"
);
- $aSchema = array ();
+ $aSchema = array();
$oXml = new DomDocument();
- $oXml->load( $sSchemaFile );
- $aTables = $oXml->getElementsByTagName( 'table' );
+ $oXml->load($sSchemaFile);
+ $aTables = $oXml->getElementsByTagName('table');
foreach ($aTables as $oTable) {
- $aPrimaryKeys = array ();
- $sTableName = $oTable->getAttribute( 'name' );
- $aSchema[$sTableName] = array ();
- $aColumns = $oTable->getElementsByTagName( 'column' );
+ $aPrimaryKeys = array();
+ $sTableName = $oTable->getAttribute('name');
+ $aSchema[$sTableName] = array();
+ $aColumns = $oTable->getElementsByTagName('column');
foreach ($aColumns as $oColumn) {
- $sColumName = $oColumn->getAttribute( 'name' );
+ $sColumName = $oColumn->getAttribute('name');
/* Get the field type. Propel uses VARCHAR if nothing else is specified */
- $type = $oColumn->hasAttribute( 'type' ) ? strtoupper( $oColumn->getAttribute( 'type' ) ) : "VARCHAR";
+ $type = $oColumn->hasAttribute('type') ? strtoupper($oColumn->getAttribute('type')) : "VARCHAR";
/* Convert type to MySQL type according to Propel */
- if (array_key_exists( $type, $mysqlTypes )) {
+ if (array_key_exists($type, $mysqlTypes)) {
$type = $mysqlTypes[$type];
}
- $size = $oColumn->hasAttribute( 'size' ) ? $oColumn->getAttribute( 'size' ) : null;
+ $size = $oColumn->hasAttribute('size') ? $oColumn->getAttribute('size') : null;
/* Add default sizes from MySQL */
- if ($type == "TINYINT" && ! $size) {
+ if ($type == "TINYINT" && !$size) {
$size = "4";
}
- if ($type == "INT" && ! $size) {
+ if ($type == "INT" && !$size) {
$size = "11";
}
@@ -799,35 +799,35 @@ class System
$type = "$type($size)";
}
- $required = $oColumn->hasAttribute( 'required' ) ? $oColumn->getAttribute( 'required' ) : null;
+ $required = $oColumn->hasAttribute('required') ? $oColumn->getAttribute('required') : null;
/* Convert $required to a bool */
- $required = (in_array( strtolower( $required ), array ('1','true'
- ) ));
+ $required = (in_array(strtolower($required), array('1', 'true'
+ )));
+ $autoIncrement = $oColumn->hasAttribute('autoIncrement') ? $oColumn->hasAttribute('autoIncrement') : false;
+ $default = $oColumn->hasAttribute('default') ? $oColumn->getAttribute('default') : null;
- $default = $oColumn->hasAttribute( 'default' ) ? $oColumn->getAttribute( 'default' ) : null;
-
- $primaryKey = $oColumn->hasAttribute( 'primaryKey' ) ? $oColumn->getAttribute( 'primaryKey' ) : null;
+ $primaryKey = $oColumn->hasAttribute('primaryKey') ? $oColumn->getAttribute('primaryKey') : null;
/* Convert $primaryKey to a bool */
- $primaryKey = (in_array( strtolower( $primaryKey ), array ('1','true'
- ) ));
+ $primaryKey = (in_array(strtolower($primaryKey), array('1', 'true'
+ )));
if ($primaryKey) {
$aPrimaryKeys[] = $sColumName;
}
- $aSchema[$sTableName][$sColumName] = array ('Field' => $sColumName,'Type' => $type,'Null' => $required ? "NO" : "YES",'Default' => $default
- );
+ $aSchema[$sTableName][$sColumName] = array('Field' => $sColumName, 'Type' => $type,
+ 'Null' => $required ? "NO" : "YES", 'Default' => $default, 'AutoIncrement' => $autoIncrement);
}
- if (is_array( $aPrimaryKeys ) && count( $aPrimaryKeys ) > 0) {
+ if (is_array($aPrimaryKeys) && count($aPrimaryKeys) > 0) {
$aSchema[$sTableName]['INDEXES']['PRIMARY'] = $aPrimaryKeys;
}
- $aIndexes = $oTable->getElementsByTagName( 'index' );
+ $aIndexes = $oTable->getElementsByTagName('index');
foreach ($aIndexes as $oIndex) {
- $aIndex = array ();
- $aIndexesColumns = $oIndex->getElementsByTagName( 'index-column' );
+ $aIndex = array();
+ $aIndexesColumns = $oIndex->getElementsByTagName('index-column');
foreach ($aIndexesColumns as $oIndexColumn) {
- $aIndex[] = $oIndexColumn->getAttribute( 'name' );
+ $aIndex[] = $oIndexColumn->getAttribute('name');
}
- $aSchema[$sTableName]['INDEXES'][$oIndex->getAttribute( 'name' )] = $aIndex;
+ $aSchema[$sTableName]['INDEXES'][$oIndex->getAttribute('name')] = $aIndex;
}
}
return $aSchema;
diff --git a/workflow/engine/classes/class.wsTools.php b/workflow/engine/classes/class.wsTools.php
index bc6b17bdb..13544a28a 100644
--- a/workflow/engine/classes/class.wsTools.php
+++ b/workflow/engine/classes/class.wsTools.php
@@ -934,6 +934,10 @@ class workspaceTools
$oDataBase->executeQuery($oDataBase->generateDropColumnSQL($sTable, $vData));
break;
case 'ADD':
+ if ($oDataBase->checkPatchHor1787($sTable, $sColumn, $vData)) {
+ $oDataBase->executeQuery($oDataBase->generateCheckAddColumnSQL($sTable, $sColumn, $vData));
+ $oDataBase->executeQuery($oDataBase->deleteAllIndexesIntable($sTable, $sColumn, $vData));
+ }
$oDataBase->executeQuery($oDataBase->generateAddColumnSQL($sTable, $sColumn, $vData));
break;
case 'CHANGE':
diff --git a/workflow/engine/classes/model/LoginLog.php b/workflow/engine/classes/model/LoginLog.php
index 258b54f3c..2ae22fec0 100644
--- a/workflow/engine/classes/model/LoginLog.php
+++ b/workflow/engine/classes/model/LoginLog.php
@@ -20,20 +20,33 @@ require_once 'classes/model/om/BaseLoginLog.php';
*/
class LoginLog extends BaseLoginLog
{
- public function create ($aData)
+ /**
+ * @param $aData
+ * @return bool
+ * @throws Exception
+ */
+ public function create($aData)
{
- $con = Propel::getConnection( LoginLogPeer::DATABASE_NAME );
+ $con = Propel::getConnection("workflow");
try {
- $this->fromArray( $aData, BasePeer::TYPE_FIELDNAME );
- if ($this->validate()) {
- $result = $this->save();
- } else {
- $e = new Exception( "Failed Validation in class " . get_class( $this ) . "." );
- $e->aValidationFailures = $this->getValidationFailures();
- throw ($e);
- }
- $con->commit();
- return $result;
+ $tableName = 'LOGIN_LOG';
+ $columns = array('LOG_UID', 'LOG_STATUS', 'LOG_IP', 'LOG_SID', 'LOG_INIT_DATE', 'LOG_CLIENT_HOSTNAME', 'USR_UID');
+
+ $sql = "INSERT INTO " . $tableName
+ . " (" . implode(",", $columns) . ")"
+ . " VALUES ("
+ . "'" . $aData['LOG_UID'] . "'" . ','
+ . "'" . $aData['LOG_STATUS'] . "'" . ','
+ . "'" . $aData['LOG_IP'] . "'" . ','
+ . "'" . $aData['LOG_SID'] . "'" . ','
+ . "'" . $aData['LOG_INIT_DATE'] . "'" . ','
+ . "'" . $aData['LOG_CLIENT_HOSTNAME'] . "'" . ','
+ . "'" . $aData['USR_UID'] . "'" .
+ ")";
+
+ $stmt = $con->createStatement();
+ $stmt->executeQuery($sql);
+ return true;
} catch (Exception $e) {
$con->rollback();
throw ($e);
diff --git a/workflow/engine/classes/model/map/UsersMapBuilder.php b/workflow/engine/classes/model/map/UsersMapBuilder.php
index 5a29f64c2..5e7519e22 100644
--- a/workflow/engine/classes/model/map/UsersMapBuilder.php
+++ b/workflow/engine/classes/model/map/UsersMapBuilder.php
@@ -129,6 +129,8 @@ class UsersMapBuilder
$tMap->addColumn('USR_DEFAULT_LANG', 'UsrDefaultLang', 'string', CreoleTypes::VARCHAR, false, 10);
+ $tMap->addColumn('USR_LAST_LOGIN', 'UsrLastLogin', 'int', CreoleTypes::TIMESTAMP, false, null);
+
$tMap->addValidator('USR_STATUS', 'validValues', 'propel.validator.ValidValuesValidator', 'ACTIVE|INACTIVE|VACATION|CLOSED', 'Please select a valid type.');
$tMap->addValidator('USR_STATUS', 'required', 'propel.validator.RequiredValidator', '', 'Type is required.');
diff --git a/workflow/engine/classes/model/om/BaseUsers.php b/workflow/engine/classes/model/om/BaseUsers.php
index cccf314de..7af2e1608 100644
--- a/workflow/engine/classes/model/om/BaseUsers.php
+++ b/workflow/engine/classes/model/om/BaseUsers.php
@@ -219,6 +219,12 @@ abstract class BaseUsers extends BaseObject implements Persistent
*/
protected $usr_default_lang = '';
+ /**
+ * The value for the usr_last_login field.
+ * @var int
+ */
+ protected $usr_last_login;
+
/**
* Flag to prevent endless save loop, if this object is referenced
* by another object which falls in this transaction.
@@ -669,6 +675,38 @@ abstract class BaseUsers extends BaseObject implements Persistent
return $this->usr_default_lang;
}
+ /**
+ * Get the [optionally formatted] [usr_last_login] 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 getUsrLastLogin($format = 'Y-m-d H:i:s')
+ {
+
+ if ($this->usr_last_login === null || $this->usr_last_login === '') {
+ return null;
+ } elseif (!is_int($this->usr_last_login)) {
+ // a non-timestamp value was set externally, so we convert it
+ $ts = strtotime($this->usr_last_login);
+ if ($ts === -1 || $ts === false) {
+ throw new PropelException("Unable to parse value of [usr_last_login] as date/time value: " .
+ var_export($this->usr_last_login, true));
+ }
+ } else {
+ $ts = $this->usr_last_login;
+ }
+ if ($format === null) {
+ return $ts;
+ } elseif (strpos($format, '%') !== false) {
+ return strftime($format, $ts);
+ } else {
+ return date($format, $ts);
+ }
+ }
+
/**
* Set the value of [usr_uid] column.
*
@@ -1395,6 +1433,35 @@ abstract class BaseUsers extends BaseObject implements Persistent
} // setUsrDefaultLang()
+ /**
+ * Set the value of [usr_last_login] column.
+ *
+ * @param int $v new value
+ * @return void
+ */
+ public function setUsrLastLogin($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_last_login] from input: " .
+ var_export($v, true));
+ }
+ } else {
+ $ts = $v;
+ }
+ if ($this->usr_last_login !== $ts) {
+ $this->usr_last_login = $ts;
+ $this->modifiedColumns[] = UsersPeer::USR_LAST_LOGIN;
+ }
+
+ } // setUsrLastLogin()
+
/**
* Hydrates (populates) the object variables with values from the database resultset.
*
@@ -1476,12 +1543,14 @@ abstract class BaseUsers extends BaseObject implements Persistent
$this->usr_default_lang = $rs->getString($startcol + 31);
+ $this->usr_last_login = $rs->getTimestamp($startcol + 32, null);
+
$this->resetModified();
$this->setNew(false);
// FIXME - using NUM_COLUMNS may be clearer.
- return $startcol + 32; // 32 = UsersPeer::NUM_COLUMNS - UsersPeer::NUM_LAZY_LOAD_COLUMNS).
+ return $startcol + 33; // 33 = UsersPeer::NUM_COLUMNS - UsersPeer::NUM_LAZY_LOAD_COLUMNS).
} catch (Exception $e) {
throw new PropelException("Error populating Users object", $e);
@@ -1781,6 +1850,9 @@ abstract class BaseUsers extends BaseObject implements Persistent
case 31:
return $this->getUsrDefaultLang();
break;
+ case 32:
+ return $this->getUsrLastLogin();
+ break;
default:
return null;
break;
@@ -1833,6 +1905,7 @@ abstract class BaseUsers extends BaseObject implements Persistent
$keys[29] => $this->getUsrBookmarkStartCases(),
$keys[30] => $this->getUsrTimeZone(),
$keys[31] => $this->getUsrDefaultLang(),
+ $keys[32] => $this->getUsrLastLogin(),
);
return $result;
}
@@ -1960,6 +2033,9 @@ abstract class BaseUsers extends BaseObject implements Persistent
case 31:
$this->setUsrDefaultLang($value);
break;
+ case 32:
+ $this->setUsrLastLogin($value);
+ break;
} // switch()
}
@@ -2111,6 +2187,10 @@ abstract class BaseUsers extends BaseObject implements Persistent
$this->setUsrDefaultLang($arr[$keys[31]]);
}
+ if (array_key_exists($keys[32], $arr)) {
+ $this->setUsrLastLogin($arr[$keys[32]]);
+ }
+
}
/**
@@ -2250,6 +2330,10 @@ abstract class BaseUsers extends BaseObject implements Persistent
$criteria->add(UsersPeer::USR_DEFAULT_LANG, $this->usr_default_lang);
}
+ if ($this->isColumnModified(UsersPeer::USR_LAST_LOGIN)) {
+ $criteria->add(UsersPeer::USR_LAST_LOGIN, $this->usr_last_login);
+ }
+
return $criteria;
}
@@ -2366,6 +2450,8 @@ abstract class BaseUsers extends BaseObject implements Persistent
$copyObj->setUsrDefaultLang($this->usr_default_lang);
+ $copyObj->setUsrLastLogin($this->usr_last_login);
+
$copyObj->setNew(true);
diff --git a/workflow/engine/classes/model/om/BaseUsersPeer.php b/workflow/engine/classes/model/om/BaseUsersPeer.php
index 5ba08b14c..8ee6cefe5 100644
--- a/workflow/engine/classes/model/om/BaseUsersPeer.php
+++ b/workflow/engine/classes/model/om/BaseUsersPeer.php
@@ -25,7 +25,7 @@ abstract class BaseUsersPeer
const CLASS_DEFAULT = 'classes.model.Users';
/** The total number of columns. */
- const NUM_COLUMNS = 32;
+ const NUM_COLUMNS = 33;
/** The number of lazy-loaded columns. */
const NUM_LAZY_LOAD_COLUMNS = 0;
@@ -127,6 +127,9 @@ abstract class BaseUsersPeer
/** the column name for the USR_DEFAULT_LANG field */
const USR_DEFAULT_LANG = 'USERS.USR_DEFAULT_LANG';
+ /** the column name for the USR_LAST_LOGIN field */
+ const USR_LAST_LOGIN = 'USERS.USR_LAST_LOGIN';
+
/** The PHP to DB Name Mapping */
private static $phpNameMap = null;
@@ -138,10 +141,10 @@ abstract class BaseUsersPeer
* 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', 'UsrCountry', 'UsrCity', 'UsrLocation', 'UsrAddress', 'UsrPhone', 'UsrFax', 'UsrCellular', 'UsrZipCode', 'DepUid', 'UsrPosition', 'UsrResume', 'UsrBirthday', 'UsrRole', 'UsrReportsTo', 'UsrReplacedBy', 'UsrUx', 'UsrCostByHour', 'UsrUnitCost', 'UsrPmdriveFolderUid', 'UsrBookmarkStartCases', 'UsrTimeZone', 'UsrDefaultLang', ),
- BasePeer::TYPE_COLNAME => array (UsersPeer::USR_UID, UsersPeer::USR_USERNAME, UsersPeer::USR_PASSWORD, UsersPeer::USR_FIRSTNAME, UsersPeer::USR_LASTNAME, UsersPeer::USR_EMAIL, UsersPeer::USR_DUE_DATE, UsersPeer::USR_CREATE_DATE, UsersPeer::USR_UPDATE_DATE, UsersPeer::USR_STATUS, UsersPeer::USR_COUNTRY, UsersPeer::USR_CITY, UsersPeer::USR_LOCATION, UsersPeer::USR_ADDRESS, UsersPeer::USR_PHONE, UsersPeer::USR_FAX, UsersPeer::USR_CELLULAR, UsersPeer::USR_ZIP_CODE, UsersPeer::DEP_UID, UsersPeer::USR_POSITION, UsersPeer::USR_RESUME, UsersPeer::USR_BIRTHDAY, UsersPeer::USR_ROLE, UsersPeer::USR_REPORTS_TO, UsersPeer::USR_REPLACED_BY, UsersPeer::USR_UX, UsersPeer::USR_COST_BY_HOUR, UsersPeer::USR_UNIT_COST, UsersPeer::USR_PMDRIVE_FOLDER_UID, UsersPeer::USR_BOOKMARK_START_CASES, UsersPeer::USR_TIME_ZONE, UsersPeer::USR_DEFAULT_LANG, ),
- 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_COUNTRY', 'USR_CITY', 'USR_LOCATION', 'USR_ADDRESS', 'USR_PHONE', 'USR_FAX', 'USR_CELLULAR', 'USR_ZIP_CODE', 'DEP_UID', 'USR_POSITION', 'USR_RESUME', 'USR_BIRTHDAY', 'USR_ROLE', 'USR_REPORTS_TO', 'USR_REPLACED_BY', 'USR_UX', 'USR_COST_BY_HOUR', 'USR_UNIT_COST', 'USR_PMDRIVE_FOLDER_UID', 'USR_BOOKMARK_START_CASES', 'USR_TIME_ZONE', 'USR_DEFAULT_LANG', ),
- BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, )
+ BasePeer::TYPE_PHPNAME => array ('UsrUid', 'UsrUsername', 'UsrPassword', 'UsrFirstname', 'UsrLastname', 'UsrEmail', 'UsrDueDate', 'UsrCreateDate', 'UsrUpdateDate', 'UsrStatus', 'UsrCountry', 'UsrCity', 'UsrLocation', 'UsrAddress', 'UsrPhone', 'UsrFax', 'UsrCellular', 'UsrZipCode', 'DepUid', 'UsrPosition', 'UsrResume', 'UsrBirthday', 'UsrRole', 'UsrReportsTo', 'UsrReplacedBy', 'UsrUx', 'UsrCostByHour', 'UsrUnitCost', 'UsrPmdriveFolderUid', 'UsrBookmarkStartCases', 'UsrTimeZone', 'UsrDefaultLang', 'UsrLastLogin', ),
+ BasePeer::TYPE_COLNAME => array (UsersPeer::USR_UID, UsersPeer::USR_USERNAME, UsersPeer::USR_PASSWORD, UsersPeer::USR_FIRSTNAME, UsersPeer::USR_LASTNAME, UsersPeer::USR_EMAIL, UsersPeer::USR_DUE_DATE, UsersPeer::USR_CREATE_DATE, UsersPeer::USR_UPDATE_DATE, UsersPeer::USR_STATUS, UsersPeer::USR_COUNTRY, UsersPeer::USR_CITY, UsersPeer::USR_LOCATION, UsersPeer::USR_ADDRESS, UsersPeer::USR_PHONE, UsersPeer::USR_FAX, UsersPeer::USR_CELLULAR, UsersPeer::USR_ZIP_CODE, UsersPeer::DEP_UID, UsersPeer::USR_POSITION, UsersPeer::USR_RESUME, UsersPeer::USR_BIRTHDAY, UsersPeer::USR_ROLE, UsersPeer::USR_REPORTS_TO, UsersPeer::USR_REPLACED_BY, UsersPeer::USR_UX, UsersPeer::USR_COST_BY_HOUR, UsersPeer::USR_UNIT_COST, UsersPeer::USR_PMDRIVE_FOLDER_UID, UsersPeer::USR_BOOKMARK_START_CASES, UsersPeer::USR_TIME_ZONE, UsersPeer::USR_DEFAULT_LANG, UsersPeer::USR_LAST_LOGIN, ),
+ 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_COUNTRY', 'USR_CITY', 'USR_LOCATION', 'USR_ADDRESS', 'USR_PHONE', 'USR_FAX', 'USR_CELLULAR', 'USR_ZIP_CODE', 'DEP_UID', 'USR_POSITION', 'USR_RESUME', 'USR_BIRTHDAY', 'USR_ROLE', 'USR_REPORTS_TO', 'USR_REPLACED_BY', 'USR_UX', 'USR_COST_BY_HOUR', 'USR_UNIT_COST', 'USR_PMDRIVE_FOLDER_UID', 'USR_BOOKMARK_START_CASES', 'USR_TIME_ZONE', 'USR_DEFAULT_LANG', 'USR_LAST_LOGIN', ),
+ BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, )
);
/**
@@ -151,10 +154,10 @@ abstract class BaseUsersPeer
* 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, 'UsrCountry' => 10, 'UsrCity' => 11, 'UsrLocation' => 12, 'UsrAddress' => 13, 'UsrPhone' => 14, 'UsrFax' => 15, 'UsrCellular' => 16, 'UsrZipCode' => 17, 'DepUid' => 18, 'UsrPosition' => 19, 'UsrResume' => 20, 'UsrBirthday' => 21, 'UsrRole' => 22, 'UsrReportsTo' => 23, 'UsrReplacedBy' => 24, 'UsrUx' => 25, 'UsrCostByHour' => 26, 'UsrUnitCost' => 27, 'UsrPmdriveFolderUid' => 28, 'UsrBookmarkStartCases' => 29, 'UsrTimeZone' => 30, 'UsrDefaultLang' => 31, ),
- BasePeer::TYPE_COLNAME => array (UsersPeer::USR_UID => 0, UsersPeer::USR_USERNAME => 1, UsersPeer::USR_PASSWORD => 2, UsersPeer::USR_FIRSTNAME => 3, UsersPeer::USR_LASTNAME => 4, UsersPeer::USR_EMAIL => 5, UsersPeer::USR_DUE_DATE => 6, UsersPeer::USR_CREATE_DATE => 7, UsersPeer::USR_UPDATE_DATE => 8, UsersPeer::USR_STATUS => 9, UsersPeer::USR_COUNTRY => 10, UsersPeer::USR_CITY => 11, UsersPeer::USR_LOCATION => 12, UsersPeer::USR_ADDRESS => 13, UsersPeer::USR_PHONE => 14, UsersPeer::USR_FAX => 15, UsersPeer::USR_CELLULAR => 16, UsersPeer::USR_ZIP_CODE => 17, UsersPeer::DEP_UID => 18, UsersPeer::USR_POSITION => 19, UsersPeer::USR_RESUME => 20, UsersPeer::USR_BIRTHDAY => 21, UsersPeer::USR_ROLE => 22, UsersPeer::USR_REPORTS_TO => 23, UsersPeer::USR_REPLACED_BY => 24, UsersPeer::USR_UX => 25, UsersPeer::USR_COST_BY_HOUR => 26, UsersPeer::USR_UNIT_COST => 27, UsersPeer::USR_PMDRIVE_FOLDER_UID => 28, UsersPeer::USR_BOOKMARK_START_CASES => 29, UsersPeer::USR_TIME_ZONE => 30, UsersPeer::USR_DEFAULT_LANG => 31, ),
- 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_COUNTRY' => 10, 'USR_CITY' => 11, 'USR_LOCATION' => 12, 'USR_ADDRESS' => 13, 'USR_PHONE' => 14, 'USR_FAX' => 15, 'USR_CELLULAR' => 16, 'USR_ZIP_CODE' => 17, 'DEP_UID' => 18, 'USR_POSITION' => 19, 'USR_RESUME' => 20, 'USR_BIRTHDAY' => 21, 'USR_ROLE' => 22, 'USR_REPORTS_TO' => 23, 'USR_REPLACED_BY' => 24, 'USR_UX' => 25, 'USR_COST_BY_HOUR' => 26, 'USR_UNIT_COST' => 27, 'USR_PMDRIVE_FOLDER_UID' => 28, 'USR_BOOKMARK_START_CASES' => 29, 'USR_TIME_ZONE' => 30, 'USR_DEFAULT_LANG' => 31, ),
- BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, )
+ BasePeer::TYPE_PHPNAME => array ('UsrUid' => 0, 'UsrUsername' => 1, 'UsrPassword' => 2, 'UsrFirstname' => 3, 'UsrLastname' => 4, 'UsrEmail' => 5, 'UsrDueDate' => 6, 'UsrCreateDate' => 7, 'UsrUpdateDate' => 8, 'UsrStatus' => 9, 'UsrCountry' => 10, 'UsrCity' => 11, 'UsrLocation' => 12, 'UsrAddress' => 13, 'UsrPhone' => 14, 'UsrFax' => 15, 'UsrCellular' => 16, 'UsrZipCode' => 17, 'DepUid' => 18, 'UsrPosition' => 19, 'UsrResume' => 20, 'UsrBirthday' => 21, 'UsrRole' => 22, 'UsrReportsTo' => 23, 'UsrReplacedBy' => 24, 'UsrUx' => 25, 'UsrCostByHour' => 26, 'UsrUnitCost' => 27, 'UsrPmdriveFolderUid' => 28, 'UsrBookmarkStartCases' => 29, 'UsrTimeZone' => 30, 'UsrDefaultLang' => 31, 'UsrLastLogin' => 32, ),
+ BasePeer::TYPE_COLNAME => array (UsersPeer::USR_UID => 0, UsersPeer::USR_USERNAME => 1, UsersPeer::USR_PASSWORD => 2, UsersPeer::USR_FIRSTNAME => 3, UsersPeer::USR_LASTNAME => 4, UsersPeer::USR_EMAIL => 5, UsersPeer::USR_DUE_DATE => 6, UsersPeer::USR_CREATE_DATE => 7, UsersPeer::USR_UPDATE_DATE => 8, UsersPeer::USR_STATUS => 9, UsersPeer::USR_COUNTRY => 10, UsersPeer::USR_CITY => 11, UsersPeer::USR_LOCATION => 12, UsersPeer::USR_ADDRESS => 13, UsersPeer::USR_PHONE => 14, UsersPeer::USR_FAX => 15, UsersPeer::USR_CELLULAR => 16, UsersPeer::USR_ZIP_CODE => 17, UsersPeer::DEP_UID => 18, UsersPeer::USR_POSITION => 19, UsersPeer::USR_RESUME => 20, UsersPeer::USR_BIRTHDAY => 21, UsersPeer::USR_ROLE => 22, UsersPeer::USR_REPORTS_TO => 23, UsersPeer::USR_REPLACED_BY => 24, UsersPeer::USR_UX => 25, UsersPeer::USR_COST_BY_HOUR => 26, UsersPeer::USR_UNIT_COST => 27, UsersPeer::USR_PMDRIVE_FOLDER_UID => 28, UsersPeer::USR_BOOKMARK_START_CASES => 29, UsersPeer::USR_TIME_ZONE => 30, UsersPeer::USR_DEFAULT_LANG => 31, UsersPeer::USR_LAST_LOGIN => 32, ),
+ 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_COUNTRY' => 10, 'USR_CITY' => 11, 'USR_LOCATION' => 12, 'USR_ADDRESS' => 13, 'USR_PHONE' => 14, 'USR_FAX' => 15, 'USR_CELLULAR' => 16, 'USR_ZIP_CODE' => 17, 'DEP_UID' => 18, 'USR_POSITION' => 19, 'USR_RESUME' => 20, 'USR_BIRTHDAY' => 21, 'USR_ROLE' => 22, 'USR_REPORTS_TO' => 23, 'USR_REPLACED_BY' => 24, 'USR_UX' => 25, 'USR_COST_BY_HOUR' => 26, 'USR_UNIT_COST' => 27, 'USR_PMDRIVE_FOLDER_UID' => 28, 'USR_BOOKMARK_START_CASES' => 29, 'USR_TIME_ZONE' => 30, 'USR_DEFAULT_LANG' => 31, 'USR_LAST_LOGIN' => 32, ),
+ BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, )
);
/**
@@ -319,6 +322,8 @@ abstract class BaseUsersPeer
$criteria->addSelectColumn(UsersPeer::USR_DEFAULT_LANG);
+ $criteria->addSelectColumn(UsersPeer::USR_LAST_LOGIN);
+
}
const COUNT = 'COUNT(USERS.USR_UID)';
diff --git a/workflow/engine/config/schema.xml b/workflow/engine/config/schema.xml
index 3bfe774b3..4122bef69 100644
--- a/workflow/engine/config/schema.xml
+++ b/workflow/engine/config/schema.xml
@@ -1557,6 +1557,7 @@