diff --git a/workflow/engine/Features/ActionsByEmail/ActionsByEmailService.php b/workflow/engine/Features/ActionsByEmail/ActionsByEmailService.php index 5fb16c96b..a722311e3 100644 --- a/workflow/engine/Features/ActionsByEmail/ActionsByEmailService.php +++ b/workflow/engine/Features/ActionsByEmail/ActionsByEmailService.php @@ -1,31 +1,42 @@ createOrUpdate($params['fields']); - break; - default: - break; + if (\PMLicensedFeatures + ::getSingleton() + ->verifyfeature('zCeazVrMjVTQVVLcTdwSHNaSzMwTGNCdXRqTm9aYlEzVnI=')) { + switch ($params['type']) { + case 'configuration': + require_once 'classes/model/AbeConfiguration.php'; + $abeConfigurationInstance = new \AbeConfiguration(); + $noteValues = json_decode($params['fields']['ABE_CASE_NOTE_IN_RESPONSE']); + foreach ($noteValues as $value) { + $params['fields']['ABE_CASE_NOTE_IN_RESPONSE'] = $value; + } + $abeConfigurationInstance->createOrUpdate($params['fields']); + break; + default: + break; + } } } public function loadConfiguration($params) { - if ($params['type'] != 'activity') { + if ($params['type'] != 'activity' + || (\PMLicensedFeatures + ::getSingleton() + ->verifyfeature('zCeazVrMjVTQVVLcTdwSHNaSzMwTGNCdXRqTm9aYlEzVnI='))) + { return NULL; } set_include_path(PATH_FEATURES . 'ActionsByEmail' . PATH_SEPARATOR . get_include_path()); @@ -50,4 +61,5 @@ class ActionsByEmailService $configuration['SYS_LANG'] = SYS_LANG; return $configuration; } + } diff --git a/workflow/engine/classes/class.featureRegistry.php b/workflow/engine/classes/class.featureRegistry.php index fb6eaeec5..5067a9c6d 100755 --- a/workflow/engine/classes/class.featureRegistry.php +++ b/workflow/engine/classes/class.featureRegistry.php @@ -28,7 +28,7 @@ class PMFeatureRegistry { private $features = array (); - private $triggers = array (); + private $keys = array ('ActionsByEmail' => 'zCeazVrMjVTQVVLcTdwSHNaSzMwTGNCdXRqTm9aYlEzVnI='); private static $instance = null; /** @@ -65,6 +65,9 @@ class PMFeatureRegistry */ public function registerFeature ($featureName, $filename = null) { + if (!$this->validateFeatureLicense($featureName)) { + return false; + } $className = $featureName . "Feature"; $feature = new $className( $featureName, $filename ); if (isset( $this->features[$featureName] )) { @@ -98,7 +101,7 @@ class PMFeatureRegistry { $feature = $this->retrieveFeature($featureName); if ($feature) { - $feature->enable(); + $feature->disable(); } throw new Exception( "Unable to disable feature '$featureName' (feature not found)" ); } @@ -167,6 +170,19 @@ class PMFeatureRegistry $this->features[$name] = $feature; } } + + public function validateFeatureLicense($featureName) + { + if ( + isset($this->keys[$featureName]) + && PMLicensedFeatures + ::getSingleton() + ->verifyfeature($this->keys[$featureName]) + ) { + return true; + } + return false; + } } /*----------------------------------********---------------------------------*/ diff --git a/workflow/engine/methods/services/ActionsByEmail.php b/workflow/engine/methods/services/ActionsByEmail.php index 00c41e243..7163df4b9 100644 --- a/workflow/engine/methods/services/ActionsByEmail.php +++ b/workflow/engine/methods/services/ActionsByEmail.php @@ -1,115 +1,119 @@ loadCase($_REQUEST['APP_UID'], $_REQUEST['DEL_INDEX']); - - if (is_null($caseFieldsABE['DEL_FINISH_DATE'])) { - $dataField = array(); - $dataField[$_REQUEST['FIELD']] = $_REQUEST['VALUE']; - $caseFieldsABE ['APP_DATA'] = array_merge($caseFieldsABE ['APP_DATA'], $dataField); - - $dataResponses = array(); - $dataResponses['ABE_REQ_UID'] = $_REQUEST['ABER']; - $dataResponses['ABE_RES_CLIENT_IP'] = $_SERVER['REMOTE_ADDR']; - $dataResponses['ABE_RES_DATA'] = serialize($_REQUEST['VALUE']); - $dataResponses['ABE_RES_STATUS'] = 'PENDING'; - $dataResponses['ABE_RES_MESSAGE'] = ''; - - try { - set_include_path(PATH_FEATURES . 'ActionsByEmail' . PATH_SEPARATOR . get_include_path()); - require_once 'classes/model/AbeResponses.php'; - $abeAbeResponsesInstance = new AbeResponses(); - $dataResponses['ABE_RES_UID'] = $abeAbeResponsesInstance->createOrUpdate($dataResponses); - } catch (Exception $error) { - throw $error; +if (PMLicensedFeatures + ::getSingleton() + ->verifyfeature('zCeazVrMjVTQVVLcTdwSHNaSzMwTGNCdXRqTm9aYlEzVnI=')) { + switch ($_REQUEST['action']) { + case 'processABE' : + $G_PUBLISH = new Publisher(); + try { + // Validations + if (!isset($_REQUEST['APP_UID'])) { + $_REQUEST['APP_UID'] = ''; } - $cases->updateCase($_REQUEST['APP_UID'], $caseFieldsABE); + if (!isset($_REQUEST['DEL_INDEX'])) { + $_REQUEST['DEL_INDEX'] = ''; + } - G::LoadClass('wsBase'); + if ($_REQUEST['APP_UID'] == '') { + throw new Exception('The parameter APP_UID is empty.'); + } - $ws = new wsBase(); + if ($_REQUEST['DEL_INDEX'] == '') { + throw new Exception('The parameter DEL_INDEX is empty.'); + } - $result = $ws->derivateCase($caseFieldsABE['CURRENT_USER_UID'], $_REQUEST['APP_UID'], $_REQUEST['DEL_INDEX'], true); - $code = (is_array($result) ? $result['status_code'] : $result->status_code); + $_REQUEST['APP_UID'] = G::decrypt(urldecode(utf8_encode($_REQUEST['APP_UID'])), URL_KEY); + $_REQUEST['DEL_INDEX'] = G::decrypt(urldecode(utf8_encode($_REQUEST['DEL_INDEX'])), URL_KEY); + $_REQUEST['FIELD'] = G::decrypt(urldecode(utf8_encode($_REQUEST['FIELD'])), URL_KEY); + $_REQUEST['VALUE'] = G::decrypt(urldecode(utf8_encode($_REQUEST['VALUE'])), URL_KEY); + $_REQUEST['ABER'] = G::decrypt(urldecode(utf8_encode($_REQUEST['ABER'])), URL_KEY); - if ($code != 0) { - throw new Exception('An error occurred while the application was being processed.

+ G::LoadClass('case'); + + $cases = new Cases(); + $caseFieldsABE = $cases->loadCase($_REQUEST['APP_UID'], $_REQUEST['DEL_INDEX']); + + if (is_null($caseFieldsABE['DEL_FINISH_DATE'])) { + $dataField = array(); + $dataField[$_REQUEST['FIELD']] = $_REQUEST['VALUE']; + $caseFieldsABE ['APP_DATA'] = array_merge($caseFieldsABE ['APP_DATA'], $dataField); + + $dataResponses = array(); + $dataResponses['ABE_REQ_UID'] = $_REQUEST['ABER']; + $dataResponses['ABE_RES_CLIENT_IP'] = $_SERVER['REMOTE_ADDR']; + $dataResponses['ABE_RES_DATA'] = serialize($_REQUEST['VALUE']); + $dataResponses['ABE_RES_STATUS'] = 'PENDING'; + $dataResponses['ABE_RES_MESSAGE'] = ''; + + try { + set_include_path(PATH_FEATURES . 'ActionsByEmail' . PATH_SEPARATOR . get_include_path()); + require_once 'classes/model/AbeResponses.php'; + $abeAbeResponsesInstance = new AbeResponses(); + $dataResponses['ABE_RES_UID'] = $abeAbeResponsesInstance->createOrUpdate($dataResponses); + } catch (Exception $error) { + throw $error; + } + + $cases->updateCase($_REQUEST['APP_UID'], $caseFieldsABE); + + G::LoadClass('wsBase'); + + $ws = new wsBase(); + + $result = $ws->derivateCase($caseFieldsABE['CURRENT_USER_UID'], $_REQUEST['APP_UID'], $_REQUEST['DEL_INDEX'], true); + $code = (is_array($result) ? $result['status_code'] : $result->status_code); + + if ($code != 0) { + throw new Exception('An error occurred while the application was being processed.

Error code: ' . $result->status_code . '
Error message: ' . $result->message . '

'); + } + + // Update + $dataResponses['ABE_RES_STATUS'] = ($code == 0 ? 'SENT' : 'ERROR'); + $dataResponses['ABE_RES_MESSAGE'] = ($code == 0 ? '-' : $result->message); + + try { + $abeAbeResponsesInstance = new AbeResponses(); + $abeAbeResponsesInstance->createOrUpdate($dataResponses); + } catch (Exception $error) { + throw $error; + } + + $message = 'The answer has been submited. Thank you'; + + //Save Cases Notes + include_once PATH_FEATURES . 'ActionsByEmail' . DS . 'Services' . DS . 'utils.php'; + + $dataAbeRequests = loadAbeRequest($_REQUEST['ABER']); + $dataAbeConfiguration = loadAbeConfiguration($dataAbeRequests['ABE_UID']); + + if ($dataAbeConfiguration['ABE_CASE_NOTE_IN_RESPONSE'] == 1) { + $response = new stdclass(); + $response->usrUid = $caseFieldsABE['APP_DATA']['USER_LOGGED']; + $response->appUid = $_REQUEST['APP_UID']; + $response->noteText = "Check the information that was sent for the receiver: " . $dataAbeRequests['ABE_REQ_SENT_TO']; + + postNote($response); + } + + $dataAbeRequests['ABE_REQ_ANSWERED'] = 1; + $code == 0 ? uploadAbeRequest($dataAbeRequests) : ''; + } else { + $message = 'The response has already been sent.'; } - // Update - $dataResponses['ABE_RES_STATUS'] = ($code == 0 ? 'SENT' : 'ERROR'); - $dataResponses['ABE_RES_MESSAGE'] = ($code == 0 ? '-' : $result->message); - - try { - $abeAbeResponsesInstance = new AbeResponses(); - $abeAbeResponsesInstance->createOrUpdate($dataResponses); - } catch (Exception $error) { - throw $error; - } - - $message = 'The answer has been submited. Thank you'; - - //Save Cases Notes - include_once PATH_FEATURES.'ActionsByEmail'.DS.'Services'.DS.'utils.php'; - - $dataAbeRequests = loadAbeRequest($_REQUEST['ABER']); - $dataAbeConfiguration = loadAbeConfiguration($dataAbeRequests['ABE_UID']); - - if ($dataAbeConfiguration['ABE_CASE_NOTE_IN_RESPONSE'] == 1) { - $response = new stdclass(); - $response->usrUid = $caseFieldsABE['APP_DATA']['USER_LOGGED']; - $response->appUid = $_REQUEST['APP_UID']; - $response->noteText = "Check the information that was sent for the receiver: " . $dataAbeRequests['ABE_REQ_SENT_TO']; - - postNote($response); - } - - $dataAbeRequests['ABE_REQ_ANSWERED'] = 1; - $code == 0 ? uploadAbeRequest($dataAbeRequests) : ''; - } else { - $message = 'The response has already been sent.'; + $G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showInfo', '', array('MESSAGE' => $message)); + } catch (Exception $error) { + $G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showMessage', '', array('MESSAGE' => $error->getMessage() . 'Please contact to your system administrator.')); } - $G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showInfo', '', array('MESSAGE' => $message)); - } catch (Exception $error) { - $G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showMessage', '', array('MESSAGE' => $error->getMessage() . 'Please contact to your system administrator.')); - } - - G::RenderPage('publish', 'blank'); + G::RenderPage('publish', 'blank'); - break; + break; + } } /*----------------------------------********---------------------------------*/ \ No newline at end of file