Merged in release/3.2.2 (pull request #6059)

Updating branch release/3.2.3 with the last changes made on branch release/3.2.2

Approved-by: Julio Cesar Laura Avendaño <contact@julio-laura.com>
This commit is contained in:
Julio Cesar Laura Avendaño
2017-09-14 19:48:06 +00:00
8 changed files with 1191 additions and 1098 deletions

View File

@@ -748,6 +748,7 @@ class headPublisher
*/ */
public function getExtJsViewState() public function getExtJsViewState()
{ {
$json = new stdClass();
$views = array(); $views = array();
$keyState = "extJsViewState"; $keyState = "extJsViewState";
$prefixExtJs = "ys-"; $prefixExtJs = "ys-";
@@ -772,7 +773,9 @@ class headPublisher
$views[$key] = $value[1]; $views[$key] = $value[1];
} }
} }
$oServerConf->setProperty($keyState, G::json_encode($views)); if ((array)$json != $views) {
$oServerConf->setProperty($keyState, G::json_encode($views));
}
return $views; return $views;
} }

View File

@@ -389,6 +389,8 @@ class RBAC
"PER_NAME" => "Edit User profile Default Cases Menu Options" "PER_NAME" => "Edit User profile Default Cases Menu Options"
), array("PER_UID" => "00000000000000000000000000000064", "PER_CODE" => "PM_REASSIGNCASE_SUPERVISOR", ), array("PER_UID" => "00000000000000000000000000000064", "PER_CODE" => "PM_REASSIGNCASE_SUPERVISOR",
"PER_NAME" => "Reassign case supervisor" "PER_NAME" => "Reassign case supervisor"
), array("PER_UID" => "00000000000000000000000000000065", "PER_CODE" => "PM_SETUP_CUSTOM_CASES_LIST",
"PER_NAME" => "Setup Custom Cases List"
) )
); );
return $permissionsAdmin; return $permissionsAdmin;

View File

@@ -1,6 +1,7 @@
<?php <?php
use ProcessMaker\Core\System; use ProcessMaker\Core\System;
use ProcessMaker\BusinessModel\DynaForm\SuggestTrait;
/** /**
* Implementing pmDynaform library in the running case. * Implementing pmDynaform library in the running case.
@@ -9,6 +10,7 @@ use ProcessMaker\Core\System;
*/ */
class PmDynaform class PmDynaform
{ {
use SuggestTrait;
public static $instance = null; public static $instance = null;
public $fields = null; public $fields = null;
@@ -256,66 +258,7 @@ class PmDynaform
} }
$sql = G::replaceDataField($json->sql, $dtFields); $sql = G::replaceDataField($json->sql, $dtFields);
if ($value === "suggest") { if ($value === "suggest") {
$sql = $this->sqlParse($sql, function($parsed, &$select, &$from, &$where, &$groupBy, &$having, &$orderBy, &$limit) use ($json) { $sql = $this->prepareSuggestSql($sql, $json);
$dt = $parsed["SELECT"];
$isWhere = empty($where);
if ($isWhere === false) {
$where = substr_replace($where, " (", 5, 0) . ")";
}
if (!isset($json->queryField) && isset($dt[0]["base_expr"])) {
$col = $dt[0]["base_expr"];
$dv = str_replace("'", "''", $json->defaultValue);
if ($dv !== "") {
$where = $isWhere ? "WHERE " . $col . "='" . $dv . "'" : $where . " AND " . $col . "='" . $dv . "'";
}
}
if (isset($json->queryField) && isset($dt[0]["base_expr"])) {
$col = isset($dt[1]["base_expr"]) ? $dt[1]["base_expr"] : $dt[0]["base_expr"];
$qf = str_replace("'", "''", $json->queryFilter);
$where = $isWhere ? "WHERE " . $col . " LIKE '%" . $qf . "%'" : $where . " AND " . $col . " LIKE '%" . $qf . "%'";
}
$provider = $this->getDatabaseProvider($json->dbConnection);
$start = 0;
$end = 10;
if (isset($json->queryStart)) {
$start = $json->queryStart;
}
if (isset($json->queryLimit)) {
$end = $json->queryLimit;
}
if (empty($limit) && $provider === "mysql") {
$limit = "LIMIT " . $start . "," . $end . "";
}
if (empty($limit) && $provider === "pgsql") {
$limit = "OFFSET " . $start . " LIMIT " . $end . "";
}
if ($provider === "mssql") {
$limit = "";
if (strpos(strtoupper($select), "TOP") === false) {
$isDistinct = strpos(strtoupper($select), "DISTINCT");
$isAll = strpos(strtoupper($select), "ALL");
if ($isDistinct === false && $isAll === false) {
$select = preg_replace("/SELECT/", "SELECT TOP(" . $end . ")", strtoupper($select), 1);
}
if ($isDistinct !== false) {
$select = preg_replace("/DISTINCT/", "DISTINCT TOP(" . $end . ")", strtoupper($select), 1);
}
if ($isAll !== false) {
$select = preg_replace("/DISTINCT/", "DISTINCT TOP(" . $end . ")", strtoupper($select), 1);
}
}
}
if ($provider === "oracle") {
$limit = "";
$rowNumber = "";
if (strpos(strtoupper($where), "ROWNUM") === false) {
$rowNumber = " AND " . $start . " <= ROWNUM AND ROWNUM <= " . $end;
}
$where = empty($where) ? "WHERE " . $start . " <= ROWNUM AND ROWNUM <= " . $end : $where . $rowNumber;
}
});
} }
$dt = $this->getCacheQueryData($json->dbConnection, $sql, $json->type); $dt = $this->getCacheQueryData($json->dbConnection, $sql, $json->type);
foreach ($dt as $row) { foreach ($dt as $row) {

View File

@@ -7,7 +7,6 @@ use Illuminate\Support\Facades\Cache;
* class.pmLicenseManager.php * class.pmLicenseManager.php
* *
*/ */
class PmLicenseManager class PmLicenseManager
{ {
const CACHE_KEY = 'license'; const CACHE_KEY = 'license';
@@ -17,20 +16,13 @@ class PmLicenseManager
public function __construct($flagActivatePlugins = true) public function __construct($flagActivatePlugins = true)
{ {
$oServerConf = &ServerConf::getSingleton(); $oServerConf = &ServerConf::getSingleton();
$oServerConf->setProperty('LOGIN_NO_WS', true);
//to do: this files probably needs to be in core, since they are GPL2
//include_once (PATH_PLUGINS . 'enterprise' . PATH_SEP . 'classes' . PATH_SEP . 'class.license.lib.php');
//include_once (PATH_PLUGINS . 'enterprise' . PATH_SEP . 'classes' . PATH_SEP . 'class.license.app.php');
if ($oServerConf->getProperty('LOGIN_NO_WS') === null || $oServerConf->getProperty('LOGIN_NO_WS') === false) {
$oServerConf->setProperty('LOGIN_NO_WS', true);
}
//searching .dat files in workspace folder //searching .dat files in workspace folder
$server_array = $_SERVER; $server_array = $_SERVER;
$licfile = glob(PATH_DATA_SITE . "*.dat");
if (count($licfile) > 0 && is_file($licfile[0])) {
$oServerConf->setProperty('ACTIVE_LICENSE', array(SYS_SYS => ""));
}
$activeLicenseSetting = $oServerConf->getProperty('ACTIVE_LICENSE'); $activeLicenseSetting = $oServerConf->getProperty('ACTIVE_LICENSE');
@@ -38,7 +30,7 @@ class PmLicenseManager
$licenseFile = $activeLicenseSetting[SYS_SYS]; $licenseFile = $activeLicenseSetting[SYS_SYS];
} else { } else {
$activeLicense = $this->getActiveLicense(); $activeLicense = $this->getActiveLicense();
$oServerConf->setProperty('ACTIVE_LICENSE', array(SYS_SYS => $activeLicense ['LICENSE_PATH'])); $oServerConf->setProperty('ACTIVE_LICENSE', [SYS_SYS => $activeLicense['LICENSE_PATH']]);
$licenseFile = $activeLicense['LICENSE_PATH']; $licenseFile = $activeLicense['LICENSE_PATH'];
} }
@@ -46,45 +38,46 @@ class PmLicenseManager
$application->set_server_vars($server_array); $application->set_server_vars($server_array);
$application->DATE_STRING = 'Y-m-d H:i:s'; $application->DATE_STRING = 'Y-m-d H:i:s';
$results = $application->validate(); $results = $application->validate();
$validStatus = array( $validStatus = [
'OK', 'OK',
'EXPIRED', 'EXPIRED',
'TMINUS' 'TMINUS'
); ];
$this->result = $results['RESULT']; $this->result = $results['RESULT'];
$this->features = array(); $this->features = [];
$this->licensedfeatures = array(); $this->licensedfeatures = [];
$this->licensedfeaturesList = array(); $this->licensedfeaturesList = [];
if (in_array($this->result, $validStatus)) { if (in_array($this->result, $validStatus)) {
$this->serial="3ptta7Xko2prrptrZnSd356aqmPXvMrayNPFj6CLdaR1pWtrW6qPw9jV0OHjxrDGu8LVxtmSm9nP5kR23HRpdZWccpeui+bKkK°DoqCt2Kqgpq6Vg37s"; $this->serial = "3ptta7Xko2prrptrZnSd356aqmPXvMrayNPFj6CLdaR1pWtrW6qPw9jV0OHjxrDGu8LVxtmSm9nP5kR23HRpdZWccpeui+bKkK°DoqCt2Kqgpq6Vg37s";
$info['FIRST_NAME'] = $results['DATA']['FIRST_NAME']; $info = [];
$info['LAST_NAME'] = $results['DATA']['LAST_NAME']; $info['FIRST_NAME'] = $results['DATA']['FIRST_NAME'];
$info['LAST_NAME'] = $results['DATA']['LAST_NAME'];
$info['DOMAIN_WORKSPACE'] = $results['DATA']['DOMAIN_WORKSPACE']; $info['DOMAIN_WORKSPACE'] = $results['DATA']['DOMAIN_WORKSPACE'];
$this->date = $results ['DATE']; $this->date = $results ['DATE'];
$this->info = $info; $this->info = $info;
$this->type = $results ['DATA']['TYPE']; $this->type = $results ['DATA']['TYPE'];
$this->plan = isset($results ['DATA']['PLAN'])?$results ['DATA']['PLAN']:""; $this->plan = isset($results ['DATA']['PLAN']) ? $results ['DATA']['PLAN'] : "";
$this->id = $results ['ID']; $this->id = $results ['ID'];
$this->expireIn = $this->getExpireIn (); $this->expireIn = $this->getExpireIn();
$this->features = $this->result!='TMINUS'?isset($results ['DATA']['CUSTOMER_PLUGIN'])? $results ['DATA']['CUSTOMER_PLUGIN'] : $this->getActiveFeatures() : array(); $this->features = $this->result != 'TMINUS' ? isset($results ['DATA']['CUSTOMER_PLUGIN']) ? $results ['DATA']['CUSTOMER_PLUGIN'] : $this->getActiveFeatures() : [];
$this->licensedfeatures = $this->result != 'TMINUS' ? (isset($results ['DATA']['CUSTOMER_LICENSED_FEATURES']) && is_array($results ['DATA']['CUSTOMER_LICENSED_FEATURES'])) ? $results ['DATA']['CUSTOMER_LICENSED_FEATURES'] : array() : array(); $this->licensedfeatures = $this->result != 'TMINUS' ? (isset($results ['DATA']['CUSTOMER_LICENSED_FEATURES']) && is_array($results ['DATA']['CUSTOMER_LICENSED_FEATURES'])) ? $results ['DATA']['CUSTOMER_LICENSED_FEATURES'] : [] : [];
$this->licensedfeaturesList = isset($results ['DATA']['LICENSED_FEATURES_LIST'])? $results ['DATA']['LICENSED_FEATURES_LIST'] : null; $this->licensedfeaturesList = isset($results ['DATA']['LICENSED_FEATURES_LIST']) ? $results ['DATA']['LICENSED_FEATURES_LIST'] : null;
$this->status = $this->getCurrentLicenseStatus (); $this->status = $this->getCurrentLicenseStatus();
if (isset ( $results ['LIC'] )) { if (isset ($results ['LIC'])) {
$resultsRegister = $results['LIC']; $resultsRegister = $results['LIC'];
$this->server = $results['LIC']['SRV']; $this->server = $results['LIC']['SRV'];
$this->file = $results['LIC']['FILE']; $this->file = $results['LIC']['FILE'];
$this->workspace = isset($results['LIC']['WORKSPACE']) ? $results['LIC']['WORKSPACE'] : 'pmLicenseSrv'; $this->workspace = isset($results['LIC']['WORKSPACE']) ? $results['LIC']['WORKSPACE'] : 'pmLicenseSrv';
$this->licenseSerial = (isset($results['LIC']['SERIAL'])) ? $results['LIC']['SERIAL'] : ''; $this->licenseSerial = (isset($results['LIC']['SERIAL'])) ? $results['LIC']['SERIAL'] : '';
$this->supportStartDate = (isset($results['DATA']['SUPPORT_START_DATE'])) ? $results['DATA']['SUPPORT_START_DATE'] : ''; $this->supportStartDate = (isset($results['DATA']['SUPPORT_START_DATE'])) ? $results['DATA']['SUPPORT_START_DATE'] : '';
$this->supportEndDate = (isset($results['DATA']['SUPPORT_END_DATE'])) ? $results['DATA']['SUPPORT_END_DATE'] : ''; $this->supportEndDate = (isset($results['DATA']['SUPPORT_END_DATE'])) ? $results['DATA']['SUPPORT_END_DATE'] : '';
$this->supportStartDate = date("Y-m-d H:i:s", strtotime($this->supportStartDate)); $this->supportStartDate = date("Y-m-d H:i:s", strtotime($this->supportStartDate));
$this->supportEndDate = date("Y-m-d H:i:s", strtotime($this->supportEndDate)); $this->supportEndDate = date("Y-m-d H:i:s", strtotime($this->supportEndDate));
$conf = new Configurations(); $conf = new Configurations();
if ( defined('SYS_SYS') && $conf->exists("ENVIRONMENT_SETTINGS")) { if (defined('SYS_SYS') && $conf->exists("ENVIRONMENT_SETTINGS")) {
$this->supportStartDate = $conf->getSystemDate($this->supportStartDate); $this->supportStartDate = $conf->getSystemDate($this->supportStartDate);
$this->supportEndDate = $conf->getSystemDate($this->supportEndDate); $this->supportEndDate = $conf->getSystemDate($this->supportEndDate);
} else { } else {
@@ -92,22 +85,34 @@ class PmLicenseManager
$this->supportEndDate = G::getformatedDate($this->supportEndDate, 'M d, yyyy', SYS_LANG); $this->supportEndDate = G::getformatedDate($this->supportEndDate, 'M d, yyyy', SYS_LANG);
} }
} else { } else {
$resultsRegister=array(); $resultsRegister = [];
$resultsRegister['ID']=$results ['DATA'] ['DOMAIN_WORKSPACE']; $resultsRegister['ID'] = $results['DATA']['DOMAIN_WORKSPACE'];
$this->server = null; $this->server = null;
$this->file = null; $this->file = null;
} }
// The HUMAN attribute varies according to the timezone configured in the server, therefore it does not need
// to be considered in the comparison if the value was changed or not, it is only comparing with te "timestamp"
if (isset($results['DATE']['HUMAN'])) {
unset($results['DATE']['HUMAN']);
}
$resultsRegister['date'] = $results ['DATE']; $resultsRegister['date'] = $results ['DATE'];
$resultsRegister['info'] = $info; $resultsRegister['info'] = $info;
$resultsRegister['type'] = $results ['DATA'] ['TYPE']; $resultsRegister['type'] = $results ['DATA'] ['TYPE'];
if ($oServerConf->getProperty ( 'LICENSE_INFO')) { if ($oServerConf->getProperty('LICENSE_INFO')) {
$licInfoA = $oServerConf->getProperty ( 'LICENSE_INFO'); $licInfoA = $oServerConf->getProperty('LICENSE_INFO');
// The HUMAN attribute varies according to the timezone configured in the server, therefore it does not need
// to be considered in the comparison if the value was changed or not, it is only comparing with te "timestamp"
if (isset($licInfoA[SYS_SYS]['date']['HUMAN'])) {
unset($licInfoA[SYS_SYS]['date']['HUMAN']);
}
} else { } else {
$licInfoA = array(); $licInfoA = [];
}
if (empty($licInfoA[SYS_SYS]) || ($licInfoA[SYS_SYS] != $resultsRegister)) {
$licInfoA[SYS_SYS] = $resultsRegister;
$oServerConf->setProperty('LICENSE_INFO', $licInfoA);
} }
$licInfoA[SYS_SYS]=$resultsRegister;
$oServerConf->setProperty ( 'LICENSE_INFO', $licInfoA );
} }
if ($flagActivatePlugins) { if ($flagActivatePlugins) {
@@ -125,23 +130,23 @@ class PmLicenseManager
public function serializeInstance() public function serializeInstance()
{ {
return serialize ( self::$instance ); return serialize(self::$instance);
} }
public function activateFeatures() public function activateFeatures()
{ {
//Get a list of all Enterprise plugins and active/inactive them //Get a list of all Enterprise plugins and active/inactive them
if (file_exists ( PATH_PLUGINS . 'enterprise/data/default' )) { if (file_exists(PATH_PLUGINS . 'enterprise/data/default')) {
if ($this->result=="OK") { if ($this->result == "OK") {
//Disable //Disable
if (file_exists ( PATH_PLUGINS . 'enterprise/data/data' )) { if (file_exists(PATH_PLUGINS . 'enterprise/data/data')) {
$oPluginRegistry = PluginRegistry::loadSingleton(); $oPluginRegistry = PluginRegistry::loadSingleton();
$aPlugins = unserialize ( trim ( file_get_contents ( PATH_PLUGINS . 'enterprise/data/data' ) ) ); $aPlugins = unserialize(trim(file_get_contents(PATH_PLUGINS . 'enterprise/data/data')));
foreach ($aPlugins as $aPlugin) { foreach ($aPlugins as $aPlugin) {
$sClassName = substr ( $aPlugin ['sFilename'], 0, strpos ( $aPlugin ['sFilename'], '-' ) ); $sClassName = substr($aPlugin ['sFilename'], 0, strpos($aPlugin ['sFilename'], '-'));
require_once PATH_PLUGINS . $sClassName . '.php'; require_once PATH_PLUGINS . $sClassName . '.php';
$oDetails = $oPluginRegistry->getPluginDetails ( $sClassName . '.php' ); $oDetails = $oPluginRegistry->getPluginDetails($sClassName . '.php');
$oPluginRegistry->disablePlugin ( $oDetails->getNamespace() ); $oPluginRegistry->disablePlugin($oDetails->getNamespace());
$oPluginRegistry->savePlugin($oDetails->getNamespace()); $oPluginRegistry->savePlugin($oDetails->getNamespace());
} }
unlink(PATH_PLUGINS . 'enterprise/data/data'); unlink(PATH_PLUGINS . 'enterprise/data/data');
@@ -154,7 +159,7 @@ class PmLicenseManager
foreach ($aPlugins as $aPlugin) { foreach ($aPlugins as $aPlugin) {
if ($aPlugin ["bActive"]) { if ($aPlugin ["bActive"]) {
$sClassName = substr($aPlugin["sFilename"], 0, strpos($aPlugin["sFilename"], "-")); $sClassName = substr($aPlugin["sFilename"], 0, strpos($aPlugin["sFilename"], "-"));
require_once (PATH_PLUGINS . $sClassName . ".php"); require_once(PATH_PLUGINS . $sClassName . ".php");
$oDetails = $oPluginRegistry->getPluginDetails($sClassName . ".php"); $oDetails = $oPluginRegistry->getPluginDetails($sClassName . ".php");
$oPluginRegistry->enablePlugin($oDetails->getNamespace()); $oPluginRegistry->enablePlugin($oDetails->getNamespace());
$oPluginRegistry->savePlugin($oDetails->getNamespace()); $oPluginRegistry->savePlugin($oDetails->getNamespace());
@@ -162,56 +167,57 @@ class PmLicenseManager
} }
if (file_exists(PATH_DATA_SITE . "ee")) { if (file_exists(PATH_DATA_SITE . "ee")) {
$aPlugins = unserialize ( trim ( file_get_contents ( PATH_DATA_SITE.'ee' ) ) ); $aPlugins = unserialize(trim(file_get_contents(PATH_DATA_SITE . 'ee')));
$aDenied=array(); $aDenied = [];
foreach ($aPlugins as $aPlugin) { foreach ($aPlugins as $aPlugin) {
$sClassName = substr ( $aPlugin ['sFilename'], 0, strpos ( $aPlugin ['sFilename'], '-' ) ); $sClassName = substr($aPlugin ['sFilename'], 0, strpos($aPlugin ['sFilename'], '-'));
if (!(in_array($sClassName,$this->features))) { if (!(in_array($sClassName, $this->features))) {
if (file_exists(PATH_PLUGINS . $sClassName . '.php')) { if (file_exists(PATH_PLUGINS . $sClassName . '.php')) {
require_once PATH_PLUGINS . $sClassName . '.php'; require_once PATH_PLUGINS . $sClassName . '.php';
$oDetails = $oPluginRegistry->getPluginDetails ( $sClassName . '.php' ); $oDetails = $oPluginRegistry->getPluginDetails($sClassName . '.php');
$oPluginRegistry->disablePlugin($oDetails->getNamespace()); $oPluginRegistry->disablePlugin($oDetails->getNamespace());
$oPluginRegistry->savePlugin($oDetails->getNamespace()); $oPluginRegistry->savePlugin($oDetails->getNamespace());
$aDenied[]=$oDetails->getNamespace(); $aDenied[] = $oDetails->getNamespace();
} }
} }
} }
if (!(empty($aDenied))) { if (!(empty($aDenied))) {
if ((SYS_COLLECTION=="enterprise")&&(SYS_TARGET=="pluginsList")) { if ((SYS_COLLECTION == "enterprise") && (SYS_TARGET == "pluginsList")) {
G::SendMessageText("The following plugins were restricted due to your enterprise license: ".implode(", ",$aDenied),"INFO"); G::SendMessageText("The following plugins were restricted due to your enterprise license: " . implode(", ",
$aDenied), "INFO");
} }
} }
} }
} else { } else {
//Disable //Disable
$oPluginRegistry = PluginRegistry::loadSingleton(); $oPluginRegistry = PluginRegistry::loadSingleton();
$aPlugins = unserialize ( trim ( file_get_contents ( PATH_PLUGINS . 'enterprise/data/default' ) ) ); $aPlugins = unserialize(trim(file_get_contents(PATH_PLUGINS . 'enterprise/data/default')));
foreach ($aPlugins as $aPlugin) { foreach ($aPlugins as $aPlugin) {
$sClassName = substr ( $aPlugin ['sFilename'], 0, strpos ( $aPlugin ['sFilename'], '-' ) ); $sClassName = substr($aPlugin ['sFilename'], 0, strpos($aPlugin ['sFilename'], '-'));
//To avoid self disable //To avoid self disable
if (($sClassName != "pmLicenseManager") && ($sClassName != "pmTrial") && ($sClassName != "enterprise")) { if (($sClassName != "pmLicenseManager") && ($sClassName != "pmTrial") && ($sClassName != "enterprise")) {
require_once PATH_PLUGINS . $sClassName . '.php'; require_once PATH_PLUGINS . $sClassName . '.php';
$oDetails = $oPluginRegistry->getPluginDetails ( $sClassName . '.php' ); $oDetails = $oPluginRegistry->getPluginDetails($sClassName . '.php');
$oPluginRegistry->disablePlugin($oDetails->getNamespace()); $oPluginRegistry->disablePlugin($oDetails->getNamespace());
} else { } else {
//Enable default and required plugins //Enable default and required plugins
require_once PATH_PLUGINS . $sClassName . '.php'; require_once PATH_PLUGINS . $sClassName . '.php';
$oDetails = $oPluginRegistry->getPluginDetails ( $sClassName . '.php' ); $oDetails = $oPluginRegistry->getPluginDetails($sClassName . '.php');
$oPluginRegistry->enablePlugin($oDetails->getNamespace()); $oPluginRegistry->enablePlugin($oDetails->getNamespace());
} }
$oPluginRegistry->savePlugin($oDetails->getNamespace()); $oPluginRegistry->savePlugin($oDetails->getNamespace());
} }
if (file_exists(PATH_DATA_SITE.'ee')) { if (file_exists(PATH_DATA_SITE . 'ee')) {
$aPlugins = unserialize ( trim ( file_get_contents ( PATH_DATA_SITE.'ee' ) ) ); $aPlugins = unserialize(trim(file_get_contents(PATH_DATA_SITE . 'ee')));
foreach ($aPlugins as $aPlugin) { foreach ($aPlugins as $aPlugin) {
$sClassName = substr ( $aPlugin ['sFilename'], 0, strpos ( $aPlugin ['sFilename'], '-' ) ); $sClassName = substr($aPlugin ['sFilename'], 0, strpos($aPlugin ['sFilename'], '-'));
if ( strlen($sClassName) > 0 ) { if (strlen($sClassName) > 0) {
if (!class_exists($sClassName)) { if (!class_exists($sClassName)) {
require_once PATH_PLUGINS . $sClassName . '.php'; require_once PATH_PLUGINS . $sClassName . '.php';
} }
$oDetails = $oPluginRegistry->getPluginDetails ( $sClassName . '.php' ); $oDetails = $oPluginRegistry->getPluginDetails($sClassName . '.php');
if ($oDetails) { if ($oDetails) {
$oPluginRegistry->disablePlugin($oDetails->getNamespace()); $oPluginRegistry->disablePlugin($oDetails->getNamespace());
$oPluginRegistry->savePlugin($oDetails->getNamespace()); $oPluginRegistry->savePlugin($oDetails->getNamespace());
@@ -225,7 +231,7 @@ class PmLicenseManager
public function getCurrentLicenseStatus() public function getCurrentLicenseStatus()
{ {
$result = array (); $result = [];
switch ($this->result) { switch ($this->result) {
case 'OK': case 'OK':
$result ['result'] = 'ok'; $result ['result'] = 'ok';
@@ -233,8 +239,8 @@ class PmLicenseManager
break; break;
case 'TMINUS': case 'TMINUS':
$result ['result'] = 'tminus'; $result ['result'] = 'tminus';
$startDateA=explode(" ",$this->date['HUMAN']['START']); $startDateA = explode(" ", $this->date['HUMAN']['START']);
$result ['message'] = "License will be active on ".$startDateA[0]; $result ['message'] = "License will be active on " . $startDateA[0];
break; break;
case 'EXPIRED': case 'EXPIRED':
$result ['result'] = 'expired'; $result ['result'] = 'expired';
@@ -255,7 +261,7 @@ class PmLicenseManager
case 'EMPTY': case 'EMPTY':
$result ['result'] = 'empty'; $result ['result'] = 'empty';
$result ['message'] = "Empty License"; $result ['message'] = "Empty License";
if (defined ( 'write_error' )) { if (defined('write_error')) {
$result ['message'] = "Write error" . $result ['message']; $result ['message'] = "Write error" . $result ['message'];
} }
break; break;
@@ -270,17 +276,17 @@ class PmLicenseManager
if (self::$instance == null) { if (self::$instance == null) {
self::$instance = new PluginRegistry(); self::$instance = new PluginRegistry();
} }
$instance = unserialize ( $serialized ); $instance = unserialize($serialized);
self::$instance = $instance; self::$instance = $instance;
} }
public function getExpireIn() public function getExpireIn()
{ {
$status = $this->getCurrentLicenseStatus (); $status = $this->getCurrentLicenseStatus();
$expireIn = 0; $expireIn = 0;
if ($status ['result'] == 'ok') { if ($status ['result'] == 'ok') {
if ($this->date ['END']!="NEVER") { if ($this->date ['END'] != "NEVER") {
$expireIn = ceil ( ($this->date ['END'] - time ()) / 60 / 60 / 24 ); $expireIn = ceil(($this->date ['END'] - time()) / 60 / 60 / 24);
} else { } else {
$expireIn = "NEVER"; $expireIn = "NEVER";
} }
@@ -290,17 +296,17 @@ class PmLicenseManager
public function getLicenseInfo() public function getLicenseInfo()
{ {
$validStatus = array ( $validStatus = [
'ok', 'ok',
'expired' 'expired'
); ];
$status = $this->getCurrentLicenseStatus (); $status = $this->getCurrentLicenseStatus();
$infoText = ""; $infoText = "";
if (in_array ( $status ['result'], $validStatus )) { if (in_array($status ['result'], $validStatus)) {
$start = explode ( " ", $this->date ['HUMAN'] ['START'] ); $start = explode(" ", $this->date ['HUMAN'] ['START']);
$end = explode ( " ", $this->date ['HUMAN'] ['END'] ); $end = explode(" ", $this->date ['HUMAN'] ['END']);
$infoText .= "<b>" . "Issued to" . ":</b> " . $this->info ['FIRST_NAME'] . " " . $this->info ['LAST_NAME'] . "<br>"; $infoText .= "<b>" . "Issued to" . ":</b> " . $this->info ['FIRST_NAME'] . " " . $this->info ['LAST_NAME'] . "<br>";
$infoText .= "<b>" . G::LoadTranslation('ID_WORKSPACE') .":</b> " . $this->info ['DOMAIN_WORKSPACE'] . "<br>"; $infoText .= "<b>" . G::LoadTranslation('ID_WORKSPACE') . ":</b> " . $this->info ['DOMAIN_WORKSPACE'] . "<br>";
$infoText .= "<i>" . G::LoadTranslation('ID_VALID_FROM') . " " . $start [0] . " " . G::LoadTranslation('ID_TO') . " " . $end [0] . "</i>"; $infoText .= "<i>" . G::LoadTranslation('ID_VALID_FROM') . " " . $start [0] . " " . G::LoadTranslation('ID_TO') . " " . $end [0] . "</i>";
} }
if ($status ['message'] != "") { if ($status ['message'] != "") {
@@ -318,14 +324,14 @@ class PmLicenseManager
if ($this->getExpireIn() != "NEVER" && ((int)$this->getExpireIn() <= 30) && ((int)$this->getExpireIn() > 0)) { if ($this->getExpireIn() != "NEVER" && ((int)$this->getExpireIn() <= 30) && ((int)$this->getExpireIn() > 0)) {
$infoO = $this->getLicenseInfo(); $infoO = $this->getLicenseInfo();
$infoText = $infoO['infoText']; $infoText = $infoO['infoText'];
$js = (EnterpriseUtils::skinIsUx() == 1)? "Ext.MessageBox.show({title: '', msg: '$infoText', buttons: Ext.MessageBox.OK, icon: Ext.MessageBox.INFO});" : "msgBox('$infoText');"; $js = (EnterpriseUtils::skinIsUx() == 1) ? "Ext.MessageBox.show({title: '', msg: '$infoText', buttons: Ext.MessageBox.OK, icon: Ext.MessageBox.INFO});" : "msgBox('$infoText');";
$linkText = $linkText . "<span style=\"color: red;\">" . G::LoadTranslation('ID_EXPIRES_IN') . " " . $this->getExpireIn () . " " . G::LoadTranslation('ID_DAYS') . "</span>"; $linkText = $linkText . "<span style=\"color: red;\">" . G::LoadTranslation('ID_EXPIRES_IN') . " " . $this->getExpireIn() . " " . G::LoadTranslation('ID_DAYS') . "</span>";
} else { } else {
if ($this->getExpireIn() != "NEVER" && (int)$this->getExpireIn() <= 0) { if ($this->getExpireIn() != "NEVER" && (int)$this->getExpireIn() <= 0) {
$infoO = $this->getLicenseInfo(); $infoO = $this->getLicenseInfo();
$infoText = $infoO['infoText']; $infoText = $infoO['infoText'];
$infoLabel = $infoO['infoLabel']; $infoLabel = $infoO['infoLabel'];
$js = (EnterpriseUtils::skinIsUx() == 1)? "Ext.MessageBox.show({title: '', msg: '$infoText', buttons: Ext.MessageBox.OK, icon: Ext.MessageBox.INFO});" : "msgBox('$infoText');"; $js = (EnterpriseUtils::skinIsUx() == 1) ? "Ext.MessageBox.show({title: '', msg: '$infoText', buttons: Ext.MessageBox.OK, icon: Ext.MessageBox.INFO});" : "msgBox('$infoText');";
$linkText = $linkText . "<a href=\"javascript:;\" onclick=\"$js return (false);\"><span style=\"color: red;\">" . $infoLabel . "</span></a>"; $linkText = $linkText . "<a href=\"javascript:;\" onclick=\"$js return (false);\"><span style=\"color: red;\">" . $infoLabel . "</span></a>";
} }
} }
@@ -339,16 +345,16 @@ class PmLicenseManager
if (EnterpriseUtils::skinIsUx() == 1) { if (EnterpriseUtils::skinIsUx() == 1) {
$aOnclick = "onclick=\"Ext.ComponentMgr.get('mainTabPanel').setActiveTab('pm-option-setup'); Ext.ComponentMgr.get('pm-option-setup').setLocation(Ext.ComponentMgr.get('pm-option-setup').defaultSrc + 's=PMENTERPRISE', true); return (false);\""; $aOnclick = "onclick=\"Ext.ComponentMgr.get('mainTabPanel').setActiveTab('pm-option-setup'); Ext.ComponentMgr.get('pm-option-setup').setLocation(Ext.ComponentMgr.get('pm-option-setup').defaultSrc + 's=PMENTERPRISE', true); return (false);\"";
} }
$linkText = $linkText . (($linkText != null)? " | " : null) . "<a href=\"javascript:;\" $aOnclick style=\"color: #008000;\">" . G::LoadTranslation('ID_UPGRADE_SYSTEM') . "</a>"; $linkText = $linkText . (($linkText != null) ? " | " : null) . "<a href=\"javascript:;\" $aOnclick style=\"color: #008000;\">" . G::LoadTranslation('ID_UPGRADE_SYSTEM') . "</a>";
} }
$linkText = ($linkText != null)? $linkText . ((EnterpriseUtils::skinIsUx() == 1)? null : " |") : null; $linkText = ($linkText != null) ? $linkText . ((EnterpriseUtils::skinIsUx() == 1) ? null : " |") : null;
return ($linkText); return ($linkText);
} }
public function validateLicense($path) public function validateLicense($path)
{ {
$application = new license_application ( $path, false, true, false, true, true ); $application = new license_application ($path, false, true, false, true, true);
$results = $application->validate ( false, false, "", "", "80", true ); $results = $application->validate(false, false, "", "", "80", true);
if ($results ['RESULT'] != 'OK') { if ($results ['RESULT'] != 'OK') {
return true; return true;
@@ -359,9 +365,9 @@ class PmLicenseManager
public function installLicense($path, $redirect = true, $includeExpired = true) public function installLicense($path, $redirect = true, $includeExpired = true)
{ {
$application = new license_application ( $path, false, true, false, true, true ); $application = new license_application ($path, false, true, false, true, true);
$results = $application->validate ( false, false, "", "", "80", true ); $results = $application->validate(false, false, "", "", "80", true);
//if the result is ok then it is saved into DB //if the result is ok then it is saved into DB
$res = $results ['RESULT']; $res = $results ['RESULT'];
@@ -373,21 +379,22 @@ class PmLicenseManager
return false; return false;
} }
} }
if (( $res != 'OK') && ($res != 'EXPIRED' ) && ($res != 'TMINUS') ) { if (($res != 'OK') && ($res != 'EXPIRED') && ($res != 'TMINUS')) {
G::SendTemporalMessage ( 'ID_ISNT_LICENSE', 'tmp-info', 'labels' ); G::SendTemporalMessage('ID_ISNT_LICENSE', 'tmp-info', 'labels');
return false; return false;
} else { } else {
$oServerConf = & ServerConf::getSingleton (); $oServerConf = &ServerConf::getSingleton();
$oServerConf->setProperty ( 'ACTIVE_LICENSE',array(SYS_SYS => $path)); $oServerConf->setProperty('ACTIVE_LICENSE', [SYS_SYS => $path]);
$this->saveDataLicense( $results, $path, $redirect ); $this->saveDataLicense($results, $path, $redirect);
if ($redirect) { if ($redirect) {
G::Header ( 'location: ../enterprise/addonsStore' ); G::Header('location: ../enterprise/addonsStore');
} else { } else {
return true; return true;
} }
} }
} }
/* /*
get Active License get Active License
*/ */
@@ -395,8 +402,8 @@ class PmLicenseManager
{ {
//get license from database, table LICENSE_MANAGER //get license from database, table LICENSE_MANAGER
try { try {
$aRow = array(); $aRow = [];
require_once ("classes/model/LicenseManager.php"); require_once("classes/model/LicenseManager.php");
$oCriteria = new Criteria('workflow'); $oCriteria = new Criteria('workflow');
$oCriteria->addSelectColumn(LicenseManagerPeer::LICENSE_USER); $oCriteria->addSelectColumn(LicenseManagerPeer::LICENSE_USER);
$oCriteria->addSelectColumn(LicenseManagerPeer::LICENSE_START); $oCriteria->addSelectColumn(LicenseManagerPeer::LICENSE_START);
@@ -408,27 +415,27 @@ class PmLicenseManager
$oDataset->next(); $oDataset->next();
$aRow = $oDataset->getRow(); $aRow = $oDataset->getRow();
} catch (Exception $e) { } catch (Exception $e) {
G::pr ($e); G::pr($e);
} }
return $aRow; return $aRow;
} }
public function lookForStatusLicense() public function lookForStatusLicense()
{ {
require_once ("classes/model/LicenseManager.php"); require_once("classes/model/LicenseManager.php");
//obtening info in a row that has ACTIVE status //obtening info in a row that has ACTIVE status
$oCtia = new Criteria ( 'workflow' ); $oCtia = new Criteria ('workflow');
$oCtia->add ( LicenseManagerPeer::LICENSE_STATUS, 'ACTIVE' ); $oCtia->add(LicenseManagerPeer::LICENSE_STATUS, 'ACTIVE');
$oDataset = LicenseManagerPeer::doSelectRS ( $oCtia ); $oDataset = LicenseManagerPeer::doSelectRS($oCtia);
$oDataset->next (); $oDataset->next();
$aRow = $oDataset->getRow (); $aRow = $oDataset->getRow();
$oCtiaA = new Criteria ( 'workflow' ); $oCtiaA = new Criteria ('workflow');
$oCtiaA->add ( LicenseManagerPeer::LICENSE_UID, $aRow [0] ); $oCtiaA->add(LicenseManagerPeer::LICENSE_UID, $aRow [0]);
$oCtiaB = new Criteria ( 'workflow' ); $oCtiaB = new Criteria ('workflow');
$oCtiaB->add ( LicenseManagerPeer::LICENSE_STATUS, 'INACTIVE' ); $oCtiaB->add(LicenseManagerPeer::LICENSE_STATUS, 'INACTIVE');
BasePeer::doUpdate ( $oCtiaA, $oCtiaB, Propel::getConnection ( 'workflow' ) ); BasePeer::doUpdate($oCtiaA, $oCtiaB, Propel::getConnection('workflow'));
return 'ACTIVE'; return 'ACTIVE';
} }
@@ -436,11 +443,11 @@ class PmLicenseManager
{ {
try { try {
//getting info about file //getting info about file
$LicenseUid = G::generateUniqueID (); $LicenseUid = G::generateUniqueID();
$LicenseUser = $results ['DATA'] ['FIRST_NAME'] . ' ' . $results ['DATA'] ['LAST_NAME']; $LicenseUser = $results ['DATA'] ['FIRST_NAME'] . ' ' . $results ['DATA'] ['LAST_NAME'];
$LicenseStart = $results ['DATE'] ['START']; $LicenseStart = $results ['DATE'] ['START'];
$LicenseEnd = $results ['DATE'] ['END']; $LicenseEnd = $results ['DATE'] ['END'];
$LicenseSpan = $results ['DATE'] ['SPAN']; $LicenseSpan = $results ['DATE'] ['SPAN'];
$LicenseStatus = $this->lookForStatusLicense(); //we're looking for a status ACTIVE $LicenseStatus = $this->lookForStatusLicense(); //we're looking for a status ACTIVE
//getting the content from file //getting the content from file
@@ -448,35 +455,35 @@ class PmLicenseManager
$filter = new InputFilter(); $filter = new InputFilter();
$path = $filter->xssFilterHard($path, 'path'); $path = $filter->xssFilterHard($path, 'path');
$handle = fopen ( $path, "r" ); $handle = fopen($path, "r");
$contents = fread ( $handle, filesize ( $path ) ); $contents = fread($handle, filesize($path));
fclose ( $handle ); fclose($handle);
$LicenseData = $contents; $LicenseData = $contents;
$LicensePath = $path; $LicensePath = $path;
$LicenseWorkspace = isset($results['DATA']['DOMAIN_WORKSPACE']) ? $results['DATA']['DOMAIN_WORKSPACE'] : ''; $LicenseWorkspace = isset($results['DATA']['DOMAIN_WORKSPACE']) ? $results['DATA']['DOMAIN_WORKSPACE'] : '';
$LicenseType = $results['DATA']['TYPE']; $LicenseType = $results['DATA']['TYPE'];
require_once ("classes/model/LicenseManager.php"); require_once("classes/model/LicenseManager.php");
//if exists the row in the database propel will update it, otherwise will insert. //if exists the row in the database propel will update it, otherwise will insert.
$tr = LicenseManagerPeer::retrieveByPK ( $LicenseUid ); $tr = LicenseManagerPeer::retrieveByPK($LicenseUid);
if (! (is_object ( $tr ) && get_class ( $tr ) == 'LicenseManager')) { if (!(is_object($tr) && get_class($tr) == 'LicenseManager')) {
$tr = new LicenseManager (); $tr = new LicenseManager ();
} }
$tr->setLicenseUid ( $LicenseUid ); $tr->setLicenseUid($LicenseUid);
$tr->setLicenseUser ( $LicenseUser ); $tr->setLicenseUser($LicenseUser);
$tr->setLicenseStart ( $LicenseStart ); $tr->setLicenseStart($LicenseStart);
$tr->setLicenseEnd ( $LicenseEnd ); $tr->setLicenseEnd($LicenseEnd);
$tr->setLicenseSpan ( $LicenseSpan ); $tr->setLicenseSpan($LicenseSpan);
$tr->setLicenseStatus ( $LicenseStatus ); $tr->setLicenseStatus($LicenseStatus);
$tr->setLicenseData ( $LicenseData ); $tr->setLicenseData($LicenseData);
$tr->setLicensePath ( $LicensePath ); $tr->setLicensePath($LicensePath);
$tr->setLicenseWorkspace ( $LicenseWorkspace ); $tr->setLicenseWorkspace($LicenseWorkspace);
$tr->setLicenseType ( $LicenseType ); $tr->setLicenseType($LicenseType);
$res = $tr->save (); $res = $tr->save();
Cache::forget(PmLicenseManager::CACHE_KEY . '.' . SYS_SYS); Cache::forget(PmLicenseManager::CACHE_KEY . '.' . SYS_SYS);
} catch ( Exception $e ) { } catch (Exception $e) {
G::pr($e); G::pr($e);
} }
} }
@@ -484,28 +491,28 @@ class PmLicenseManager
public function getResultQry($sNameTable, $sfield, $sCondition) public function getResultQry($sNameTable, $sfield, $sCondition)
{ {
try { try {
require_once ("classes/model/LicenseManager.php"); require_once("classes/model/LicenseManager.php");
$oCriteria = new Criteria ( 'workflow' ); $oCriteria = new Criteria ('workflow');
$oCriteria->addSelectColumn ( LicenseManagerPeer::LICENSE_USER ); $oCriteria->addSelectColumn(LicenseManagerPeer::LICENSE_USER);
$oCriteria->addSelectColumn ( LicenseManagerPeer::LICENSE_START ); $oCriteria->addSelectColumn(LicenseManagerPeer::LICENSE_START);
$oCriteria->addSelectColumn ( LicenseManagerPeer::LICENSE_PATH ); $oCriteria->addSelectColumn(LicenseManagerPeer::LICENSE_PATH);
$oCriteria->addSelectColumn ( LicenseManagerPeer::LICENSE_DATA ); $oCriteria->addSelectColumn(LicenseManagerPeer::LICENSE_DATA);
$oCriteria->add ( LicenseManagerPeer::LICENSE_STATUS, 'ACTIVE' ); $oCriteria->add(LicenseManagerPeer::LICENSE_STATUS, 'ACTIVE');
$oDataset = LicenseManagerPeer::doSelectRS ( $oCriteria ); $oDataset = LicenseManagerPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next (); $oDataset->next();
$aRow = $oDataset->getRow (); $aRow = $oDataset->getRow();
} catch (Exception $e) { } catch (Exception $e) {
G::pr ( $e ); G::pr($e);
$aRow = array (); $aRow = [];
} }
return $aRow; return $aRow;
} }
public function getActiveFeatures() public function getActiveFeatures()
{ {
if (file_exists ( PATH_PLUGINS . 'enterprise/data/default' )) { if (file_exists(PATH_PLUGINS . 'enterprise/data/default')) {
return array(); return [];
} }
return unserialize(G::decrypt($this->serial, file_get_contents(PATH_PLUGINS . 'enterprise/data/default'))); return unserialize(G::decrypt($this->serial, file_get_contents(PATH_PLUGINS . 'enterprise/data/default')));
} }

View File

@@ -293,10 +293,6 @@ try {
unset($_SESSION['FAILED_LOGINS']); unset($_SESSION['FAILED_LOGINS']);
// increment logins in heartbeat
$oServerConf =& ServerConf::getSingleton();
$oServerConf->sucessfulLogin();
// Assign the uid of user to userloggedobj // Assign the uid of user to userloggedobj
$RBAC->loadUserRolePermission($RBAC->sSystem, $uid); $RBAC->loadUserRolePermission($RBAC->sSystem, $uid);
$res = $RBAC->userCanAccess('PM_LOGIN'); $res = $RBAC->userCanAccess('PM_LOGIN');
@@ -324,15 +320,6 @@ try {
$weblog->create($aLog); $weblog->create($aLog);
/**end log**/ /**end log**/
//************** background processes, here we are putting some back office routines **********
$heartBeatNWIDate = $oServerConf->getHeartbeatProperty('HB_NEXT_GWI_DATE','HEART_BEAT_CONF');
if (is_null($heartBeatNWIDate)) {
$heartBeatNWIDate = time();
}
if (time() >= $heartBeatNWIDate) {
$oServerConf->setHeartbeatProperty('HB_NEXT_GWI_DATE', strtotime('+1 day'), 'HEART_BEAT_CONF');
}
//**** defining and saving server info, this file has the values of the global array $_SERVER **** //**** defining and saving server info, this file has the values of the global array $_SERVER ****
//this file is useful for command line environment (no Browser), I mean for triggers, crons and other executed over command line //this file is useful for command line environment (no Browser), I mean for triggers, crons and other executed over command line

View File

@@ -1,128 +1,101 @@
<?php <?php
/**
* language_Ajax.php
*
* ProcessMaker Open Source Edition
* Copyright (C) 2004 - 2008 Colosa Inc.23
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
*/
try { try {
$filter = new InputFilter(); $filter = new InputFilter();
$_POST = $filter->xssFilterHard($_POST); $_POST = $filter->xssFilterHard($_POST);
if (isset( $_POST['form'] )) { if (isset($_POST['form'])) {
$_POST = $_POST['form']; $_POST = $_POST['form'];
} }
$_POST['function'] = get_ajax_value( 'function' ); $_POST['function'] = get_ajax_value('function');
$_POST['function'] = $filter->xssFilterHard($_POST['function']); $_POST['function'] = $filter->xssFilterHard($_POST['function']);
switch ($_POST['function']) { switch ($_POST['function']) {
case 'savePredetermined': case 'savePredetermined':
$tranlationsList = Translation::getTranslationEnvironments(); $tranlationsList = Translation::getTranslationEnvironments();
g::pr( $tranlationsList ); G::pr($tranlationsList);
die(); if (isset($meta['LAN_ID']) && $meta['LAN_ID'] == $_POST['lang']) {
if (isset( $meta['LAN_ID'] ) && $meta['LAN_ID'] == $_POST['lang']) {
echo 'The Setting was saved successfully!'; echo 'The Setting was saved successfully!';
} else { } else {
echo 'Some error occured while the setting was being save, try later please.'; echo 'Some error occured while the setting was being save, try later please.';
} }
break; break;
case 'languagesList': case 'languagesList':
$isoCountry = new IsoCountry(); $isoCountry = new IsoCountry();
$translationRow = new Translation(); $translationRow = new Translation();
$response = new stdClass(); $response = new stdClass();
$translationsEnvList = $translationRow->getTranslationEnvironments(); $translationsEnvList = $translationRow->getTranslationEnvironments();
//print_r($translationsEnvList); die;
$i = 0; $i = 0;
foreach ($translationsEnvList as $locale => $translationRow) { foreach ($translationsEnvList as $locale => $translationRow) {
$countryId = $translationRow['IC_UID'];
$COUNTRY_ID = $translationRow['IC_UID']; if ($countryId != '') {
if ($COUNTRY_ID != '') { $isoCountryRecord = $isoCountry->findById(strtoupper($countryId));
$isoCountryRecord = $isoCountry->findById( strtoupper( $COUNTRY_ID ) ); $flag = strtolower($isoCountryRecord['IC_UID']);
$flag = strtolower( $isoCountryRecord['IC_UID'] );
$countryName = $translationRow['HEADERS']['X-Poedit-Country']; $countryName = $translationRow['HEADERS']['X-Poedit-Country'];
} else { } else {
$flag = 'international'; $flag = 'international';
$countryName = G::LoadTranslation( 'ID_INTERNATIONAL' ); $countryName = G::LoadTranslation('ID_INTERNATIONAL');
} }
$conf = new Configurations(); $conf = new Configurations();
$confCasesList = $conf->getConfiguration( 'casesList', 'todo' ); $confCasesList = $conf->getConfiguration('casesList', 'todo');
//echo date($confCasesList['dateformat'], '2010-01-01');
if (isset($confCasesList['dateformat'])) {
if (isset( $confCasesList['dateformat'] )) { $datetime = explode(' ', $translationRow['DATE']);
$datetime = explode( ' ', $translationRow['DATE'] ); $date = explode('-', $datetime[0]);
if (count($datetime) == 2) {
$date = explode( '-', $datetime[0] ); $time = explode(':', $datetime[1]);
if (count( $datetime ) == 2)
$time = explode( ':', $datetime[1] );
if (count( $date ) == 3) {
if (count( $time ) >= 2) {
$DATE = date( $confCasesList['dateformat'], mktime( $time[0], $time[1], 0, $date[1], $date[2], $date[0] ) );
} else {
$DATE = date( $confCasesList['dateformat'], mktime( 0, 0, 0, $date[1], $date[2], $date[0] ) );
}
} else {
$DATE = $translationRow['DATE'];
} }
$datetime = explode( ' ', $translationRow['HEADERS']['PO-Revision-Date'] ); if (count($date) == 3) {
if (count($time) >= 2) {
$date = explode( '-', $datetime[0] ); $dateFormat = date($confCasesList['dateformat'],
if (count( $datetime ) == 2) mktime($time[0], $time[1], 0, $date[1], $date[2], $date[0]));
$time = explode( ':', $datetime[1] );
if (count( $date ) == 3) {
if (count( $time ) >= 2) {
$REV_DATE = date( $confCasesList['dateformat'], mktime( $time[0], substr( $time[1], 0, 2 ), 0, $date[1], $date[2], $date[0] ) );
} else { } else {
$REV_DATE = date( $confCasesList['dateformat'], mktime( 0, 0, 0, $date[1], $date[2], $date[0] ) ); $dateFormat = date($confCasesList['dateformat'], mktime(0, 0, 0, $date[1], $date[2], $date[0]));
} }
} else { } else {
$REV_DATE = $translationRow['HEADERS']['PO-Revision-Date']; $dateFormat = $translationRow['DATE'];
}
$datetime = explode(' ', $translationRow['HEADERS']['PO-Revision-Date']);
$date = explode('-', $datetime[0]);
if (count($datetime) == 2) {
$time = explode(':', $datetime[1]);
}
if (count($date) == 3) {
if (count($time) >= 2) {
$revDate = date($confCasesList['dateformat'],
mktime($time[0], substr($time[1], 0, 2), 0, $date[1], $date[2], $date[0]));
} else {
$revDate = date($confCasesList['dateformat'],
mktime(0, 0, 0, $date[1], $date[2], $date[0]));
}
} else {
$revDate = $translationRow['HEADERS']['PO-Revision-Date'];
} }
} else { } else {
$DATE = $translationRow['DATE']; $dateFormat = $translationRow['DATE'];
$REV_DATE = $translationRow['HEADERS']['PO-Revision-Date']; $revDate = $translationRow['HEADERS']['PO-Revision-Date'];
} }
$languagesList[$i]['LAN_ID'] = $translationRow['LAN_ID']; $languagesList[$i]['LAN_ID'] = $translationRow['LAN_ID'];
$languagesList[$i]['LOCALE'] = $translationRow['LOCALE']; $languagesList[$i]['LOCALE'] = $translationRow['LOCALE'];
$languagesList[$i]['LAN_FLAG'] = $flag; $languagesList[$i]['LAN_FLAG'] = $flag;
$languagesList[$i]['NUM_RECORDS'] = $translationRow['NUM_RECORDS']; $languagesList[$i]['NUM_RECORDS'] = $translationRow['NUM_RECORDS'];
$languagesList[$i]['DATE'] = $DATE; $languagesList[$i]['DATE'] = $dateFormat;
$languagesList[$i]['LAN_NAME'] = $translationRow['HEADERS']['X-Poedit-Language']; $languagesList[$i]['LAN_NAME'] = $translationRow['HEADERS']['X-Poedit-Language'];
$languagesList[$i]['COUNTRY_NAME'] = $countryName; $languagesList[$i]['COUNTRY_NAME'] = $countryName;
$languagesList[$i]['TRANSLATOR'] = htmlentities( $translationRow['HEADERS']['Last-Translator'] ); $languagesList[$i]['TRANSLATOR'] = htmlentities($translationRow['HEADERS']['Last-Translator']);
$languagesList[$i]['REV_DATE'] = $REV_DATE; $languagesList[$i]['REV_DATE'] = $revDate;
$languagesList[$i]['VERSION'] = $translationRow['HEADERS']['Project-Id-Version']; $languagesList[$i]['VERSION'] = $translationRow['HEADERS']['Project-Id-Version'];
$i ++; $i++;
} }
$translationRow = new Translation(); $translationRow = new Translation();
$response->data = $languagesList; $response->data = $languagesList;
print (G::json_encode($response));
print (G::json_encode( $response )) ;
break; break;
case 'delete': case 'delete':
include_once 'classes/model/Translation.php'; include_once 'classes/model/Translation.php';
@@ -130,48 +103,34 @@ try {
$locale = $_POST['LOCALE']; $locale = $_POST['LOCALE'];
$trn = new Translation(); $trn = new Translation();
if (strpos( $locale, Translation::$localeSeparator )) if (strpos($locale, Translation::$localeSeparator)) {
list ($LAN_ID, $IC_UID) = explode( Translation::$localeSeparator, $locale ); list ($LAN_ID, $IC_UID) = explode(Translation::$localeSeparator, $locale);
else {
$LAN_ID = $locale;
$LAN_ID = '';
} }
$oCriteria = new Criteria( 'workflow' ); //Verify if is the default language 'en'
//$oCriteria->addSelectColumn('COUNT('.ContentPeer::CON_CATEGORY.')'); if ($locale != "en") {
$oCriteria->addSelectColumn(ApplicationPeer::APP_TITLE); //Verify if is the current language
$oDataset = ApplicationPeer::doSelectRS( $oCriteria ); if ($locale != SYS_LANG) {
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); try {
$oDataset->next(); Content::removeLanguageContent($locale);
$aRow = $oDataset->getRow(); $trn->removeTranslationEnvironment($locale);
echo G::LoadTranslation('ID_LANGUAGE_DELETED_SUCCESSFULLY');
if ($locale != "en") { //Default Language 'en' } catch (Exception $e) {
if ($locale != SYS_LANG) { //Current Language $token = strtotime("now");
//THERE IS NO ANY CASE STARTED FROM THIS LANGUAGE PMException::registerErrorLog($e, $token);
if (empty($aRow)) { //so we can delete this language G::outRes(G::LoadTranslation("ID_EXCEPTION_LOG_INTERFAZ", array($token)));
try {
Content::removeLanguageContent($locale);
$trn->removeTranslationEnvironment($locale);
echo G::LoadTranslation('ID_LANGUAGE_DELETED_SUCCESSFULLY');
} catch (Exception $e) {
$token = strtotime("now");
PMException::registerErrorLog($e, $token);
G::outRes(G::LoadTranslation("ID_EXCEPTION_LOG_INTERFAZ", array($token)));
}
} else {
echo str_replace('{0}', $aRow['APP_TITLE'], G::LoadTranslation('ID_LANGUAGE_CANT_DELETE'));
} }
} else { } else {
echo str_replace('{0}', $aRow['APP_TITLE'], G::LoadTranslation('ID_LANGUAGE_CANT_DELETE_CURRENTLY')); echo G::LoadTranslation('ID_LANGUAGE_CANT_DELETE_CURRENTLY');
} }
} else { } else {
echo str_replace('{0}', $aRow['APP_TITLE'], G::LoadTranslation('ID_LANGUAGE_CANT_DELETE_DEFAULT')); echo G::LoadTranslation('ID_LANGUAGE_CANT_DELETE_DEFAULT');
} }
break; break;
} }
} catch (Exception $oException) { } catch (Exception $oException) {
$token = strtotime("now"); $token = strtotime("now");
PMException::registerErrorLog($oException, $token); PMException::registerErrorLog($oException, $token);
G::outRes( G::LoadTranslation("ID_EXCEPTION_LOG_INTERFAZ", array($token)) ); G::outRes(G::LoadTranslation("ID_EXCEPTION_LOG_INTERFAZ", array($token)));
} }

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,173 @@
<?php
namespace ProcessMaker\BusinessModel\DynaForm;
/**
* SuggestTrait
* Methods required to prepare the query for the suggest fields.
*/
trait SuggestTrait
{
/**
* Get field current value.
*
* @param type $json
* @return type
*/
private function getSuggestValue($json)
{
$value = "";
if ($json->defaultValue !== "") {
$value = $json->defaultValue;
}
if (isset($this->fields["APP_DATA"][$json->name])) {
$value = $this->fields["APP_DATA"][$json->name];
}
return $value;
}
/**
* Prepare the query for the suggest field.
*
* @param type $sql
* @param type $json
* @return type
*/
private function prepareSuggestSql($sql, $json)
{
//If 0 find an specific row by the first column.
$optionsLimit = empty($json->queryLimit) ? 0 : $json->queryLimit;
return $this->sqlParse(
$sql,
function ($parsed, &$select, &$from, &$where, &$groupBy, &$having, &$orderBy, &$limit) use ($json, $optionsLimit)
{
$dt = $parsed["SELECT"];
$isWhere = empty($where);
if ($isWhere === false) {
$where = substr_replace($where, " (", 5, 0) . ")";
}
if (!isset($json->queryField) && isset($dt[0]["base_expr"])) {
$col = $dt[0]["base_expr"];
$dv = str_replace("'", "''", $json->defaultValue);
if ($dv !== "") {
$where = $isWhere ? "WHERE " . $col . "='" . $dv . "'" : $where . " AND " . $col . "='" . $dv . "'";
}
}
if (isset($json->queryField) && isset($dt[0]["base_expr"])) {
$col = isset($dt[1]["base_expr"]) ? $dt[1]["base_expr"] : $dt[0]["base_expr"];
$qf = str_replace("'", "''", $json->queryFilter);
$where = $isWhere ? "WHERE " . $col . " LIKE '%" . $qf . "%'" : $where . " AND " . $col . " LIKE '%" . $qf . "%'";
}
if ($optionsLimit > 0) {
$this->addSuggestLimit($json, $select, $limit, $where);
} else {
$this->addSuggestWhere($json, $parsed, $select, $where, $having);
}
}
);
}
/**
* Add the limit sentence to the suggest query.
*
* @param type $json
* @param type $select
* @param type $limit
* @param type $where
*/
private function addSuggestLimit($json, &$select, &$limit, &$where)
{
$start = 0;
$end = 10;
$provider = $this->getDatabaseProvider($json->dbConnection);
if (isset($json->queryStart)) {
$start = $json->queryStart;
}
if (isset($json->queryLimit)) {
$end = $json->queryLimit;
}
if (empty($limit) && $provider === "mysql") {
$limit = "LIMIT " . $start . "," . $end . "";
}
if (empty($limit) && $provider === "pgsql") {
$limit = "OFFSET " . $start . " LIMIT " . $end . "";
}
if ($provider === "mssql") {
$limit = "";
if (strpos(strtoupper($select), "TOP") === false) {
$isDistinct = strpos(strtoupper($select), "DISTINCT");
$isAll = strpos(strtoupper($select), "ALL");
if ($isDistinct === false && $isAll === false) {
$select = preg_replace("/SELECT/",
"SELECT TOP(" . $end . ")",
strtoupper($select), 1);
}
if ($isDistinct !== false) {
$select = preg_replace("/DISTINCT/",
"DISTINCT TOP(" . $end . ")",
strtoupper($select), 1);
}
if ($isAll !== false) {
$select = preg_replace("/DISTINCT/",
"DISTINCT TOP(" . $end . ")",
strtoupper($select), 1);
}
}
}
if ($provider === "oracle") {
$limit = "";
$rowNumber = "";
if (strpos(strtoupper($where), "ROWNUM") === false) {
$rowNumber = " AND " . $start . " <= ROWNUM AND ROWNUM <= " . $end;
}
$where = empty($where)
? "WHERE " . $start . " <= ROWNUM AND ROWNUM <= " . $end
: $where . $rowNumber;
}
}
/**
* If possible, add a where to get the current label.
*
* @param type $json
* @param type $parsed
* @param type $select
* @param type $where
* @param type $having
* @return boolean
*/
private function addSuggestWhere($json, $parsed, &$select, &$where, &$having)
{
$value = $this->escapeQuote($this->getSuggestValue($json));
switch ($parsed['SELECT'][0]['expr_type']) {
case 'colref':
case 'expression':
if (
is_array($parsed['SELECT'][0]['sub_tree'])
&& $parsed['SELECT'][0]['sub_tree'][0]['expr_type']==='aggregate_function'
) {
return false;
} else {
$where = empty($where)
? "WHERE (" . $parsed['SELECT'][0]['base_expr'] . "='$value')"
: "$where and (" . $parsed['SELECT'][0]['base_expr'] . "='$value')";
}
return true;
}
return false;
}
/**
* Escape a sql string.
*
* @param type $text
* @return type
*/
private function escapeQuote($text)
{
return str_replace("'", "''", $text);
}
}