verifyfeature('zLhSk5TeEQrNFI2RXFEVktyUGpnczV1WEJNWVp6cjYxbTU3R29mVXVZNWhZQT0=')) { $feature = $params['ActionsByEmail']; switch ($feature['type']) { case 'configuration': require_once 'classes/model/AbeConfiguration.php'; $abeConfigurationInstance = new AbeConfiguration(); if (isset($feature['fields']['ABE_CASE_NOTE_IN_RESPONSE'])) { $arrayAux = json_decode($feature['fields']['ABE_CASE_NOTE_IN_RESPONSE']); $feature['fields']['ABE_CASE_NOTE_IN_RESPONSE'] = (int)((!empty($arrayAux))? array_shift($arrayAux) : 0); } if (isset($feature['fields']['ABE_FORCE_LOGIN'])) { $arrayAux = json_decode($feature['fields']['ABE_FORCE_LOGIN']); $feature['fields']['ABE_FORCE_LOGIN'] = (int)((!empty($arrayAux))? array_shift($arrayAux) : 0); } $abeConfigurationInstance->createOrUpdate($feature['fields']); break; default: break; } } } public function loadConfiguration($params) { if ($params['type'] != 'activity' || !PMLicensedFeatures ::getSingleton() ->verifyfeature('zLhSk5TeEQrNFI2RXFEVktyUGpnczV1WEJNWVp6cjYxbTU3R29mVXVZNWhZQT0=')) { return false; } require_once 'classes/model/AbeConfiguration.php'; $criteria = new Criteria(); $criteria->add(AbeConfigurationPeer::PRO_UID, $params['PRO_UID']); $criteria->add(AbeConfigurationPeer::TAS_UID, $params['TAS_UID']); $result = AbeConfigurationPeer::doSelectRS($criteria); $result->setFetchmode(ResultSet::FETCHMODE_ASSOC); $result->next(); $configuration = array(); if ($configuration = $result->getRow()) { $configuration['ABE_UID'] = $configuration['ABE_UID']; $configuration['ABE_TYPE'] = $configuration['ABE_TYPE']; $configuration['DYN_UID'] = $configuration['DYN_UID']; $configuration['ABE_TEMPLATE'] = $configuration['ABE_TEMPLATE']; $configuration['ABE_SUBJECT_FIELD'] = $configuration['ABE_SUBJECT_FIELD']; $configuration['ABE_EMAIL_FIELD'] = $configuration['ABE_EMAIL_FIELD']; $configuration['ABE_ACTION_FIELD'] = $configuration['ABE_ACTION_FIELD']; $configuration['ABE_MAILSERVER_OR_MAILCURRENT'] = $configuration['ABE_MAILSERVER_OR_MAILCURRENT']; $configuration['ABE_CASE_NOTE_IN_RESPONSE'] = $configuration['ABE_CASE_NOTE_IN_RESPONSE'] ? '["1"]' : '[]'; $configuration['ABE_FORCE_LOGIN'] = ($configuration['ABE_FORCE_LOGIN'])? '["1"]' : '[]'; $configuration['ABE_CUSTOM_GRID'] = unserialize($configuration['ABE_CUSTOM_GRID']); } $configuration['feature'] = 'ActionsByEmail'; $configuration['prefix'] = 'abe'; $configuration['PRO_UID'] = $params['PRO_UID']; $configuration['TAS_UID'] = $params['TAS_UID']; $configuration['SYS_LANG'] = SYS_LANG; return $configuration; } public function editTemplate(array $arrayData) { //Action Validations if (!isset($arrayData['TEMPLATE'])) { $arrayData['TEMPLATE'] = ''; } if ($arrayData['TEMPLATE'] == '') { throw new Exception(G::LoadTranslation('ID_TEMPLATE_PARAMETER_EMPTY')); } $data = array( 'CONTENT' => file_get_contents( PATH_DATA_MAILTEMPLATES . $arrayData['PRO_UID'] . PATH_SEP . $arrayData['TEMPLATE'] ), 'TEMPLATE' => $arrayData['TEMPLATE'], ); global $G_PUBLISH; $G_PUBLISH = new Publisher(); $G_PUBLISH->AddContent('xmlform', 'xmlform', 'actionsByEmail/actionsByEmail_FileEdit', '', $data); G::RenderPage('publish', 'raw'); die(); } public function updateTemplate(array $arrayData) { //Action Validations if (!isset($arrayData['TEMPLATE'])) { $arrayData['TEMPLATE'] = ''; } if (!isset($arrayData['CONTENT'])) { $arrayData['CONTENT'] = ''; } if ($arrayData['TEMPLATE'] == '') { throw new Exception(G::LoadTranslation('ID_TEMPLATE_PARAMETER_EMPTY')); } $templateFile = fopen(PATH_DATA_MAILTEMPLATES . $arrayData['PRO_UID'] . PATH_SEP . $arrayData['TEMPLATE'], 'w'); $content = stripslashes($arrayData['CONTENT']); $content = str_replace('@amp@', '&', $content); $content = base64_decode($content); fwrite($templateFile, $content); fclose($templateFile); } public function loadFields(array $arrayData) { if (!isset($arrayData['DYN_UID'])) { $arrayData['DYN_UID'] = ''; } if (!isset($arrayData['PRO_UID'])) { $arrayData['PRO_UID'] = ''; } $response = new stdClass(); $response->emailFields = []; $response->actionFields = []; if ($arrayData['PRO_UID'] != '' && $arrayData['DYN_UID']) { $dynaform = new Form($arrayData['PRO_UID'] . PATH_SEP . $arrayData['DYN_UID'], PATH_DYNAFORM, SYS_LANG, false); foreach ($dynaform->fields as $fieldName => $data) { switch ($data->type) { case 'text': case 'suggest': case 'hidden': case 'textarea': $response->emailFields[] = array('value' => $data->name, 'label' => $data->label . ' (@@' . $data->name . ')'); break; case 'dropdown': case 'radiogroup': case 'yesno': case 'checkbox': $response->actionFields[] = array('value' => $data->name, 'label' => $data->label . ' (@@' . $data->name . ')'); break; } } } //Return return $response; } public function saveConfiguration2(array $arrayData) { if (!isset($arrayData['ABE_UID'])) { $arrayData['ABE_UID'] = ''; } if (!isset($arrayData['PRO_UID'])) { $arrayData['PRO_UID'] = ''; } if (!isset($arrayData['TAS_UID'])) { $arrayData['TAS_UID'] = ''; } if (!isset($arrayData['ABE_TYPE'])) { $arrayData['ABE_TYPE'] = ''; } if (!isset($arrayData['ABE_TEMPLATE'])) { $arrayData['ABE_TEMPLATE'] = ''; } if (!isset($arrayData['DYN_UID'])) { $arrayData['DYN_UID'] = ''; } if (!isset($arrayData['ABE_EMAIL_FIELD'])) { $arrayData['ABE_EMAIL_FIELD'] = ''; } if (!isset($arrayData['ABE_ACTION_FIELD'])) { $arrayData['ABE_ACTION_FIELD'] = ''; } if (!isset($arrayData['ABE_CASE_NOTE_IN_RESPONSE'])) { $arrayData['ABE_CASE_NOTE_IN_RESPONSE'] = 0; } if ($arrayData['PRO_UID'] == '') { throw new Exception(G::LoadTranslation('ID_PRO_UID_PARAMETER_IS_EMPTY')); } if ($arrayData['TAS_UID'] == '') { throw new Exception(G::LoadTranslation('ID_TAS_UID_PARAMETER_IS_EMPTY')); } $abeConfigurationInstance = new AbeConfiguration(); $response = new stdClass(); if ($arrayData['ABE_TYPE'] != '') { if ($arrayData['DYN_UID'] == '') { throw new Exception(G::LoadTranslation('ID_DYN_UID_PARAMETER_IS_EMPTY')); } try { $response->ABE_UID = $abeConfigurationInstance->createOrUpdate($arrayData); } catch (Exception $error) { throw $error; } } else { try { $abeConfigurationInstance->deleteByTasUid($arrayData['TAS_UID']); $response->ABE_UID = ''; } catch (Exception $error) { throw $error; } } //Return return $response; } /** * Get the information for the log. * * @param array $arrayData * @return array * * @see ProcessMaker\Services\Api\ActionsByEmail->loadActionByEmail() * @see workflow/engine/methods/actionsByEmail/actionsByEmailAjax.php * @link https://wiki.processmaker.com/3.3/Actions_by_Email */ public function loadActionByEmail(array $arrayData) { //Get the total $criteria = new Criteria(); $criteria->addSelectColumn('COUNT(*)'); $criteria->addJoin(AbeConfigurationPeer::ABE_UID, AbeRequestsPeer::ABE_UID); $criteria->addJoin(AppDelegationPeer::APP_UID, AbeRequestsPeer::APP_UID); $criteria->addJoin(AppDelegationPeer::DEL_INDEX, AbeRequestsPeer::DEL_INDEX); $result = AbeConfigurationPeer::doSelectRS($criteria); $result->setFetchmode(ResultSet::FETCHMODE_ASSOC); $result->next(); $totalCount = $result->getRow(); $totalCount = $totalCount['COUNT(*)']; $criteria = new Criteria(); $criteria->addSelectColumn(AbeConfigurationPeer::ABE_UID); $criteria->addSelectColumn(AbeConfigurationPeer::PRO_UID); $criteria->addSelectColumn(AbeConfigurationPeer::TAS_UID); $criteria->addSelectColumn(AbeConfigurationPeer::ABE_UPDATE_DATE); $criteria->addSelectColumn(AbeConfigurationPeer::ABE_TEMPLATE); $criteria->addSelectColumn(AbeConfigurationPeer::ABE_ACTION_FIELD); $criteria->addSelectColumn(AbeConfigurationPeer::DYN_UID); $criteria->addSelectColumn(AbeConfigurationPeer::ABE_MAILSERVER_OR_MAILCURRENT); $criteria->addSelectColumn(AbeConfigurationPeer::ABE_EMAIL_SERVER_UID); $criteria->addSelectColumn(AbeRequestsPeer::ABE_REQ_UID); $criteria->addSelectColumn(AbeRequestsPeer::APP_UID); $criteria->addSelectColumn(AbeRequestsPeer::DEL_INDEX); $criteria->addSelectColumn(AbeRequestsPeer::ABE_REQ_SENT_TO); $criteria->addSelectColumn(AbeRequestsPeer::ABE_REQ_STATUS); $criteria->addSelectColumn(AbeRequestsPeer::ABE_REQ_SUBJECT); $criteria->addSelectColumn(AbeRequestsPeer::ABE_REQ_ANSWERED); $criteria->addSelectColumn(AbeRequestsPeer::ABE_REQ_BODY); $criteria->addSelectColumn(AbeRequestsPeer::ABE_REQ_DATE); $criteria->addSelectColumn(AppDelegationPeer::APP_NUMBER); $criteria->addSelectColumn(AppDelegationPeer::DEL_PREVIOUS); $criteria->addSelectColumn(AppDelegationPeer::USR_UID); $criteria->addJoin(AbeConfigurationPeer::ABE_UID, AbeRequestsPeer::ABE_UID); $criteria->addJoin(AppDelegationPeer::APP_UID, AbeRequestsPeer::APP_UID); $criteria->addJoin(AppDelegationPeer::DEL_INDEX, AbeRequestsPeer::DEL_INDEX); $criteria->addDescendingOrderByColumn(AbeRequestsPeer::ABE_REQ_DATE); $criteria->setLimit($arrayData['limit']); $criteria->setOffset($arrayData['start']); $result = AbeConfigurationPeer::doSelectRS($criteria); $result->setFetchmode(ResultSet::FETCHMODE_ASSOC); $data = []; $index = 0; while ($result->next()) { $row = $result->getRow(); $row['ABE_REQ_STATUS'] = G::LoadTranslation('ID_MAIL_STATUS_' . $row['ABE_REQ_STATUS']); $data[] = $row; //Get the response $abe = new AbeRequests(); $dataRes = $abe->load($data[$index]['ABE_REQ_UID']); $data[$index]['ABE_RES_UID'] = !empty($dataRes['ABE_RES_UID']) ? $dataRes['ABE_RES_UID'] : ''; $data[$index]['ABE_RES_CLIENT_IP'] = !empty($dataRes['ABE_RES_CLIENT_IP']) ? $dataRes['ABE_RES_CLIENT_IP'] : ''; $data[$index]['ABE_RES_DATA'] = !empty($dataRes['ABE_RES_DATA']) ? $dataRes['ABE_RES_DATA'] : ''; $data[$index]['ABE_RES_STATUS'] = !empty($dataRes['ABE_RES_STATUS']) ? $dataRes['ABE_RES_STATUS'] : ''; $data[$index]['ABE_RES_MESSAGE'] = !empty($dataRes['ABE_RES_UID']) ? $dataRes['ABE_RES_MESSAGE'] : ''; //Get the previous user $appDelegation = new AppDelegation(); $usrUid = $appDelegation->getUserAssignedInThread($data[$index]['APP_UID'], $data[$index]['DEL_PREVIOUS']); //This value can be empty when the previous task is: 'Script Task', 'Timer Event' or other without user. if (!empty($usrUid)) { $users = new ClassUsers(); $dataRes = $users->load($usrUid); if (!empty($dataRes)) { $data[$index]['USER'] = $dataRes['USR_FIRSTNAME'] . ' ' . $dataRes['USR_LASTNAME']; } else { $data[$index]['USER'] = ''; } } else { $data[$index]['USER'] = ''; if ($data[$index]['ABE_MAILSERVER_OR_MAILCURRENT'] == 1) { $emailServer = new EmailServer(); if (!empty($data[$index]['ABE_EMAIL_SERVER_UID'])) { $dataEmailServer = $emailServer->getEmailServer($data[$index]['ABE_EMAIL_SERVER_UID']); } else { $emailServerModel = new EmailServerModel(); $emailServerDefault = $emailServerModel->getEmailServerDefault(); if (isset($emailServerDefault['MESS_UID'])) { $dataEmailServer = $emailServer->getEmailServer($emailServerDefault['MESS_UID']); } } $data[$index]['USER'] = isset($dataEmailServer['MESS_FROM_NAME']) ? $dataEmailServer['MESS_FROM_NAME'] : ''; } if ($data[$index]['ABE_MAILSERVER_OR_MAILCURRENT'] == 0) { $delegation = new AppDelegation(); $previousTask = $delegation->getPreviousDelegationValidTask($data[$index]['APP_UID'], $data[$index]['DEL_INDEX']); if (in_array($previousTask['TAS_TYPE'], Task::DUMMY_TASKS) || in_array($previousTask['TAS_TYPE'], Task::$typesRunAutomatically)) { $res = Task::getTask($previousTask['TAS_ID']); $data[$index]['USER'] = $res->TAS_TITLE . ' (' . $previousTask['TAS_TYPE'] . ')'; } } } $data[$index]['ABE_REQ_ANSWERED'] = ($data[$index]['ABE_REQ_ANSWERED'] == 1) ? G::LoadTranslation('ID_YES') : G::LoadTranslation('ID_NO'); $index++; } $response = []; $response['totalCount'] = $totalCount; $response['data'] = $data; //Return return $response; } /** * Forward the Mail * * @param array $arrayData * * @return string $message * @throws Exception * * @see workflow/engine/methods/actionsByEmail/actionsByEmailAjax.php * @see \ProcessMaker\Services\Api\ActionsByEmail::forwardMail() */ public function forwardMail(array $arrayData) { if (!isset($arrayData['REQ_UID'])) { $arrayData['REQ_UID'] = ''; } $dataRes = AbeConfigurationModel::getAbeRequest($arrayData['REQ_UID']); if (!empty($dataRes)) { if (is_null($dataRes['DEL_FINISH_DATE'])) { $emailServer = new EmailServerModel(); $criteria = $emailServer->getEmailServer($dataRes['ABE_EMAIL_SERVER_UID']); $setup = !empty($criteria) ? $criteria : $emailServer->getEmailServerDefault(); $setup['SMTPSecure'] = $setup['SMTPSECURE']; unset($setup['SMTPSECURE']); $spool = new SpoolRun(); $spool->setConfig($setup); $abeCore = new ActionsByEmailCoreClass(); $abeCore->setTaskAbeProperties([ 'ABE_MAILSERVER_OR_MAILCURRENT' => $dataRes['ABE_MAILSERVER_OR_MAILCURRENT'], 'ABE_TYPE' => $dataRes['ABE_TYPE'] ]); $abeCore->publicDefineEmailFrom($setup); $messageArray = AppMessage::buildMessageRow( '', $dataRes['APP_UID'], $dataRes['DEL_INDEX'], WsBase::MESSAGE_TYPE_ACTIONS_BY_EMAIL, $dataRes['ABE_REQ_SUBJECT'], $abeCore->getEmailFrom(), $dataRes['ABE_REQ_SENT_TO'], $dataRes['ABE_REQ_BODY'], '', '', '', '', 'pending', 1, '', true, isset($dataRes['APP_NUMBER']) ? $dataRes['APP_NUMBER'] : 0, $dataRes['PRO_ID'], $dataRes['TAS_ID'] ); $spool->create($messageArray); if ($spool->sendMail()) { $dataRes['ABE_REQ_STATUS'] = 'SENT'; $message = G::LoadTranslation('ID_EMAIL_RESENT_TO') . ': ' . $dataRes['ABE_REQ_SENT_TO']; } else { $dataRes['ABE_REQ_STATUS'] = 'ERROR'; $message = G::LoadTranslation('ID_THERE_PROBLEM_SENDING_EMAIL') . ': ' . $dataRes['ABE_REQ_SENT_TO'] . ', ' . G::LoadTranslation('ID_PLEASE_TRY_LATER'); } try { $abeRequestsInstance = new AbeRequests(); $abeRequestsInstance->createOrUpdate($dataRes); } catch (Exception $error) { throw $error; } } else { $message = G::LoadTranslation('ID_UNABLE_TO_SEND_EMAIL'); } } else { $message = G::LoadTranslation('ID_UNEXPECTED_ERROR_OCCURRED_PLEASE'); } //Return return $message; } /** * Get the decision from Actions By Email and check if is Bpmn Process. * @param array $arrayData * * @return string $message * * @see workflow/engine/methods/actionsByEmail/actionsByEmailAjax.php * @see ProcessMaker\Services\Api\ActionsByEmail->viewForm() * @link https://wiki.processmaker.com/3.3/Actions_by_Email#Actions_by_Email_Log */ public function viewForm(array $arrayData) { //coment if (!isset($arrayData['REQ_UID'])) { $arrayData['REQ_UID'] = ''; } $criteria = new Criteria(); $criteria->addSelectColumn(AbeConfigurationPeer::ABE_UID); $criteria->addSelectColumn(AbeConfigurationPeer::PRO_UID); $criteria->addSelectColumn(AbeConfigurationPeer::TAS_UID); $criteria->addSelectColumn(AbeConfigurationPeer::DYN_UID); $criteria->addSelectColumn(AbeConfigurationPeer::ABE_ACTION_FIELD); $criteria->addSelectColumn(AbeConfigurationPeer::ABE_TYPE); $criteria->addSelectColumn(AbeRequestsPeer::ABE_REQ_UID); $criteria->addSelectColumn(AbeRequestsPeer::APP_UID); $criteria->addSelectColumn(AbeRequestsPeer::DEL_INDEX); $criteria->addSelectColumn(AbeResponsesPeer::ABE_RES_UID); $criteria->addSelectColumn(AbeResponsesPeer::ABE_RES_DATA); $criteria->add(AbeRequestsPeer::ABE_REQ_UID, $arrayData['REQ_UID']); $criteria->addJoin(AbeRequestsPeer::ABE_UID, AbeConfigurationPeer::ABE_UID); $criteria->addJoin(AbeResponsesPeer::ABE_REQ_UID, AbeRequestsPeer::ABE_REQ_UID); $resultRes = AbeRequestsPeer::doSelectRS($criteria); $resultRes->setFetchmode(ResultSet::FETCHMODE_ASSOC); $resultRes->next(); $dataRes = []; $message = G::LoadTranslation('ID_USER_NOT_RESPONDED_REQUEST'); if ($dataRes = $resultRes->getRow()) { $_SESSION['CURRENT_DYN_UID'] = trim($dataRes['DYN_UID']); $process = new \Process(); $isBpmn = $process->isBpmnProcess($dataRes['PRO_UID']); if ($isBpmn) { if ($dataRes['ABE_TYPE'] === 'FIELD') { $message = $this->viewFormBpmn($dataRes); } else { $message = G::LoadTranslation('ID_CASE_RESPONSE_NOT_AVAILABLE'); } } else { $message = $this->viewFormClassic($dataRes); //to do, review this function } } return $message; } /** * Get the decision from Actions By Email by Classic dynaform * @param array $dataRes * * @return string $message */ public function viewFormClassic(array $dataRes) { $dynaform = new \Form($dataRes['PRO_UID'] . PATH_SEP . trim($dataRes['DYN_UID']), PATH_DYNAFORM, SYS_LANG, false); $dynaform->mode = 'view'; if ($dataRes['ABE_RES_DATA'] != '') { $value = unserialize($dataRes['ABE_RES_DATA']); if (is_array($value)) { $dynaform->values = $value; foreach ($dynaform->fields as $fieldName => $field) { if ($field->type == 'submit') { unset($dynaform->fields[$fieldName]); } } $message = $dynaform->render(PATH_CORE . 'templates/xmlform.html', $scriptCode); } else { $response = $dynaform->render(PATH_CORE . 'templates/xmlform.html', $scriptCode); $field = $dynaform->fields[$dataRes['ABE_ACTION_FIELD']]; $message = 'Type: ' . $field->type . '
'; switch ($field->type) { case 'dropdown': case 'radiogroup': $message .=$field->label . ' - '; $message .= $field->options[$value]; break; case 'yesno': $message .= '' . $field->label . ' - '; $message .= ($value == 1) ? G::loadTranslation('ID_YES') : G::loadTranslation('ID_NO'); break; case 'checkbox': $message .= '' . $field->label . ' - '; $message .= ($value == 'On') ? G::loadTranslation('ID_CHECK') : G::loadTranslation('ID_UNCHECK'); break; } } } //Return return $message; } /** * Get the decision from Actions By Email by BPMN dynaform. * * @param array $dataRes * @return string * * @see ActionsByEmail->viewForm() * @link https://wiki.processmaker.com/3.3/Actions_by_Email */ public function viewFormBpmn(array $dataRes) { $_SESSION['CURRENT_DYN_UID'] = trim($dataRes['DYN_UID']); $configuration['DYN_UID'] = trim($dataRes['DYN_UID']); $configuration['CURRENT_DYNAFORM'] = trim($dataRes['DYN_UID']); $configuration['PRO_UID'] = trim($dataRes['PRO_UID']); $criteriaD = new Criteria(); $criteriaD->addSelectColumn(DynaformPeer::DYN_CONTENT); $criteriaD->addSelectColumn(DynaformPeer::PRO_UID); $criteriaD->add(DynaformPeer::DYN_UID, trim($dataRes['DYN_UID'])); $resultD = DynaformPeer::doSelectRS($criteriaD); $resultD->setFetchmode(ResultSet::FETCHMODE_ASSOC); $resultD->next(); $configuration = $resultD->getRow(); $field = new stdClass(); $field->type = ''; $field->label = ''; $field->options = []; $obj = new PmDynaform($configuration); $message = G::LoadTranslation('ID_CASE_RESPONSE_NOT_AVAILABLE'); if ($dataRes['ABE_RES_DATA'] !== '') { $value = unserialize($dataRes['ABE_RES_DATA']); $actionField = str_replace(['@@', '@#', '@=', '@%', '@?', '@$'], '', $dataRes['ABE_ACTION_FIELD']); $variables = G::json_decode($configuration['DYN_CONTENT'], true); if (is_array($value)) { if (isset($variables['items'][0]['items'])) { $fields = $variables['items'][0]['items']; } } else { if (isset($variables['items'][0]['items'])) { $fields = $variables['items'][0]['items']; foreach ($fields as $key => $row) { foreach ($row as $var) { if (isset($var['variable'])) { if ($var['variable'] === $actionField) { $field->label = isset($var['label']) ? $var['label'] : ''; $field->type = isset($var['type']) ? $var['type'] : ''; $values = $var['options']; foreach ($values as $val) { $field->options[$val['value']] = $val['value']; } } } } } } switch ($field->type) { case 'dropdown': case 'radiogroup': case 'radio': if (!empty($field->options[$value])) { $message = $field->label . ': '; $message .= $field->options[$value]; } break; /** * 'yesno' is deprecated in version ProcessMaker 3.x.x. * @deprecated */ case 'yesno': $message = $field->label . ': '; $message .= $value == 1 ? G::LoadTranslation('ID_YES') : G::LoadTranslation('ID_NO'); break; case 'checkgroup': case 'checkbox': $message = $field->label . ': '; if (!empty($value)) { /** * Value 'On' is deprecated in version ProcessMaker 3.x.x. * now return '1'. * @deprecated */ $message .= ($value == 'On' || $value == '1') ? G::LoadTranslation('ID_CHECK') : G::LoadTranslation('ID_UNCHECK'); } break; } } } return $message; } /** * Verify login * * @param string $applicationUid Unique id of Case * @param int $delIndex Delegation index * * @return void */ public function verifyLogin($applicationUid, $delIndex) { try { //Verify data and Set variables $case = new \ProcessMaker\BusinessModel\Cases(); $arrayAppDelegationData = $case->getAppDelegationRecordByPk( $applicationUid, $delIndex, ['$applicationUid' => '$applicationUid', '$delIndex' => '$delIndex'] ); //Verify login $criteria = new Criteria('workflow'); $criteria->add(AbeConfigurationPeer::PRO_UID, $arrayAppDelegationData['PRO_UID'], Criteria::EQUAL); $criteria->add(AbeConfigurationPeer::TAS_UID, $arrayAppDelegationData['TAS_UID'], Criteria::EQUAL); $rsCriteria = AbeConfigurationPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); if ($rsCriteria->next()) { $record = $rsCriteria->getRow(); if ($record['ABE_FORCE_LOGIN'] == 1) { $flagLogin = false; if (!isset($_SESSION['USER_LOGGED'])) { /*----------------------------------********---------------------------------*/ //SSO if (PMLicensedFeatures::getSingleton()->verifyfeature('x4TTzlISnp2K2tnSTJoMC8rTDRMTjlhMCtZeXV0QnNCLzU=')) { $sso = new \PmSsoClass(); if ($sso->ssocVerifyUser()) { global $RBAC; //Start new session @session_destroy(); session_start(); session_regenerate_id(); //Authenticate $_GET['u'] = $_SERVER['REQUEST_URI']; require_once(PATH_METHODS . 'login' . PATH_SEP . 'authenticationSso.php'); exit(0); } } /*----------------------------------********---------------------------------*/ if (defined('PM_SINGLE_SIGN_ON')) { $pluginRegistry = PluginRegistry::loadSingleton(); if ($pluginRegistry->existsTrigger(PM_SINGLE_SIGN_ON)) { if ($pluginRegistry->executeTriggers(PM_SINGLE_SIGN_ON, null)) { global $RBAC; //Start new session @session_destroy(); session_start(); session_regenerate_id(); //Authenticate $_GET['u'] = $_SERVER['REQUEST_URI']; require_once(PATH_METHODS . 'login' . PATH_SEP . 'authenticationSso.php'); exit(0); } } } $flagLogin = true; } else { if ($_SESSION['USER_LOGGED'] != $arrayAppDelegationData['USR_UID']) { G::SendTemporalMessage('ID_CASE_ASSIGNED_ANOTHER_USER', 'error', 'label'); $flagLogin = true; } } if ($flagLogin) { header( 'Location: /sys' . config("system.workspace") . '/' . SYS_LANG . '/' . SYS_SKIN . '/login/login?u=' . urlencode($_SERVER['REQUEST_URI']) ); exit(0); } } } } catch (Exception $e) { throw $e; } } }