From 4a98203e3822f09cc3bf7bbceac635f0f43864a7 Mon Sep 17 00:00:00 2001 From: Marco Antonio Nina Mena Date: Mon, 5 Mar 2018 14:44:50 -0400 Subject: [PATCH 1/5] HOR-4397 Cannot get case summary via REST from Unassigned folder - Add validation if case is unassigned or has a permission summary form view Fix CR --- .../src/ProcessMaker/Services/Api/Cases.php | 31 ++++++++++++++----- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Cases.php b/workflow/engine/src/ProcessMaker/Services/Api/Cases.php index 19a26aeda..4845e8847 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/Cases.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/Cases.php @@ -7,6 +7,7 @@ use AppDelegation; use AppDelegationPeer; use Criteria; use Exception; +use ListUnassigned; use Luracast\Restler\RestException; use ProcessMaker\BusinessModel\Cases as BmCases; use ProcessMaker\BusinessModel\User as BmUser; @@ -118,15 +119,14 @@ class Cases extends Api return $user->userCanReassign($usrUid, $arrayApplicationData['PRO_UID']); break; - case "doGetCaseInfo" : + case 'doGetCaseInfo': $appUid = $this->parameters[$arrayArgs['app_uid']]; $usrUid = $this->getUserId(); - //Check if the user is supervisor process + $case = new BmCases(); - $user = new BmUser(); $arrayApplicationData = $case->getApplicationRecordByPk($appUid, [], false); if (!empty($arrayApplicationData)) { - $criteria = new Criteria("workflow"); + $criteria = new Criteria('workflow'); $criteria->addSelectColumn(AppDelegationPeer::APP_UID); $criteria->add(AppDelegationPeer::APP_UID, $appUid); $criteria->add(AppDelegationPeer::USR_UID, $usrUid); @@ -134,11 +134,26 @@ class Cases extends Api $rsCriteria = AppDelegationPeer::doSelectRS($criteria); if ($rsCriteria->next()) { return true; - } else { - $supervisor = new BmProcessSupervisor(); - $flagps = $supervisor->isUserProcessSupervisor($arrayApplicationData['PRO_UID'], $usrUid); - return $flagps; } + + //verify unassigned + $list = new ListUnassigned(); + $data = $list->loadList($usrUid, ['search' => $appUid, 'caseLink' => true, 'limit' => 1]); + + if ($data) { + return true; + } + + //Check if the user is a process supervisor or has summary form view permission + $userCanAccess = $case->userAuthorization( + $usrUid, + $arrayApplicationData['PRO_UID'], + $appUid, + [], + ['SUMMARY_FORM' => 'VIEW'] + ); + + return $userCanAccess['supervisor'] || $userCanAccess['objectPermissions']['SUMMARY_FORM']; } break; case 'doDownloadInputDocument': From 4896b04408fb37679ea24aeacd6e2ecc33ef048a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julio=20Cesar=20Laura=20Avenda=C3=B1o?= Date: Wed, 22 Aug 2018 10:00:39 -0400 Subject: [PATCH 2/5] HOR-4750 --- thirdparty/tcpdf/config/tcpdf_config.php | 42 +++++------------------- 1 file changed, 8 insertions(+), 34 deletions(-) diff --git a/thirdparty/tcpdf/config/tcpdf_config.php b/thirdparty/tcpdf/config/tcpdf_config.php index 3ac523e06..29d1aee61 100644 --- a/thirdparty/tcpdf/config/tcpdf_config.php +++ b/thirdparty/tcpdf/config/tcpdf_config.php @@ -40,47 +40,21 @@ if (!defined('K_TCPDF_EXTERNAL_CONFIG')) { - // DOCUMENT_ROOT fix for IIS Webserver - if ((!isset($_SERVER['DOCUMENT_ROOT'])) OR (empty($_SERVER['DOCUMENT_ROOT']))) { - if(isset($_SERVER['SCRIPT_FILENAME'])) { - $_SERVER['DOCUMENT_ROOT'] = str_replace( '\\', '/', substr($_SERVER['SCRIPT_FILENAME'], 0, 0-strlen($_SERVER['PHP_SELF']))); - } elseif(isset($_SERVER['PATH_TRANSLATED'])) { - $_SERVER['DOCUMENT_ROOT'] = str_replace( '\\', '/', substr(str_replace('\\\\', '\\', $_SERVER['PATH_TRANSLATED']), 0, 0-strlen($_SERVER['PHP_SELF']))); - } else { - // define here your DOCUMENT_ROOT path if the previous fails (e.g. '/var/www') - $_SERVER['DOCUMENT_ROOT'] = '/'; - } - } - - // Automatic calculation for the following K_PATH_MAIN constant - $k_path_main = str_replace( '\\', '/', realpath(substr(dirname(__FILE__), 0, 0-strlen('config')))); - if (substr($k_path_main, -1) != '/') { - $k_path_main .= '/'; - } + /** + * Path of tcpdf library. + */ + define ('K_PATH_MAIN', PATH_THIRDPARTY . 'tcpdf' . PATH_SEP); /** - * Installation path (/var/www/tcpdf/). - * By default it is automatically calculated but you can also set it as a fixed string to improve performances. + * Build the URL */ - define ('K_PATH_MAIN', $k_path_main); - - // Automatic calculation for the following K_PATH_URL constant - $k_path_url = $k_path_main; // default value for console mode - if (isset($_SERVER['HTTP_HOST']) AND (!empty($_SERVER['HTTP_HOST']))) { - if(isset($_SERVER['HTTPS']) AND (!empty($_SERVER['HTTPS'])) AND strtolower($_SERVER['HTTPS'])!='off') { - $k_path_url = 'https://'; - } else { - $k_path_url = 'http://'; - } - $k_path_url .= $_SERVER['HTTP_HOST']; - $k_path_url .= str_replace( '\\', '/', substr(K_PATH_MAIN, (strlen($_SERVER['DOCUMENT_ROOT']) - 1))); - } + $protocol = G::is_https() ? "https://" : "http://"; + $host = $_SERVER["SERVER_NAME"] . ($_SERVER["SERVER_PORT"] != "80" ? ":" . $_SERVER["SERVER_PORT"] : ""); /** * URL path to tcpdf installation folder (http://localhost/tcpdf/). - * By default it is automatically calculated but you can also set it as a fixed string to improve performances. */ - define ('K_PATH_URL', $k_path_url); + define ('K_PATH_URL', $protocol . $host . "/tcpdf/"); /** * path for PDF fonts From 6782950ee6d113bfebf15d0a66a81bd44420ba56 Mon Sep 17 00:00:00 2001 From: Paula Quispe Date: Thu, 23 Aug 2018 10:12:09 -0400 Subject: [PATCH 3/5] HOR-4825 --- workflow/engine/classes/Processes.php | 14 ++++---------- .../src/ProcessMaker/BusinessModel/EmailEvent.php | 13 +++++++++++-- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/workflow/engine/classes/Processes.php b/workflow/engine/classes/Processes.php index c0534f69c..91b0db253 100644 --- a/workflow/engine/classes/Processes.php +++ b/workflow/engine/classes/Processes.php @@ -1,5 +1,6 @@ getEmailServerDefault(); - + $emailEvent = new EmailEvent(); foreach ($arrayData as $value) { if (isset($value['__EMAIL_SERVER_UID_PRESERVED__']) && $value['__EMAIL_SERVER_UID_PRESERVED__'] === true) { unset($value['__EMAIL_SERVER_UID_PRESERVED__']); } else { unset($value['EMAIL_EVENT_FROM']); unset($value['EMAIL_SERVER_UID']); - if (!empty($arrayEmailServerDefault)) { - $value['EMAIL_EVENT_FROM'] = $arrayEmailServerDefault['MESS_ACCOUNT']; - $value['EMAIL_SERVER_UID'] = $arrayEmailServerDefault['MESS_UID']; - } } $emailEventData = $emailEvent->save($processUid, $value); diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/EmailEvent.php b/workflow/engine/src/ProcessMaker/BusinessModel/EmailEvent.php index abe037387..f4a0f2a1b 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/EmailEvent.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/EmailEvent.php @@ -466,8 +466,17 @@ class EmailEvent } $arrayData = $this->existsEvent($prj_uid, $eventUid); if (sizeof($arrayData)) { - $oEmailServer = new EmailServer(); - $configEmailData = $oEmailServer->getEmailServer($arrayData[7]); + $emailServer = new EmailServer(); + if (empty($arrayData[7])){ + $configEmailData = $emailServer->getEmailServerDefault(); + //We will to show a message, if is not defined the email server default + if(empty($configEmailData)){ + $emailServer->throwExceptionIfNotExistsEmailServer('', 'MESS_UID'); + } + } else { + $configEmailData = $emailServer->getEmailServer($arrayData[7]); + } + $emailGroupTo = []; $emailTo = ''; $prfUid = $arrayData[6]; From a48b3845d2a2bbb6f6809b36c868703f36b90f71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julio=20Cesar=20Laura=20Avenda=C3=B1o?= Date: Fri, 24 Aug 2018 15:22:46 -0400 Subject: [PATCH 4/5] HOR-4834 --- workflow/engine/classes/model/CaseScheduler.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/workflow/engine/classes/model/CaseScheduler.php b/workflow/engine/classes/model/CaseScheduler.php index bd9833fef..aaefd64fc 100644 --- a/workflow/engine/classes/model/CaseScheduler.php +++ b/workflow/engine/classes/model/CaseScheduler.php @@ -336,8 +336,13 @@ class CaseScheduler extends BaseCaseScheduler $testConnection = true; try { - @$client = new SoapClient("http://" . $url); + $client = new SoapClient("http://" . $url); } catch (SoapFault $fault) { + /* Laravel register a exception handler that catch the exception throwed by the class SoapClient, + * by this reason now the "Error Control Operator @" doesn't works when a exception is throwed, + * so, we need to clear the last error catched. + */ + error_clear_last(); $testConnection = false; } From 55a1a73c47a85456cbefce28e7cb11302e05b455 Mon Sep 17 00:00:00 2001 From: Paula Quispe Date: Mon, 27 Aug 2018 12:16:11 -0400 Subject: [PATCH 5/5] HOR-4840 --- workflow/engine/classes/Processes.php | 2 +- workflow/engine/classes/model/EmailServer.php | 56 ++++++++++++------- 2 files changed, 38 insertions(+), 20 deletions(-) diff --git a/workflow/engine/classes/Processes.php b/workflow/engine/classes/Processes.php index 91b0db253..24c4ad523 100644 --- a/workflow/engine/classes/Processes.php +++ b/workflow/engine/classes/Processes.php @@ -4194,7 +4194,7 @@ class Processes foreach ($arrayData as $value) { if (isset($value['__EMAIL_SERVER_UID_PRESERVED__']) && $value['__EMAIL_SERVER_UID_PRESERVED__'] === true) { unset($value['__EMAIL_SERVER_UID_PRESERVED__']); - } else { + } elseif(!EmailServer::exists($value['EMAIL_SERVER_UID'])) { unset($value['EMAIL_EVENT_FROM']); unset($value['EMAIL_SERVER_UID']); } diff --git a/workflow/engine/classes/model/EmailServer.php b/workflow/engine/classes/model/EmailServer.php index 1aefd8582..5243db077 100644 --- a/workflow/engine/classes/model/EmailServer.php +++ b/workflow/engine/classes/model/EmailServer.php @@ -1,28 +1,46 @@ clearSelectColumns(); + $c->addSelectColumn(EmailServerPeer::MESS_ACCOUNT); + $c->add(EmailServerPeer::MESS_DEFAULT, 1); + $rs = EmailServerPeer::doSelectRS($c, Propel::getDBConnection('workflow_ro')); + $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $rs->next(); + $response = $rs->getRow(); - $c->clearSelectColumns(); - $c->addSelectColumn( EmailServerPeer::MESS_ACCOUNT ); + return $response; + } - $c->add( EmailServerPeer::MESS_DEFAULT, 1 ); + /** + * Check if the MESS_UID exist + * + * @param string $emailServerUid + * + * @return boolean + * @throws Exception + */ + public static function exists($emailServerUid) + { + try { + $criteria = new Criteria('workflow'); + $criteria->add(EmailServerPeer::MESS_UID, $emailServerUid, Criteria::EQUAL); + $dataset = EmailServerPeer::doSelectOne($criteria); - $rs = EmailServerPeer::doSelectRS( $c, Propel::getDBConnection('workflow_ro') ); - $rs->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $rs->next(); - $row = $rs->getRow(); - $response=$row; + return !is_null($dataset); - return $response; - } + } catch (Exception $e) { + throw $e; + } + } }