diff --git a/features/backend/projects/case_scheduler/main_tests_case_scheduler.feature b/features/backend/projects/case_scheduler/main_tests_case_scheduler.feature index 221530d3c..6c715f861 100644 --- a/features/backend/projects/case_scheduler/main_tests_case_scheduler.feature +++ b/features/backend/projects/case_scheduler/main_tests_case_scheduler.feature @@ -20,7 +20,7 @@ Scenario Outline: Get the case schedulers list when there are exactly zero case | test_description | project | record | | Get case scheduler of process Test Michelangelo | 1265557095225ff5c688f46031700471 | 0 | - | Get case scheduler of process Process Complete BPMN | 1455892245368ebeb11c1a5001393784 | 0 | + | Get case scheduler of process Process Complete BPMN | 1455892245368ebeb11c1a5001393784 | 1 | Scenario Outline: Create any case scheduler for a project @@ -122,7 +122,7 @@ Scenario Outline: Get the case schedulers list when there are exactly 16 case sc | test_description | project | record | | Get case scheduler of process Test Michelangelo | 1265557095225ff5c688f46031700471 | 16 | - | Get case scheduler of process Process Complete BPMN | 1455892245368ebeb11c1a5001393784 | 16 | + | Get case scheduler of process Process Complete BPMN | 1455892245368ebeb11c1a5001393784 | 17 | Scenario Outline: Update the case schedulers for a project and then check if the values had changed diff --git a/features/backend/projects/files_manager/main_test_files_manager.feature b/features/backend/projects/files_manager/main_test_files_manager.feature index 5318f62ff..1eaff37ce 100644 --- a/features/backend/projects/files_manager/main_test_files_manager.feature +++ b/features/backend/projects/files_manager/main_test_files_manager.feature @@ -35,7 +35,7 @@ Scenario Outline: Get a list public folder of process files manager Examples: | test_description | project | records | | Get list of process Test Michelangelo | 1265557095225ff5c688f46031700471 | 0 | - | Get list of process Process Complete BPMN | 1455892245368ebeb11c1a5001393784 | 2 | + | Get list of process Process Complete BPMN | 1455892245368ebeb11c1a5001393784 | 4 | Scenario Outline: Get a list templates folder of process files manager diff --git a/features/backend/projects/project_export_import/main_tests_project_export_import.feature b/features/backend/projects/project_export_import/main_tests_project_export_import.feature index 57f673c1d..df679196f 100644 --- a/features/backend/projects/project_export_import/main_tests_project_export_import.feature +++ b/features/backend/projects/project_export_import/main_tests_project_export_import.feature @@ -78,7 +78,7 @@ Scenario: Get a list templates folder of process files manager And the response charset is "UTF-8" And the content type is "application/json" And the type is "array" - And the response has 1 records + And the response has 2 records Scenario: Verify that there are report tables Given I request "project/1455892245368ebeb11c1a5001393784/report-tables" diff --git a/framework/src/Maveriks/WebApplication.php b/framework/src/Maveriks/WebApplication.php index 1baaa21dc..94e8cdfe8 100644 --- a/framework/src/Maveriks/WebApplication.php +++ b/framework/src/Maveriks/WebApplication.php @@ -17,7 +17,9 @@ class WebApplication const RUNNING_INDEX = "index.running"; const RUNNING_WORKFLOW = "workflow.running"; const RUNNING_API = "api.running"; + const RUNNING_OAUTH2 = "api.oauth2"; const SERVICE_API = "service.api"; + const SERVICE_OAUTH2 = "service.oauth2"; const REDIRECT_DEFAULT = "redirect.default"; /** @@ -111,55 +113,7 @@ class WebApplication $uriParts = explode('/', $this->requestUri); if ($uriParts[2] == 'oauth2') { - - if (! isset($uriParts[2])) { - return self::RUNNING_WORKFLOW; - } - - $uriTemp = explode('/', $_SERVER['REQUEST_URI']); - array_shift($uriTemp); - $workspace = array_shift($uriTemp); - $_SERVER['REQUEST_URI'] = '/' . implode('/', $uriTemp); - - $this->loadEnvironment($workspace); - - // $pmOauthClientId - contains PM Local OAuth Id (Web Designer) - $pmOauthClientId = 'x-pm-local-client'; - - // Setting current workspace to Api class - Services\Api::setWorkspace($workspace); - $cacheDir = defined("PATH_C")? PATH_C: sys_get_temp_dir(); - - $sysConfig = \System::getSystemConfiguration(); - - \Luracast\Restler\Defaults::$cacheDirectory = $cacheDir; - $productionMode = !(isset($sysConfig["service_api_debug"]) && $sysConfig["service_api_debug"]); - - Util\Logger::log("Serving API mode: " . ($productionMode? "production": "development")); - - // create a new Restler instance - //$rest = new \Luracast\Restler\Restler(); - $rest = new \Maveriks\Extension\Restler($productionMode); - $rest->setworkspace($workspace); - - // setting api version to Restler - $rest->setAPIVersion('1.0'); - // adding $authenticationClass to Restler - - // Setting database connection source - list($host, $port) = strpos(DB_HOST, ':') !== false ? explode(':', DB_HOST) : array(DB_HOST, ''); - $port = empty($port) ? '' : ";port=$port"; - Services\OAuth2\Server::setDatabaseSource(DB_USER, DB_PASS, DB_ADAPTER.":host=$host;dbname=".DB_NAME.$port); - - // Setting default OAuth Client id, for local PM Web Designer - Services\OAuth2\Server::setPmClientId($pmOauthClientId); - Services\OAuth2\Server::setWorkspace($workspace); - - $rest->setOverridingFormats('JsonFormat', 'UploadFormat'); - - $rest->addAPIClass('\ProcessMaker\\Services\\OAuth2\\Server', 'oauth2'); - $rest->handle(); - + return self::RUNNING_OAUTH2; } else { return self::RUNNING_WORKFLOW; } @@ -186,6 +140,16 @@ class WebApplication } Util\Logger::log("API::End Dispatch"); break; + + case self::SERVICE_OAUTH2: + $uriTemp = explode('/', $_SERVER['REQUEST_URI']); + array_shift($uriTemp); + $workspace = array_shift($uriTemp); + $uri = '/' . implode('/', $uriTemp); + + $this->loadEnvironment($workspace); + $this->dispatchApiRequest($uri, $version = "1.0"); + break; } } @@ -393,6 +357,8 @@ class WebApplication // } // } } + + $this->rest->addAPIClass('\ProcessMaker\\Services\\OAuth2\\Server', 'oauth2'); } public function parseApiRequestUri() diff --git a/gulliver/system/class.bootstrap.php b/gulliver/system/class.bootstrap.php index 16dbce30d..7347495ad 100644 --- a/gulliver/system/class.bootstrap.php +++ b/gulliver/system/class.bootstrap.php @@ -2859,5 +2859,30 @@ 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) { + + } + + return $passEncrypt; + } + + public function verifyHashPassword ($pass, $userPass) + { + //$verify = Bootstrap::hasPassword($pass); + if (Bootstrap::hasPassword($pass) == $userPass) { + return true; + } + if (Bootstrap::hasPassword($pass, true) == $userPass) { + return true; + } + return false; + } + } diff --git a/gulliver/system/class.dbMaintenance.php b/gulliver/system/class.dbMaintenance.php index 0c3d20cf8..79615a571 100755 --- a/gulliver/system/class.dbMaintenance.php +++ b/gulliver/system/class.dbMaintenance.php @@ -489,6 +489,12 @@ class DataBaseMaintenance */ function backupDataBase ($outfile) { + $tablesBpmn = array( + 'BPMN_PROJECT','BPMN_DIAGRAM','BPMN_DOCUMENTATION','BPMN_EXTENSION','BPMN_PARTICIPANT', + 'BPMN_PROCESS','BPMN_ACTIVITY','BPMN_ARTIFACT','BPMN_DATA','BPMN_EVENT','BPMN_GATEWAY', + 'BPMN_LANESET','BPMN_BOUND','BPMN_FLOW','BPMN_LANE' + ); + $sqlTablesBpmn = array(); $aTables = $this->getTablesList(); $ws = explode( '_', $this->dbName ); $ws = isset( $ws[1] ) ? $ws[1] : $this->dbName; @@ -510,8 +516,16 @@ class DataBaseMaintenance $tableSchema = "\nDROP TABLE IF EXISTS `$table`;\n\n"; $tableSchema .= $this->getSchemaFromTable( $table ); $data = $this->dumpSqlInserts( $table ); - fwrite( $file, $tableSchema ); - fwrite( $file, $data ); + if (in_array($table, $tablesBpmn)) { + $sqlTablesBpmn[$table] = $tableSchema . $data; + } else { + fwrite( $file, $tableSchema ); + fwrite( $file, $data ); + } + } + + foreach ($tablesBpmn as $table) { + fwrite( $file, $sqlTablesBpmn[$table] ); } fclose( $file ); diff --git a/rbac/engine/classes/model/RbacUsers.php b/rbac/engine/classes/model/RbacUsers.php index 2663ce01d..928d3dc7d 100755 --- a/rbac/engine/classes/model/RbacUsers.php +++ b/rbac/engine/classes/model/RbacUsers.php @@ -80,10 +80,8 @@ 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) { + 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..65c6a6724 100755 --- a/rbac/engine/classes/model/om/BaseRbacUsersPeer.php +++ b/rbac/engine/classes/model/om/BaseRbacUsersPeer.php @@ -6,625 +6,627 @@ require_once 'propel/util/BasePeer.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..b9311ab47 100755 --- a/workflow/engine/classes/class.pluginRegistry.php +++ b/workflow/engine/classes/class.pluginRegistry.php @@ -259,7 +259,11 @@ class PMPluginRegistry $this->registerFolder( $sNamespace, $sNamespace, $detail->sPluginFolder ); //register the default directory, later we can have more $this->_aPluginDetails[$sNamespace]->enabled = true; - $oPlugin = new $detail->sClassName( $detail->sNamespace, $detail->sFilename ); + if (class_exists($detail->sClassName)) { + $oPlugin = new $detail->sClassName( $detail->sNamespace, $detail->sFilename ); + } else { + $oPlugin = $detail; + } $this->_aPlugins[$detail->sNamespace] = $oPlugin; if (method_exists( $oPlugin, 'enable' )) { $oPlugin->enable(); @@ -985,7 +989,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 +1025,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 e1ec15d95..383ced814 100755 --- a/workflow/engine/classes/class.wsTools.php +++ b/workflow/engine/classes/class.wsTools.php @@ -1624,5 +1624,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/content/translations/english/processmaker.en.po b/workflow/engine/content/translations/english/processmaker.en.po index 974968a9d..058eb2ae9 100644 --- a/workflow/engine/content/translations/english/processmaker.en.po +++ b/workflow/engine/content/translations/english/processmaker.en.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: ProcessMaker 2.5.2.3\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2014-09-02 10:32:26\n" +"PO-Revision-Date: 2014-09-22 16:11:21\n" "Last-Translator: \n" "Language-Team: Colosa Developers Team \n" "MIME-Version: 1.0\n" @@ -13201,6 +13201,12 @@ msgstr "Login with Facebook!!" msgid "xxx" msgstr "xxx" +# TRANSLATION +# LABEL/ID_SIZE_VERY_LARGE_PERMITTED +#: LABEL/ID_SIZE_VERY_LARGE_PERMITTED +msgid "The size is very large as permitted!" +msgstr "The size is very large as permitted!" + # TRANSLATION # LABEL/ID_PROCESSMAKER_REQUIREMENTS_DESCRIPTION_STEP5 #: LABEL/ID_PROCESSMAKER_REQUIREMENTS_DESCRIPTION_STEP5 @@ -13496,8 +13502,8 @@ msgid "Database Configuration" msgstr "Database Configuration" # TRANSLATION -# LABEL/ID_INSTALLATION_LOG -#: LABEL/ID_INSTALLATION_LOG +# LABEL/ID_INSTALLATION_FILE_LOG +#: LABEL/ID_INSTALLATION_FILE_LOG msgid "Installation log file" msgstr "Installation log file" @@ -16453,6 +16459,492 @@ msgstr "Index" msgid "Your browser does not support javascript or it is disabled, please use a different browser or activate the javascript. Forms won't work totally because javascript is used." msgstr "Your browser does not support javascript or it is disabled, please use a different browser or activate the javascript. Forms won't work totally because javascript is used." +# TRANSLATION +# LABEL/ID_MAXIMUM_SIZE_FILE_REQUIRED +#: LABEL/ID_MAXIMUM_SIZE_FILE_REQUIRED +msgid "The maximum size file, is required!" +msgstr "The maximum size file, is required!" + +# TRANSLATION +# LABEL/ID_BEFORE_UPDATE +#: LABEL/ID_BEFORE_UPDATE +msgid "Before Upgrade" +msgstr "Before Upgrade" + +# TRANSLATION +# LABEL/ID_WAIT_INSTALLING_PLUGIN +#: LABEL/ID_WAIT_INSTALLING_PLUGIN +msgid "Please wait while installing the plugin..." +msgstr "Please wait while installing the plugin..." + +# TRANSLATION +# LABEL/ID_UPGRADING_PLUGIN +#: LABEL/ID_UPGRADING_PLUGIN +msgid "Please wait while upgrading the plugin..." +msgstr "Please wait while upgrading the plugin..." + +# TRANSLATION +# LABEL/ID_UPGRADE_FINISHED +#: LABEL/ID_UPGRADE_FINISHED +msgid "Upgrade finished." +msgstr "Upgrade finished." + +# TRANSLATION +# LABEL/ID_DOWNLOADING_UPGRADE +#: LABEL/ID_DOWNLOADING_UPGRADE +msgid "Downloading upgrade:" +msgstr "Downloading upgrade:" + +# TRANSLATION +# LABEL/ID_INSTALLATION_LOG +#: LABEL/ID_INSTALLATION_LOG +msgid "Installation log:" +msgstr "Installation log:" + +# TRANSLATION +# LABEL/ID_UPGRADE_STARTING +#: LABEL/ID_UPGRADE_STARTING +msgid "Please wait while the upgrade is starting..." +msgstr "Please wait while the upgrade is starting..." + +# TRANSLATION +# LABEL/ID_DOWNLOAD_MANUALLY +#: LABEL/ID_DOWNLOAD_MANUALLY +msgid "You can download it manually here" +msgstr "You can download it manually here" + +# TRANSLATION +# LABEL/ID_UNKNOWN +#: LABEL/ID_UNKNOWN +msgid "Unknown" +msgstr "Unknown" + +# TRANSLATION +# LABEL/ID_INSTALL_ERROR +#: LABEL/ID_INSTALL_ERROR +msgid "Install Error" +msgstr "Install Error" + +# TRANSLATION +# LABEL/ID_ERROR_INSTALLING_ADDON +#: LABEL/ID_ERROR_INSTALLING_ADDON +msgid "There was a problem installing this addon." +msgstr "There was a problem installing this addon." + +# TRANSLATION +# LABEL/ID_SERVER_ERROR +#: LABEL/ID_SERVER_ERROR +msgid "Server error" +msgstr "Server error" + +# TRANSLATION +# LABEL/ID_MARKET_SERVER_CONTACTING +#: LABEL/ID_MARKET_SERVER_CONTACTING +msgid "There was a problem contacting the market server." +msgstr "There was a problem contacting the market server." + +# TRANSLATION +# LABEL/ID_SALES_DEPARTMENT_REQUEST +#: LABEL/ID_SALES_DEPARTMENT_REQUEST +msgid "It will send a request to Sales Department, do you want to continue?" +msgstr "It will send a request to Sales Department, do you want to continue?" + +# TRANSLATION +# LABEL/ID_SENDING_REQUEST_SALES_DEPARTMENT +#: LABEL/ID_SENDING_REQUEST_SALES_DEPARTMENT +msgid "Sending request to ProcessMaker Sales Department, please wait..." +msgstr "Sending request to ProcessMaker Sales Department, please wait..." + +# TRANSLATION +# LABEL/ID_NO_INTERNET_CONECTION +#: LABEL/ID_NO_INTERNET_CONECTION +msgid "Enterprise Plugins Manager no connected to internet." +msgstr "Enterprise Plugins Manager no connected to internet." + +# TRANSLATION +# LABEL/ID_WAIT_WHILE_UPGRADING_PROCESSMAKER +#: LABEL/ID_WAIT_WHILE_UPGRADING_PROCESSMAKER +msgid "Please wait while upgrading ProcessMaker..." +msgstr "Please wait while upgrading ProcessMaker..." + +# TRANSLATION +# LABEL/ID_ERROR_UPGRADING_SYSTEM +#: LABEL/ID_ERROR_UPGRADING_SYSTEM +msgid "Error upgrading System." +msgstr "Error upgrading System." + +# TRANSLATION +# LABEL/ID_ERROR_CHECK_FOR_UPDATE_DONE +#: LABEL/ID_ERROR_CHECK_FOR_UPDATE_DONE +msgid "An error has occurred, press \"OK\" to check whether the system has been upgrade." +msgstr "An error has occurred, press \"OK\" to check whether the system has been upgrade." + +# TRANSLATION +# LABEL/ID_UPGRADE_LABEL +#: LABEL/ID_UPGRADE_LABEL +msgid "Upgrade" +msgstr "Upgrade" + +# TRANSLATION +# LABEL/ID_UPDATE_LICENSE +#: LABEL/ID_UPDATE_LICENSE +msgid "Upload License" +msgstr "Upload License" + +# TRANSLATION +# LABEL/ID_SELECT_LICENSE_FILE +#: LABEL/ID_SELECT_LICENSE_FILE +msgid "Select a license file" +msgstr "Select a license file" + +# TRANSLATION +# LABEL/ID_LICENSE_FILE +#: LABEL/ID_LICENSE_FILE +msgid "License file" +msgstr "License file" + +# TRANSLATION +# LABEL/ID_WARNING_ENTERPRISE_LICENSE_MSG +#: LABEL/ID_WARNING_ENTERPRISE_LICENSE_MSG +msgid "Please select a valid license file." +msgstr "Please select a valid license file." + +# TRANSLATION +# LABEL/ID_WARNING_ENTERPRISE_LICENSE_MSG_DAT +#: LABEL/ID_WARNING_ENTERPRISE_LICENSE_MSG_DAT +msgid "The file doesn't have a .dat extension, please select another file." +msgstr "The file doesn't have a .dat extension, please select another file." + +# TRANSLATION +# LABEL/ID_UPDATING_LICENSE_MSG +#: LABEL/ID_UPDATING_LICENSE_MSG +msgid "Uploading the license file..." +msgstr "Uploading the license file..." + +# TRANSLATION +# LABEL/ID_SUCCESSFULLY_UPLOADED +#: LABEL/ID_SUCCESSFULLY_UPLOADED +msgid "Successfully uploaded." +msgstr "Successfully uploaded." + +# TRANSLATION +# LABEL/ID_WARNING_ERROR_UPDATING +#: LABEL/ID_WARNING_ERROR_UPDATING +msgid "Error uploading the license file." +msgstr "Error uploading the license file." + +# TRANSLATION +# LABEL/ID_UPLOAD_PLUGIN +#: LABEL/ID_UPLOAD_PLUGIN +msgid "Upload Plugin" +msgstr "Upload Plugin" + +# TRANSLATION +# LABEL/ID_SELECT_PLUGIN_FILE +#: LABEL/ID_SELECT_PLUGIN_FILE +msgid "Select a plugin file" +msgstr "Select a plugin file" + +# TRANSLATION +# LABEL/ID_PLUGIN_FILE +#: LABEL/ID_PLUGIN_FILE +msgid "Plugin file" +msgstr "Plugin file" + +# TRANSLATION +# LABEL/ID_SELECT_PLUGIN +#: LABEL/ID_SELECT_PLUGIN +msgid "Please select a plugin" +msgstr "Please select a plugin" + +# TRANSLATION +# LABEL/ID_INSTALLING_PLUGIN +#: LABEL/ID_INSTALLING_PLUGIN +msgid "Installing plugin..." +msgstr "Installing plugin..." + +# TRANSLATION +# LABEL/ID_ERROR_UPLOADING_PLUGIN +#: LABEL/ID_ERROR_UPLOADING_PLUGIN +msgid "Error uploading the plugin" +msgstr "Error uploading the plugin" + +# TRANSLATION +# LABEL/ID_CURRENT_VERSION +#: LABEL/ID_CURRENT_VERSION +msgid "Current version" +msgstr "Current version" + +# TRANSLATION +# LABEL/ID_NO_NEW_VERSIONS +#: LABEL/ID_NO_NEW_VERSIONS +msgid "No new versions available" +msgstr "No new versions available" + +# TRANSLATION +# LABEL/ID_CHECK_UPDATES +#: LABEL/ID_CHECK_UPDATES +msgid "Check for updates (you need to be connected to Internet)" +msgstr "Check for updates (you need to be connected to Internet)" + +# TRANSLATION +# LABEL/ID_YOUR_LICENSE +#: LABEL/ID_YOUR_LICENSE +msgid "Your license" +msgstr "Your license" + +# TRANSLATION +# LABEL/ID_CURRENT_LICENSE +#: LABEL/ID_CURRENT_LICENSE +msgid "Current license" +msgstr "Current license" + +# TRANSLATION +# LABEL/ID_LICENSE_SERVER +#: LABEL/ID_LICENSE_SERVER +msgid "License server" +msgstr "License server" + +# TRANSLATION +# LABEL/ID_ISSUED_TO +#: LABEL/ID_ISSUED_TO +msgid "Issued to" +msgstr "Issued to" + +# TRANSLATION +# LABEL/ID_EXPIRES +#: LABEL/ID_EXPIRES +msgid "Expires (days)" +msgstr "Expires (days)" + +# TRANSLATION +# LABEL/ID_IMPORT_LICENSE +#: LABEL/ID_IMPORT_LICENSE +msgid "Import license" +msgstr "Import license" + +# TRANSLATION +# LABEL/ID_RENEW +#: LABEL/ID_RENEW +msgid "Renew" +msgstr "Renew" + +# TRANSLATION +# LABEL/ID_UNISTALL +#: LABEL/ID_UNISTALL +msgid "Uninstall" +msgstr "Uninstall" + +# TRANSLATION +# LABEL/ID_UNISTALL_TIP +#: LABEL/ID_UNISTALL_TIP +msgid "Uninstall this plugin" +msgstr "Uninstall this plugin" + +# TRANSLATION +# LABEL/ID_CONFIRM_DELETE_PLUGIN +#: LABEL/ID_CONFIRM_DELETE_PLUGIN +msgid "[LABEL/ID_CONFIRM_DELETE_PLUGIN] Are you sure that you want to remove this plugin?" +msgstr "Are you sure that you want to remove this plugin?" + +# TRANSLATION +# LABEL/ID_CONFIRM_DELETE_PLUGIN_WARNING +#: LABEL/ID_CONFIRM_DELETE_PLUGIN_WARNING +msgid "Uninstalling the plugin, it can affect your others workspaces." +msgstr "Uninstalling the plugin, it can affect your others workspaces." + +# TRANSLATION +# LABEL/ID_ERROR_UNISTALLING +#: LABEL/ID_ERROR_UNISTALLING +msgid "Error uninstalling" +msgstr "Error uninstalling" + +# TRANSLATION +# LABEL/ID_ENABLE_PLUGIN_TIP +#: LABEL/ID_ENABLE_PLUGIN_TIP +msgid "Enable the selected addon" +msgstr "Enable the selected addon" + +# TRANSLATION +# LABEL/ID_ERROR_ENABLING +#: LABEL/ID_ERROR_ENABLING +msgid "Error enabling" +msgstr "Error enabling" + +# TRANSLATION +# LABEL/ID_DISABLE_PLUGIN_TIP +#: LABEL/ID_DISABLE_PLUGIN_TIP +msgid "Disable the selected plugin" +msgstr "Disable the selected plugin" + +# TRANSLATION +# LABEL/ID_ERROR_DISABLING +#: LABEL/ID_ERROR_DISABLING +msgid "Error disabling" +msgstr "Error disabling" + +# TRANSLATION +# LABEL/ID_ADMIN +#: LABEL/ID_ADMIN +msgid "Admin" +msgstr "Admin" + +# TRANSLATION +# LABEL/ID_ADMIN_PLUGIN_TIP +#: LABEL/ID_ADMIN_PLUGIN_TIP +msgid "Admin the selected plugin" +msgstr "Admin the selected plugin" + +# TRANSLATION +# LABEL/ID_PUBLISHER +#: LABEL/ID_PUBLISHER +msgid "Publisher" +msgstr "Publisher" + +# TRANSLATION +# LABEL/ID_LATEST_VERSION +#: LABEL/ID_LATEST_VERSION +msgid "Latest version" +msgstr "Latest version" + +# TRANSLATION +# LABEL/ID_BUY_NOW +#: LABEL/ID_BUY_NOW +msgid "Buy now" +msgstr "Buy now" + +# TRANSLATION +# LABEL/ID_INSTALLED +#: LABEL/ID_INSTALLED +msgid "Installed" +msgstr "Installed" + +# TRANSLATION +# LABEL/ID_INSTALL_NOW +#: LABEL/ID_INSTALL_NOW +msgid "Install now" +msgstr "Install now" + +# TRANSLATION +# LABEL/ID_UPGRADE_NOW +#: LABEL/ID_UPGRADE_NOW +msgid "Upgrade now" +msgstr "Upgrade now" + +# TRANSLATION +# LABEL/ID_INSTALLING +#: LABEL/ID_INSTALLING +msgid "Installing" +msgstr "Installing" + +# TRANSLATION +# LABEL/ID_CANCELLING +#: LABEL/ID_CANCELLING +msgid "Cancelling" +msgstr "Cancelling" + +# TRANSLATION +# LABEL/ID_INSTALL_FROM_FILE +#: LABEL/ID_INSTALL_FROM_FILE +msgid "Install from file" +msgstr "Install from file" + +# TRANSLATION +# LABEL/ID_INSTALL_FROM_FILE_PLUGIN_TIP +#: LABEL/ID_INSTALL_FROM_FILE_PLUGIN_TIP +msgid "Upload a plugin file" +msgstr "Upload a plugin file" + +# TRANSLATION +# LABEL/ID_REFRESH_LABEL_PLUGIN_TIP +#: LABEL/ID_REFRESH_LABEL_PLUGIN_TIP +msgid "Refresh the plugin list" +msgstr "Refresh the plugin list" + +# TRANSLATION +# LABEL/ID_ENTERPRISE_PLUGINS +#: LABEL/ID_ENTERPRISE_PLUGINS +msgid "Enterprise Plugins" +msgstr "Enterprise Plugins" + +# TRANSLATION +# LABEL/ID_CAUTION_NOTICE +#: LABEL/ID_CAUTION_NOTICE +msgid "

Caution: Before continuing, please read these instructions carefully:

  • Read the wiki carefully regarding the automatic upgrade.
  • Make a backup of all ProcessMaker files, including the database before proceeding.
  • This automatic upgrade may not always work depending on your server configuration.
  • In case the upgrade fails, read the wiki regarding alternative methods of upgrading.
" +msgstr "

Caution: Before continuing, please read these instructions carefully:

  • Read the wiki carefully regarding the automatic upgrade.
  • Make a backup of all ProcessMaker files, including the database before proceeding.
  • This automatic upgrade may not always work depending on your server configuration.
  • In case the upgrade fails, read the wiki regarding alternative methods of upgrading.
" + +# TRANSLATION +# LABEL/ID_AUDITLOG_DISPLAY +#: LABEL/ID_AUDITLOG_DISPLAY +msgid "Audit Log" +msgstr "Audit Log" + +# TRANSLATION +# LABEL/ID_ENABLE_AUDIT_LOG +#: LABEL/ID_ENABLE_AUDIT_LOG +msgid "Enable Audit Log" +msgstr "Enable Audit Log" + +# TRANSLATION +# LABEL/ID_AUDIT_LOG_ENABLED +#: LABEL/ID_AUDIT_LOG_ENABLED +msgid "Audit Log has been enabled" +msgstr "Audit Log has been enabled" + +# TRANSLATION +# LABEL/ID_AUDIT_LOG_DISABLED +#: LABEL/ID_AUDIT_LOG_DISABLED +msgid "Audit Log has been disabled" +msgstr "Audit Log has been disabled" + +# TRANSLATION +# LABEL/ID_AUDIT_LOG_DETAILS_1 +#: LABEL/ID_AUDIT_LOG_DETAILS_1 +msgid "Audit Log details1" +msgstr "Audit Log details1" + +# TRANSLATION +# LABEL/ID_AUDIT_LOG_DETAILS_2 +#: LABEL/ID_AUDIT_LOG_DETAILS_2 +msgid "Audit Log details 2" +msgstr "Audit Log details 2" + +# TRANSLATION +# LABEL/ID_PRIVATE +#: LABEL/ID_PRIVATE +msgid "Private" +msgstr "Private" + +# TRANSLATION +# LABEL/ID_CASES_LIST +#: LABEL/ID_CASES_LIST +msgid "[LABEL/ID_CASES_LIST] Cases Lists" +msgstr "Cases Lists" + +# TRANSLATION +# LABEL/ID_MENU_NAME +#: LABEL/ID_MENU_NAME +msgid "Enterprise Plugins Manager" +msgstr "Enterprise Plugins Manager" + +# TRANSLATION +# LABEL/ID_LEFT +#: LABEL/ID_LEFT +msgid "left" +msgstr "left" + +# TRANSLATION +# LABEL/ID_CENTER +#: LABEL/ID_CENTER +msgid "center" +msgstr "center" + +# TRANSLATION +# LABEL/ID_RIGHT +#: LABEL/ID_RIGHT +msgid "right" +msgstr "right" + # additionalTables/additionalTablesData.xml?ADD_TAB_NAME # additionalTables/additionalTablesData.xml #: text - ADD_TAB_NAME @@ -30500,7 +30992,7 @@ msgstr "File" # setup/upgrade.xml?UPGRADE # setup/upgrade.xml #: button - UPGRADE -msgid "Upgrade" +msgid "[setup/upgrade.xml?UPGRADE] Upgrade" msgstr "Upgrade" # setup/uplogo.xml?TITLE1 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/data/mssql/insert.sql b/workflow/engine/data/mssql/insert.sql index efe7bb721..5d560c37e 100755 --- a/workflow/engine/data/mssql/insert.sql +++ b/workflow/engine/data/mssql/insert.sql @@ -5840,6 +5840,8 @@ SELECT 'LABEL','ID_LOGIN_WITH_FACEBOOK','en','Login with Facebook!!','2014-01-15 UNION ALL SELECT 'LABEL','ID_PROCESSMAKER_REQUIREMENTS_DESCRIPTION_STEP6','en','xxx','2014-01-15' UNION ALL +SELECT 'LABEL','ID_SIZE_VERY_LARGE_PERMITTED','en','The size is very large as permitted!','2014-09-10' + UNION ALL SELECT 'LABEL','ID_PROCESSMAKER_REQUIREMENTS_DESCRIPTION_STEP5','en','ProcessMaker uses workspaces to store data. Please enter a valid workspace name and credentials to login.','2014-09-02' UNION ALL SELECT 'LABEL','ID_PROCESSMAKER_REQUIREMENTS_DESCRIPTION_STEP4_2','en','If you are installing ProcessMaker on a remote web server, you will need to get this information from your Database Server.','2014-01-15' @@ -5921,11 +5923,11 @@ SELECT 'LABEL','ID_RP_DATABASE_NAME','en','Report Database Name','2014-01-15' SELECT 'LABEL','ID_RB_DATABASE_NAME','en','Rbac Database Name','2014-01-15' UNION ALL SELECT 'LABEL','ID_WF_DATABASE_NAME','en','Workflow Database Name','2014-01-15' - UNION ALL -SELECT 'LABEL','ID_CHANGE_DATABASE_NAME','en','Change Database names','2014-01-15' ; INSERT INTO [TRANSLATION] ([TRN_CATEGORY],[TRN_ID],[TRN_LANG],[TRN_VALUE],[TRN_UPDATE_DATE]) +SELECT 'LABEL','ID_CHANGE_DATABASE_NAME','en','Change Database names','2014-01-15' + UNION ALL SELECT 'LABEL','ID_ADMIN_USERNAME','en','Admin Username','2014-01-15' UNION ALL SELECT 'LABEL','ID_ADMIN_PASSWORD','en','Confirm Admin Password','2014-01-15' @@ -5940,7 +5942,7 @@ SELECT 'LABEL','ID_DATABASE_ENGINE','en','Database Engine','2014-01-15' UNION ALL SELECT 'LABEL','ID_DATABASE_CONFIGURATION','en','Database Configuration','2014-01-15' UNION ALL -SELECT 'LABEL','ID_INSTALLATION_LOG','en','Installation log file','2014-01-15' +SELECT 'LABEL','ID_INSTALLATION_FILE_LOG','en','Installation log file','2014-01-15' UNION ALL SELECT 'LABEL','ID_WORFLOW_DATA_DIRECTORY','en','Workflow Data Directory','2014-01-15' UNION ALL @@ -6083,11 +6085,11 @@ SELECT 'LABEL','DYNAFIELD_NODENAME_NUMBER','en','The field name should not start SELECT 'LABEL','ID_EMPTY_NODENAME','en','The name field is empty','2014-01-15' UNION ALL SELECT 'LABEL','ID_TAS_DURATION_REQUIRE','en','Duration task required','2014-01-15' - UNION ALL -SELECT 'LABEL','ID_NAME_TAS_TITLE_REQUIRE','en','Task title required','2014-01-15' ; INSERT INTO [TRANSLATION] ([TRN_CATEGORY],[TRN_ID],[TRN_LANG],[TRN_VALUE],[TRN_UPDATE_DATE]) +SELECT 'LABEL','ID_NAME_TAS_TITLE_REQUIRE','en','Task title required','2014-01-15' + UNION ALL SELECT 'LABEL','APP_TITLE_CASE_LABEL_UPDATE','en','The System has detected that the changes on case labels will affect more than 1000 records, so the work will be scheduled by the cron to perform the update the next time the cron will run.','2014-01-15' UNION ALL SELECT 'LABEL','ID_MESSAGE_LOGIN','en','The default language that is configured in this place is for the "dropdown" of the languages that are displaying on the login screen, this configuration is set for each workspace.','2014-01-15' @@ -6245,11 +6247,11 @@ SELECT 'LABEL','ID_DELETE_DOCUMENT','en','Do you want to delete selected documen SELECT 'LABEL','ID_CRON_ACTIONS_LOG','en','Cron Actions Log','2014-01-15' UNION ALL SELECT 'LABEL','ID_AUTH_SOURCE_MISSING','en','The plugin that is related to this authentication source was removed or disabled, please consult to your system administrator.','2014-01-15' - UNION ALL -SELECT 'LABEL','ID_TRIGGER_REQUIRED','en','Trigger is required','2014-01-15' ; INSERT INTO [TRANSLATION] ([TRN_CATEGORY],[TRN_ID],[TRN_LANG],[TRN_VALUE],[TRN_UPDATE_DATE]) +SELECT 'LABEL','ID_TRIGGER_REQUIRED','en','Trigger is required','2014-01-15' + UNION ALL SELECT 'LABEL','ID_TIME_REQUIRED','en','Time is required','2014-01-15' UNION ALL SELECT 'LABEL','ID_CURRENT_WORKSPACE','en','Current Workspace','2014-01-15' @@ -6407,11 +6409,11 @@ SELECT 'LABEL','ID_FAILED_VALIDATIONS_IN_CLASS','en','Failed Validation in class SELECT 'LABEL','ID_ERROR_CHANGE_SEQUENCE_NUMBER','en','Unable to generate numerical sequence another user performing the same request.','2014-01-15' UNION ALL SELECT 'LABEL','ID_CANT_RESOLVE_APPLICATION','en','Can''t resolve the Aplication ID for this request.','2014-01-15' - UNION ALL -SELECT 'LABEL','ID_FAILED_VALIDATION_IN_CLASS1','en','Failed Validation in class {CLASS}.','2014-01-15' ; INSERT INTO [TRANSLATION] ([TRN_CATEGORY],[TRN_ID],[TRN_LANG],[TRN_VALUE],[TRN_UPDATE_DATE]) +SELECT 'LABEL','ID_FAILED_VALIDATION_IN_CLASS1','en','Failed Validation in class {CLASS}.','2014-01-15' + UNION ALL SELECT 'LABEL','ID_REQUIRED_NAME_CASE_SCHEDULER','en','You forgot the name of the Case Scheduler','2014-01-15' UNION ALL SELECT 'LABEL','ID_DUPLICATE_CASE_SCHEDULER_NAME','en','Duplicate Case Scheduler name.','2014-01-15' @@ -6569,11 +6571,11 @@ SELECT 'LABEL','ID_EVENT_ADD_CURRENT','en','Add current task user','2014-02-12' SELECT 'LABEL','ID_EVENT_ADD_USERS','en','Add users','2014-02-12' UNION ALL SELECT 'LABEL','ID_EVENT_REMOVE_SELECTED','en','Remove selected','2014-02-12' - UNION ALL -SELECT 'LABEL','ID_EVENT_ADD_DYNAVAR','en','Add dynavar','2014-02-12' ; INSERT INTO [TRANSLATION] ([TRN_CATEGORY],[TRN_ID],[TRN_LANG],[TRN_VALUE],[TRN_UPDATE_DATE]) +SELECT 'LABEL','ID_EVENT_ADD_DYNAVAR','en','Add dynavar','2014-02-12' + UNION ALL SELECT 'LABEL','ID_EVENT_ADD_GROUP','en','Add groups','2014-02-12' UNION ALL SELECT 'LABEL','ID_EXECUTION','en','Execution','2014-02-12' @@ -6731,11 +6733,11 @@ SELECT 'LABEL','ID_CASES_INCORRECT_INFORMATION','en','Incorrect or unavailable i SELECT 'LABEL','ID_INVALID_VALUE_FOR','en','Invalid value specified for: {0}','2014-05-21' UNION ALL SELECT 'LABEL','ID_CASE_SCHEDULER_DOES_NOT_EXIST','en','This case scheduler with sch_uid: {0} does not exist!','2014-05-21' - UNION ALL -SELECT 'LABEL','ID_INFORMATION_EMPTY','en','The information sended is empty!','2014-05-21' ; INSERT INTO [TRANSLATION] ([TRN_CATEGORY],[TRN_ID],[TRN_LANG],[TRN_VALUE],[TRN_UPDATE_DATE]) +SELECT 'LABEL','ID_INFORMATION_EMPTY','en','The information sended is empty!','2014-05-21' + UNION ALL SELECT 'LABEL','ID_TASK_NOT_FOUND','en','Task not found for id: {0}','2014-05-21' UNION ALL SELECT 'LABEL','ID_CAN_NOT_BE_EMPTY','en','{0}, can not be empty','2014-05-21' @@ -6893,11 +6895,11 @@ SELECT 'LABEL','ID_NAME_STG_TITLE_REQUIRE','en','Stage title required','2014-06- SELECT 'LABEL','ID_INPUT_DOCUMENT_ITS_ASSIGNED','en','The Input Document with {0}: {1} it''s assigned in "{2}".','2014-06-26' UNION ALL SELECT 'LABEL','ID_PROCESS_VARIABLE_DOES_NOT_EXIST','en','The variable with {0}: {1} does not exist.','2014-06-30' - UNION ALL -SELECT 'LABEL','ID_PROCESS_VARIABLE_REQUIRED_VARIABLES_FOR_QUERY','en','The variable "{0}" required the variables "{1}" for the query.','2014-06-30' ; INSERT INTO [TRANSLATION] ([TRN_CATEGORY],[TRN_ID],[TRN_LANG],[TRN_VALUE],[TRN_UPDATE_DATE]) +SELECT 'LABEL','ID_PROCESS_VARIABLE_REQUIRED_VARIABLES_FOR_QUERY','en','The variable "{0}" required the variables "{1}" for the query.','2014-06-30' + UNION ALL SELECT 'LABEL','ID_OUTPUT_DOCUMENT_ITS_ASSIGNED','en','The Output Document with {0}: {1} it''s assigned in "{2}".','2014-07-01' UNION ALL SELECT 'LABEL','ID_EXISTS_FILES','en','The file exists.','2014-07-17' @@ -6934,9 +6936,173 @@ SELECT 'LABEL','ID_TINY_SYSTEM_VARIABLE','en','System Variable','2014-08-27' UNION ALL SELECT 'LABEL','ID_CHOOSE_PROVIDER','en','Please select provider','2014-08-27' UNION ALL -SELECT 'LABEL','ID_INDEX','en','Index','2014-08-27' +SELECT 'LABEL','ID_INDEX','en','Index','2014-09-10' UNION ALL SELECT 'LABEL','ID_ERROR_JS_NOT_AVAILABLE','en','Your browser does not support javascript or it is disabled, please use a different browser or activate the javascript. Forms won''t work totally because javascript is used.','2014-08-29' + UNION ALL +SELECT 'LABEL','ID_MAXIMUM_SIZE_FILE_REQUIRED','en','The maximum size file, is required!','2014-09-12' + UNION ALL +SELECT 'LABEL','ID_BEFORE_UPDATE','en','Before Upgrade','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_WAIT_INSTALLING_PLUGIN','en','Please wait while installing the plugin...','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_UPGRADING_PLUGIN','en','Please wait while upgrading the plugin...','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_UPGRADE_FINISHED','en','Upgrade finished.','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_DOWNLOADING_UPGRADE','en','Downloading upgrade:','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_INSTALLATION_LOG','en','Installation log:','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_UPGRADE_STARTING','en','Please wait while the upgrade is starting...','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_DOWNLOAD_MANUALLY','en','You can download it manually here','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_UNKNOWN','en','Unknown','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_INSTALL_ERROR','en','Install Error','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_ERROR_INSTALLING_ADDON','en','There was a problem installing this addon.','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_SERVER_ERROR','en','Server error','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_MARKET_SERVER_CONTACTING','en','There was a problem contacting the market server.','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_SALES_DEPARTMENT_REQUEST','en','It will send a request to Sales Department, do you want to continue?','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_SENDING_REQUEST_SALES_DEPARTMENT','en','Sending request to ProcessMaker Sales Department, please wait...','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_NO_INTERNET_CONECTION','en','Enterprise Plugins Manager no connected to internet.','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_WAIT_WHILE_UPGRADING_PROCESSMAKER','en','Please wait while upgrading ProcessMaker...','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_ERROR_UPGRADING_SYSTEM','en','Error upgrading System.','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_ERROR_CHECK_FOR_UPDATE_DONE','en','An error has occurred, press "OK" to check whether the system has been upgrade.','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_UPGRADE_LABEL','en','Upgrade','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_UPDATE_LICENSE','en','Upload License','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_SELECT_LICENSE_FILE','en','Select a license file','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_LICENSE_FILE','en','License file','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_WARNING_ENTERPRISE_LICENSE_MSG','en','Please select a valid license file.','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_WARNING_ENTERPRISE_LICENSE_MSG_DAT','en','The file doesn''t have a .dat extension, please select another file.','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_UPDATING_LICENSE_MSG','en','Uploading the license file...','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_SUCCESSFULLY_UPLOADED','en','Successfully uploaded.','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_WARNING_ERROR_UPDATING','en','Error uploading the license file.','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_UPLOAD_PLUGIN','en','Upload Plugin','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_SELECT_PLUGIN_FILE','en','Select a plugin file','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_PLUGIN_FILE','en','Plugin file','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_SELECT_PLUGIN','en','Please select a plugin','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_INSTALLING_PLUGIN','en','Installing plugin...','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_ERROR_UPLOADING_PLUGIN','en','Error uploading the plugin','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_CURRENT_VERSION','en','Current version','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_NO_NEW_VERSIONS','en','No new versions available','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_CHECK_UPDATES','en','Check for updates (you need to be connected to Internet)','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_YOUR_LICENSE','en','Your license','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_CURRENT_LICENSE','en','Current license','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_LICENSE_SERVER','en','License server','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_ISSUED_TO','en','Issued to','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_EXPIRES','en','Expires (days)','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_IMPORT_LICENSE','en','Import license','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_RENEW','en','Renew','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_UNISTALL','en','Uninstall','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_UNISTALL_TIP','en','Uninstall this plugin','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_CONFIRM_DELETE_PLUGIN','en','Are you sure that you want to remove this plugin?','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_CONFIRM_DELETE_PLUGIN_WARNING','en','Uninstalling the plugin, it can affect your others workspaces.','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_ERROR_UNISTALLING','en','Error uninstalling','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_ENABLE_PLUGIN_TIP','en','Enable the selected addon','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_ERROR_ENABLING','en','Error enabling','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_DISABLE_PLUGIN_TIP','en','Disable the selected plugin','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_ERROR_DISABLING','en','Error disabling','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_ADMIN','en','Admin','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_ADMIN_PLUGIN_TIP','en','Admin the selected plugin','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_PUBLISHER','en','Publisher','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_LATEST_VERSION','en','Latest version','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_BUY_NOW','en','Buy now','2014-09-18' + ; +INSERT INTO [TRANSLATION] ([TRN_CATEGORY],[TRN_ID],[TRN_LANG],[TRN_VALUE],[TRN_UPDATE_DATE]) + +SELECT 'LABEL','ID_INSTALLED','en','Installed','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_INSTALL_NOW','en','Install now','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_UPGRADE_NOW','en','Upgrade now','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_INSTALLING','en','Installing','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_CANCELLING','en','Cancelling','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_INSTALL_FROM_FILE','en','Install from file','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_INSTALL_FROM_FILE_PLUGIN_TIP','en','Upload a plugin file','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_REFRESH_LABEL_PLUGIN_TIP','en','Refresh the plugin list','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_ENTERPRISE_PLUGINS','en','Enterprise Plugins','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_CAUTION_NOTICE','en','

Caution: Before continuing, please read these instructions carefully:

  • Read the wiki carefully regarding the automatic upgrade.
  • Make a backup of all ProcessMaker files, including the database before proceeding.
  • This automatic upgrade may not always work depending on your server configuration.
  • In case the upgrade fails, read the wiki regarding alternative methods of upgrading.
','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_AUDITLOG_DISPLAY','en','Audit Log','2014-09-19' + UNION ALL +SELECT 'LABEL','ID_ENABLE_AUDIT_LOG','en','Enable Audit Log','2014-09-19' + UNION ALL +SELECT 'LABEL','ID_AUDIT_LOG_ENABLED','en','Audit Log has been enabled','2014-09-19' + UNION ALL +SELECT 'LABEL','ID_AUDIT_LOG_DISABLED','en','Audit Log has been disabled','2014-09-19' + UNION ALL +SELECT 'LABEL','ID_AUDIT_LOG_DETAILS_1','en','Audit Log details1','2014-09-19' + UNION ALL +SELECT 'LABEL','ID_AUDIT_LOG_DETAILS_2','en','Audit Log details 2','2014-09-19' + UNION ALL +SELECT 'LABEL','ID_PRIVATE','en','Private','2014-09-22' + UNION ALL +SELECT 'LABEL','ID_CASES_LIST','en','Cases Lists','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_MENU_NAME','en','Enterprise Plugins Manager','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_LEFT','en','left','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_CENTER','en','center','2014-09-18' + UNION ALL +SELECT 'LABEL','ID_RIGHT','en','right','2014-09-18' ; INSERT INTO ISO_LOCATION ([IC_UID],[IL_UID],[IL_NAME],[IL_NORMAL_NAME],[IS_UID]) diff --git a/workflow/engine/data/mysql/insert.sql b/workflow/engine/data/mysql/insert.sql index c30e9d211..2d9fb9868 100755 --- a/workflow/engine/data/mysql/insert.sql +++ b/workflow/engine/data/mysql/insert.sql @@ -3642,6 +3642,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_COPYRIGHT','en','Copyright © 2003-2011 Colosa, Inc. All rights reserved.','2014-01-15') , ( 'LABEL','ID_LOGIN_WITH_FACEBOOK','en','Login with Facebook!!','2014-01-15') , ( 'LABEL','ID_PROCESSMAKER_REQUIREMENTS_DESCRIPTION_STEP6','en','xxx','2014-01-15') , +( 'LABEL','ID_SIZE_VERY_LARGE_PERMITTED','en','The size is very large as permitted!','2014-09-10') , ( 'LABEL','ID_PROCESSMAKER_REQUIREMENTS_DESCRIPTION_STEP5','en','ProcessMaker uses workspaces to store data. Please enter a valid workspace name and credentials to login.','2014-09-02') , ( 'LABEL','ID_PROCESSMAKER_REQUIREMENTS_DESCRIPTION_STEP4_2','en','If you are installing ProcessMaker on a remote web server, you will need to get this information from your Database Server.','2014-01-15') , ( 'LABEL','ID_PROCESSMAKER_REQUIREMENTS_DESCRIPTION_STEP4_1','en','ProcessMaker stores all of its data in a database. This screen gives the installation program the information needed to create this database.','2014-01-15') , @@ -3682,10 +3683,10 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_DELETE_DATABASES','en','Delete Databases if exists','2014-01-15') , ( 'LABEL','ID_RP_DATABASE_NAME','en','Report Database Name','2014-01-15') , ( 'LABEL','ID_RB_DATABASE_NAME','en','Rbac Database Name','2014-01-15') , -( 'LABEL','ID_WF_DATABASE_NAME','en','Workflow Database Name','2014-01-15') , -( 'LABEL','ID_CHANGE_DATABASE_NAME','en','Change Database names','2014-01-15') ; +( 'LABEL','ID_WF_DATABASE_NAME','en','Workflow Database Name','2014-01-15') ; INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ) VALUES +( 'LABEL','ID_CHANGE_DATABASE_NAME','en','Change Database names','2014-01-15') , ( 'LABEL','ID_ADMIN_USERNAME','en','Admin Username','2014-01-15') , ( 'LABEL','ID_ADMIN_PASSWORD','en','Confirm Admin Password','2014-01-15') , ( 'LABEL','ID_WORKSPACE_NAME','en','Workspace Name','2014-01-15') , @@ -3693,7 +3694,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_HOST_NAME_LABEL','en','Host Name','2014-01-15') , ( 'LABEL','ID_DATABASE_ENGINE','en','Database Engine','2014-01-15') , ( 'LABEL','ID_DATABASE_CONFIGURATION','en','Database Configuration','2014-01-15') , -( 'LABEL','ID_INSTALLATION_LOG','en','Installation log file','2014-01-15') , +( 'LABEL','ID_INSTALLATION_FILE_LOG','en','Installation log file','2014-01-15') , ( 'LABEL','ID_WORFLOW_DATA_DIRECTORY','en','Workflow Data Directory','2014-01-15') , ( 'LABEL','ID_WORKFLOW_DATA_DIRECTORY_REQUIRED','en','"Workflow Data Directory" is required.','2014-01-15') , ( 'LABEL','ID_PUBLIC_INDEX_FILE','en','Public Index file','2014-01-15') , @@ -3764,10 +3765,10 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','DYNAFIELD_EMPTY','en','The name field is empty','2014-01-15') , ( 'LABEL','DYNAFIELD_NODENAME_NUMBER','en','The field name should not start with a number','2014-01-15') , ( 'LABEL','ID_EMPTY_NODENAME','en','The name field is empty','2014-01-15') , -( 'LABEL','ID_TAS_DURATION_REQUIRE','en','Duration task required','2014-01-15') , -( 'LABEL','ID_NAME_TAS_TITLE_REQUIRE','en','Task title required','2014-01-15') ; +( 'LABEL','ID_TAS_DURATION_REQUIRE','en','Duration task required','2014-01-15') ; INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ) VALUES +( 'LABEL','ID_NAME_TAS_TITLE_REQUIRE','en','Task title required','2014-01-15') , ( 'LABEL','APP_TITLE_CASE_LABEL_UPDATE','en','The System has detected that the changes on case labels will affect more than 1000 records, so the work will be scheduled by the cron to perform the update the next time the cron will run.','2014-01-15') , ( 'LABEL','ID_MESSAGE_LOGIN','en','The default language that is configured in this place is for the "dropdown" of the languages that are displaying on the login screen, this configuration is set for each workspace.','2014-01-15') , ( 'LABEL','ID_MESSAGE_SYSTEM','en','The language that is set by default applies directly when the domain is entered (eg.- http://127.0.0.1:8081), the system reads the configuration and redirects the link to the selected language','2014-01-15') , @@ -3846,10 +3847,10 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_CASES_NOTES_NO_PERMISSIONS','en','You do not have permission to cases notes','2014-01-15') , ( 'LABEL','ID_DELETE_DOCUMENT','en','Do you want to delete selected document?','2014-01-15') , ( 'LABEL','ID_CRON_ACTIONS_LOG','en','Cron Actions Log','2014-01-15') , -( 'LABEL','ID_AUTH_SOURCE_MISSING','en','The plugin that is related to this authentication source was removed or disabled, please consult to your system administrator.','2014-01-15') , -( 'LABEL','ID_TRIGGER_REQUIRED','en','Trigger is required','2014-01-15') ; +( 'LABEL','ID_AUTH_SOURCE_MISSING','en','The plugin that is related to this authentication source was removed or disabled, please consult to your system administrator.','2014-01-15') ; INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ) VALUES +( 'LABEL','ID_TRIGGER_REQUIRED','en','Trigger is required','2014-01-15') , ( 'LABEL','ID_TIME_REQUIRED','en','Time is required','2014-01-15') , ( 'LABEL','ID_CURRENT_WORKSPACE','en','Current Workspace','2014-01-15') , ( 'LABEL','ID_PM_FUNCTION_CHANGE_CASE','en','The "{0}" function has {1} the current case, the script has stopped to avoid conflicts.','2014-01-15') , @@ -3928,10 +3929,10 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_SLOW','en','slow','2014-01-15') , ( 'LABEL','ID_FAILED_VALIDATIONS_IN_CLASS','en','Failed Validation in class {CLASS}.','2014-01-15') , ( 'LABEL','ID_ERROR_CHANGE_SEQUENCE_NUMBER','en','Unable to generate numerical sequence another user performing the same request.','2014-01-15') , -( 'LABEL','ID_CANT_RESOLVE_APPLICATION','en','Can''t resolve the Aplication ID for this request.','2014-01-15') , -( 'LABEL','ID_FAILED_VALIDATION_IN_CLASS1','en','Failed Validation in class {CLASS}.','2014-01-15') ; +( 'LABEL','ID_CANT_RESOLVE_APPLICATION','en','Can''t resolve the Aplication ID for this request.','2014-01-15') ; INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ) VALUES +( 'LABEL','ID_FAILED_VALIDATION_IN_CLASS1','en','Failed Validation in class {CLASS}.','2014-01-15') , ( 'LABEL','ID_REQUIRED_NAME_CASE_SCHEDULER','en','You forgot the name of the Case Scheduler','2014-01-15') , ( 'LABEL','ID_DUPLICATE_CASE_SCHEDULER_NAME','en','Duplicate Case Scheduler name.','2014-01-15') , ( 'LABEL','ID_MSG_CLEAR_GRID_FIRST_ITEM','en','Do you want to clear the information from the first row?','2014-01-15') , @@ -4010,10 +4011,10 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_SMTP_ERROR_MET_TURN_SMTP_NOT_IMPLEMENTED','en','This method, TURN, of the SMTP is not implemented','2014-02-12') , ( 'LABEL','ID_EVENT_ADD_CURRENT','en','Add current task user','2014-02-12') , ( 'LABEL','ID_EVENT_ADD_USERS','en','Add users','2014-02-12') , -( 'LABEL','ID_EVENT_REMOVE_SELECTED','en','Remove selected','2014-02-12') , -( 'LABEL','ID_EVENT_ADD_DYNAVAR','en','Add dynavar','2014-02-12') ; +( 'LABEL','ID_EVENT_REMOVE_SELECTED','en','Remove selected','2014-02-12') ; INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ) VALUES +( 'LABEL','ID_EVENT_ADD_DYNAVAR','en','Add dynavar','2014-02-12') , ( 'LABEL','ID_EVENT_ADD_GROUP','en','Add groups','2014-02-12') , ( 'LABEL','ID_EXECUTION','en','Execution','2014-02-12') , ( 'LABEL','ID_GROUP_CANNOT_DELETE_WHILE_ASSIGNED_TO_TASK','en','Group cannot be deleted while it''s assigned to a task','2014-04-03') , @@ -4092,10 +4093,10 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_CASES_OUTPUT_DOES_NOT_EXIST','en','This output document with out_doc_id: {0} does not exist!','2014-05-21') , ( 'LABEL','ID_CASES_INCORRECT_INFORMATION','en','Incorrect or unavailable information about this case: {0}','2014-05-21') , ( 'LABEL','ID_INVALID_VALUE_FOR','en','Invalid value specified for: {0}','2014-05-21') , -( 'LABEL','ID_CASE_SCHEDULER_DOES_NOT_EXIST','en','This case scheduler with sch_uid: {0} does not exist!','2014-05-21') , -( 'LABEL','ID_INFORMATION_EMPTY','en','The information sended is empty!','2014-05-21') ; +( 'LABEL','ID_CASE_SCHEDULER_DOES_NOT_EXIST','en','This case scheduler with sch_uid: {0} does not exist!','2014-05-21') ; INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ) VALUES +( 'LABEL','ID_INFORMATION_EMPTY','en','The information sended is empty!','2014-05-21') , ( 'LABEL','ID_TASK_NOT_FOUND','en','Task not found for id: {0}','2014-05-21') , ( 'LABEL','ID_CAN_NOT_BE_EMPTY','en','{0}, can not be empty','2014-05-21') , ( 'LABEL','ID_CASE_SCHEDULER_DUPLICATE','en','Duplicate Case Scheduler name','2014-05-21') , @@ -4174,10 +4175,10 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_MSG_CONFIRM_DELETE_USER_ASSINGED_SUPERVISOR','en','The user can not be deleted while this assigned as a supervisor. Want removed anyway?','2014-06-20') , ( 'LABEL','ID_NAME_STG_TITLE_REQUIRE','en','Stage title required','2014-06-25') , ( 'LABEL','ID_INPUT_DOCUMENT_ITS_ASSIGNED','en','The Input Document with {0}: {1} it''s assigned in "{2}".','2014-06-26') , -( 'LABEL','ID_PROCESS_VARIABLE_DOES_NOT_EXIST','en','The variable with {0}: {1} does not exist.','2014-06-30') , -( 'LABEL','ID_PROCESS_VARIABLE_REQUIRED_VARIABLES_FOR_QUERY','en','The variable "{0}" required the variables "{1}" for the query.','2014-06-30') ; +( 'LABEL','ID_PROCESS_VARIABLE_DOES_NOT_EXIST','en','The variable with {0}: {1} does not exist.','2014-06-30') ; INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ) VALUES +( 'LABEL','ID_PROCESS_VARIABLE_REQUIRED_VARIABLES_FOR_QUERY','en','The variable "{0}" required the variables "{1}" for the query.','2014-06-30') , ( 'LABEL','ID_OUTPUT_DOCUMENT_ITS_ASSIGNED','en','The Output Document with {0}: {1} it''s assigned in "{2}".','2014-07-01') , ( 'LABEL','ID_EXISTS_FILES','en','The file exists.','2014-07-17') , ( 'LABEL','ID_FILENAME_REQUIRED','en','The filename is required.','2014-07-17') , @@ -4196,8 +4197,91 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_INPUT_DOC_TYPE_FILE_REQUIRED','en','You must specify the allowed file extensions, use *.* to allow any extension.','2014-08-25') , ( 'LABEL','ID_TINY_SYSTEM_VARIABLE','en','System Variable','2014-08-27') , ( 'LABEL','ID_CHOOSE_PROVIDER','en','Please select provider','2014-08-27') , -( 'LABEL','ID_INDEX','en','Index','2014-08-27') , -( 'LABEL','ID_ERROR_JS_NOT_AVAILABLE','en','Your browser does not support javascript or it is disabled, please use a different browser or activate the javascript. Forms won''t work totally because javascript is used.','2014-08-29') ; +( 'LABEL','ID_INDEX','en','Index','2014-09-10') , +( 'LABEL','ID_ERROR_JS_NOT_AVAILABLE','en','Your browser does not support javascript or it is disabled, please use a different browser or activate the javascript. Forms won''t work totally because javascript is used.','2014-08-29') , +( 'LABEL','ID_MAXIMUM_SIZE_FILE_REQUIRED','en','The maximum size file, is required!','2014-09-12') , +( 'LABEL','ID_BEFORE_UPDATE','en','Before Upgrade','2014-09-18') , +( 'LABEL','ID_WAIT_INSTALLING_PLUGIN','en','Please wait while installing the plugin...','2014-09-18') , +( 'LABEL','ID_UPGRADING_PLUGIN','en','Please wait while upgrading the plugin...','2014-09-18') , +( 'LABEL','ID_UPGRADE_FINISHED','en','Upgrade finished.','2014-09-18') , +( 'LABEL','ID_DOWNLOADING_UPGRADE','en','Downloading upgrade:','2014-09-18') , +( 'LABEL','ID_INSTALLATION_LOG','en','Installation log:','2014-09-18') , +( 'LABEL','ID_UPGRADE_STARTING','en','Please wait while the upgrade is starting...','2014-09-18') , +( 'LABEL','ID_DOWNLOAD_MANUALLY','en','You can download it manually here','2014-09-18') , +( 'LABEL','ID_UNKNOWN','en','Unknown','2014-09-18') , +( 'LABEL','ID_INSTALL_ERROR','en','Install Error','2014-09-18') , +( 'LABEL','ID_ERROR_INSTALLING_ADDON','en','There was a problem installing this addon.','2014-09-18') , +( 'LABEL','ID_SERVER_ERROR','en','Server error','2014-09-18') , +( 'LABEL','ID_MARKET_SERVER_CONTACTING','en','There was a problem contacting the market server.','2014-09-18') , +( 'LABEL','ID_SALES_DEPARTMENT_REQUEST','en','It will send a request to Sales Department, do you want to continue?','2014-09-18') , +( 'LABEL','ID_SENDING_REQUEST_SALES_DEPARTMENT','en','Sending request to ProcessMaker Sales Department, please wait...','2014-09-18') , +( 'LABEL','ID_NO_INTERNET_CONECTION','en','Enterprise Plugins Manager no connected to internet.','2014-09-18') , +( 'LABEL','ID_WAIT_WHILE_UPGRADING_PROCESSMAKER','en','Please wait while upgrading ProcessMaker...','2014-09-18') , +( 'LABEL','ID_ERROR_UPGRADING_SYSTEM','en','Error upgrading System.','2014-09-18') , +( 'LABEL','ID_ERROR_CHECK_FOR_UPDATE_DONE','en','An error has occurred, press "OK" to check whether the system has been upgrade.','2014-09-18') , +( 'LABEL','ID_UPGRADE_LABEL','en','Upgrade','2014-09-18') , +( 'LABEL','ID_UPDATE_LICENSE','en','Upload License','2014-09-18') , +( 'LABEL','ID_SELECT_LICENSE_FILE','en','Select a license file','2014-09-18') , +( 'LABEL','ID_LICENSE_FILE','en','License file','2014-09-18') , +( 'LABEL','ID_WARNING_ENTERPRISE_LICENSE_MSG','en','Please select a valid license file.','2014-09-18') , +( 'LABEL','ID_WARNING_ENTERPRISE_LICENSE_MSG_DAT','en','The file doesn''t have a .dat extension, please select another file.','2014-09-18') , +( 'LABEL','ID_UPDATING_LICENSE_MSG','en','Uploading the license file...','2014-09-18') , +( 'LABEL','ID_SUCCESSFULLY_UPLOADED','en','Successfully uploaded.','2014-09-18') , +( 'LABEL','ID_WARNING_ERROR_UPDATING','en','Error uploading the license file.','2014-09-18') , +( 'LABEL','ID_UPLOAD_PLUGIN','en','Upload Plugin','2014-09-18') , +( 'LABEL','ID_SELECT_PLUGIN_FILE','en','Select a plugin file','2014-09-18') , +( 'LABEL','ID_PLUGIN_FILE','en','Plugin file','2014-09-18') , +( 'LABEL','ID_SELECT_PLUGIN','en','Please select a plugin','2014-09-18') , +( 'LABEL','ID_INSTALLING_PLUGIN','en','Installing plugin...','2014-09-18') , +( 'LABEL','ID_ERROR_UPLOADING_PLUGIN','en','Error uploading the plugin','2014-09-18') , +( 'LABEL','ID_CURRENT_VERSION','en','Current version','2014-09-18') , +( 'LABEL','ID_NO_NEW_VERSIONS','en','No new versions available','2014-09-18') , +( 'LABEL','ID_CHECK_UPDATES','en','Check for updates (you need to be connected to Internet)','2014-09-18') , +( 'LABEL','ID_YOUR_LICENSE','en','Your license','2014-09-18') , +( 'LABEL','ID_CURRENT_LICENSE','en','Current license','2014-09-18') , +( 'LABEL','ID_LICENSE_SERVER','en','License server','2014-09-18') , +( 'LABEL','ID_ISSUED_TO','en','Issued to','2014-09-18') , +( 'LABEL','ID_EXPIRES','en','Expires (days)','2014-09-18') , +( 'LABEL','ID_IMPORT_LICENSE','en','Import license','2014-09-18') , +( 'LABEL','ID_RENEW','en','Renew','2014-09-18') , +( 'LABEL','ID_UNISTALL','en','Uninstall','2014-09-18') , +( 'LABEL','ID_UNISTALL_TIP','en','Uninstall this plugin','2014-09-18') , +( 'LABEL','ID_CONFIRM_DELETE_PLUGIN','en','Are you sure that you want to remove this plugin?','2014-09-18') , +( 'LABEL','ID_CONFIRM_DELETE_PLUGIN_WARNING','en','Uninstalling the plugin, it can affect your others workspaces.','2014-09-18') , +( 'LABEL','ID_ERROR_UNISTALLING','en','Error uninstalling','2014-09-18') , +( 'LABEL','ID_ENABLE_PLUGIN_TIP','en','Enable the selected addon','2014-09-18') , +( 'LABEL','ID_ERROR_ENABLING','en','Error enabling','2014-09-18') , +( 'LABEL','ID_DISABLE_PLUGIN_TIP','en','Disable the selected plugin','2014-09-18') , +( 'LABEL','ID_ERROR_DISABLING','en','Error disabling','2014-09-18') , +( 'LABEL','ID_ADMIN','en','Admin','2014-09-18') , +( 'LABEL','ID_ADMIN_PLUGIN_TIP','en','Admin the selected plugin','2014-09-18') , +( 'LABEL','ID_PUBLISHER','en','Publisher','2014-09-18') , +( 'LABEL','ID_LATEST_VERSION','en','Latest version','2014-09-18') , +( 'LABEL','ID_BUY_NOW','en','Buy now','2014-09-18') ; +INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ) VALUES + +( 'LABEL','ID_INSTALLED','en','Installed','2014-09-18') , +( 'LABEL','ID_INSTALL_NOW','en','Install now','2014-09-18') , +( 'LABEL','ID_UPGRADE_NOW','en','Upgrade now','2014-09-18') , +( 'LABEL','ID_INSTALLING','en','Installing','2014-09-18') , +( 'LABEL','ID_CANCELLING','en','Cancelling','2014-09-18') , +( 'LABEL','ID_INSTALL_FROM_FILE','en','Install from file','2014-09-18') , +( 'LABEL','ID_INSTALL_FROM_FILE_PLUGIN_TIP','en','Upload a plugin file','2014-09-18') , +( 'LABEL','ID_REFRESH_LABEL_PLUGIN_TIP','en','Refresh the plugin list','2014-09-18') , +( 'LABEL','ID_ENTERPRISE_PLUGINS','en','Enterprise Plugins','2014-09-18') , +( 'LABEL','ID_CAUTION_NOTICE','en','

Caution: Before continuing, please read these instructions carefully:

  • Read the wiki carefully regarding the automatic upgrade.
  • Make a backup of all ProcessMaker files, including the database before proceeding.
  • This automatic upgrade may not always work depending on your server configuration.
  • In case the upgrade fails, read the wiki regarding alternative methods of upgrading.
','2014-09-18') , +( 'LABEL','ID_AUDITLOG_DISPLAY','en','Audit Log','2014-09-19') , +( 'LABEL','ID_ENABLE_AUDIT_LOG','en','Enable Audit Log','2014-09-19') , +( 'LABEL','ID_AUDIT_LOG_ENABLED','en','Audit Log has been enabled','2014-09-19') , +( 'LABEL','ID_AUDIT_LOG_DISABLED','en','Audit Log has been disabled','2014-09-19') , +( 'LABEL','ID_AUDIT_LOG_DETAILS_1','en','Audit Log details1','2014-09-19') , +( 'LABEL','ID_AUDIT_LOG_DETAILS_2','en','Audit Log details 2','2014-09-19') , +( 'LABEL','ID_PRIVATE','en','Private','2014-09-22') , +( 'LABEL','ID_CASES_LIST','en','Cases Lists','2014-09-18') , +( 'LABEL','ID_MENU_NAME','en','Enterprise Plugins Manager','2014-09-18') , +( 'LABEL','ID_LEFT','en','left','2014-09-18') , +( 'LABEL','ID_CENTER','en','center','2014-09-18') , +( 'LABEL','ID_RIGHT','en','right','2014-09-18') ; INSERT INTO ISO_LOCATION (IC_UID,IL_UID,IL_NAME,IL_NORMAL_NAME,IS_UID) VALUES ('AD','','',' ','') , diff --git a/workflow/engine/data/mysql/schema.sql b/workflow/engine/data/mysql/schema.sql index 2db7e9375..e7b24b6c7 100755 --- a/workflow/engine/data/mysql/schema.sql +++ b/workflow/engine/data/mysql/schema.sql @@ -2103,3 +2103,66 @@ CREATE TABLE `APP_TIMEOUT_ACTION_EXECUTED` `EXECUTION_DATE` DATETIME, PRIMARY KEY (`APP_UID`) )ENGINE=InnoDB DEFAULT CHARSET='utf8'; + +#----------------------------------------------------------------------------- +#-- ADDONS_STORE +#----------------------------------------------------------------------------- + +DROP TABLE IF EXISTS `ADDONS_STORE`; +CREATE TABLE `ADDONS_STORE` +( + `STORE_ID` VARCHAR(32) NOT NULL, + `STORE_VERSION` INTEGER, + `STORE_LOCATION` VARCHAR(2048) NOT NULL, + `STORE_TYPE` VARCHAR(255) NOT NULL, + `STORE_LAST_UPDATED` DATETIME, + PRIMARY KEY (`STORE_ID`) +)ENGINE=MyISAM ; + +#----------------------------------------------------------------------------- +#-- ADDONS_MANAGER +#----------------------------------------------------------------------------- + +DROP TABLE IF EXISTS `ADDONS_MANAGER`; +CREATE TABLE `ADDONS_MANAGER` +( + `ADDON_ID` VARCHAR(255) NOT NULL, + `STORE_ID` VARCHAR(32) NOT NULL, + `ADDON_NAME` VARCHAR(255) NOT NULL, + `ADDON_NICK` VARCHAR(255) NOT NULL, + `ADDON_DOWNLOAD_FILENAME` VARCHAR(1024), + `ADDON_DESCRIPTION` VARCHAR(2048), + `ADDON_STATE` VARCHAR(255) NOT NULL, + `ADDON_STATE_CHANGED` DATETIME, + `ADDON_STATUS` VARCHAR(255) NOT NULL, + `ADDON_VERSION` VARCHAR(255) NOT NULL, + `ADDON_TYPE` VARCHAR(255) NOT NULL, + `ADDON_PUBLISHER` VARCHAR(255), + `ADDON_RELEASE_DATE` DATETIME, + `ADDON_RELEASE_TYPE` VARCHAR(255), + `ADDON_RELEASE_NOTES` VARCHAR(255), + `ADDON_DOWNLOAD_URL` VARCHAR(2048), + `ADDON_DOWNLOAD_PROGRESS` FLOAT, + `ADDON_DOWNLOAD_MD5` VARCHAR(32), + PRIMARY KEY (`ADDON_ID`,`STORE_ID`) +)ENGINE=MyISAM DEFAULT CHARSET='utf8' COMMENT='Addons manager'; + + +#----------------------------------------------------------------------------- +#-- LICENSE_MANAGER +#----------------------------------------------------------------------------- + +DROP TABLE IF EXISTS `LICENSE_MANAGER`; +CREATE TABLE IF NOT EXISTS `LICENSE_MANAGER` ( + `LICENSE_UID` varchar(32) NOT NULL DEFAULT '', + `LICENSE_USER` varchar(150) NOT NULL DEFAULT '0', + `LICENSE_START` int(11) NOT NULL DEFAULT '0', + `LICENSE_END` int(11) NOT NULL DEFAULT '0', + `LICENSE_SPAN` int(11) NOT NULL DEFAULT '0', + `LICENSE_STATUS` varchar(100) DEFAULT '', + `LICENSE_DATA` mediumtext NOT NULL, + `LICENSE_PATH` varchar(255) NOT NULL DEFAULT '0', + `LICENSE_WORKSPACE` varchar(32) NOT NULL DEFAULT '0', + `LICENSE_TYPE` varchar(32) NOT NULL DEFAULT '0', + PRIMARY KEY (`LICENSE_UID`) +)ENGINE=MyISAM DEFAULT CHARSET='utf8' COMMENT='Licenses Manager'; 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/cases/casesListExtJs.php b/workflow/engine/methods/cases/casesListExtJs.php index 7d6003705..4e699202c 100755 --- a/workflow/engine/methods/cases/casesListExtJs.php +++ b/workflow/engine/methods/cases/casesListExtJs.php @@ -33,7 +33,7 @@ try { $confReassignList = getReassignList(); // evaluates an action and the configuration for the list that will be rendered -$config = getAdditionalFields( $action, (class_exists( 'enterprisePlugin' ) ? $confCasesList : array ()) ); +$config = getAdditionalFields( $action, $confCasesList ); $columns = $config['caseColumns']; $readerFields = $config['caseReaderFields']; $reassignColumns = $confReassignList['caseColumns']; diff --git a/workflow/engine/methods/cases/casesListSetup.php b/workflow/engine/methods/cases/casesListSetup.php new file mode 100644 index 000000000..11ccba0f2 --- /dev/null +++ b/workflow/engine/methods/cases/casesListSetup.php @@ -0,0 +1,19 @@ +userCanAccess("PM_SETUP") != 1 || $RBAC->userCanAccess("PM_SETUP_ADVANCE") != 1) { + G::SendTemporalMessage("ID_USER_HAVENT_RIGHTS_PAGE", "error", "labels"); + exit(0); +} + +$availableFields = array(); + +$oHeadPublisher = &headPublisher::getSingleton(); + +$oHeadPublisher->addExtJsScript( 'cases/casesListSetup', false ); //adding a javascript file .js +$oHeadPublisher->addContent( 'cases/casesListSetup' ); //adding a html file .html. +$oHeadPublisher->assignNumber("pageSize", 20); //sending the page size +$oHeadPublisher->assignNumber("availableFields", G::json_encode($availableFields)); + +G::RenderPage("publish", "extJs"); + diff --git a/workflow/engine/methods/cases/proxyPMTablesFieldList.php b/workflow/engine/methods/cases/proxyPMTablesFieldList.php new file mode 100644 index 000000000..d8d996725 --- /dev/null +++ b/workflow/engine/methods/cases/proxyPMTablesFieldList.php @@ -0,0 +1,758 @@ + "#", "dataIndex" => "APP_NUMBER", "width" => 45, "align" => "center"); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_SUMMARY") : "**ID_SUMMARY**", "dataIndex" => "CASE_SUMMARY", "width" => 45, "align" => "center", "sortable" => false); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_CASES_NOTES") : "**ID_CASES_NOTES**", "dataIndex" => "CASE_NOTES_COUNT", "width" => 45, "align" => "center", "sortable" => false); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_CASE") : "**ID_CASE**", "dataIndex" => "APP_TITLE", "width" => 150); + $caseColumns[] = array("header" => "UserUid", "dataIndex" => "USR_UID", "width" => 50, "hidden" => true, "hideable" => false); + $caseColumns[] = array("header" => "PreUsrUid", "dataIndex" => "PREVIOUS_USR_UID", "width" => 50, "hidden" => true, "hideable" => false); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_PROCESS") : "**ID_PROCESS**", "dataIndex" => "APP_PRO_TITLE", "width" => 120); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_TASK") : "**ID_TASK**", "dataIndex" => "APP_TAS_TITLE", "width" => 120); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_DUE_DATE") : "**ID_DUE_DATE**", "dataIndex" => "DEL_TASK_DUE_DATE", "width" => 110); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_LAST_MODIFY") : "**ID_LAST_MODIFY**", "dataIndex" => "APP_UPDATE_DATE", "width" => 110); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_PRIORITY") : "**ID_PRIORITY**", "dataIndex" => "DEL_PRIORITY", "width" => 50); + + $caseReaderFields[] = array("name" => "APP_UID"); + $caseReaderFields[] = array("name" => "USR_UID"); + $caseReaderFields[] = array("name" => "PREVIOUS_USR_UID"); + $caseReaderFields[] = array("name" => "APP_NUMBER"); + $caseReaderFields[] = array("name" => "APP_STATUS"); + $caseReaderFields[] = array("name" => "DEL_INDEX"); + $caseReaderFields[] = array("name" => "APP_TITLE"); + $caseReaderFields[] = array("name" => "APP_PRO_TITLE"); + $caseReaderFields[] = array("name" => "APP_TAS_TITLE"); + $caseReaderFields[] = array("name" => "APP_DEL_PREVIOUS_USER"); + $caseReaderFields[] = array("name" => "APP_CURRENT_USER"); + $caseReaderFields[] = array("name" => "DEL_TASK_DUE_DATE"); + $caseReaderFields[] = array("name" => "APP_UPDATE_DATE"); + $caseReaderFields[] = array("name" => "DEL_PRIORITY"); + $caseReaderFields[] = array("name" => "APP_STATUS"); + $caseReaderFields[] = array("name" => "APP_FINISH_DATE"); + $caseReaderFields[] = array("name" => "CASE_SUMMARY"); + $caseReaderFields[] = array("name" => "CASE_NOTES_COUNT"); + break; + case "paused": + $caseColumns[] = array("header" => "#", "dataIndex" => "APP_NUMBER", "width" => 45, "align" => "center"); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_SUMMARY") : "**ID_SUMMARY**", "dataIndex" => "CASE_SUMMARY", "width" => 45, "align" => "center", "sortable" => false); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_CASES_NOTES") : "**ID_CASES_NOTES**", "dataIndex" => "CASE_NOTES_COUNT", "width" => 45, "align" => "center", "sortable" => false); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_CASE") : "**ID_CASE**", "dataIndex" => "APP_TITLE", "width" => 150); + $caseColumns[] = array("header" => "UserUid", "dataIndex" => "USR_UID", "width" => 50, "hidden" => true, "hideable" => false); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_PROCESS") : "**ID_PROCESS**", "dataIndex" => "APP_PRO_TITLE", "width" => 120); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_TASK") : "**ID_TASK**", "dataIndex" => "APP_TAS_TITLE", "width" => 120); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_SENT_BY") : "**ID_SENT_BY**", "dataIndex" => "APP_DEL_PREVIOUS_USER", "width" => 90); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_LAST_MODIFY") : "**ID_LAST_MODIFY**", "dataIndex" => "APP_UPDATE_DATE", "width" => 80); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_THREAD_INDEX") : "**ID_THREAD_INDEX**", "dataIndex" => "APP_THREAD_INDEX", "width" => 80); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_DEL_INDEX") : "**ID_DEL_INDEX**", "dataIndex" => "DEL_INDEX", "width" => 80); + + $caseReaderFields[] = array("name" => "APP_UID"); + $caseReaderFields[] = array("name" => "USR_UID"); + $caseReaderFields[] = array("name" => "PREVIOUS_USR_UID"); + $caseReaderFields[] = array("name" => "PREVIOUS_USR_FIRSTNAME"); + $caseReaderFields[] = array("name" => "PREVIOUS_USR_LASTNAME"); + $caseReaderFields[] = array("name" => "PREVIOUS_USR_USERNAME"); + $caseReaderFields[] = array("name" => "APP_NUMBER"); + $caseReaderFields[] = array("name" => "APP_STATUS"); + $caseReaderFields[] = array("name" => "DEL_INDEX"); + $caseReaderFields[] = array("name" => "APP_TITLE"); + $caseReaderFields[] = array("name" => "APP_PRO_TITLE"); + $caseReaderFields[] = array("name" => "APP_TAS_TITLE"); + $caseReaderFields[] = array("name" => "APP_DEL_PREVIOUS_USER"); + $caseReaderFields[] = array("name" => "APP_CURRENT_USER"); + $caseReaderFields[] = array("name" => "DEL_TASK_DUE_DATE"); + $caseReaderFields[] = array("name" => "APP_UPDATE_DATE"); + $caseReaderFields[] = array("name" => "DEL_PRIORITY"); + $caseReaderFields[] = array("name" => "APP_STATUS"); + $caseReaderFields[] = array("name" => "APP_FINISH_DATE"); + $caseReaderFields[] = array("name" => "APP_THREAD_INDEX"); + $caseReaderFields[] = array("name" => "CASE_SUMMARY"); + $caseReaderFields[] = array("name" => "CASE_NOTES_COUNT"); + break; + case "unassigned": + $caseColumns[] = array("header" => "#", "dataIndex" => "APP_NUMBER", "width" => 40, "align" => "left"); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_SUMMARY") : "**ID_SUMMARY**", "dataIndex" => "CASE_SUMMARY", "width" => 45, "align" => "center", "sortable" => false); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_CASES_NOTES") : "**ID_CASES_NOTES**", "dataIndex" => "CASE_NOTES_COUNT", "width" => 45, "align" => "center", "sortable" => false); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_CASE") : "**ID_CASE**", "dataIndex" => "APP_TITLE", "width" => 150); + $caseColumns[] = array("header" => "UserUid", "dataIndex" => "USR_UID", "width" => 50, "hidden" => true, "hideable" => false); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_PROCESS") : "**ID_PROCESS**", "dataIndex" => "APP_PRO_TITLE", "width" => 120); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_TASK") : "**ID_TASK**", "dataIndex" => "APP_TAS_TITLE", "width" => 120); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_SENT_BY") : "**ID_SENT_BY**", "dataIndex" => "APP_DEL_PREVIOUS_USER", "width" => 90); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_DUE_DATE") : "**ID_DUE_DATE**", "dataIndex" => "DEL_TASK_DUE_DATE", "width" => 110); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_LAST_MODIFY") : "**ID_LAST_MODIFY**", "dataIndex" => "APP_UPDATE_DATE", "width" => 80); + //$caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_COMPLETED_BY_USER") : "**ID_COMPLETED_BY_USER**", "dataIndex" => "APP_CURRENT_USER", "width" => 110); + //$caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_FINISH_DATE") : "**ID_FINISH_DATE**", "dataIndex" => "APP_FINISH_DATE", "width" => 50); + + $caseReaderFields[] = array("name" => "APP_UID"); + $caseReaderFields[] = array("name" => "USR_UID"); + $caseReaderFields[] = array("name" => "PREVIOUS_USR_UID"); + $caseReaderFields[] = array("name" => "PREVIOUS_USR_FIRSTNAME"); + $caseReaderFields[] = array("name" => "PREVIOUS_USR_LASTNAME"); + $caseReaderFields[] = array("name" => "PREVIOUS_USR_USERNAME"); + $caseReaderFields[] = array("name" => "APP_NUMBER"); + $caseReaderFields[] = array("name" => "APP_STATUS"); + $caseReaderFields[] = array("name" => "DEL_INDEX"); + $caseReaderFields[] = array("name" => "APP_TITLE"); + $caseReaderFields[] = array("name" => "APP_PRO_TITLE"); + $caseReaderFields[] = array("name" => "APP_TAS_TITLE"); + $caseReaderFields[] = array("name" => "APP_DEL_PREVIOUS_USER"); + $caseReaderFields[] = array("name" => "APP_CURRENT_USER"); + $caseReaderFields[] = array("name" => "DEL_TASK_DUE_DATE"); + $caseReaderFields[] = array("name" => "APP_UPDATE_DATE"); + $caseReaderFields[] = array("name" => "DEL_PRIORITY"); + $caseReaderFields[] = array("name" => "APP_STATUS"); + $caseReaderFields[] = array("name" => "APP_FINISH_DATE"); + $caseReaderFields[] = array("name" => "CASE_SUMMARY"); + $caseReaderFields[] = array("name" => "CASE_NOTES_COUNT"); + break; + case "sent": + case "participated": + $caseColumns[] = array("header" => "#", "dataIndex" => "APP_NUMBER", "width" => 45, "align" => "center"); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_SUMMARY") : "**ID_SUMMARY**", "dataIndex" => "CASE_SUMMARY", "width" => 45, "align" => "center", "sortable" => false); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_CASES_NOTES") : "**ID_CASES_NOTES**", "dataIndex" => "CASE_NOTES_COUNT", "width" => 45, "align" => "center", "sortable" => false); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_CASE") : "**ID_CASE**", "dataIndex" => "APP_TITLE", "width" => 150); + $caseColumns[] = array("header" => "UserUid", "dataIndex" => "USR_UID", "width" => 50, "hidden" => true, "hideable" => false); + $caseColumns[] = array("header" => "PreUsrUid", "dataIndex" => "PREVIOUS_USR_UID", "width" => 50, "hidden" => true, "hideable" => false); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_PROCESS") : "**ID_PROCESS**", "dataIndex" => "APP_PRO_TITLE", "width" => 120); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_TASK") : "**ID_TASK**", "dataIndex" => "APP_TAS_TITLE", "width" => 120); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_LAST_MODIFY") : "**ID_LAST_MODIFY**", "dataIndex" => "APP_UPDATE_DATE", "width" => 80); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_STATUS") : "**ID_STATUS**", "dataIndex" => "APP_STATUS", "width" => 50); + + $caseReaderFields[] = array("name" => "APP_UID"); + $caseReaderFields[] = array("name" => "USR_UID"); + $caseReaderFields[] = array("name" => "PREVIOUS_USR_UID"); + $caseReaderFields[] = array("name" => "PREVIOUS_USR_FIRSTNAME"); + $caseReaderFields[] = array("name" => "PREVIOUS_USR_LASTNAME"); + $caseReaderFields[] = array("name" => "PREVIOUS_USR_USERNAME"); + $caseReaderFields[] = array("name" => "APP_NUMBER"); + $caseReaderFields[] = array("name" => "APP_STATUS"); + $caseReaderFields[] = array("name" => "DEL_INDEX"); + $caseReaderFields[] = array("name" => "APP_TITLE"); + $caseReaderFields[] = array("name" => "APP_PRO_TITLE"); + $caseReaderFields[] = array("name" => "APP_TAS_TITLE"); + $caseReaderFields[] = array("name" => "APP_DEL_PREVIOUS_USER"); + $caseReaderFields[] = array("name" => "APP_CURRENT_USER"); + $caseReaderFields[] = array("name" => "DEL_TASK_DUE_DATE"); + $caseReaderFields[] = array("name" => "APP_UPDATE_DATE"); + $caseReaderFields[] = array("name" => "DEL_PRIORITY"); + $caseReaderFields[] = array("name" => "APP_STATUS"); + $caseReaderFields[] = array("name" => "APP_FINISH_DATE"); + $caseReaderFields[] = array("name" => "CASE_SUMMARY"); + $caseReaderFields[] = array("name" => "CASE_NOTES_COUNT"); + break; + case "search": + case "simple_search": + $caseColumns[] = array("header" => "#", "dataIndex" => "APP_NUMBER", "width" => 45, "align" => "center"); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_SUMMARY") : "**ID_SUMMARY**", "dataIndex" => "CASE_SUMMARY", "width" => 45, "align" => "center", "sortable" => false); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_CASES_NOTES") : "**ID_CASES_NOTES**", "dataIndex" => "CASE_NOTES_COUNT", "width" => 45, "align" => "center", "sortable" => false); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_CASE") : "**ID_CASE**", "dataIndex" => "APP_TITLE", "width" => 100); + $caseColumns[] = array("header" => "UserUid", "dataIndex" => "USR_UID", "width" => 50, "hidden" => true, "hideable" => false); + $caseColumns[] = array("header" => "PreUsrUid", "dataIndex" => "PREVIOUS_USR_UID", "width" => 50, "hidden" => true, "hideable" => false); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_TASK") : "**ID_TASK**", "dataIndex" => "APP_TAS_TITLE", "width" => 120); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_PROCESS") : "**ID_PROCESS**", "dataIndex" => "APP_PRO_TITLE", "width" => 120); + //$caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_SENT_BY") : "**ID_SENT_BY**", "dataIndex" => "APP_DEL_PREVIOUS_USER", "width" => 120 ); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_CURRENT_USER") : "**ID_CURRENT_USER**", "dataIndex" => "APP_CURRENT_USER", "width" => 120, "sortable" => false); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_LAST_MODIFY") : "**ID_LAST_MODIFY**", "dataIndex" => "APP_UPDATE_DATE", "width" => 80); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_DELEGATION_DATE") : "**ID_DELEGATION_DATE**", "dataIndex" => "DEL_DELEGATE_DATE", "width" => 80); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_DUE_DATE") : "**ID_DUE_DATE**", "dataIndex" => "DEL_TASK_DUE_DATE", "width" => 80); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_STATUS") : "**ID_STATUS**", "dataIndex" => "APP_STATUS", "width" => 50); + + $caseReaderFields[] = array("name" => "APP_UID"); + $caseReaderFields[] = array("name" => "USR_UID"); + $caseReaderFields[] = array("name" => "PREVIOUS_USR_UID"); + $caseReaderFields[] = array("name" => "APP_NUMBER"); + $caseReaderFields[] = array("name" => "APP_STATUS"); + $caseReaderFields[] = array("name" => "DEL_INDEX"); + $caseReaderFields[] = array("name" => "APP_TITLE"); + $caseReaderFields[] = array("name" => "APP_PRO_TITLE"); + $caseReaderFields[] = array("name" => "APP_TAS_TITLE"); + $caseReaderFields[] = array("name" => "APP_DEL_PREVIOUS_USER"); + $caseReaderFields[] = array("name" => "APP_CURRENT_USER"); + $caseReaderFields[] = array("name" => "DEL_TASK_DUE_DATE"); + $caseReaderFields[] = array("name" => "APP_UPDATE_DATE"); + $caseReaderFields[] = array("name" => "DEL_DELEGATE_DATE"); + $caseReaderFields[] = array("name" => "DEL_PRIORITY"); + $caseReaderFields[] = array("name" => "APP_STATUS"); + $caseReaderFields[] = array("name" => "APP_FINISH_DATE"); + $caseReaderFields[] = array("name" => "CASE_SUMMARY"); + $caseReaderFields[] = array("name" => "CASE_NOTES_COUNT"); + break; + case "to_revise": + $caseColumns[] = array("header" => "#", "dataIndex" => "APP_NUMBER", "width" => 45, "align" => "center"); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_SUMMARY") : "**ID_SUMMARY**", "dataIndex" => "CASE_SUMMARY", "width" => 45, "align" => "center", "sortable" => false); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_CASES_NOTES") : "**ID_CASES_NOTES**", "dataIndex" => "CASE_NOTES_COUNT", "width" => 45, "align" => "center", "sortable" => false); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_CASE") : "**ID_CASE**", "dataIndex" => "APP_TITLE", "width" => 150); + $caseColumns[] = array("header" => "UserUid", "dataIndex" => "USR_UID", "width" => 50,"hidden" => true, "hideable" => false); + $caseColumns[] = array("header" => "PreUsrUid", "dataIndex" => "PREVIOUS_USR_UID", "width" => 50, "hidden" => true, "hideable" => false); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_PROCESS") : "**ID_PROCESS**", "dataIndex" => "APP_PRO_TITLE", "width" => 120); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_TASK") : "**ID_TASK**", "dataIndex" => "APP_TAS_TITLE", "width" => 120); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_SENT_BY") : "**ID_SENT_BY**", "dataIndex" => "APP_DEL_PREVIOUS_USER", "width" => 90); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_CURRENT_USER") : "**ID_CURRENT_USER**", "dataIndex" => "APP_CURRENT_USER", "width" => 90, "sortable" => false); + //$caseColumns[] = array("header" => "Sent By", "dataIndex" => "APP_DEL_PREVIOUS_USER", "width" => 90); + //$caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_LAST_MODIFY") : "**ID_LAST_MODIFY**", "dataIndex" => "APP_UPDATE_DATE", "width" => 110); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_PRIORITY") : "**ID_PRIORITY**", "dataIndex" => "DEL_PRIORITY", "width" => 50); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_STATUS") : "**ID_STATUS**", "dataIndex" => "APP_STATUS", "width" => 50); + + $caseReaderFields[] = array("name" => "APP_UID"); + $caseReaderFields[] = array("name" => "USR_UID"); + $caseReaderFields[] = array("name" => "PREVIOUS_USR_UID"); + $caseReaderFields[] = array("name" => "PREVIOUS_USR_FIRSTNAME"); + $caseReaderFields[] = array("name" => "PREVIOUS_USR_LASTNAME"); + $caseReaderFields[] = array("name" => "PREVIOUS_USR_USERNAME"); + $caseReaderFields[] = array("name" => "APP_NUMBER"); + $caseReaderFields[] = array("name" => "DEL_INDEX"); + $caseReaderFields[] = array("name" => "APP_TITLE"); + $caseReaderFields[] = array("name" => "APP_PRO_TITLE"); + $caseReaderFields[] = array("name" => "APP_TAS_TITLE"); + //$caseReaderFields[] = array("name" => "APP_DEL_PREVIOUS_USER"); + $caseReaderFields[] = array("name" => "APP_CURRENT_USER"); + $caseReaderFields[] = array("name" => "DEL_TASK_DUE_DATE"); + $caseReaderFields[] = array("name" => "APP_UPDATE_DATE"); + $caseReaderFields[] = array("name" => "DEL_PRIORITY"); + $caseReaderFields[] = array("name" => "APP_STATUS"); + $caseReaderFields[] = array("name" => "APP_FINISH_DATE"); + $caseReaderFields[] = array("name" => "APP_DEL_PREVIOUS_USER"); + $caseReaderFields[] = array("name" => "CASE_SUMMARY"); + $caseReaderFields[] = array("name" => "CASE_NOTES_COUNT"); + break; + case "to_reassign": + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_SUMMARY") : "**ID_SUMMARY**", "dataIndex" => "CASE_SUMMARY", "width" => 45, "align" => "center", "sortable" => false); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_CASES_NOTES") : "**ID_CASES_NOTES**", "dataIndex" => "CASE_NOTES_COUNT", "width" => 45, "align" => "center", "sortable" => false); + $caseColumns[] = array("header" => "UserUid", "dataIndex" => "USR_UID", "width" => 50, "hidden" => true, "hideable" => false); + $caseColumns[] = array("header" => "PreUsrUid", "dataIndex" => "PREVIOUS_USR_UID", "width" => 50, "hidden" => true, "hideable" => false); + $caseColumns[] = array("header" => "#", "dataIndex" => "APP_NUMBER", "width" => 45, "align" => "center"); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_CASE") : "**ID_CASE**", "dataIndex" => "APP_TITLE", "width" => 150); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_PROCESS") : "**ID_PROCESS**", "dataIndex" => "APP_PRO_TITLE", "width" => 120); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_TASK") : "**ID_TASK**", "dataIndex" => "APP_TAS_TITLE", "width" => 120); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_CURRENT_USER") : "**ID_CURRENT_USER**", "dataIndex" => "APP_CURRENT_USER", "width" => 90, "sortable" => false); + //$caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_SENT_BY") : "**ID_SENT_BY**", "dataIndex" => "APP_DEL_PREVIOUS_USER", "width" => 90); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_LAST_MODIFY") : "**ID_LAST_MODIFY**", "dataIndex" => "APP_UPDATE_DATE", "width" => 110); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_STATUS") : "**ID_STATUS**", "dataIndex" => "APP_STATUS", "width" => 50); + + $caseReaderFields[] = array("name" => "TAS_UID"); + $caseReaderFields[] = array("name" => "DEL_INDEX"); + $caseReaderFields[] = array("name" => "APP_UID"); + $caseReaderFields[] = array("name" => "USR_UID"); + $caseReaderFields[] = array("name" => "PREVIOUS_USR_UID"); + $caseReaderFields[] = array("name" => "APP_NUMBER"); + $caseReaderFields[] = array("name" => "APP_TITLE"); + $caseReaderFields[] = array("name" => "APP_TAS_TITLE"); + $caseReaderFields[] = array("name" => "APP_PRO_TITLE"); + $caseReaderFields[] = array("name" => "APP_CURRENT_USER"); + //$caseReaderFields[] = array("name" => "APP_DEL_PREVIOUS_USER"); + $caseReaderFields[] = array("name" => "APP_UPDATE_DATE"); + $caseReaderFields[] = array("name" => "APP_STATUS"); + $caseReaderFields[] = array("name" => "CASE_SUMMARY"); + $caseReaderFields[] = array("name" => "CASE_NOTES_COUNT"); + break; + case "gral": + $caseColumns[] = array("header" => "#", "dataIndex" => "APP_NUMBER", "width" => 45, "align" => "center"); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_SUMMARY") : "**ID_SUMMARY**", "dataIndex" => "CASE_SUMMARY", "width" => 45, "align" => "center", "sortable" => false); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_CASES_NOTES") : "**ID_CASES_NOTES**", "dataIndex" => "CASE_NOTES_COUNT", "width" => 45, "align" => "center", "sortable" => false); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_CASE") : "**ID_CASE**", "dataIndex" => "APP_TITLE", "width" => 150); + $caseColumns[] = array("header" => "UserUid", "dataIndex" => "USR_UID", "width" => 50, "hidden" => true, "hideable" => false); + $caseColumns[] = array("header" => "PreUsrUid", "dataIndex" => "PREVIOUS_USR_UID", "width" => 50, "hidden" => true, "hideable" => false); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_TASK") : "**ID_TASK**", "dataIndex" => "APP_TAS_TITLE", "width" => 120); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_PROCESS") : "**ID_PROCESS**", "dataIndex" => "APP_PRO_TITLE", "width" => 120); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_CURRENT_USER") : "**ID_CURRENT_USER**", "dataIndex" => "APP_CURRENT_USER", "width" => 90, "sortable" => false); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_SENT_BY") : "**ID_SENT_BY**", "dataIndex" => "APP_DEL_PREVIOUS_USER", "width" => 90); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_LAST_MODIFY") : "**ID_LAST_MODIFY**", "dataIndex" => "APP_UPDATE_DATE", "width" => 110); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_STATUS") : "**ID_STATUS**", "dataIndex" => "APP_STATUS", "width" => 50); + + $caseReaderFields[] = array("name" => "APP_UID"); + $caseReaderFields[] = array("name" => "USR_UID"); + $caseReaderFields[] = array("name" => "PREVIOUS_USR_UID"); + $caseReaderFields[] = array("name" => "APP_NUMBER"); + $caseReaderFields[] = array("name" => "APP_TITLE"); + $caseReaderFields[] = array("name" => "APP_TAS_TITLE"); + $caseReaderFields[] = array("name" => "APP_PRO_TITLE"); + $caseReaderFields[] = array("name" => "APP_CURRENT_USER"); + $caseReaderFields[] = array("name" => "APP_DEL_PREVIOUS_USER"); + $caseReaderFields[] = array("name" => "APP_UPDATE_DATE"); + $caseReaderFields[] = array("name" => "APP_STATUS"); + $caseReaderFields[] = array("name" => "CASE_SUMMARY"); + $caseReaderFields[] = array("name" => "CASE_NOTES_COUNT"); + break; + case "todo": + default: + //todo + $caseColumns[] = array("header" => "#", "dataIndex" => "APP_NUMBER", "width" => 45, "align" => "center"); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_SUMMARY") : "**ID_SUMMARY**", "dataIndex" => "CASE_SUMMARY", "width" => 45, "align" => "center", "sortable" => false); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_CASES_NOTES") : "**ID_CASES_NOTES**", "dataIndex" => "CASE_NOTES_COUNT", "width" => 45, "align" => "center", "sortable" => false); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_CASE") : "**ID_CASE**", "dataIndex" => "APP_TITLE", "width" => 150); + $caseColumns[] = array("header" => "UserUid", "dataIndex" => "USR_UID", "width" => 50, "hidden" => true, "hideable" => false); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_PROCESS") : "**ID_PROCESS**", "dataIndex" => "APP_PRO_TITLE", "width" => 120); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_TASK") : "**ID_TASK**", "dataIndex" => "APP_TAS_TITLE", "width" => 120); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_SENT_BY") : "**ID_SENT_BY**", "dataIndex" => "APP_DEL_PREVIOUS_USER", "width" => 90); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_DUE_DATE") : "**ID_DUE_DATE**", "dataIndex" => "DEL_TASK_DUE_DATE", "width" => 110); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_LAST_MODIFY") : "**ID_LAST_MODIFY**", "dataIndex" => "APP_UPDATE_DATE", "width" => 110); + $caseColumns[] = array("header" => ($translation == 1)? G::LoadTranslation("ID_PRIORITY") : "**ID_PRIORITY**", "dataIndex" => "DEL_PRIORITY", "width" => 50); + + $caseReaderFields[] = array("name" => "APP_UID"); + $caseReaderFields[] = array("name" => "USR_UID"); + $caseReaderFields[] = array("name" => "PREVIOUS_USR_UID"); + $caseReaderFields[] = array("name" => "PREVIOUS_USR_FIRSTNAME"); + $caseReaderFields[] = array("name" => "PREVIOUS_USR_LASTNAME"); + $caseReaderFields[] = array("name" => "PREVIOUS_USR_USERNAME"); + $caseReaderFields[] = array("name" => "DEL_INDEX"); + $caseReaderFields[] = array("name" => "APP_NUMBER"); + $caseReaderFields[] = array("name" => "APP_TITLE"); + $caseReaderFields[] = array("name" => "APP_PRO_TITLE"); + $caseReaderFields[] = array("name" => "APP_TAS_TITLE"); + $caseReaderFields[] = array("name" => "APP_DEL_PREVIOUS_USER"); + $caseReaderFields[] = array("name" => "DEL_TASK_DUE_DATE"); + $caseReaderFields[] = array("name" => "APP_UPDATE_DATE"); + $caseReaderFields[] = array("name" => "DEL_PRIORITY"); + $caseReaderFields[] = array("name" => "APP_FINISH_DATE"); + $caseReaderFields[] = array("name" => "APP_CURRENT_USER"); + $caseReaderFields[] = array("name" => "APP_STATUS"); + $caseReaderFields[] = array("name" => "CASE_SUMMARY"); + $caseReaderFields[] = array("name" => "CASE_NOTES_COUNT"); + break; + } + + return array("caseColumns" => $caseColumns, "caseReaderFields" => $caseReaderFields, "rowsperpage" => 20, "dateformat" => "M d, Y"); +} + +function getDefaultConfig($action, $translation) +{ + $config = new Configurations(); + + if (method_exists($config, "casesListDefaultFieldsAndConfig")) { + $arrayConfig = $config->casesListDefaultFieldsAndConfig($action, $translation); + } else { + $arrayConfig = casesListDefaultFieldsAndConfig($action, $translation); + } + + return $arrayConfig; +} + +function getDefaultFields($action, $translation) +{ + $config = new Configurations(); + + if (method_exists($config, "casesListDefaultFieldsAndConfig")) { + $arrayConfig = $config->casesListDefaultFieldsAndConfig($action, $translation); + } else { + $arrayConfig = casesListDefaultFieldsAndConfig($action, $translation); + } + + //Table APP_DELAY, fields + $appDelayField = array( + "APP_DELAY_UID", + //"PRO_UID", + //"APP_UID", + "APP_THREAD_INDEX", + "APP_DEL_INDEX", + "APP_TYPE", + //"APP_STATUS", + "APP_NEXT_TASK", + "APP_DELEGATION_USER", + "APP_ENABLE_ACTION_USER", + "APP_ENABLE_ACTION_DATE", + "APP_DISABLE_ACTION_USER", + "APP_DISABLE_ACTION_DATE", + "APP_AUTOMATIC_DISABLED_DATE" + ); + + $arrayField = array(); + + //Required fields for AppCacheView.php - addPMFieldsToCriteria() + $arrayField[] = array("name" => "APP_UID", "fieldType" => "key", "label" => ($translation == 1)? G::LoadTranslation("ID_CASESLIST_APP_UID") : "**ID_CASESLIST_APP_UID**", "align" => "left", "width" => 80); + $arrayField[] = array("name" => "DEL_INDEX", "fieldType" => "key" , "label" => ($translation == 1)? G::LoadTranslation("ID_CASESLIST_DEL_INDEX") : "**ID_CASESLIST_DEL_INDEX**", "align" => "left", "width" => 50); + $arrayField[] = array("name" => "USR_UID", "fieldType" => "case field", "label" => ($translation == 1)? G::LoadTranslation("ID_CASESLIST_USR_UID") : "**ID_CASESLIST_USR_UID**", "align" => "left", "width" => 100); + $arrayField[] = array("name" => "PREVIOUS_USR_UID", "fieldType" => "case field" , "label" => ($translation == 1)? G::LoadTranslation("ID_CASESLIST_PREVIOUS_USR_UID") : "**ID_CASESLIST_PREVIOUS_USR_UID**", "align" => "left", "width" => 100); + + if (count($arrayConfig["caseColumns"]) > 0) { + foreach ($arrayConfig["caseColumns"] as $index1 => $value1) { + if (!isset($value1["hidden"])) { + $arrayAux1 = $value1; + $arrayAux2 = array(); + + foreach ($arrayAux1 as $index2 => $value2) { + $indexAux = $index2; + + switch ($index2) { + case "dataIndex": + $indexAux = "name"; + break; + case "header": + $indexAux = "label"; + break; + } + $arrayAux2[$indexAux] = $value2; + } + + $arrayAux2["fieldType"] = (!in_array($arrayAux2["name"], $appDelayField))? "case field" : "delay field"; + $arrayAux2["align"] = (isset($arrayAux2["align"]))? $arrayAux2["align"] : "left"; + $arrayAux2["width"] = (isset($arrayAux2["width"]))? intval($arrayAux2["width"]): 100; + + $arrayField[] = $arrayAux2; + } + } + } + + $arrayField = calculateGridIndex($arrayField); + + return $arrayField; +} + +function setAvailableFields($arrayAvailableField, $arrayField) +{ + $i = 0; + $arrayFieldResult = array(); + + foreach ($arrayAvailableField as $index1 => $value1) { + $fieldType = "PM Table"; + + foreach ($arrayField as $index2 => $value2) { + if ($value2["name"] == $value1) { + $fieldType = $value2["fieldType"]; + break; + } + } + + $arrayFieldResult[$i] = array("name" => $value1, "gridIndex" => $i, "fieldType" => $fieldType); + $i = $i + 1; + } + + return $arrayFieldResult; +} + +function setCasesListFields($arrayCasesListField, $arrayField) +{ + $i = 0; + $arrayFieldResult = array(); + + foreach ($arrayCasesListField as $index1 => $value1) { + $fieldName = $value1->name; + + $fieldTypeAux = "PM Table"; + $fieldLabelAux = $fieldName; + $fieldAlignAux = "left"; + $fieldWidthAux = 100; + + foreach ($arrayField as $index2 => $value2) { + if ($value2["name"] == $fieldName) { + $fieldTypeAux = $value2["fieldType"]; + $fieldLabelAux = $value2["label"]; + $fieldAlignAux = $value2["align"]; + $fieldWidthAux = $value2["width"]; + break; + } + } + + $fieldType = $fieldTypeAux; + $fieldLabel = (isset($value1->label) && trim($value1->label) != "")? $value1->label : $fieldLabelAux; + $fieldAlign = (isset($value1->align) && trim($value1->align) != "")? $value1->align : $fieldAlignAux; + $fieldWidth = (isset($value1->width) && trim($value1->width) != "")? intval($value1->width) : $fieldWidthAux; + + $arrayFieldResult[$i] = array("name" => $fieldName, "gridIndex" => $i, "fieldType" => $fieldType, "label" => $fieldLabel, "align" => $fieldAlign, "width" => $fieldWidth); + $i = $i + 1; + } + + return $arrayFieldResult; +} + +function fieldSet() +{ + global $conf; + global $confCasesList; + global $action; + + if (is_array($confCasesList)) { + $validConfig = isset($confCasesList["first"]) && isset($confCasesList["second"]); + } else { + $validConfig = false; + } + + if (!$validConfig) { + $arrayField = getDefaultFields($action, 0); + $arrayConfig = getDefaultConfig($action, 0); + + $result = genericJsonResponse("", array(), $arrayField, $arrayConfig["rowsperpage"], $arrayConfig["dateformat"]); + + $conf->saveObject($result, "casesList", $action, "", "", ""); + + echo G::json_encode($result); + } else { + echo G::json_encode($confCasesList); + } +} + +function fieldReset($translation) +{ + global $action; + + $arrayField = getDefaultFields($action, $translation); + $arrayConfig = getDefaultConfig($action, $translation); + + $result = genericJsonResponse("", array(), $arrayField, $arrayConfig["rowsperpage"], $arrayConfig["dateformat"]); + + echo G::json_encode($result); +} + +function fieldComplete($translation) +{ + global $action; + + $arrayField = getDefaultFields($action, $translation); + $arrayConfig = getDefaultConfig($action, $translation); + + //Get values from JSON request + $first = G::json_decode((isset($_POST["first"]))? $_POST["first"] : G::json_encode(array())); + $second = G::json_decode((isset($_POST["second"]))? $_POST["second"] : G::json_encode(array())); + $pmtable = (isset($_POST["pmtable"]))? $_POST["pmtable"] : ""; + $rowsperpage = (isset($_POST["rowsperpage"]))? $_POST["rowsperpage"] : $arrayConfig["rowsperpage"]; + $dateformat = (isset($_POST["dateformat"]) && !empty($_POST["dateformat"]))? $_POST["dateformat"] : $arrayConfig["dateformat"]; + + //Complete fields + foreach ($first as $index1 => $value1) { + $indexAux = 0; + $sw = 0; + + foreach ($arrayField as $index2 => $value2) { + if ($value2["name"] == $value1) { + $indexAux = $index1; + $sw = 1; + break; + } + } + + if ($sw == 1) { + unset($first[$indexAux]); + } + } + + foreach ($arrayField as $index1 => $value1) { + $sw = 0; + + foreach ($second as $index2 => $value2) { + if ($value2->name == $value1["name"]) { + $sw = 1; + break; + } + } + + if ($sw == 0) { + $item = new stdClass(); + $item->name = $value1["name"]; + + array_push($second, $item); + } + } + + $arrayNewFirst = setAvailableFields($first, $arrayField); + $arrayNewSecond = setCasesListFields($second, $arrayField); + + $result = genericJsonResponse($pmtable, $arrayNewFirst, $arrayNewSecond, $rowsperpage, $dateformat); + + echo G::json_encode($result); +} + +function fieldLabelReset($translation) +{ + global $action; + + $arrayField = getDefaultFields($action, $translation); + $arrayConfig = getDefaultConfig($action, $translation); + + //Get values from JSON request + $first = G::json_decode((isset($_POST["first"]))? $_POST["first"] : G::json_encode(array())); + $second = G::json_decode((isset($_POST["second"]))? $_POST["second"] : G::json_encode(array())); + $pmtable = (isset($_POST["pmtable"]))? $_POST["pmtable"] : ""; + $rowsperpage = (isset($_POST["rowsperpage"]))? $_POST["rowsperpage"] : $arrayConfig["rowsperpage"]; + $dateformat = (isset($_POST["dateformat"]) && !empty($_POST["dateformat"]))? $_POST["dateformat"] : $arrayConfig["dateformat"]; + + //Reset label's fields + foreach ($second as $index1 => $value1) { + foreach ($arrayField as $index2 => $value2) { + if ($value2["name"] == $value1->name) { + $value1->label = $value2["label"]; + break; + } + } + } + + $arrayNewFirst = setAvailableFields($first, $arrayField); + $arrayNewSecond = setCasesListFields($second, $arrayField); + + $result = genericJsonResponse($pmtable, $arrayNewFirst, $arrayNewSecond, $rowsperpage, $dateformat); + + echo G::json_encode($result); +} + +function fieldSave() +{ + global $conf; + global $action; + + $arrayField = getDefaultFields($action, 0); + $arrayConfig = getDefaultConfig($action, 0); + + //Get values from JSON request + $first = G::json_decode((isset($_POST["first"]))? $_POST["first"] : G::json_encode(array())); + $second = G::json_decode((isset($_POST["second"]))? $_POST["second"] : G::json_encode(array())); + $pmtable = (isset($_POST["pmtable"]))? $_POST["pmtable"] : ""; + $rowsperpage = (isset($_POST["rowsperpage"]))? $_POST["rowsperpage"] : $arrayConfig["rowsperpage"]; + $dateformat = (isset($_POST["dateformat"]) && !empty($_POST["dateformat"]))? $_POST["dateformat"] : $arrayConfig["dateformat"]; + + //Adding the key fields to second array + //Required fields for AppCacheView.php - addPMFieldsToCriteria() + $appUid = new stdClass(); + $appUid->name = "APP_UID"; + + $delIndex = new stdClass(); + $delIndex->name = "DEL_INDEX"; + + $usrUid = new stdClass(); + $usrUid->name = "USR_UID"; + + $previousUsrUid = new stdClass(); + $previousUsrUid->name = "PREVIOUS_USR_UID"; + + array_unshift($second, $previousUsrUid); + array_unshift($second, $usrUid); + array_unshift($second, $delIndex); + array_unshift($second, $appUid); + + $arrayNewFirst = setAvailableFields($first, $arrayField); + $arrayNewSecond = setCasesListFields($second, $arrayField); + + $result = genericJsonResponse($pmtable, $arrayNewFirst, $arrayNewSecond, $rowsperpage, $dateformat); + + $conf->saveObject($result, "casesList", $action, "", "", ""); + + echo G::json_encode($result); +} + +require_once ("classes" . PATH_SEP . "model" . PATH_SEP . "Fields.php"); + +G::LoadClass("BasePeer"); +G::LoadClass("configuration"); + +$callback = (isset($_POST["callback"]))? $_POST["callback"] : "stcCallback1001"; +$dir = (isset($_POST["dir"]))? $_POST["dir"] : "DESC"; +$sort = (isset($_POST["sort"]))? $_POST["sort"] : ""; +$query = (isset($_POST["query"]))? $_POST["query"] : ""; +$tabUid = (isset($_POST["table"]))? $_POST["table"] : ""; +$action = (isset($_POST["action"]))? $_POST["action"] : "todo"; +$xaction = (isset($_POST["xaction"]))? $_POST["xaction"] : "FIELD_SAVE"; + +try { + //Load the current configuration for this action, this configuration will be used later + $conf = new Configurations(); + $confCasesList = $conf->loadObject("casesList", $action, "", "", ""); + + switch ($xaction) { + case "FIELD_SET": + if (isset($confCasesList['second']['data'])) { + foreach ($confCasesList['second']['data'] as $key => $value) { + $confCasesList['second']['data'][$key]['align_label'] = $confCasesList['second']['data'][$key]['align']; + } + } + fieldSet(); + break; + case "FIELD_RESET": + case "FIELD_RESET_ID": + fieldReset(($xaction == "FIELD_RESET")? 1 : 0); + break; + case "FIELD_COMPLETE": + case "FIELD_COMPLETE_ID": + fieldComplete(($xaction == "FIELD_COMPLETE")? 1 : 0); + break; + case "FIELD_LABEL_RESET": + case "FIELD_LABEL_RESET_ID": + fieldLabelReset(($xaction == "FIELD_LABEL_RESET")? 1 : 0); + break; + case "FIELD_SAVE": + fieldSave(); + break; + case "getFieldsFromPMTable": + xgetFieldsFromPMTable($tabUid); + break; + } +} catch (Exception $e) { + echo G::json_encode($e->getMessage()); +} + + /** + * set the generic Json Response, using two array for the grid stores and a string for the pmtable name + * @param string $pmtable + * @param array $first + * @param array $second + * @return $response a json string + */ +function genericJsonResponse($pmtable, $first, $second, $rowsperpage, $dateFormat) +{ + $firstGrid['totalCount'] = count($first); + $firstGrid['data'] = $first; + $secondGrid['totalCount'] = count($second); + $secondGrid['data'] = $second; + $result = array(); + $result['first'] = $firstGrid; + $result['second'] = $secondGrid; + $result['PMTable'] = isset($pmtable) ? $pmtable : ''; + $result['rowsperpage'] = isset($rowsperpage) ? $rowsperpage : 20; + $result['dateformat'] = isset($dateFormat) && $dateFormat != '' ? $dateFormat : 'M d, Y'; + return $result; +} + +function xgetFieldsFromPMTable($tabUid) +{ + $rows = array(); + $result = array(); + // $rows[] = array ( 'name' => 'val 1', 'gridIndex' => '21', 'fieldType' => 'PM Table' ); + // $rows[] = array ( 'name' => 'val 2', 'gridIndex' => '22', 'fieldType' => 'PM Table' ); + // $rows[] = array ( 'name' => 'val 3', 'gridIndex' => '23', 'fieldType' => 'PM Table' ); + //$result['success'] = true; + //$result['totalCount'] = count($rows); + $oCriteria = new Criteria('workflow'); + $oCriteria->clearSelectColumns ( ); + $oCriteria->setDistinct(); + $oCriteria->addSelectColumn ( FieldsPeer::FLD_NAME ); + $oCriteria->addSelectColumn ( FieldsPeer::FLD_UID ); + $oCriteria->addSelectColumn ( FieldsPeer::FLD_INDEX ); + $oCriteria->add (FieldsPeer::ADD_TAB_UID, $tabUid , CRITERIA::EQUAL ); + $oCriteria->add (FieldsPeer::FLD_NAME, 'APP_UID' , CRITERIA::NOT_EQUAL ); + $oCriteria->addDescendingOrderByColumn('FLD_INDEX'); + $oDataset = FieldsPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $index = count($rows); + + while ($aRow = $oDataset->getRow()) { + $aRow['index'] = ++$index; + $aTempRow['name'] = $aRow['FLD_NAME']; + $aTempRow['gridIndex'] = $aRow['index']; + $aTempRow['fieldType'] = 'PM Table'; + $rows[] = $aTempRow; + $oDataset->next(); + } + + $result['data'] = $rows; + print G::json_encode( $result ) ; +} + + /** + * + * @param Array $fields + * @return Array + * + */ +function calculateGridIndex($fields) +{ + for ($i=0; $iclearSelectColumns ( ); + $oCriteria->setDistinct(); + $oCriteria->addSelectColumn ( AdditionalTablesPeer::ADD_TAB_UID ); + $oCriteria->addSelectColumn ( AdditionalTablesPeer::ADD_TAB_NAME ); + $oCriteria->addSelectColumn ( FieldsPeer::FLD_NAME ); + if ( $query != '' ) { + $oCriteria->add (AdditionalTablesPeer::ADD_TAB_NAME, $query . '%', Criteria::LIKE); + } + $oCriteria->addJoin(AdditionalTablesPeer::ADD_TAB_UID, FieldsPeer::ADD_TAB_UID); + $oCriteria->add (AdditionalTablesPeer::DBS_UID, 'workflow', CRITERIA::EQUAL ); + $oCriteria->add (FieldsPeer::FLD_NAME, 'APP_UID', CRITERIA::EQUAL ); + + if (isset($limit)) { + $oCriteria->setLimit($limit); + } + + if (isset($start)) { + $oCriteria->setOffset($start); + } + + if ($sort != '') { + if ($dir == 'DESC') { + $oCriteria->addDescendingOrderByColumn( $sort ); + } else { + $oCriteria->addAscendingOrderByColumn( $sort ); + } + } + + $oDataset = AdditionalTablesPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $result = array(); + $rows = array(); + $index = isset($start) ? $start : 0; + + while ($aRow = $oDataset->getRow()) { + $aRow['index'] = ++$index; + $rows[] = $aRow; + $oDataset->next(); + } + $result['totalCount'] = count($rows); + $result['data'] = $rows; + print G::json_encode( $result ); +} catch (Exception $e) { + print G::json_encode ($e->getMessage()); +} + diff --git a/workflow/engine/methods/cases/proxyPMTablesSaveFields.php b/workflow/engine/methods/cases/proxyPMTablesSaveFields.php new file mode 100644 index 000000000..7303dc129 --- /dev/null +++ b/workflow/engine/methods/cases/proxyPMTablesSaveFields.php @@ -0,0 +1,162 @@ +clearSelectColumns(); + $oCriteria->setDistinct(); + $oCriteria->addSelectColumn (FieldsPeer::FLD_NAME); + $oCriteria->addSelectColumn (FieldsPeer::FLD_UID); + $oCriteria->addSelectColumn (FieldsPeer::FLD_INDEX); + + if ($query != '') { + $oCriteria->add (FieldsPeer::FLD_NAME, $query . '%', Criteria::LIKE); + } + //$oCriteria->addJoin(AdditionalTablesPeer::ADD_TAB_UID, FieldsPeer::ADD_TAB_UID); + $oCriteria->add (FieldsPeer::ADD_TAB_UID, $tabUid , CRITERIA::EQUAL ); + $oCriteria->add (FieldsPeer::FLD_NAME, 'APP_UID' , CRITERIA::NOT_EQUAL ); + //$oCriteria->add (AppCacheViewPeer::APP_STATUS, "TO_DO" , CRITERIA::EQUAL ); + //$oCriteria->add (AppCacheViewPeer::USR_UID, $sUIDUserLogged); + //$totalCount = AppCacheViewPeer::doCount( $Criteria ); + //if ( isset($limit) ) $oCriteria->setLimit ( $limit ); + //if ( isset($start) ) $oCriteria->setOffset ( $start ); + if ($sort != '') { + if ($dir == 'DESC') { + $oCriteria->addDescendingOrderByColumn( $sort ); + } else { + $oCriteria->addAscendingOrderByColumn( $sort ); + } //else { + // $oCriteria->addDescendingOrderByColumn('FLD_INDEX'); + //} + $oDataset = FieldsPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + + $result = array(); + $rows = array(); + switch ($action) { + case 'todo': + // #, Case, task, process, sent by, due date, Last Modify, Priority + $rows[] = array( 'name' => 'APP_UID', 'gridIndex' => '0', 'column2' => '0' ); + $rows[] = array( 'name' => 'DEL_INDEX', 'gridIndex' => '3', 'column2' => '3' ); + $rows[] = array( 'name' => 'APP_NUMBER', 'gridIndex' => '1', 'column2' => '1' ); + $rows[] = array( 'name' => 'APP_TITLE', 'gridIndex' => '4', 'column2' => '4' ); + $rows[] = array( 'name' => 'APP_TAS_TITLE', 'gridIndex' => '6', 'column2' => '6' ); + $rows[] = array( 'name' => 'APP_PRO_TITLE', 'gridIndex' => '5', 'column2' => '5' ); + $rows[] = array( 'name' => 'APP_DEL_PREVIOUS_USER', 'gridIndex' => '7', 'column2' => '7' ); + $rows[] = array( 'name' => 'DEL_TASK_DUE_DATE', 'gridIndex' => '8', 'column2' => '8' ); + $rows[] = array( 'name' => 'APP_UPDATE_DATE', 'gridIndex' => '9', 'column2' => '9' ); + $rows[] = array( 'name' => 'DEL_PRIORITY', 'gridIndex' => '10', 'column2' =>'10' ); + break; + case 'draft': + //#, Case, task, process, due date, Last Modify, Priority }, + $rows[] = array( 'name' => 'APP_UID', 'gridIndex' => '0', 'column2' => '0' ); + $rows[] = array( 'name' => 'DEL_INDEX', 'gridIndex' => '3', 'column2' => '3' ); + $rows[] = array( 'name' => 'APP_NUMBER', 'gridIndex' => '1', 'column2' => '1' ); + $rows[] = array( 'name' => 'APP_TITLE', 'gridIndex' => '4', 'column2' => '4' ); + $rows[] = array( 'name' => 'APP_TAS_TITLE', 'gridIndex' => '6', 'column2' => '6' ); + $rows[] = array( 'name' => 'APP_PRO_TITLE', 'gridIndex' => '5', 'column2' => '5' ); + $rows[] = array( 'name' => 'DEL_TASK_DUE_DATE', 'gridIndex' => '8', 'column2' => '8' ); + $rows[] = array( 'name' => 'APP_UPDATE_DATE', 'gridIndex' => '9', 'column2' => '9' ); + $rows[] = array( 'name' => 'DEL_PRIORITY', 'gridIndex' => '10', 'column2' =>'10' ); + break; + case 'sent': + // #, Case, task, process, current user, sent by, Last Modify, Status + $rows[] = array( 'name' => 'APP_UID', 'gridIndex' => '0', 'column2' => '0' ); + $rows[] = array( 'name' => 'APP_NUMBER', 'gridIndex' => '1', 'column2' => '1' ); + $rows[] = array( 'name' => 'APP_STATUS', 'gridIndex' => '2', 'column2' => '2' ); + $rows[] = array( 'name' => 'DEL_INDEX', 'gridIndex' => '3', 'column2' => '3' ); + $rows[] = array( 'name' => 'APP_TITLE', 'gridIndex' => '4', 'column2' => '4' ); + $rows[] = array( 'name' => 'APP_PRO_TITLE', 'gridIndex' => '5', 'column2' => '5' ); + $rows[] = array( 'name' => 'APP_TAS_TITLE', 'gridIndex' => '6', 'column2' => '6' ); + $rows[] = array( 'name' => 'APP_DEL_PREVIOUS_USER', 'gridIndex' => '7', 'column2' => '7' ); + $rows[] = array( 'name' => 'DEL_TASK_DUE_DATE', 'gridIndex' => '8', 'column2' => '8' ); + $rows[] = array( 'name' => 'APP_UPDATE_DATE', 'gridIndex' => '9', 'column2' => '9' ); + $rows[] = array( 'name' => 'DEL_PRIORITY', 'gridIndex' => '10', 'column2' =>'10' ); + break; + case 'unassigned': + $rows[] = array( 'name' => 'APP_UID', 'gridIndex' => '0', 'column2' => '0' ); + $rows[] = array( 'name' => 'APP_NUMBER', 'gridIndex' => '1', 'column2' => '1' ); + //$rows[] = array( 'name' => 'APP_STATUS', 'gridIndex' => '2', 'column2' => '2' ); + //$rows[] = array( 'name' => 'DEL_INDEX', 'gridIndex' => '3', 'column2' => '3' ); + $rows[] = array( 'name' => 'APP_TITLE', 'gridIndex' => '2', 'column2' => '2' ); + $rows[] = array( 'name' => 'APP_PRO_TITLE', 'gridIndex' => '3', 'column2' => '3' ); + $rows[] = array( 'name' => 'APP_TAS_TITLE', 'gridIndex' => '4', 'column2' => '4' ); + $rows[] = array( 'name' => 'APP_DEL_PREVIOUS_USER', 'gridIndex' => '5', 'column2' => '5' ); + //$rows[] = array( 'name' => 'DEL_TASK_DUE_DATE', 'gridIndex' => '8', 'column2' => '8' ); + $rows[] = array( 'name' => 'APP_UPDATE_DATE', 'gridIndex' => '6', 'column2' => '6' ); + //$rows[] = array( 'name' => 'DEL_PRIORITY', 'gridIndex' => '10', 'column2' =>'10' ); + break; + case 'paused': + $rows[] = array( 'name' => 'APP_UID', 'gridIndex' => '0', 'column2' => '0' ); + $rows[] = array( 'name' => 'APP_NUMBER', 'gridIndex' => '1', 'column2' => '1' ); + //$rows[] = array( 'name' => 'APP_STATUS', 'gridIndex' => '2', 'column2' => '2' ); + //$rows[] = array( 'name' => 'DEL_INDEX', 'gridIndex' => '3', 'column2' => '3' ); + $rows[] = array( 'name' => 'APP_TITLE', 'gridIndex' => '2', 'column2' => '2' ); + $rows[] = array( 'name' => 'APP_PRO_TITLE', 'gridIndex' => '3', 'column2' => '3' ); + $rows[] = array( 'name' => 'APP_TAS_TITLE', 'gridIndex' => '4', 'column2' => '4' ); + $rows[] = array( 'name' => 'APP_DEL_PREVIOUS_USER', 'gridIndex' => '5', 'column2' => '5' ); + //$rows[] = array( 'name' => 'DEL_TASK_DUE_DATE', 'gridIndex' => '8', 'column2' => '8' ); + //$rows[] = array( 'name' => 'APP_UPDATE_DATE', 'gridIndex' => '9', 'column2' => '9' ); + //$rows[] = array( 'name' => 'DEL_PRIORITY', 'gridIndex' => '10', 'column2' =>'10' ); + break; + case 'completed': + $rows[] = array( 'name' => 'APP_UID', 'gridIndex' => '0', 'column2' => '0' ); + $rows[] = array( 'name' => 'APP_NUMBER', 'gridIndex' => '1', 'column2' => '1' ); + //$rows[] = array( 'name' => 'APP_STATUS', 'gridIndex' => '2', 'column2' => '2' ); + //$rows[] = array( 'name' => 'DEL_INDEX', 'gridIndex' => '3', 'column2' => '3' ); + $rows[] = array( 'name' => 'APP_TITLE', 'gridIndex' => '2', 'column2' => '2' ); + $rows[] = array( 'name' => 'APP_PRO_TITLE', 'gridIndex' => '3', 'column2' => '3' ); + $rows[] = array( 'name' => 'APP_TAS_TITLE', 'gridIndex' => '4', 'column2' => '4' ); + $rows[] = array( 'name' => 'APP_DEL_PREVIOUS_USER', 'gridIndex' => '5', 'column2' => '5' ); + //$rows[] = array( 'name' => 'DEL_TASK_DUE_DATE', 'gridIndex' => '8', 'column2' => '8' ); + $rows[] = array( 'name' => 'APP_UPDATE_DATE', 'gridIndex' => '6', 'column2' => '6' ); + //$rows[] = array( 'name' => 'DEL_PRIORITY', 'gridIndex' => '10', 'column2' =>'10' ); + break; + case 'cancelled': + $rows[] = array( 'name' => 'APP_UID', 'gridIndex' => '0', 'column2' => '0' ); + $rows[] = array( 'name' => 'APP_NUMBER', 'gridIndex' => '1', 'column2' => '1' ); + //$rows[] = array( 'name' => 'APP_STATUS', 'gridIndex' => '2', 'column2' => '2' ); + //$rows[] = array( 'name' => 'DEL_INDEX', 'gridIndex' => '3', 'column2' => '3' ); + $rows[] = array( 'name' => 'APP_TITLE', 'gridIndex' => '2', 'column2' => '2' ); + $rows[] = array( 'name' => 'APP_PRO_TITLE', 'gridIndex' => '3', 'column2' => '3' ); + $rows[] = array( 'name' => 'APP_TAS_TITLE', 'gridIndex' => '4', 'column2' => '4' ); + //$rows[] = array( 'name' => 'APP_DEL_PREVIOUS_USER', 'gridIndex' => '7', 'column2' => '7' ); + $rows[] = array( 'name' => 'DEL_TASK_DUE_DATE', 'gridIndex' => '5', 'column2' => '5' ); + $rows[] = array( 'name' => 'APP_UPDATE_DATE', 'gridIndex' => '6', 'column2' => '6' ); + $rows[] = array( 'name' => 'DEL_PRIORITY', 'gridIndex' => '7', 'column2' =>'7' ); + break; + } + } + $index = count($rows); + + while ($aRow = $oDataset->getRow()) { + $aRow['index'] = ++$index; + $aTempRow['name'] = $aRow['FLD_NAME']; + $aTempRow['gridIndex'] = $aRow['index']; + $aTempRow['column2'] = $aTempRow['gridIndex']; + $rows[] = $aTempRow; + $oDataset->next(); + } + $result['totalCount'] = count($rows); + $result['data'] = $rows; + //$jsonResult['records'] = $result; + print G::json_encode( $result ) ; +} catch (Exception $e) { + print G::json_encode ($e->getMessage()); +} + diff --git a/workflow/engine/methods/enterprise/enterprise.php b/workflow/engine/methods/enterprise/enterprise.php index 728ea4434..75dbbef17 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,25 @@ class enterprisePlugin extends PMPlugin fclose($file); } } + + public function hashPassword ($pass, $previous=false) + { + G::LoadClass( "configuration" ); + $config= new Configurations(); + $typeEncrypt = $config->getConfiguration('ENTERPRISE_SETTING_ENCRYPT', ''); + $encrypt = 'md5'; + if ($typeEncrypt != null) { + if (isset($typeEncrypt['current']) && $typeEncrypt['current'] != '') { + $encrypt = $typeEncrypt['current']; + } + if ($previous && isset($typeEncrypt['previous']) && $typeEncrypt['previous'] != '' ) { + $encrypt = $typeEncrypt['previous']; + } + } + eval("\$var = hash('" . $encrypt . "', '" . $pass . "');"); + + return $var; + } } $oPluginRegistry = &PMPluginRegistry::getSingleton(); diff --git a/workflow/engine/methods/enterprise/menuEnterprise.php b/workflow/engine/methods/enterprise/menuEnterprise.php index 22f3badf7..840bfcbda 100644 --- a/workflow/engine/methods/enterprise/menuEnterprise.php +++ b/workflow/engine/methods/enterprise/menuEnterprise.php @@ -20,11 +20,11 @@ if (class_exists("pmLicenseManager")) { $licStatusMsg = " (" . $licenseStatusInfo["message"] . ")"; } - $G_TMP_MENU->AddIdRawOption("PMENTERPRISE", "../enterprise/addonsStore", "Enterprise Plugins Manager" . $licStatusMsg, "", "", "plugins"); + $G_TMP_MENU->AddIdRawOption("PMENTERPRISE", "../enterprise/addonsStore", G::LoadTranslation('ID_MENU_NAME') . $licStatusMsg, "", "", "plugins"); if (isset($pmLicenseManagerO->result) && ($pmLicenseManagerO->result == "OK")) { if (file_exists(PATH_HOME . "engine" . PATH_SEP . "methods" . PATH_SEP . "cases" . PATH_SEP . "casesListExtJs.php")) { - $G_TMP_MENU->AddIdRawOption("CASES_LIST_SETUP", "../enterprise/advancedTools/casesListSetup", "Cases Lists", "", "", "settings"); + $G_TMP_MENU->AddIdRawOption("CASES_LIST_SETUP", "../cases/casesListSetup", G::LoadTranslation('ID_CASES_LIST'), "", "", "settings"); } } } diff --git a/workflow/engine/methods/login/authentication.php b/workflow/engine/methods/login/authentication.php index 38f5ed874..7ead89e9b 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 @@ -92,7 +100,7 @@ try { $errLabel = 'WRONG_LOGIN_CREDENTIALS'; } - $_SESSION["USERNAME_PREVIOUS1"] = $_SESSION["USERNAME_PREVIOUS2"]; + $_SESSION["USERNAME_PREVIOUS1"] = (isset($_SESSION["USERNAME_PREVIOUS2"]))? $_SESSION["USERNAME_PREVIOUS2"] : ""; $_SESSION["USERNAME_PREVIOUS2"] = $usr; if (!isset($uid) || $uid < 0) { 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/src/ProcessMaker/Services/OAuth2/PmPdo.php b/workflow/engine/src/ProcessMaker/Services/OAuth2/PmPdo.php index 2f84112bc..e7d909314 100644 --- a/workflow/engine/src/ProcessMaker/Services/OAuth2/PmPdo.php +++ b/workflow/engine/src/ProcessMaker/Services/OAuth2/PmPdo.php @@ -209,7 +209,7 @@ class PmPdo implements \OAuth2\Storage\AuthorizationCodeInterface, // the default behavior is to use "username" as the user_id return array_merge(array( - 'user_id' => $username + 'user_id' => $userInfo['USR_UID'] //$username ), $userInfo); } diff --git a/workflow/engine/templates/cases/casesList.js b/workflow/engine/templates/cases/casesList.js index 9ea6dcf66..a6b3c4e0d 100644 --- a/workflow/engine/templates/cases/casesList.js +++ b/workflow/engine/templates/cases/casesList.js @@ -591,9 +591,7 @@ Ext.onReady ( function() { if( c.dataIndex == 'APP_DEL_PREVIOUS_USER') c.renderer = previous_full_name; if( c.dataIndex == 'APP_CURRENT_USER') c.renderer = full_name; } - if (enableEnterprise) { - c.header = __('enterprise', _(c.header)); - } + c.header = _(c.header); } //adding the hidden field DEL_INIT_DATE diff --git a/workflow/engine/templates/cases/casesListSetup.html b/workflow/engine/templates/cases/casesListSetup.html new file mode 100644 index 000000000..6de101d0c --- /dev/null +++ b/workflow/engine/templates/cases/casesListSetup.html @@ -0,0 +1,2 @@ +
+
diff --git a/workflow/engine/templates/cases/casesListSetup.js b/workflow/engine/templates/cases/casesListSetup.js new file mode 100644 index 000000000..e03e791af --- /dev/null +++ b/workflow/engine/templates/cases/casesListSetup.js @@ -0,0 +1,674 @@ +Ext.onReady(function () { + var currentIndexRowSelected; + + casesListProcessAjax = function (option) + { + var p; + var i = 0; + + switch (option) { + case "FIELD_SET": + p = { + "xaction": option, + "action": currentAction + }; + break; + case "FIELD_RESET": + case "FIELD_RESET_ID": + p = { + "xaction": option, + "action": currentAction + }; + break; + case "FIELD_COMPLETE": + case "FIELD_COMPLETE_ID": + case "FIELD_LABEL_RESET": + case "FIELD_LABEL_RESET_ID": + case "FIELD_SAVE": + + var rs = firstGrid.store.data.items; + var fv = []; + + for (i = 0; i <= rs.length - 1; i++) { + fv[i] = rs[i].data["name"]; + } + + var rs = secondGrid.store.data.items; + var sv = []; + + for (i = 0; i <= rs.length - 1; i++) { + //sv[i]= rs[i].data["name"]; + sv[i] = rs[i].data; + } + + p = { + "xaction": option, + "action": currentAction, + "first": Ext.util.JSON.encode(fv), + "second": Ext.util.JSON.encode(sv), + "pmtable": pmTablesDropdown.getValue() + }; + break; + } + + Ext.Ajax.request({ + url: "proxyPMTablesFieldList", + method: "POST", + params: p, + + success: function (response, opts) + { + var dataResponse = eval("(" + response.responseText + ")"); //json + + switch (option) { + case "FIELD_SET": + configDefaultResponseText = response.responseText; + fieldSet(dataResponse); + break; + case "FIELD_RESET": + case "FIELD_RESET_ID": + fieldSet(dataResponse); + break; + case "FIELD_COMPLETE": + case "FIELD_COMPLETE_ID": + fieldSet(dataResponse); + break; + case "FIELD_LABEL_RESET": + case "FIELD_LABEL_RESET_ID": + fieldSet(dataResponse); + break; + case "FIELD_SAVE": + configDefaultResponseText = response.responseText; + Ext.Msg.alert(_("ID_INFO"), _("ID_SAVED")); + location.reload(true); + break; + } + }, + failure: function (response, opts) + { + // + } + }); + }; + + fieldSet = function (dataResponse) + { + remotePmFieldsStore.loadData(dataResponse.first); + secondGridStore.loadData(dataResponse.second); + + //Remove APP_UID and DEL_INDEX from second grid, this is only to avoid display in this grid + var fieldName = ""; + var i = 0; + + while (i <= secondGrid.store.data.items.length - 1) { + fieldName = secondGrid.store.data.items[i].data["name"]; + + if (fieldName == "APP_UID" || + fieldName == "DEL_INDEX" || + fieldName == "USR_UID" || + fieldName == "PREVIOUS_USR_UID" + ) { + secondGrid.store.removeAt(i); + } else { + i = i + 1; + } + } + + //Set also the selected table value in the comboBox element. + if (PmTableStore.getTotalCount() > 0) { + pmTablesDropdown.setValue(dataResponse.PMTable); + } else { + pmTablesDropdown.setValue(""); + } + }; + + sendGridFieldsRequest = function (action) + { + currentAction = action; + + casesListProcessAjax("FIELD_SET"); + }; + + //Variables + var currentAction = ""; + var configDefaultResponseText = ""; + var tabIndex = 0; + + // Generic fields array to use in both store defs. + var pmFields = [ + {name: 'name', mapping : 'name'}, + {name: 'gridIndex', mapping : 'gridIndex'}, + {name: 'fieldType', mapping : 'fieldType'}, + {name: 'label', mapping : 'label'}, + //{name: 'width', mapping : 'width'}, + {name: 'align', mapping : 'align'} + ]; + + //Dropdown to select the PMTable + var PmTableStore = new Ext.data.JsonStore({ + root : 'data', + url : 'proxyPMTablesList', + totalProperty : 'totalCount', + idProperty : 'gridIndex', + remoteSort : false, //true, + autoLoad : false, + fields : [ + 'ADD_TAB_UID', 'ADD_TAB_NAME' + ], + listeners : {load: function() { + tabs.setActiveTab(tabIndex); + }} + }); + + // create the Data Store to list PMTables in the dropdown + var pmTablesDropdown = new Ext.form.ComboBox ({ + width : '180', + xtype : 'combo', + emptyText: _("ID_EMPTY_PMTABLE"), + displayField : 'ADD_TAB_NAME', + valueField : 'ADD_TAB_UID', + triggerAction: 'all', + store : PmTableStore, + listeners: { + 'select': function() { + var tableUid = this.value; + Ext.Ajax.request({ + url: 'proxyPMTablesFieldList', + success: function(response) { + var dataResponse = Ext.util.JSON.decode(response.responseText); + var rec = Ext.data.Record.create(pmFields); + //alert(firstGrid.store); + var index; + var record; + var count = firstGrid.store.getTotalCount(); + + // removing all the PM Table fields from the first grid + do { + index = firstGrid.store.find('fieldType','PM Table'); + record = firstGrid.store.getAt(index); + if (index>=0) { + firstGrid.store.remove(record); + } + } while (index>=0); + + // removing all the PM Table fields from the second grid + do { + index = secondGrid.store.find('fieldType','PM Table'); + record = secondGrid.store.getAt(index); + if (index>=0) { + secondGrid.store.remove(record); + } + } while (index>=0); + + for (var i = 0; i <= dataResponse.data.length-1; i++) { + var d = new rec( dataResponse.data[i] ); + firstGrid.store.add(d); + } + firstGrid.store.commitChanges(); + }, + failure: function(){}, + params: {xaction: 'getFieldsFromPMTable', table: tableUid } + }); + + } + } + }); + + // COMPONENT DEPRECATED remove it in the next revision of the enterprise plugin + // create the Dropdown for rows per page + var pmRowsPerPage = new Ext.form.ComboBox ({ + width : 60, + boxMaxWidth : 70, + editable : false, + triggerAction : 'all', + mode : 'local', + store : new Ext.data.ArrayStore({ + fields: ['id'], + data : [[5], [6], [7], [8], [9], [10], [12], [15], [18], [20], [25], [30], [50], [100] ] + }), + valueField : 'id', + displayField : 'id', + triggerAction : 'all' + }); + + // COMPONENT DEPRECATED remove it in the next revision of the enterprise plugin + // create the Dropdown for date formats + var pmDateFormat = new Ext.form.ComboBox ({ + width : 80, + boxMaxWidth : 90, + editable : false, + triggerAction : 'all', + mode : 'local', + store : new Ext.data.ArrayStore({ + fields: ['id'], + data : [['M d, Y'],['M d Y'],['M d Y H:i:s'],['d M Y'],['d M Y H:i:s'],['Y-m-d'],['Y-m-d H:i:s'],['Y/m/d '],['Y/m/d H:i:s'],['D d M Y'] ] + }), + valueField : 'id', + displayField : 'id', + triggerAction : 'all' + }); + + PmTableStore.setDefaultSort('ADD_TAB_NAME', 'asc'); + PmTableStore.load(); + + + var remoteFieldsProxy = new Ext.data.HttpProxy({ + url : 'proxyPMTablesFieldList', + autoSave: true, + totalProperty: 'totalCount', + successProperty: 'success', + idProperty: 'gridIndex', + root: 'data', + messageProperty: 'message' + }); + + var readerPmFields = new Ext.data.JsonReader({ + totalProperty : 'totalCount', + idProperty : 'index', + root : 'data' + }, pmFields + ); + + //currently we are not using this , but it is here just for complete definition + var writerPmFields = new Ext.data.JsonWriter({ + writeAllFields: false + }); + + var remotePmFieldsStore = new Ext.data.Store({ + remoteSort : true, + proxy : remoteFieldsProxy, + reader : readerPmFields, + writer : writerPmFields, // <-- plug a DataWriter into the store just as you would a Reader + autoSave : false // <-- false would delay executing create, update, destroy requests until specifically told to do so with some [save] buton. + }); + + // fields array used in second grid + var fieldsSecond = [ + {name: 'name', mapping : 'name'}, + {name: 'gridIndex', mapping : 'gridIndex'}, + {name: 'fieldType', mapping : 'fieldType'}, + {name: 'label', mapping : 'label'}, + //{name: 'width', mapping : 'width'}, + {name: 'align_label', mapping : 'align_label'}, + {name: 'align', mapping : 'align'} + ]; + + var labelTextField = new Ext.form.TextField ({ + allowBlank: true + }); + + var alignComboBox = new Ext.form.ComboBox ({ + editable : false, + triggerAction: 'all', + lazyRender:true, + mode: 'local', + store: new Ext.data.ArrayStore({ + //id: 0, + fields: [ + 'id', + 'label' + ], + data: [['left', _('ID_LEFT')], ['center', _('ID_CENTER')], ['right', _('ID_RIGHT')]] + }), + valueField: 'id', + displayField: 'label', + }); + + var alignComboBoxLabel = new Ext.form.ComboBox ({ + editable : false, + triggerAction: 'all', + lazyRender:true, + mode: 'local', + store: new Ext.data.ArrayStore({ + //id: 0, + fields: [ + 'id', + 'label' + ], + data: [['left', _('ID_LEFT')], ['center', _('ID_CENTER')], ['right', _('ID_RIGHT')]] + }), + valueField: 'id', + displayField: 'label', + listeners:{ + + select: function(obj){ + + var row = Ext.getCmp('secondGrid').getSelectionModel().getSelected(); + var selIndex = Ext.getCmp('secondGrid').getStore().indexOfId(row.id); + + row.data['align'] = obj.getValue(); + obj.value = obj.lastSelectionText; + } + } + }); + + var widthTextField = new Ext.form.NumberField({ + allowBlank: false, + allowNegative: false, + maxValue: 800, + minValue: 0 + }); + + //Column Model shortcut array + var cols = [ + {header: _("ID_HEADER_NUMBER"), sortable: false, dataIndex: "gridIndex", hidden: true, hideable: false}, + {header: _("ID_HEADER_FIELD_NAME"), width: '75%', sortable: false, dataIndex: "name"}, + {header: _("ID_HEADER_FIELD_TYPE"), width: '25%', sortable: false, dataIndex: "fieldType"} + ]; + + //Column Model shortcut array + var colsSecond = new Ext.grid.ColumnModel({ + // specify any defaults for each column + defaults: { + sortable: false // columns are not sortable by default + }, + columns: [ + {header: _("ID_HEADER_NUMBER"), width: 25, dataIndex: "gridIndex", hidden: true, hideable: false}, + {header: _("ID_HEADER_FIELD_NAME"), width: 160, dataIndex: "name"}, + {header: _("ID_HEADER_FIELD_TYPE"), width: 70, dataIndex: "fieldType"}, + { + header: _("ID_HEADER_LABEL"), + width: 160, + dataIndex: "label", + editor: labelTextField, + renderer: function (value, metaData, record, rowIndex, colIndex, store) + { + var arrayMatch = []; + var newValue = value; + + if ((arrayMatch = /^\*\*(.+)\*\*$/.exec(value))) { + newValue = _(arrayMatch[1]); + } + + return newValue; + } + }, + {header: _("ID_HEADER_ALIGN"), width: 60, dataIndex: "align_label", editor: alignComboBoxLabel} + ] + }); + + // declare the source Grid + var firstGrid = new Ext.grid.GridPanel({ + enableDragDrop: true, + width: '35%', + ddGroup: "secondGridDDGroup", + ddText: "{0} " + _("ID_SELECTED_FIELD") + "{1}", + store: remotePmFieldsStore, + columns: cols, + stripeRows: true, + title: _("ID_AVAILABLE_FIELDS") + }); + + var secondGridStore = new Ext.data.JsonStore({ + root : 'data', + totalProperty : 'totalCount', + fields : fieldsSecond, + remoteSort : false, + successProperty : 'success' + }); + + // create the destination Grid + var secondGrid = new Ext.grid.EditorGridPanel({ + id: 'secondGrid', + enableDragDrop: true, + width: '65%', + ddGroup: "firstGridDDGroup", + selModel: new Ext.grid.RowSelectionModel({singleSelect: true}), + store: secondGridStore, + ddText: "{0} " + _("ID_SELECTED_FIELD") + "{1}", + clicksToEdit: 1, + cm: colsSecond, + sm: new Ext.grid.RowSelectionModel({ + listeners:{ + selectionchange: function(sm,a,b,c){ + if (sm.lastActive !== false) { + currentIndexRowSelected = sm.lastActive; + } + + } + } + }), + stripeRows: true, + title: _("ID_CASES_LIST_FIELDS") + }); + + var inboxPanel = new Ext.Panel({ + title: _("ID_TITLE_INBOX"), + listeners: {'activate': function() { + tabIndex = 0; + sendGridFieldsRequest("todo"); + }} + }); + + var draftPanel = new Ext.Panel({ + title: _("ID_TITLE_DRAFT"), + listeners: {'activate': function() { + tabIndex = 1; + sendGridFieldsRequest("draft"); + }} + }); + + var participatedPanel = new Ext.Panel({ + title: _("ID_TITLE_PARTICIPATED"), + listeners: {'activate': function() { + tabIndex = 2; + sendGridFieldsRequest("sent"); + }} + }); + + var unassignedPanel = new Ext.Panel({ + title: _("ID_TITLE_UNASSIGNED"), + listeners: {'activate': function() { + tabIndex = 3; + sendGridFieldsRequest("unassigned"); + }} + }); + + var pausedPanel = new Ext.Panel({ + title: _("ID_TITLE_PAUSED"), + listeners: {'activate': function() { + tabIndex = 4; + sendGridFieldsRequest("paused"); + }} + }); + + var completedPanel = new Ext.Panel({ + title: _("ID_TITLE_COMPLETED"), + listeners: {'activate': function() { + tabIndex = 5; + sendGridFieldsRequest("completed"); + }} + }); + + var cancelledPanel = new Ext.Panel({ + title: _("ID_TITLE_CANCELLED"), + listeners: {'activate': function() { + tabIndex = 6; + sendGridFieldsRequest("cancelled"); + }} + }); + + var mainPanel = new Ext.Panel({ + title : '', + renderTo : 'alt-panel', + width : '100%', + height : screen.height-245, + layout : 'hbox', + layoutConfig : {align : 'stretch'}, + tbar : new Ext.Toolbar({ + items: [ + _("ID_PM_TABLE"), + pmTablesDropdown, + "->", + new Ext.Action({ + text: _("ID_OPTIONS"), + iconCls: "button_menu_ext ss_sprite ss_table_gear", + menu: new Ext.menu.Menu({ + width: 250, + defaults: { + iconCls: "silk-add", + icon: "/images/ext/default/menu/group-checked.gif" + }, + items: [ + { + text: "
" + _("ID_CASESLIST_FIELD_RESET") + "
", + handler: function () + { + casesListProcessAjax("FIELD_RESET"); + } + }, + { + text: "
" + _("ID_CASESLIST_FIELD_RESET_ID") + "
", + handler: function () + { + casesListProcessAjax("FIELD_RESET_ID"); + } + }, + { + text: "
" + _("ID_CASESLIST_FIELD_COMPLETE") + "
", + handler: function () + { + casesListProcessAjax("FIELD_COMPLETE"); + } + }, + { + text: "
" + _("ID_CASESLIST_FIELD_COMPLETE_ID") + "
", + handler: function () + { + casesListProcessAjax("FIELD_COMPLETE_ID"); + } + }, + { + text: "
" + _("ID_CASESLIST_FIELD_LABEL_RESET") + "
", + handler: function () + { + casesListProcessAjax("FIELD_LABEL_RESET"); + } + }, + { + text: "
" + _("ID_CASESLIST_FIELD_LABEL_RESET_ID") + "
", + handler: function () + { + casesListProcessAjax("FIELD_LABEL_RESET_ID"); + } + } + ] + }) + }) + ] + }), + items: [ + firstGrid, + secondGrid + ], + bbar: [ + "->", + { + text: _("ID_RESET"), + handler: function () + { + var dataResponse = eval("(" + configDefaultResponseText + ")"); //json + + fieldSet(dataResponse); + } + }, + " ", + { + text: _("ID_APPLY_CHANGES"), + handler: function () + { + casesListProcessAjax("FIELD_SAVE"); + } + } + ] + }); + +var tabs = new Ext.TabPanel({ + renderTo : 'panel', + //activeTab : 0, + width : '100%', + items : [ + inboxPanel, + draftPanel, + participatedPanel, + unassignedPanel, + pausedPanel + ] +}); + +// used to add records to the destination stores + + // Setup Drop Targets + // This will make sure we only drop to the view scroller element + var firstGridDropTargetEl = firstGrid.getView().scroller.dom; + var firstGridDropTarget = new Ext.dd.DropTarget(firstGridDropTargetEl, { + ddGroup : 'firstGridDDGroup', + notifyDrop : function(ddSource, e, data){ + var records = ddSource.dragData.selections; + Ext.each(records, ddSource.grid.store.remove, ddSource.grid.store); + firstGrid.store.add(records); + firstGrid.store.commitChanges(); + return true + } + }); + + + + + // This will make sure we only drop to the view scroller element + var secondGridDropTargetEl = secondGrid.getView().scroller.dom; + var secondGridDropTarget = new Ext.dd.DropTarget(secondGridDropTargetEl, { + + notifyDrop : function(ddSource, e, data){ + + if ( ddSource.ddGroup == 'firstGridDDGroup') { + var selectedRecord = secondGrid.getSelectionModel().getSelected(); + // to get value of a field in the record + var valSource = selectedRecord.get('gridIndex'); + + var rowTargetId = secondGrid.getView().findRowIndex(e.getTarget()); + var recTarget = secondGrid.getStore().getAt(rowTargetId); + var valTarget = recTarget.get('gridIndex'); + + var newIndex = 0; + for (i=0; i< secondGrid.store.getCount(); i++) { + var record = secondGrid.getStore().getAt(i); + if (record.get('gridIndex') == valSource) { + record.set('gridIndex',valTarget); + } else { + incIndexB = 1; + isBrecord = 0; + if ( record.get('gridIndex') == valTarget ) { + isBrecord = true; + } + if ( isBrecord && newIndex == record.get('gridIndex') ) { + newIndex++;incIndexB = false; + } + record.set('gridIndex', newIndex); + newIndex++; + if ( isBrecord && incIndexB ) { + newIndex++; + } + } + } + secondGrid.store.sort('gridIndex', 'ASC'); + return true; + }; + + var records = ddSource.dragData.selections; + Ext.each(records, ddSource.grid.store.remove, ddSource.grid.store); + secondGrid.store.add(records); + + //reorder fields, putting a secuencial index for all records + for (i=0; i< secondGrid.store.getCount(); i++) { + var record = secondGrid.getStore().getAt(i); + record.set('gridIndex', i ); + } + secondGrid.store.commitChanges(); + return true + } + }); + secondGridDropTarget.addToGroup('secondGridDDGroup'); + secondGridDropTarget.addToGroup('firstGridDDGroup'); + +}); diff --git a/workflow/engine/templates/enterprise/addonsStore.js b/workflow/engine/templates/enterprise/addonsStore.js index 0b86fa80a..33bda2d8e 100644 --- a/workflow/engine/templates/enterprise/addonsStore.js +++ b/workflow/engine/templates/enterprise/addonsStore.js @@ -732,7 +732,6 @@ Ext.onReady(function() { } if (sw == 1) { - var pm = PROCESSMAKER_URL; uploadForm.getForm().submit({ url: "../enterprise/addonsStoreAction", params: { @@ -740,10 +739,8 @@ Ext.onReady(function() { }, waitMsg: _('ID_UPDATING_LICENSE_MSG'), success: function (form, o) { - //Ext.MessageBox.alert(_('ID_INFORMATION'), _('ID_SUCCESSFULLY_UPLOADED')); - //parent.parent.window.location.href = newLocation(); Ext.MessageBox.alert(_('ID_INFORMATION'), _('ID_SUCCESSFULLY_UPLOADED'), function () { - parent.parent.window.location.href = PROCESSMAKER_URL + (SYS_SKIN.substring(0,2) == 'ux')? "/main/login" :"/setup/login/login"; + parent.parent.window.location.href = newLocation() }); }, failure: function (form, o) { @@ -1020,7 +1017,7 @@ Ext.onReady(function() { value: license_expires+'/'+license_span+" ("+license_start_date+" / "+license_end_date+")", hidden: !licensed, hideLabel: !licensed - }, + } ], buttons : [ { 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', diff --git a/workflow/public_html/app.php b/workflow/public_html/app.php index 50d6cc21f..df7df25ae 100644 --- a/workflow/public_html/app.php +++ b/workflow/public_html/app.php @@ -56,6 +56,10 @@ try { $app->run(Maveriks\WebApplication::SERVICE_API); break; + case Maveriks\WebApplication::RUNNING_OAUTH2: + $app->run(Maveriks\WebApplication::SERVICE_OAUTH2); + break; + case Maveriks\WebApplication::RUNNING_INDEX: $response = new Maveriks\Http\Response(file_get_contents("index.html"), 302); $response->send();