diff --git a/workflow/engine/classes/class.licensedFeatures.php b/workflow/engine/classes/class.licensedFeatures.php index f2aef8649..dcf2161bb 100644 --- a/workflow/engine/classes/class.licensedFeatures.php +++ b/workflow/engine/classes/class.licensedFeatures.php @@ -27,6 +27,127 @@ class PMLicensedFeatures { private $featuresDetails = array (); private $features = array (); + private $newFeatures = array( + 0 => array( + "description" => "Enables de Actions By Email feature.", + "enabled" => false, + "id" => "actionsByEmail", + "latest_version" => "", + "log" => null, + "name" => "actionsByEmail", + "nick" => "actionsByEmail", + "progress" => 0, + "publisher" => "Colosa", + "release_type" => "localRegistry", + "status" => "ready", + "store" => "00000000000000000000000000010004", + "type" => "features", + "url" => "", + "version" => "" + ), + 1 => array( + "description" => "Enables de Batch Routing feature.", + "enabled" => false, + "id" => "pmConsolidatedCL", + "latest_version" => "", + "log" => null, + "name" => "pmConsolidatedCL", + "nick" => "pmConsolidatedCL", + "progress" => 0, + "publisher" => "Colosa", + "release_type" => "localRegistry", + "status" => "ready", + "store" => "00000000000000000000000000010005", + "type" => "features", + "url" => "", + "version" => "" + ), + 2 => array( + "description" => "Dashboard with improved charting graphics and optimized to show strategic information like Process Efficiency and User Efficiency indicators.", + "enabled" => false, + "id" => "strategicDashboards", + "latest_version" => "", + "log" => null, + "name" => "strategicDashboards", + "nick" => "Strategic Dashboards", + "progress" => 0, + "publisher" => "Colosa", + "release_type" => "localRegistry", + "status" => "ready", + "store" => "00000000000000000000000000010006", + "type" => "features", + "url" => "", + "version" => "" + ), + 3 => array( + "description" => "Enables the configuration of a second database connection in order to divide the database requests in read and write operations. This features is used with database clusters to improve the application performance.", + "enabled" => false, + "id" => "secondDatabaseConnection", + "latest_version" => "", + "log" => null, + "name" => "secondDatabaseConnection", + "nick" => "secondDatabaseConnection", + "progress" => 0, + "publisher" => "Colosa", + "release_type" => "localRegistry", + "status" => "ready", + "store" => "00000000000000000000000000010000", + "type" => "features", + "url" => "", + "version" => "" + ), + 4 => array( + "description" => "Registers every admin action in a log. The actions in administration settings options are registered in the log.", + "enabled" => false, + "id" => "auditLog", + "latest_version" => "", + "log" => null, + "name" => "auditLog", + "nick" => "auditLog", + "progress" => 0, + "publisher" => "Colosa", + "release_type" => "localRegistry", + "status" => "ready", + "store" => "00000000000000000000000000010001", + "type" => "features", + "url" => "", + "version" => "" + ), + 5 => array( + "description" => "A more secure option to store user passwords in ProcessMaker. The modern algorithm SHA-2 is used to store the passwords.", + "enabled" => false, + "id" => "secureUserPasswordHash", + "latest_version" => "", + "log" => null, + "name" => "secureUserPasswordHash", + "nick" => "secureUserPasswordHash", + "progress" => 0, + "publisher" => "Colosa", + "release_type" => "localRegistry", + "status" => "ready", + "store" => "00000000000000000000000000010002", + "type" => "features", + "url" => "", + "version" => "" + ), + 6 => array( + "description" => "This functionality enables the flexibility to send mails from different email servers or configurations.", + "enabled" => false, + "id" => "sendEmailFromDifferentEmailServers", + "latest_version" => "", + "log" => null, + "name" => "sendEmailFromDifferentEmailServers", + "nick" => "sendEmailFromDifferentEmailServers", + "progress" => 0, + "publisher" => "Colosa", + "release_type" => "localRegistry", + "status" => "ready", + "store" => "00000000000000000000000000010003", + "type" => "features", + "url" => "", + "version" => "" + ) + ); private static $instancefeature = null; @@ -87,6 +208,132 @@ class PMLicensedFeatures $this->featuresDetails[$value[0]]->enabled = $enable; return $enable; } + + public function addNewFeatures ($data) + { + $newFeaturesList = $this->newFeatures; + $newData = array(); + $newFeaturesIds = array(); + foreach($newFeaturesList as $val) { + $newFeaturesIds[] = $val['id']; + } + $criteria = new Criteria(); + $criteria->addSelectColumn(AddonsManagerPeer::ADDON_ID); + $criteria->add(AddonsManagerPeer::ADDON_ID, $newFeaturesIds, Criteria::IN); + $criteria->add(AddonsManagerPeer::ADDON_TYPE, 'features'); + $rs = AddonsManagerPeer::doSelectRS($criteria); + $rs->next(); + $row = $rs->getRow(); + if(sizeof($row)) { + while (is_array($row)) { + $ids[] = $row[0]; + $rs->next(); + $row = $rs->getRow(); + } + $toUpdate = array_diff($newFeaturesIds,$ids); + + if(sizeof($toUpdate)){ + $newFeaturesListAux = array(); + foreach($toUpdate as $index => $v) { + $newFeaturesListAux[] = $newFeaturesList[$index]; + } + unset($newFeaturesList); + $newFeaturesList = array_values($newFeaturesListAux); + } else { + return $data; + } + } + + foreach($newFeaturesList as $k => $newFeature){ + $newData[] = array ( + 'db' => 'wf', + 'table' => 'ADDONS_MANAGER', + 'keys' => + array ( + 0 => 'ADDON_ID', + ), + 'data' => + array ( + 0 => + array ( + 'field' => 'ADDON_DESCRIPTION', + 'type' => 'text', + 'value' => $newFeature['description'], + ), + 1 => + array ( + 'field' => 'ADDON_ID', + 'type' => 'text', + 'value' => $newFeature['id'], + ), + 2 => + array ( + 'field' => 'ADDON_NAME', + 'type' => 'text', + 'value' => $newFeature['name'], + ), + 3 => + array ( + 'field' => 'ADDON_NICK', + 'type' => 'text', + 'value' => $newFeature['nick'], + ), + 4 => + array ( + 'field' => 'ADDON_PUBLISHER', + 'type' => 'text', + 'value' => $newFeature['publisher'], + ), + 5 => + array ( + 'field' => 'ADDON_RELEASE_TYPE', + 'type' => 'text', + 'value' => $newFeature['release_type'], + ), + 6 => + array ( + 'field' => 'ADDON_STATUS', + 'type' => 'text', + 'value' => $newFeature['status'], + ), + 7 => + array ( + 'field' => 'STORE_ID', + 'type' => 'text', + 'value' => $newFeature['store'], + ), + 8 => + array ( + 'field' => 'ADDON_TYPE', + 'type' => 'text', + 'value' => $newFeature['type'], + ), + 9 => + array ( + 'field' => 'ADDON_DOWNLOAD_URL', + 'type' => 'text', + 'value' => $newFeature['url'], + ), + 10 => + array ( + 'field' => 'ADDON_VERSION', + 'type' => 'text', + 'value' => $newFeature['version'], + ), + 11 => + array ( + 'field' => 'ADDON_DOWNLOAD_PROGRESS', + 'type' => 'text', + 'value' => $newFeature['progress'], + ) + ), + 'action' => 1, + ); + + $i++; + } + return array_merge($data, $newData); + } /*----------------------------------********---------------------------------*/ } diff --git a/workflow/engine/classes/class.wsTools.php b/workflow/engine/classes/class.wsTools.php index cea83655a..6483a4afb 100755 --- a/workflow/engine/classes/class.wsTools.php +++ b/workflow/engine/classes/class.wsTools.php @@ -919,6 +919,10 @@ class workspaceTools if (file_exists(PATH_CORE . 'data' . PATH_SEP . 'check.data')) { $checkData = unserialize(file_get_contents(PATH_CORE . 'data' . PATH_SEP . 'check.data')); if (is_array($checkData)) { + /*----------------------------------********---------------------------------*/ + $licensedFeatures = & PMLicensedFeatures::getSingleton(); + $checkData = $licensedFeatures->addNewFeatures($checkData); + /*----------------------------------********---------------------------------*/ foreach ($checkData as $checkThis) { $this->updateThisRegistry($checkThis); } diff --git a/workflow/engine/data/mysql/insert.sql b/workflow/engine/data/mysql/insert.sql index 4a9996c20..fbb333b5e 100755 --- a/workflow/engine/data/mysql/insert.sql +++ b/workflow/engine/data/mysql/insert.sql @@ -59981,3 +59981,12 @@ INSERT INTO CATALOG (CAT_UID, CAT_LABEL_ID, CAT_TYPE, CAT_FLAG, CAT_OBSERVATION, ('1060','ID_NEW_CASES','INDICATOR','','','2015-03-04','2015-03-04'), ('1070','ID_COMPLETED_CASES','INDICATOR','','','2015-03-04','2015-03-04'), ('1080','ID_WORKING_CASES','INDICATOR','','','2015-03-04','2015-03-04'); + +INSERT INTO ADDONS_MANAGER (ADDON_DESCRIPTION,ADDON_ID,ADDON_NAME,ADDON_NICK,ADDON_PUBLISHER,ADDON_RELEASE_TYPE,ADDON_STATUS,STORE_ID,ADDON_TYPE,ADDON_DOWNLOAD_URL,ADDON_VERSION,ADDON_DOWNLOAD_PROGRESS) VALUES +('Enables de Actions By Email feature.','actionsByEmail','actionsByEmail','actionsByEmail','Colosa','localRegistry','ready','00000000000000000000000000010004','features','','','0'), +('Enables de Batch Routing feature.','pmConsolidatedCL','pmConsolidatedCL','pmConsolidatedCL','Colosa','localRegistry','ready','00000000000000000000000000010005','features','','','0'), +('Dashboard with improved charting graphics and optimized to show strategic information like Process Efficiency and User Efficiency indicators.','strategicDashboards','strategicDashboards','Strategic Dashboards','Colosa','localRegistry','ready','00000000000000000000000000010006','features','','','0'), +('Enables the configuration of a second database connection in order to divide the database requests in read and write operations. This features is used with database clusters to improve the application performance.','secondDatabaseConnection','secondDatabaseConnection','secondDatabaseConnection','Colosa','localRegistry','ready','00000000000000000000000000010000','features','','','0'), +('A more secure option to store user passwords in ProcessMaker. The modern algorithm SHA-2 is used to store the passwords.','secureUserPasswordHash','secureUserPasswordHash','secureUserPasswordHash','Colosa','localRegistry','ready','00000000000000000000000000010002','features','','','0'), +('This functionality enables the flexibility to send mails from different email servers or configurations.','sendEmailFromDifferentEmailServers','sendEmailFromDifferentEmailServers','sendEmailFromDifferentEmailServers','Colosa','localRegistry','ready','00000000000000000000000000010003','features','','','0'), +('Registers every admin action in a log. The actions in administration settings options are registered in the log.','auditLog','auditLog','auditLog','Colosa','localRegistry','ready','00000000000000000000000000010001','features','','','0'); diff --git a/workflow/engine/templates/enterprise/addonsStore.js b/workflow/engine/templates/enterprise/addonsStore.js index 5a265e9df..898899bb1 100644 --- a/workflow/engine/templates/enterprise/addonsStore.js +++ b/workflow/engine/templates/enterprise/addonsStore.js @@ -1443,54 +1443,6 @@ Ext.onReady(function() { } return ''; } - }, - { - id : "status-feature", - header : _('ID_STATUS'), - width : 60, - sortable : false, - hideable : false, - dataIndex: "status", - renderer: function (val) { - var str = ""; - var text = ""; - - switch (val) { - case "available": text = _('ID_BUY_NOW'); break; - case "installed": text = _('ID_INSTALLED'); break; - case "ready": text = _('ID_INSTALL_NOW'); break; - case "upgrade": text = _('ID_UPGRADE_NOW'); break; - case "download": text = _('ID_CANCEL'); break; - case "install": text = _('ID_INSTALLING'); break; - case "cancel": text = _('ID_CANCELLING'); break; - case "disabled": text = _('ID_DISABLED'); break; - case "download-start": text = ""; break; - default: text = val; break; - } - - switch (val) { - case "available": - case "ready": - case "upgrade": - case "download": - case "install": - case "cancel": - case "download-start": - str = "
" + text + "
"; - break; - - case "installed": - case "disabled": - str = "
" + text + "
"; - break; - - default: - str = "
" + text + "
"; - break; - } - - return (str); - } } ] });