PM-2376: I completed the solution in BPMN with link and field
This commit is contained in:
@@ -137,7 +137,7 @@ class actionsByEmailClass extends PMPlugin
|
||||
switch ($configuration['ABE_TYPE']) {
|
||||
case 'LINK':
|
||||
// $__ABE__ .= $dynaform->render(PATH_FEATURES . 'actionsByEmail/xmlform.html', $scriptCode) . '<br />';
|
||||
$__ABE__ .= '<a href="' . $link . 'dataForm?APP_UID=' . G::encrypt($data->APP_UID, URL_KEY) . '&DEL_INDEX=' . G::encrypt($data->DEL_INDEX, URL_KEY) . '&DYN_UID=' . G::encrypt($configuration['DYN_UID'], URL_KEY) . '&ABER=' . G::encrypt($abeRequest['ABE_REQ_UID'], URL_KEY) . '" target="_blank">Please complete this form</a>';
|
||||
$__ABE__ .= '<a href="' . $link . 'DataForm?APP_UID=' . G::encrypt($data->APP_UID, URL_KEY) . '&DEL_INDEX=' . G::encrypt($data->DEL_INDEX, URL_KEY) . '&DYN_UID=' . G::encrypt($configuration['DYN_UID'], URL_KEY) . '&ABER=' . G::encrypt($abeRequest['ABE_REQ_UID'], URL_KEY) . '" target="_blank">Please complete this form</a>';
|
||||
break;
|
||||
// coment
|
||||
case 'FIELD':
|
||||
@@ -169,7 +169,9 @@ class actionsByEmailClass extends PMPlugin
|
||||
}
|
||||
G::LoadClass('pmDynaform');
|
||||
$obj = new pmDynaform($configuration['DYN_UID']);
|
||||
$file = $obj->printPmDynaformAbe($configuration['DYN_CONTENT']);
|
||||
$configuration['CURRENT_DYNAFORM'] = $configuration['DYN_UID'];
|
||||
$file = $obj->printPmDynaformAbe($configuration);
|
||||
$__ABE__ .= $file;
|
||||
$__ABE__ .= '<strong>' . $field->label . '</strong><br /><table align="left" border="0"><tr>';
|
||||
switch ($field->type) {
|
||||
case 'dropdown':
|
||||
|
||||
@@ -456,6 +456,39 @@ class pmDynaform
|
||||
exit();
|
||||
}
|
||||
|
||||
public function printABE($filename, $record)
|
||||
{
|
||||
ob_clean();
|
||||
$this->record = $record;
|
||||
$json = G::json_decode($this->record["DYN_CONTENT"]);
|
||||
$this->jsonr($json);
|
||||
$javascrip = "" .
|
||||
"<script type='text/javascript'>\n" .
|
||||
"var jsondata = " . G::json_encode($json) . ";\n" .
|
||||
"var pm_run_outside_main_app = null;\n" .
|
||||
"var dyn_uid = '" . $this->fields["CURRENT_DYNAFORM"] . "';\n" .
|
||||
"var __DynaformName__ = null;\n" .
|
||||
"var app_uid = null;\n" .
|
||||
"var prj_uid = '" . $this->record["PRO_UID"] . "';\n" .
|
||||
"var step_mode = null;\n" .
|
||||
"var workspace = '" . SYS_SYS . "';\n" .
|
||||
"var credentials = " . G::json_encode($this->credentials) . ";\n" .
|
||||
"var filePost = '" . $filename . "';\n" .
|
||||
"var fieldsRequired = " . G::json_encode(array()) . ";\n" .
|
||||
"var triggerDebug = null;\n" .
|
||||
"</script>\n" .
|
||||
"<script type='text/javascript' src='/jscore/cases/core/pmDynaform.js'></script>\n" .
|
||||
"<div style='width:100%;padding: 0px 10px 0px 10px;margin:15px 0px 0px 0px;'>\n" .
|
||||
" <a id='dyn_forward' href='' style='float:right;font-size:12px;line-height:1;margin:0px 5px 1px 0px;'>\n" .
|
||||
" </a>\n" .
|
||||
"</div>";
|
||||
|
||||
$file = file_get_contents(PATH_HOME . 'public_html/lib/pmdynaform/build/pmdynaform.html');
|
||||
$file = str_replace("{javascript}", $javascrip, $file);
|
||||
echo $file;
|
||||
exit();
|
||||
}
|
||||
|
||||
public function printPmDynaform()
|
||||
{
|
||||
$json = G::json_decode($this->record["DYN_CONTENT"]);
|
||||
@@ -472,12 +505,29 @@ class pmDynaform
|
||||
exit();
|
||||
}
|
||||
|
||||
public function printPmDynaformAbe($content)
|
||||
public function printPmDynaformAbe($record)
|
||||
{
|
||||
$this->record["DYN_CONTENT"] = $content;
|
||||
ob_clean();
|
||||
$this->record = $record;
|
||||
$json = G::json_decode($this->record["DYN_CONTENT"]);
|
||||
$this->jsonr($json);
|
||||
$javascrip = "";
|
||||
$javascrip = "" .
|
||||
"<script type='text/javascript'>\n" .
|
||||
"var jsondata = " . G::json_encode($json) . ";\n" .
|
||||
"var pm_run_outside_main_app = null;\n" .
|
||||
"var dyn_uid = '" . $this->fields["CURRENT_DYNAFORM"] . "';\n" .
|
||||
"var __DynaformName__ = null;\n" .
|
||||
"var app_uid = null;\n" .
|
||||
"var prj_uid = '" . $this->record["PRO_UID"] . "';\n" .
|
||||
"var step_mode = null;\n" .
|
||||
"var workspace = '" . SYS_SYS . "';\n" .
|
||||
"var credentials = " . G::json_encode($this->credentials) . ";\n" .
|
||||
"var fieldsRequired = " . G::json_encode(array()) . ";\n" .
|
||||
"var triggerDebug = null;\n" .
|
||||
"</script>\n" .
|
||||
"<script type='text/javascript' src='/jscore/cases/core/pmDynaform.js'></script>\n" .
|
||||
"<div style='width:100%;padding: 0px 10px 0px 10px;margin:15px 0px 0px 0px;'>\n" .
|
||||
"</div>";
|
||||
$file = file_get_contents(PATH_HOME . 'public_html/lib/pmdynaform/build/pmdynaform.html');
|
||||
$file = str_replace("{javascript}", $javascrip, $file);
|
||||
return $file;
|
||||
|
||||
@@ -6,7 +6,7 @@ if (PMLicensedFeatures
|
||||
// since all the request parameters using this script are encrypted
|
||||
// using the URL_KEY the probability of injecting any kind of code using
|
||||
// this entry point are only possible knowing the aforementioned key.
|
||||
switch (true) {
|
||||
switch (G::decrypt(urldecode(utf8_encode($_REQUEST['ACTION'])), URL_KEY)) {
|
||||
case 'processABE' :
|
||||
$G_PUBLISH = new Publisher();
|
||||
try {
|
||||
|
||||
56
workflow/engine/methods/services/ActionsByEmailDataForm.php
Executable file
56
workflow/engine/methods/services/ActionsByEmailDataForm.php
Executable file
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
global $G_PUBLISH;
|
||||
$G_PUBLISH = new Publisher();
|
||||
|
||||
try {
|
||||
// Validations
|
||||
if (!isset($_REQUEST['APP_UID'])) {
|
||||
$_REQUEST['APP_UID'] = '';
|
||||
}
|
||||
|
||||
if (!isset($_REQUEST['DEL_INDEX'])) {
|
||||
$_REQUEST['DEL_INDEX'] = '';
|
||||
}
|
||||
|
||||
if ($_REQUEST['APP_UID'] == '') {
|
||||
throw new Exception('The parameter APP_UID is empty.');
|
||||
}
|
||||
|
||||
if ($_REQUEST['DEL_INDEX'] == '') {
|
||||
throw new Exception('The parameter DEL_INDEX is empty.');
|
||||
}
|
||||
|
||||
G::LoadClass('case');
|
||||
G::LoadClass('pmDynaform');
|
||||
|
||||
$cases = new Cases();
|
||||
$caseFields = $cases->loadCase(G::decrypt($_REQUEST['APP_UID'], URL_KEY),G::decrypt($_REQUEST['DEL_INDEX'], URL_KEY));
|
||||
|
||||
//
|
||||
$criteria = new Criteria();
|
||||
$criteria->addSelectColumn(DynaformPeer::DYN_CONTENT);
|
||||
$criteria->addSelectColumn(DynaformPeer::PRO_UID);
|
||||
$criteria->add(DynaformPeer::DYN_UID, G::decrypt($_REQUEST['DYN_UID'], URL_KEY));
|
||||
$result = DynaformPeer::doSelectRS($criteria);
|
||||
$result->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||
$result->next();
|
||||
$configuration = $result->getRow();
|
||||
$a = new pmDynaform(G::decrypt($_REQUEST['DYN_UID'], URL_KEY));
|
||||
$action = 'ActionsByEmailDataFormPost.php?APP_UID=' . $_REQUEST['APP_UID'] . '&DEL_INDEX=' . $_REQUEST['DEL_INDEX'] . '&ABER=' . $_REQUEST['ABER'];
|
||||
$record['DYN_CONTENT'] = $configuration['DYN_CONTENT'];
|
||||
$record['PRO_UID'] = $configuration['PRO_UID'];
|
||||
$record['CURRENT_DYNAFORM'] = G::decrypt($_REQUEST['DYN_UID'], URL_KEY);
|
||||
$record['APP_UID'] = $_REQUEST['APP_UID'];
|
||||
$record['DEL_INDEX'] = $_REQUEST['DEL_INDEX'];
|
||||
$record['ABER'] = $_REQUEST['ABER'];
|
||||
if (is_null($caseFields['DEL_FINISH_DATE'])) {
|
||||
$a->printABE($action,$record);
|
||||
} else {
|
||||
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showInfo', '', array('MESSAGE' => '<strong>The form has already been filled and sent.</strong>'));
|
||||
}
|
||||
} catch (Exception $error) {
|
||||
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showInfo', '', array('MESSAGE' => $error->getMessage()));
|
||||
}
|
||||
|
||||
G::RenderPage('publish', 'blank');
|
||||
|
||||
204
workflow/engine/methods/services/ActionsByEmailDataFormPost.php
Executable file
204
workflow/engine/methods/services/ActionsByEmailDataFormPost.php
Executable file
@@ -0,0 +1,204 @@
|
||||
<?php
|
||||
$G_PUBLISH = new Publisher();
|
||||
try {
|
||||
if ($_REQUEST['APP_UID'] == '') {
|
||||
if($_GET['APP_UID'] == ''){
|
||||
throw new Exception('The parameter APP_UID is empty.');
|
||||
} else {
|
||||
$_REQUEST['APP_UID'] = $_GET['APP_UID'];
|
||||
}
|
||||
}
|
||||
|
||||
if ($_REQUEST['DEL_INDEX'] == '') {
|
||||
throw new Exception('The parameter DEL_INDEX is empty.');
|
||||
}
|
||||
|
||||
if ($_REQUEST['ABER'] == '') {
|
||||
throw new Exception('The parameter ABER is empty.');
|
||||
}
|
||||
|
||||
if (!isset($_REQUEST['form'])) {
|
||||
$_REQUEST['form'] = array();
|
||||
}
|
||||
|
||||
$_REQUEST['APP_UID'] = G::decrypt($_REQUEST['APP_UID'], URL_KEY);
|
||||
$_REQUEST['DEL_INDEX'] = G::decrypt($_REQUEST['DEL_INDEX'], URL_KEY);
|
||||
$_REQUEST['ABER'] = G::decrypt($_REQUEST['ABER'], URL_KEY);
|
||||
G::LoadClass('case');
|
||||
|
||||
$case = new Cases();
|
||||
$casesFields = $case->loadCase($_REQUEST['APP_UID'], $_REQUEST['DEL_INDEX']);
|
||||
|
||||
$casesFields['APP_DATA'] = array_merge($casesFields['APP_DATA'], $_REQUEST['form']);
|
||||
|
||||
//Get user info
|
||||
$current_user_uid = null;
|
||||
$currentUsrName = null;
|
||||
|
||||
$criteria = new Criteria("workflow");
|
||||
|
||||
$criteria->addSelectColumn(AppDelegationPeer::USR_UID);
|
||||
$criteria->add(AppDelegationPeer::APP_UID, $_REQUEST["APP_UID"]);
|
||||
$criteria->add(AppDelegationPeer::DEL_INDEX, $_REQUEST["DEL_INDEX"]);
|
||||
|
||||
$rsSQL = AppDelegationPeer::doSelectRS($criteria);
|
||||
$rsSQL->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||
|
||||
while ($rsSQL->next()) {
|
||||
$row = $rsSQL->getRow();
|
||||
|
||||
$current_user_uid = $row["USR_UID"];
|
||||
}
|
||||
|
||||
if ($current_user_uid != null) {
|
||||
$criteria = new Criteria("workflow");
|
||||
|
||||
$criteria->addSelectColumn(UsersPeer::USR_USERNAME);
|
||||
$criteria->add(UsersPeer::USR_UID, $current_user_uid);
|
||||
|
||||
$rsSQL = UsersPeer::doSelectRS($criteria);
|
||||
$rsSQL->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||
|
||||
$rsSQL->next();
|
||||
|
||||
$row = $rsSQL->getRow();
|
||||
$currentUsrName = $row["USR_USERNAME"];
|
||||
|
||||
$casesFields["APP_DATA"]["USER_LOGGED"] = $current_user_uid;
|
||||
$casesFields["APP_DATA"]["USR_USERNAME"] = $currentUsrName;
|
||||
}
|
||||
|
||||
foreach ($casesFields["APP_DATA"] as $index => $value) {
|
||||
$_SESSION[$index] = $value;
|
||||
}
|
||||
|
||||
//Update case info
|
||||
$case->updateCase($_REQUEST['APP_UID'], $casesFields);
|
||||
|
||||
G::LoadClass('wsBase');
|
||||
|
||||
$wsBaseInstance = new wsBase();
|
||||
$result = $wsBaseInstance->derivateCase($casesFields['CURRENT_USER_UID'], $_REQUEST['APP_UID'], $_REQUEST ['DEL_INDEX'], true);
|
||||
$code = (is_array($result) ? $result['status_code'] : $result->status_code);
|
||||
|
||||
$dataResponses = array();
|
||||
$dataResponses['ABE_REQ_UID'] = $_REQUEST['ABER'];
|
||||
$dataResponses['ABE_RES_CLIENT_IP'] = $_SERVER['REMOTE_ADDR'];
|
||||
$dataResponses['ABE_RES_DATA'] = serialize($_REQUEST['form']);
|
||||
$dataResponses['ABE_RES_STATUS'] = 'PENDING';
|
||||
$dataResponses['ABE_RES_MESSAGE'] = '';
|
||||
|
||||
try {
|
||||
set_include_path(PATH_PLUGINS . '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 ($code == 0) {
|
||||
//Save Cases Notes
|
||||
include_once 'utils.php';
|
||||
|
||||
$dataAbeRequests = loadAbeRequest($_REQUEST['ABER']);
|
||||
$dataAbeConfiguration = loadAbeConfiguration($dataAbeRequests['ABE_UID']);
|
||||
|
||||
if ($dataAbeConfiguration['ABE_CASE_NOTE_IN_RESPONSE'] == 1) {
|
||||
$response = new stdclass();
|
||||
$response->usrUid = $casesFields['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) : '';
|
||||
|
||||
if (isset ( $_FILES ['form'] )) {
|
||||
foreach ($_FILES ['form'] ['name'] as $fieldName => $value) {
|
||||
if ($_FILES ['form'] ['error'] [$fieldName] == 0) {
|
||||
$appDocument = new AppDocument ( );
|
||||
|
||||
if ( isset ( $_REQUEST['INPUTS'] [$fieldName] ) && $_REQUEST['INPUTS'] [$fieldName] != '' ) {
|
||||
require_once 'classes/model/AppFolder.php';
|
||||
require_once 'classes/model/InputDocument.php';
|
||||
|
||||
$inputDocument = new InputDocument();
|
||||
$id = $inputDocument->load($_REQUEST['INPUTS'] [$fieldName]);
|
||||
|
||||
//Get the Custom Folder ID (create if necessary)
|
||||
$oFolder=new AppFolder();
|
||||
$folderId=$oFolder->createFromPath($id['INP_DOC_DESTINATION_PATH']);
|
||||
|
||||
//Tags
|
||||
$fileTags=$oFolder->parseTags($id['INP_DOC_TAGS']);
|
||||
|
||||
$fields = array (
|
||||
'APP_UID' => $_REQUEST['APP_UID'],
|
||||
'DEL_INDEX' => $_REQUEST ['DEL_INDEX'],
|
||||
'USR_UID' => $casesFields['APP_DATA']['USER_LOGGED'],
|
||||
'DOC_UID' => $_REQUEST['INPUTS'] [$fieldName],
|
||||
'APP_DOC_TYPE' => 'INPUT',
|
||||
'APP_DOC_CREATE_DATE' => date ( 'Y-m-d H:i:s' ),
|
||||
'APP_DOC_COMMENT' => '',
|
||||
'APP_DOC_TITLE' => '',
|
||||
'APP_DOC_FILENAME' => $_FILES ['form'] ['name'] [$fieldName],
|
||||
'FOLDER_UID' => $folderId,
|
||||
'APP_DOC_TAGS' => $fileTags
|
||||
);
|
||||
} else {
|
||||
$fields = array (
|
||||
'APP_UID' => $_REQUEST['APP_UID'],
|
||||
'DEL_INDEX' => $_REQUEST ['DEL_INDEX'],
|
||||
'USR_UID' => $casesFields['APP_DATA']['USER_LOGGED'],
|
||||
'DOC_UID' => - 1,
|
||||
'APP_DOC_TYPE' => 'ATTACHED',
|
||||
'APP_DOC_CREATE_DATE' => date ( 'Y-m-d H:i:s' ),
|
||||
'APP_DOC_COMMENT' => '',
|
||||
'APP_DOC_TITLE' => '',
|
||||
'APP_DOC_FILENAME' => $_FILES ['form'] ['name'] [$fieldName]
|
||||
);
|
||||
}
|
||||
|
||||
$appDocument->create($fields);
|
||||
$docVersion = $appDocument->getDocVersion();
|
||||
$appDocUid = $appDocument->getAppDocUid ();
|
||||
$info = pathinfo ( $appDocument->getAppDocFilename () );
|
||||
$extension = (isset ( $info ['extension'] ) ? $info ['extension'] : '');
|
||||
$pathName = PATH_DOCUMENT . $_REQUEST['APP_UID'] . PATH_SEP;
|
||||
$fileName = $appDocUid . '_'.$docVersion.'.' . $extension;
|
||||
|
||||
G::uploadFile ( $_FILES ['form'] ['tmp_name'] [$fieldName], $pathName, $fileName );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$assign = $result['message'];
|
||||
$aMessage['MESSAGE'] = '<strong>The information was submitted. Thank you.</strong>';
|
||||
} else {
|
||||
throw new Exception('An error occurred while the application was being processed.<br /><br />
|
||||
Error code: '.$result->status_code.'<br />
|
||||
Error message: '.$result->message.'<br /><br />');
|
||||
}
|
||||
|
||||
// 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;
|
||||
}
|
||||
|
||||
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showInfo', '', $aMessage);
|
||||
} catch (Exception $error) {
|
||||
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showMessage', '', array('MESSAGE' => $error->getMessage().'Please contact to your system administrator.'));
|
||||
}
|
||||
|
||||
G::RenderPage('publish', 'blank');
|
||||
|
||||
84
workflow/engine/methods/services/utils.php
Executable file
84
workflow/engine/methods/services/utils.php
Executable file
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
|
||||
function postNote($httpData)
|
||||
{
|
||||
//extract(getExtJSParams());
|
||||
$appUid = (isset($httpData->appUid))? $httpData->appUid : '';
|
||||
|
||||
$usrUid = (isset($httpData->usrUid))? $httpData->usrUid : '' ;
|
||||
|
||||
require_once ( "classes/model/AppNotes.php" );
|
||||
|
||||
$appNotes = new AppNotes();
|
||||
$noteContent = addslashes($httpData->noteText);
|
||||
|
||||
$result = $appNotes->postNewNote($appUid, $usrUid, $noteContent, false);
|
||||
//return true;
|
||||
|
||||
//die();
|
||||
//send the response to client
|
||||
@ini_set('implicit_flush', 1);
|
||||
ob_start();
|
||||
//echo G::json_encode($result);
|
||||
@ob_flush();
|
||||
@flush();
|
||||
@ob_end_flush();
|
||||
ob_implicit_flush(1);
|
||||
//return true;
|
||||
//send notification in background
|
||||
$noteRecipientsList = array();
|
||||
G::LoadClass('case');
|
||||
$oCase = new Cases();
|
||||
|
||||
$p = $oCase->getUsersParticipatedInCase($appUid);
|
||||
|
||||
foreach ($p['array'] as $key => $userParticipated) {
|
||||
$noteRecipientsList[] = $key;
|
||||
}
|
||||
|
||||
$noteRecipients = implode(",", $noteRecipientsList);
|
||||
|
||||
$appNotes->sendNoteNotification($appUid, $usrUid, $noteContent, $noteRecipients);
|
||||
|
||||
}
|
||||
|
||||
function loadAbeRequest($AbeRequestsUid)
|
||||
{
|
||||
require_once 'classes/model/AbeRequests.php';
|
||||
|
||||
$criteria = new Criteria();
|
||||
$criteria->add(AbeRequestsPeer::ABE_REQ_UID, $AbeRequestsUid);
|
||||
$resultRequests = AbeRequestsPeer::doSelectRS($criteria);
|
||||
$resultRequests->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||
$resultRequests->next();
|
||||
$abeRequests = $resultRequests->getRow();
|
||||
|
||||
return $abeRequests;
|
||||
}
|
||||
|
||||
function loadAbeConfiguration($AbeConfigurationUid)
|
||||
{
|
||||
require_once 'classes/model/AbeConfiguration.php';
|
||||
|
||||
$criteria = new Criteria();
|
||||
$criteria->add(AbeConfigurationPeer::ABE_UID, $AbeConfigurationUid);
|
||||
$result = AbeConfigurationPeer::doSelectRS($criteria);
|
||||
$result->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||
$result->next();
|
||||
$abeConfiguration = $result->getRow();
|
||||
|
||||
return $abeConfiguration;
|
||||
}
|
||||
|
||||
function uploadAbeRequest($data)
|
||||
{
|
||||
require_once 'classes/model/AbeRequests.php';
|
||||
|
||||
try {
|
||||
$abeRequestsInstance = new AbeRequests();
|
||||
$abeRequestsInstance->createOrUpdate($data);
|
||||
} catch (Exception $error) {
|
||||
throw $error;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user