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({