From 650d7051a72f1f4efdad73b289dd2085d6e33b55 Mon Sep 17 00:00:00 2001 From: dheeyi william Date: Thu, 4 May 2017 09:56:34 -0400 Subject: [PATCH] HOR-1697 System Settings: Se aceptan valores reales/negativos en los campos: "MemoryLimit, CookieLifetime y DefaultUserExpiryDate" --- workflow/engine/controllers/adminProxy.php | 65 +++++++++---- workflow/engine/templates/admin/system.js | 106 ++++++++++----------- 2 files changed, 97 insertions(+), 74 deletions(-) diff --git a/workflow/engine/controllers/adminProxy.php b/workflow/engine/controllers/adminProxy.php index df7d0b660..22c365dc6 100644 --- a/workflow/engine/controllers/adminProxy.php +++ b/workflow/engine/controllers/adminProxy.php @@ -27,28 +27,18 @@ class adminProxy extends HttpProxyController { const hashunlink = 'unlink'; + /** + * Save configurations of systemConf + * @param $httpData + * @throws Exception + */ public function saveSystemConf($httpData) { G::loadClass('system'); $envFile = PATH_CONFIG . 'env.ini'; $updateRedirector = false; $restart = false; - - if (!file_exists($envFile) ) { - if (!is_writable(PATH_CONFIG)) { - throw new Exception('The enviroment config directory is not writable.
Please give write permission to directory: /workflow/engine/config'); - } - $content = ";\r\n"; - $content .= "; ProcessMaker System Bootstrap Configuration\r\n"; - $content .= ";\r\n"; - file_put_contents($envFile, $content); - //@chmod($envFile, 0777); - } else { - if (!is_writable($envFile)) { - throw new Exception('The enviroment ini file file is not writable.
Please give write permission to file: /workflow/engine/config/env.ini'); - } - } - + self::validateDataSystemConf($httpData, $envFile); $sysConf = System::getSystemConfiguration($envFile); $updatedConf = array(); @@ -1536,5 +1526,46 @@ class adminProxy extends HttpProxyController G::streamFile($support, true); G::rm_dir($support); } -} + /** + * Validate data before saving + * @param $httpData + * @param $envFile + * @throws Exception + */ + public static function validateDataSystemConf($httpData, $envFile) + { + if (!((is_numeric($httpData->memory_limit)) && ((int)$httpData->memory_limit == $httpData->memory_limit) && + ((int)$httpData->memory_limit >= -1)) + ) { + throw new Exception('The Memory Limit has to be either a positive integer or -1 '); + } + + if (!((is_numeric($httpData->max_life_time)) && ((int)$httpData->max_life_time == $httpData->max_life_time) && + ((int)$httpData->max_life_time > 0)) + ) { + throw new Exception('The Max Lifetime has to be either a positive integer '); + } + + if (!((is_numeric($httpData->expiration_year)) && ((int)$httpData->expiration_year == $httpData->expiration_year) && + ((int)$httpData->expiration_year > 0)) + ) { + throw new Exception('The Default Expiration Year has to be either a positive integer'); + } + + if (!file_exists($envFile)) { + if (!is_writable(PATH_CONFIG)) { + throw new Exception('The enviroment config directory is not writable.
Please give write permission to directory: /workflow/engine/config'); + } + $content = ";\r\n"; + $content .= "; ProcessMaker System Bootstrap Configuration\r\n"; + $content .= ";\r\n"; + file_put_contents($envFile, $content); + //@chmod($envFile, 0777); + } else { + if (!is_writable($envFile)) { + throw new Exception('The enviroment ini file is not writable.
Please give write permission to file: /workflow/engine/config/env.ini'); + } + } + } +} \ No newline at end of file diff --git a/workflow/engine/templates/admin/system.js b/workflow/engine/templates/admin/system.js index 0b6879df7..7dc38aa8e 100644 --- a/workflow/engine/templates/admin/system.js +++ b/workflow/engine/templates/admin/system.js @@ -85,32 +85,6 @@ Ext.onReady(function(){ cmbTimeZone.setValue(sysConf.time_zone); - txtExpirationYear = new Ext.form.TextField({ - xtype: 'numberfield', - id : 'expiration_year', - name : 'expiration_year', - fieldLabel: _('ID_DEFAULT_EXPIRATION_YEAR'), - allowBlank: false, - allowNegative: false, - value: 1, - maxlength: 15, - minValue: 1, - validator: function(value){ - if(value > 0) { - return true; - } else { - PMExt.error( _('ID_ERROR'), _('ID_INVALID_VALUE_EXPECTING_POSITIVE_INTEGER', _('ID_DEFAULT_EXPIRATION_YEAR'))); - return false; - } - }, - listeners:{ - change: function(){ - changeSettings(); - } - } - }); - txtExpirationYear.setValue(sysConf.expiration_year); - saveButton = new Ext.Action({ text : _('ID_SAVE_SETTINGS'), disabled : true, @@ -118,38 +92,56 @@ Ext.onReady(function(){ }); xfieldsUp = new Ext.form.FieldSet({ - title: _('ID_SYSTEM_SETTINGS'), - items : [ - cmbTimeZone, - { - xtype: 'numberfield', - id : 'memory_limit', - name : 'memory_limit', - fieldLabel: _('ID_MEMORY_LIMIT'), - allowBlank: false, - autoCreate: {tag: "input", type: "text", autocomplete: "off", maxlength: 15 }, - value: sysConf.memory_limit, - listeners:{ - change: function(){ - changeSettings(); + title: _('ID_SYSTEM_SETTINGS'), + items: [ + cmbTimeZone, + { + xtype: 'numberfield', + id: 'memory_limit', + name: 'memory_limit', + fieldLabel: _('ID_MEMORY_LIMIT'), + allowBlank: false, + allowDecimals: false, + minValue: -1, + autoCreate: {tag: "input", type: "text", autocomplete: "off", maxlength: 15}, + value: sysConf.memory_limit, + listeners: { + change: function () { + changeSettings(); + } + } + }, { + xtype: 'numberfield', + id: 'max_life_time', + name: 'max_life_time', + fieldLabel: _('ID_MAX_LIFETIME'), + allowNegative: false, + allowDecimals: false, + autoCreate: {tag: "input", type: "text", autocomplete: "off", maxlength: 15}, + value: sysConf.session_gc_maxlifetime, + listeners: { + change: function () { + changeSettings(); + } + } + }, { + xtype: 'numberfield', + id: 'expiration_year', + name: 'expiration_year', + fieldLabel: _('ID_DEFAULT_EXPIRATION_YEAR'), + allowBlank: false, + allowNegative: false, + allowDecimals: false, + value: sysConf.expiration_year, + maxlength: 15, + minValue: 1, + listeners: { + change: function () { + changeSettings(); + } + } } - } - }, { - xtype: 'numberfield', - id : 'max_life_time', - name : 'max_life_time', - fieldLabel: _('ID_MAX_LIFETIME'), - // allowBlank: false, - autoCreate: {tag: "input", type: "text", autocomplete: "off", maxlength: 15 }, - value: sysConf.session_gc_maxlifetime, - listeners:{ - change: function(){ - changeSettings(); - } - } - } - ,txtExpirationYear - ] + ] }); xfieldsBelow = new Ext.form.FieldSet({