HOR-1787
Slow query for login HOR-1787 Slow query for login HOR-1787 Slow query for login HOR-1787 Slow query for login HOR-1787 Slow query for login HOR-1787 Slow query for login HOR-1787 Slow query for login
This commit is contained in:
@@ -82,6 +82,9 @@ class database extends database_base
|
|||||||
} else {
|
} else {
|
||||||
$sSQL .= ' NOT NULL';
|
$sSQL .= ' NOT NULL';
|
||||||
}
|
}
|
||||||
|
if (isset( $aParameters['AutoIncrement'] ) && $aParameters['AutoIncrement']) {
|
||||||
|
$sSQL .= ' AUTO_INCREMENT PRIMARY KEY';
|
||||||
|
}
|
||||||
if (isset( $aParameters['Key'] ) && $aParameters['Key'] == 'PRI') {
|
if (isset( $aParameters['Key'] ) && $aParameters['Key'] == 'PRI') {
|
||||||
$sKeys .= $this->sQuoteCharacter . $sColumnName . $this->sQuoteCharacter . ',';
|
$sKeys .= $this->sQuoteCharacter . $sColumnName . $this->sQuoteCharacter . ',';
|
||||||
}
|
}
|
||||||
@@ -139,6 +142,52 @@ class database extends database_base
|
|||||||
return $sSQL;
|
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
|
* generate an add column sentence
|
||||||
*
|
*
|
||||||
@@ -157,6 +206,9 @@ class database extends database_base
|
|||||||
$sSQL .= ' NOT NULL';
|
$sSQL .= ' NOT NULL';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (isset( $aParameters['AutoIncrement'] ) && $aParameters['AutoIncrement']) {
|
||||||
|
$sSQL .= ' AUTO_INCREMENT PRIMARY KEY';
|
||||||
|
}
|
||||||
/*if ($aParameters['Key'] == 'PRI') {
|
/*if ($aParameters['Key'] == 'PRI') {
|
||||||
$sKeys .= 'ALTER TABLE ' . $this->sQuoteCharacter . $sTable . $this->sQuoteCharacter .
|
$sKeys .= 'ALTER TABLE ' . $this->sQuoteCharacter . $sTable . $this->sQuoteCharacter .
|
||||||
' ADD PRIMARY KEY (' . $this->sQuoteCharacter . $sColumn . $this->sQuoteCharacter . ')' . $this->sEndLine;
|
' ADD PRIMARY KEY (' . $this->sQuoteCharacter . $sColumn . $this->sQuoteCharacter . ')' . $this->sEndLine;
|
||||||
|
|||||||
@@ -758,40 +758,40 @@ class System
|
|||||||
* @param string $sSchemaFile schema filename
|
* @param string $sSchemaFile schema filename
|
||||||
* @return $sContent
|
* @return $sContent
|
||||||
*/
|
*/
|
||||||
public static function getSchema ($sSchemaFile)
|
public static function getSchema($sSchemaFile)
|
||||||
{
|
{
|
||||||
/* This is the MySQL mapping that Propel uses (from MysqlPlatform.php) */
|
/* 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",
|
$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 */
|
/* This is not from Propel, but is required to get INT right */
|
||||||
'INTEGER' => "INT"
|
'INTEGER' => "INT"
|
||||||
);
|
);
|
||||||
|
|
||||||
$aSchema = array ();
|
$aSchema = array();
|
||||||
$oXml = new DomDocument();
|
$oXml = new DomDocument();
|
||||||
$oXml->load( $sSchemaFile );
|
$oXml->load($sSchemaFile);
|
||||||
$aTables = $oXml->getElementsByTagName( 'table' );
|
$aTables = $oXml->getElementsByTagName('table');
|
||||||
foreach ($aTables as $oTable) {
|
foreach ($aTables as $oTable) {
|
||||||
$aPrimaryKeys = array ();
|
$aPrimaryKeys = array();
|
||||||
$sTableName = $oTable->getAttribute( 'name' );
|
$sTableName = $oTable->getAttribute('name');
|
||||||
$aSchema[$sTableName] = array ();
|
$aSchema[$sTableName] = array();
|
||||||
$aColumns = $oTable->getElementsByTagName( 'column' );
|
$aColumns = $oTable->getElementsByTagName('column');
|
||||||
foreach ($aColumns as $oColumn) {
|
foreach ($aColumns as $oColumn) {
|
||||||
$sColumName = $oColumn->getAttribute( 'name' );
|
$sColumName = $oColumn->getAttribute('name');
|
||||||
|
|
||||||
/* Get the field type. Propel uses VARCHAR if nothing else is specified */
|
/* 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 */
|
/* Convert type to MySQL type according to Propel */
|
||||||
if (array_key_exists( $type, $mysqlTypes )) {
|
if (array_key_exists($type, $mysqlTypes)) {
|
||||||
$type = $mysqlTypes[$type];
|
$type = $mysqlTypes[$type];
|
||||||
}
|
}
|
||||||
|
|
||||||
$size = $oColumn->hasAttribute( 'size' ) ? $oColumn->getAttribute( 'size' ) : null;
|
$size = $oColumn->hasAttribute('size') ? $oColumn->getAttribute('size') : null;
|
||||||
/* Add default sizes from MySQL */
|
/* Add default sizes from MySQL */
|
||||||
if ($type == "TINYINT" && ! $size) {
|
if ($type == "TINYINT" && !$size) {
|
||||||
$size = "4";
|
$size = "4";
|
||||||
}
|
}
|
||||||
if ($type == "INT" && ! $size) {
|
if ($type == "INT" && !$size) {
|
||||||
$size = "11";
|
$size = "11";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -799,35 +799,35 @@ class System
|
|||||||
$type = "$type($size)";
|
$type = "$type($size)";
|
||||||
}
|
}
|
||||||
|
|
||||||
$required = $oColumn->hasAttribute( 'required' ) ? $oColumn->getAttribute( 'required' ) : null;
|
$required = $oColumn->hasAttribute('required') ? $oColumn->getAttribute('required') : null;
|
||||||
/* Convert $required to a bool */
|
/* 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 */
|
/* Convert $primaryKey to a bool */
|
||||||
$primaryKey = (in_array( strtolower( $primaryKey ), array ('1','true'
|
$primaryKey = (in_array(strtolower($primaryKey), array('1', 'true'
|
||||||
) ));
|
)));
|
||||||
if ($primaryKey) {
|
if ($primaryKey) {
|
||||||
$aPrimaryKeys[] = $sColumName;
|
$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;
|
$aSchema[$sTableName]['INDEXES']['PRIMARY'] = $aPrimaryKeys;
|
||||||
}
|
}
|
||||||
$aIndexes = $oTable->getElementsByTagName( 'index' );
|
$aIndexes = $oTable->getElementsByTagName('index');
|
||||||
foreach ($aIndexes as $oIndex) {
|
foreach ($aIndexes as $oIndex) {
|
||||||
$aIndex = array ();
|
$aIndex = array();
|
||||||
$aIndexesColumns = $oIndex->getElementsByTagName( 'index-column' );
|
$aIndexesColumns = $oIndex->getElementsByTagName('index-column');
|
||||||
foreach ($aIndexesColumns as $oIndexColumn) {
|
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;
|
return $aSchema;
|
||||||
|
|||||||
@@ -934,6 +934,10 @@ class workspaceTools
|
|||||||
$oDataBase->executeQuery($oDataBase->generateDropColumnSQL($sTable, $vData));
|
$oDataBase->executeQuery($oDataBase->generateDropColumnSQL($sTable, $vData));
|
||||||
break;
|
break;
|
||||||
case 'ADD':
|
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));
|
$oDataBase->executeQuery($oDataBase->generateAddColumnSQL($sTable, $sColumn, $vData));
|
||||||
break;
|
break;
|
||||||
case 'CHANGE':
|
case 'CHANGE':
|
||||||
|
|||||||
@@ -20,20 +20,33 @@ require_once 'classes/model/om/BaseLoginLog.php';
|
|||||||
*/
|
*/
|
||||||
class LoginLog extends BaseLoginLog
|
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 {
|
try {
|
||||||
$this->fromArray( $aData, BasePeer::TYPE_FIELDNAME );
|
$tableName = 'LOGIN_LOG';
|
||||||
if ($this->validate()) {
|
$columns = array('LOG_UID', 'LOG_STATUS', 'LOG_IP', 'LOG_SID', 'LOG_INIT_DATE', 'LOG_CLIENT_HOSTNAME', 'USR_UID');
|
||||||
$result = $this->save();
|
|
||||||
} else {
|
$sql = "INSERT INTO " . $tableName
|
||||||
$e = new Exception( "Failed Validation in class " . get_class( $this ) . "." );
|
. " (" . implode(",", $columns) . ")"
|
||||||
$e->aValidationFailures = $this->getValidationFailures();
|
. " VALUES ("
|
||||||
throw ($e);
|
. "'" . $aData['LOG_UID'] . "'" . ','
|
||||||
}
|
. "'" . $aData['LOG_STATUS'] . "'" . ','
|
||||||
$con->commit();
|
. "'" . $aData['LOG_IP'] . "'" . ','
|
||||||
return $result;
|
. "'" . $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) {
|
} catch (Exception $e) {
|
||||||
$con->rollback();
|
$con->rollback();
|
||||||
throw ($e);
|
throw ($e);
|
||||||
|
|||||||
@@ -129,6 +129,8 @@ class UsersMapBuilder
|
|||||||
|
|
||||||
$tMap->addColumn('USR_DEFAULT_LANG', 'UsrDefaultLang', 'string', CreoleTypes::VARCHAR, false, 10);
|
$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', 'validValues', 'propel.validator.ValidValuesValidator', 'ACTIVE|INACTIVE|VACATION|CLOSED', 'Please select a valid type.');
|
||||||
|
|
||||||
$tMap->addValidator('USR_STATUS', 'required', 'propel.validator.RequiredValidator', '', 'Type is required.');
|
$tMap->addValidator('USR_STATUS', 'required', 'propel.validator.RequiredValidator', '', 'Type is required.');
|
||||||
|
|||||||
@@ -219,6 +219,12 @@ abstract class BaseUsers extends BaseObject implements Persistent
|
|||||||
*/
|
*/
|
||||||
protected $usr_default_lang = '';
|
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
|
* Flag to prevent endless save loop, if this object is referenced
|
||||||
* by another object which falls in this transaction.
|
* by another object which falls in this transaction.
|
||||||
@@ -669,6 +675,38 @@ abstract class BaseUsers extends BaseObject implements Persistent
|
|||||||
return $this->usr_default_lang;
|
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.
|
* Set the value of [usr_uid] column.
|
||||||
*
|
*
|
||||||
@@ -1395,6 +1433,35 @@ abstract class BaseUsers extends BaseObject implements Persistent
|
|||||||
|
|
||||||
} // setUsrDefaultLang()
|
} // 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.
|
* 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_default_lang = $rs->getString($startcol + 31);
|
||||||
|
|
||||||
|
$this->usr_last_login = $rs->getTimestamp($startcol + 32, null);
|
||||||
|
|
||||||
$this->resetModified();
|
$this->resetModified();
|
||||||
|
|
||||||
$this->setNew(false);
|
$this->setNew(false);
|
||||||
|
|
||||||
// FIXME - using NUM_COLUMNS may be clearer.
|
// 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) {
|
} catch (Exception $e) {
|
||||||
throw new PropelException("Error populating Users object", $e);
|
throw new PropelException("Error populating Users object", $e);
|
||||||
@@ -1781,6 +1850,9 @@ abstract class BaseUsers extends BaseObject implements Persistent
|
|||||||
case 31:
|
case 31:
|
||||||
return $this->getUsrDefaultLang();
|
return $this->getUsrDefaultLang();
|
||||||
break;
|
break;
|
||||||
|
case 32:
|
||||||
|
return $this->getUsrLastLogin();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
break;
|
break;
|
||||||
@@ -1833,6 +1905,7 @@ abstract class BaseUsers extends BaseObject implements Persistent
|
|||||||
$keys[29] => $this->getUsrBookmarkStartCases(),
|
$keys[29] => $this->getUsrBookmarkStartCases(),
|
||||||
$keys[30] => $this->getUsrTimeZone(),
|
$keys[30] => $this->getUsrTimeZone(),
|
||||||
$keys[31] => $this->getUsrDefaultLang(),
|
$keys[31] => $this->getUsrDefaultLang(),
|
||||||
|
$keys[32] => $this->getUsrLastLogin(),
|
||||||
);
|
);
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
@@ -1960,6 +2033,9 @@ abstract class BaseUsers extends BaseObject implements Persistent
|
|||||||
case 31:
|
case 31:
|
||||||
$this->setUsrDefaultLang($value);
|
$this->setUsrDefaultLang($value);
|
||||||
break;
|
break;
|
||||||
|
case 32:
|
||||||
|
$this->setUsrLastLogin($value);
|
||||||
|
break;
|
||||||
} // switch()
|
} // switch()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2111,6 +2187,10 @@ abstract class BaseUsers extends BaseObject implements Persistent
|
|||||||
$this->setUsrDefaultLang($arr[$keys[31]]);
|
$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);
|
$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;
|
return $criteria;
|
||||||
}
|
}
|
||||||
@@ -2366,6 +2450,8 @@ abstract class BaseUsers extends BaseObject implements Persistent
|
|||||||
|
|
||||||
$copyObj->setUsrDefaultLang($this->usr_default_lang);
|
$copyObj->setUsrDefaultLang($this->usr_default_lang);
|
||||||
|
|
||||||
|
$copyObj->setUsrLastLogin($this->usr_last_login);
|
||||||
|
|
||||||
|
|
||||||
$copyObj->setNew(true);
|
$copyObj->setNew(true);
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ abstract class BaseUsersPeer
|
|||||||
const CLASS_DEFAULT = 'classes.model.Users';
|
const CLASS_DEFAULT = 'classes.model.Users';
|
||||||
|
|
||||||
/** The total number of columns. */
|
/** The total number of columns. */
|
||||||
const NUM_COLUMNS = 32;
|
const NUM_COLUMNS = 33;
|
||||||
|
|
||||||
/** The number of lazy-loaded columns. */
|
/** The number of lazy-loaded columns. */
|
||||||
const NUM_LAZY_LOAD_COLUMNS = 0;
|
const NUM_LAZY_LOAD_COLUMNS = 0;
|
||||||
@@ -127,6 +127,9 @@ abstract class BaseUsersPeer
|
|||||||
/** the column name for the USR_DEFAULT_LANG field */
|
/** the column name for the USR_DEFAULT_LANG field */
|
||||||
const USR_DEFAULT_LANG = 'USERS.USR_DEFAULT_LANG';
|
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 */
|
/** The PHP to DB Name Mapping */
|
||||||
private static $phpNameMap = null;
|
private static $phpNameMap = null;
|
||||||
|
|
||||||
@@ -138,10 +141,10 @@ abstract class BaseUsersPeer
|
|||||||
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
|
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
|
||||||
*/
|
*/
|
||||||
private static $fieldNames = array (
|
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_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, ),
|
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', ),
|
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, )
|
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
|
* e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0
|
||||||
*/
|
*/
|
||||||
private static $fieldKeys = array (
|
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_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, ),
|
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, ),
|
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, )
|
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_DEFAULT_LANG);
|
||||||
|
|
||||||
|
$criteria->addSelectColumn(UsersPeer::USR_LAST_LOGIN);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const COUNT = 'COUNT(USERS.USR_UID)';
|
const COUNT = 'COUNT(USERS.USR_UID)';
|
||||||
|
|||||||
@@ -1557,6 +1557,7 @@
|
|||||||
</column>
|
</column>
|
||||||
<column name="USR_TIME_ZONE" type="VARCHAR" size="100" default="" />
|
<column name="USR_TIME_ZONE" type="VARCHAR" size="100" default="" />
|
||||||
<column name="USR_DEFAULT_LANG" type="VARCHAR" size="10" default=""/>
|
<column name="USR_DEFAULT_LANG" type="VARCHAR" size="10" default=""/>
|
||||||
|
<column name="USR_LAST_LOGIN" type="TIMESTAMP" required="false"/>
|
||||||
<index name="indexUsrUid">
|
<index name="indexUsrUid">
|
||||||
<index-column name="USR_UID"/>
|
<index-column name="USR_UID"/>
|
||||||
</index>
|
</index>
|
||||||
@@ -2166,7 +2167,7 @@
|
|||||||
<index-column name="APP_PARENT"/>
|
<index-column name="APP_PARENT"/>
|
||||||
</index>
|
</index>
|
||||||
</table>
|
</table>
|
||||||
<table name="LOGIN_LOG">
|
<table name="LOGIN_LOG" idMethod="native">
|
||||||
<vendor type="mysql">
|
<vendor type="mysql">
|
||||||
<parameter name="Name" value="LOGIN_LOG"/>
|
<parameter name="Name" value="LOGIN_LOG"/>
|
||||||
<parameter name="Engine" value="InnoDB"/>
|
<parameter name="Engine" value="InnoDB"/>
|
||||||
@@ -2187,7 +2188,8 @@
|
|||||||
<parameter name="Create_options" value=""/>
|
<parameter name="Create_options" value=""/>
|
||||||
<parameter name="Comment" value=""/>
|
<parameter name="Comment" value=""/>
|
||||||
</vendor>
|
</vendor>
|
||||||
<column name="LOG_UID" type="VARCHAR" size="32" required="true" primaryKey="true" default=""/>
|
<column name="LOG_ID" type="INTEGER" required="true" autoIncrement="true" primaryKey="true"/>
|
||||||
|
<column name="LOG_UID" type="VARCHAR" size="32" required="true" default=""/>
|
||||||
<column name="LOG_STATUS" type="VARCHAR" size="100" required="true" default=""/>
|
<column name="LOG_STATUS" type="VARCHAR" size="100" required="true" default=""/>
|
||||||
<column name="LOG_IP" type="VARCHAR" size="15" required="true" default=""/>
|
<column name="LOG_IP" type="VARCHAR" size="15" required="true" default=""/>
|
||||||
<column name="LOG_SID" type="VARCHAR" size="100" required="true" default=""/>
|
<column name="LOG_SID" type="VARCHAR" size="100" required="true" default=""/>
|
||||||
@@ -2195,24 +2197,6 @@
|
|||||||
<column name="LOG_END_DATE" type="TIMESTAMP" required="false"/>
|
<column name="LOG_END_DATE" type="TIMESTAMP" required="false"/>
|
||||||
<column name="LOG_CLIENT_HOSTNAME" type="VARCHAR" size="100" required="true" default=""/>
|
<column name="LOG_CLIENT_HOSTNAME" type="VARCHAR" size="100" required="true" default=""/>
|
||||||
<column name="USR_UID" type="VARCHAR" size="32" required="true" default=""/>
|
<column name="USR_UID" type="VARCHAR" size="32" required="true" default=""/>
|
||||||
<index name="indexLoginLog">
|
|
||||||
<index-column name="USR_UID"/>
|
|
||||||
<index-column name="LOG_INIT_DATE"/>
|
|
||||||
<vendor type="mysql">
|
|
||||||
<parameter name="Table" value="LOGIN_LOG"/>
|
|
||||||
<parameter name="Non_unique" value="1"/>
|
|
||||||
<parameter name="Key_name" value="indexLoginLog"/>
|
|
||||||
<parameter name="Seq_in_index" value="1"/>
|
|
||||||
<parameter name="Column_name" value="USR_UID"/>
|
|
||||||
<parameter name="Collation" value="A"/>
|
|
||||||
<parameter name="Cardinality" value=""/>
|
|
||||||
<parameter name="Sub_part" value=""/>
|
|
||||||
<parameter name="Packed" value=""/>
|
|
||||||
<parameter name="Null" value=""/>
|
|
||||||
<parameter name="Index_type" value="BTREE"/>
|
|
||||||
<parameter name="Comment" value=""/>
|
|
||||||
</vendor>
|
|
||||||
</index>
|
|
||||||
</table>
|
</table>
|
||||||
<table name="USERS_PROPERTIES">
|
<table name="USERS_PROPERTIES">
|
||||||
<vendor type="mysql">
|
<vendor type="mysql">
|
||||||
|
|||||||
@@ -752,6 +752,7 @@ CREATE TABLE `USERS`
|
|||||||
`USR_BOOKMARK_START_CASES` MEDIUMTEXT,
|
`USR_BOOKMARK_START_CASES` MEDIUMTEXT,
|
||||||
`USR_TIME_ZONE` VARCHAR(100) default '',
|
`USR_TIME_ZONE` VARCHAR(100) default '',
|
||||||
`USR_DEFAULT_LANG` VARCHAR(10) default '',
|
`USR_DEFAULT_LANG` VARCHAR(10) default '',
|
||||||
|
`USR_LAST_LOGIN` DATETIME,
|
||||||
PRIMARY KEY (`USR_UID`),
|
PRIMARY KEY (`USR_UID`),
|
||||||
KEY `indexUsrUid` (`USR_UID`)
|
KEY `indexUsrUid` (`USR_UID`)
|
||||||
)ENGINE=InnoDB DEFAULT CHARSET='utf8' COMMENT='Users';
|
)ENGINE=InnoDB DEFAULT CHARSET='utf8' COMMENT='Users';
|
||||||
@@ -1013,6 +1014,7 @@ DROP TABLE IF EXISTS `LOGIN_LOG`;
|
|||||||
|
|
||||||
CREATE TABLE `LOGIN_LOG`
|
CREATE TABLE `LOGIN_LOG`
|
||||||
(
|
(
|
||||||
|
`LOG_ID` INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
`LOG_UID` VARCHAR(32) default '' NOT NULL,
|
`LOG_UID` VARCHAR(32) default '' NOT NULL,
|
||||||
`LOG_STATUS` VARCHAR(100) default '' NOT NULL,
|
`LOG_STATUS` VARCHAR(100) default '' NOT NULL,
|
||||||
`LOG_IP` VARCHAR(15) default '' NOT NULL,
|
`LOG_IP` VARCHAR(15) default '' NOT NULL,
|
||||||
@@ -1021,8 +1023,7 @@ CREATE TABLE `LOGIN_LOG`
|
|||||||
`LOG_END_DATE` DATETIME,
|
`LOG_END_DATE` DATETIME,
|
||||||
`LOG_CLIENT_HOSTNAME` VARCHAR(100) default '' NOT NULL,
|
`LOG_CLIENT_HOSTNAME` VARCHAR(100) default '' NOT NULL,
|
||||||
`USR_UID` VARCHAR(32) default '' NOT NULL,
|
`USR_UID` VARCHAR(32) default '' NOT NULL,
|
||||||
PRIMARY KEY (`LOG_UID`),
|
PRIMARY KEY (`LOG_ID`)
|
||||||
KEY `indexLoginLog`(`USR_UID`, `LOG_INIT_DATE`)
|
|
||||||
)ENGINE=InnoDB DEFAULT CHARSET='utf8';
|
)ENGINE=InnoDB DEFAULT CHARSET='utf8';
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
#-- USERS_PROPERTIES
|
#-- USERS_PROPERTIES
|
||||||
|
|||||||
@@ -86,17 +86,24 @@ if (isset ($_SESSION['USER_LOGGED'])) {
|
|||||||
if ($aRow) {
|
if ($aRow) {
|
||||||
if ($aRow['LOG_STATUS'] != 'CLOSED' && $aRow['LOG_END_DATE'] == null) {
|
if ($aRow['LOG_STATUS'] != 'CLOSED' && $aRow['LOG_END_DATE'] == null) {
|
||||||
$weblog = new LoginLog();
|
$weblog = new LoginLog();
|
||||||
|
$endDate = date('Y-m-d H:i:s');
|
||||||
|
$aLog = array();
|
||||||
$aLog['LOG_UID'] = $aRow['LOG_UID'];
|
$aLog['LOG_UID'] = $aRow['LOG_UID'];
|
||||||
$aLog['LOG_STATUS'] = 'CLOSED';
|
$aLog['LOG_STATUS'] = 'CLOSED';
|
||||||
$aLog['LOG_IP'] = $aRow['LOG_IP'];
|
$aLog['LOG_IP'] = $aRow['LOG_IP'];
|
||||||
$aLog['LOG_SID'] = session_id();
|
$aLog['LOG_SID'] = session_id();
|
||||||
$aLog['LOG_INIT_DATE'] = $aRow['LOG_INIT_DATE'];
|
$aLog['LOG_INIT_DATE'] = $aRow['LOG_INIT_DATE'];
|
||||||
$aLog['LOG_END_DATE'] = date('Y-m-d H:i:s');
|
$aLog['LOG_END_DATE'] = $endDate;
|
||||||
$aLog['LOG_CLIENT_HOSTNAME'] = $aRow['LOG_CLIENT_HOSTNAME'];
|
$aLog['LOG_CLIENT_HOSTNAME'] = $aRow['LOG_CLIENT_HOSTNAME'];
|
||||||
$aLog['USR_UID'] = $aRow['USR_UID'];
|
$aLog['USR_UID'] = $aRow['USR_UID'];
|
||||||
|
|
||||||
$weblog->update($aLog);
|
$weblog->update($aLog);
|
||||||
|
|
||||||
|
$aLog = array();
|
||||||
|
$aLog['USR_UID'] = $aRow['USR_UID'];
|
||||||
|
$aLog['USR_LAST_LOGIN'] = $endDate;
|
||||||
|
$user = new Users();
|
||||||
|
$aUser = $user->update($aLog);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -444,6 +444,7 @@ try {
|
|||||||
$oCriteria->addSelectColumn(UsersPeer::USR_STATUS);
|
$oCriteria->addSelectColumn(UsersPeer::USR_STATUS);
|
||||||
$oCriteria->addSelectColumn(UsersPeer::USR_UX);
|
$oCriteria->addSelectColumn(UsersPeer::USR_UX);
|
||||||
$oCriteria->addSelectColumn(UsersPeer::DEP_UID);
|
$oCriteria->addSelectColumn(UsersPeer::DEP_UID);
|
||||||
|
$oCriteria->addSelectColumn(UsersPeer::USR_LAST_LOGIN);
|
||||||
$oCriteria->addAsColumn('LAST_LOGIN', 0);
|
$oCriteria->addAsColumn('LAST_LOGIN', 0);
|
||||||
$oCriteria->addAsColumn('DEP_TITLE', 0);
|
$oCriteria->addAsColumn('DEP_TITLE', 0);
|
||||||
$oCriteria->addAsColumn('TOTAL_CASES', 0);
|
$oCriteria->addAsColumn('TOTAL_CASES', 0);
|
||||||
@@ -470,9 +471,6 @@ try {
|
|||||||
$oCriteria->setLimit($limit);
|
$oCriteria->setLimit($limit);
|
||||||
$oDataset = UsersPeer::DoSelectRs($oCriteria);
|
$oDataset = UsersPeer::DoSelectRs($oCriteria);
|
||||||
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||||
|
|
||||||
$Login = new LoginLog();
|
|
||||||
$aLogin = $Login->getLastLoginAllUsers();
|
|
||||||
$Department = new Department();
|
$Department = new Department();
|
||||||
$aDepart = $Department->getAllDepartmentsByUser();
|
$aDepart = $Department->getAllDepartmentsByUser();
|
||||||
$aAuthSources = $RBAC->getAllAuthSourcesByUser();
|
$aAuthSources = $RBAC->getAllAuthSourcesByUser();
|
||||||
@@ -506,7 +504,7 @@ try {
|
|||||||
$row['USR_ROLE'] = isset($uRole['ROL_NAME']) ? ($uRole['ROL_NAME'] != '' ? $uRole['ROL_NAME'] : $uRole['ROL_CODE']) : $uRole['ROL_CODE'];
|
$row['USR_ROLE'] = isset($uRole['ROL_NAME']) ? ($uRole['ROL_NAME'] != '' ? $uRole['ROL_NAME'] : $uRole['ROL_CODE']) : $uRole['ROL_CODE'];
|
||||||
|
|
||||||
$row['DUE_DATE_OK'] = (date('Y-m-d') > date('Y-m-d', strtotime($row['USR_DUE_DATE']))) ? 0 : 1;
|
$row['DUE_DATE_OK'] = (date('Y-m-d') > date('Y-m-d', strtotime($row['USR_DUE_DATE']))) ? 0 : 1;
|
||||||
$row['LAST_LOGIN'] = isset($aLogin[$row['USR_UID']]) ? \ProcessMaker\Util\DateTime::convertUtcToTimeZone($aLogin[$row['USR_UID']]) : '';
|
$row['LAST_LOGIN'] = isset($row['USR_LAST_LOGIN']) ? \ProcessMaker\Util\DateTime::convertUtcToTimeZone($row['USR_LAST_LOGIN']) : '';
|
||||||
$row['TOTAL_CASES'] = $total;
|
$row['TOTAL_CASES'] = $total;
|
||||||
$row['DEP_TITLE'] = isset($aDepart[$row['USR_UID']]) ? $aDepart[$row['USR_UID']] : '';
|
$row['DEP_TITLE'] = isset($aDepart[$row['USR_UID']]) ? $aDepart[$row['USR_UID']] : '';
|
||||||
$row['USR_UX'] = isset($uxList[$row['USR_UX']]) ? $uxList[$row['USR_UX']] : $uxList['NORMAL'];
|
$row['USR_UX'] = isset($uxList[$row['USR_UX']]) ? $uxList[$row['USR_UX']] : $uxList['NORMAL'];
|
||||||
|
|||||||
Reference in New Issue
Block a user