Files
tomolino-processmaker/front/processmaker.form.php
tomolimo e30ecf3a0b Added possibility to set notification for tasks (and of course notification templates)
Added two new events per tasks (new and update)
Added possibility to send spontaneous emails
Fixed various CS typos
Set version to 3.6.3
fixes #77
2019-07-29 08:33:55 +02:00

160 lines
8.6 KiB
PHP

<?php
include_once ("../../../inc/includes.php");
switch ($_POST["action"]) {
case 'newcase':
if (isset($_POST['items_id']) && $_POST['items_id'] > 0) {
// then this case will be bound to an item
if ($_POST['plugin_processmaker_processes_id'] > 0) {
$resultCase = $PM_SOAP->startNewCase($_POST['plugin_processmaker_processes_id'], $_POST['itemtype'], $_POST['items_id'], Session::getLoginUserID());
if ($resultCase->status_code == 0) {
$case = new PluginProcessmakerCase;
if ($case->getFromGUID($resultCase->caseId)) {
$link = $case->getLinkURL();
$task = new PluginProcessmakerTask($_POST['itemtype'].'Task');
$task->getFromDBByRequest([
'WHERE' => [
'plugin_processmaker_cases_id' => $case->getID()
],
]);
//$task->getFromDBByQuery(" WHERE `plugin_processmaker_cases_id`=".$case->getID()); // normally there is only one and only one first task
//$link .= '&forcetab=PluginProcessmakerTask$'.$task->getID();
Session::setActiveTab('PluginProcessmakerCase', 'PluginProcessmakerTask$'.$task->fields['id']);
$item = new $_POST['itemtype'];
$item->getFromDB($_POST['items_id']);
unset($_SERVER['REQUEST_URI']); // to prevent use of processmaker.form.php in NavigateList
Session::initNavigateListItems('PluginProcessmakerCase',
//TRANS : %1$s is the itemtype name,
// %2$s is the name of the item (used for headings of a list)
sprintf('%1$s = %2$s',
$_POST['itemtype']::getTypeName(1), $item->fields["name"]));
Html::redirect($link);
}
Html::back();
} else {
Session::addMessageAfterRedirect( PluginProcessmakerProcessmaker::getPMErrorMessage($resultCase->status_code)."<br>".$resultCase->message." (".$resultCase->status_code.")", true, ERROR);
}
} else {
Html::back();
}
} else { // the case is created before the ticket (used for post-only case creation before ticket creation)
$pm_user_guid = PluginProcessmakerUser::getPMUserId( Session::getLoginUserID() );
$resultCase = $PM_SOAP->newCase( $_POST['plugin_processmaker_processes_id'],
['GLPI_ITEM_CAN_BE_SOLVED' => 0,
'GLPI_SELFSERVICE_CREATED' => '1',
'GLPI_ITEM_TYPE' => 'Ticket',
'GLPI_URL' => $CFG_GLPI['url_base'],
// Specific to Tickets
// GLPI_TICKET_TYPE will contains 1 (= incident) or 2 (= request)
'GLPI_TICKET_TYPE' => $_POST['type'],
'GLPI_ITEM_REQUESTER_GLPI_ID' => Session::getLoginUserID(),
'GLPI_ITEM_REQUESTER_PM_ID' => $pm_user_guid
] );
if ($resultCase->status_code == 0) {
// case is created
// Must show it...
//
$rand = rand( );
Html::redirect($CFG_GLPI['root_doc']."/plugins/processmaker/front/processmaker.helpdesk.form.php?processes_id=".$_POST['plugin_processmaker_processes_id']."&case_guid=".$resultCase->caseId."&rand=$rand&itilcategories_id=".$_POST["itilcategories_id"]."&type=".$_REQUEST["type"]."&entities_id=".$_REQUEST['entities_id']);
} else {
Session::addMessageAfterRedirect( PluginProcessmakerProcessmaker::getPMErrorMessage($resultCase->status_code)."<br>$resultCase->message ($resultCase->status_code)", true, ERROR);
Html::redirect($CFG_GLPI["root_doc"]."/front/helpdesk.public.php?create_ticket=1");
}
}
break;
case 'unpausecase_or_reassign_or_delete' :
if (isset($_POST['unpause'])) {
$locCase = new PluginProcessmakerCase;
$locCase->getFromDB($_POST['cases_id']);
$pmResultUnpause = $locCase->unpauseCase($_POST['delIndex'], $_POST['users_id']);
if ($pmResultUnpause->status_code == 0) {
Html::back();
} else {
echo "Error unpausing case: ".$pmResultUnpause->message." \n";
}
} else if (isset($_POST['reassign'])) {
// here we should re-assign the current task to $_POST['users_id_recipient']
//$GLPINewPMUserId = PluginProcessmakerUser::getPMUserId( $_POST['users_id_recipient'] );
if ($_POST['users_id'] != $_POST['users_id_recipient']) { // normally should be different as of the dropdown prevents already used
$locCase = new PluginProcessmakerCase;
$locCase->getFromDB($_POST['cases_id']);
$pmResponse = $locCase->reassignCase($_POST['delIndex'],
$_POST['taskGuid'],
$_POST['delThread'],
$_POST['users_id'],
$_POST['users_id_recipient']);
if ($pmResponse) {
Session::addMessageAfterRedirect(__('Task re-assigned!', 'processmaker'), true, INFO);
} else {
Session::addMessageAfterRedirect(__('Error re-assigning task: ', 'processmaker').$pmResponse->message, true, ERROR);
}
} else {
Session::addMessageAfterRedirect(__('Task already assigned to this person!', 'processmaker'), true, ERROR);
}
//} else if (isset($_POST['delete'])) {
// // delete case from case table, this will also delete the tasks
// $locCase = new PluginProcessmakerCase;
// if ($locCase->getFromDB($_POST['cases_id']) && $locCase->deleteCase()) {
// // request delete from pm itself
// $PM_SOAP->login(true);
// $resultPM = $PM_SOAP->deleteCase($locCase->fields['case_guid']);
// if ($resultPM->status_code == 0) {
// Session::addMessageAfterRedirect($LANG['processmaker']['item']['case']['deleted'], true, INFO);
// } else {
// Session::addMessageAfterRedirect($LANG['processmaker']['item']['case']['errordeleted'], true, ERROR);
// }
// } else {
// Session::addMessageAfterRedirect($LANG['processmaker']['item']['case']['errordeleted'], true, ERROR);
// }
//} else if (isset($_POST['cancel'])) {
// // cancel case from PM
// $locCase = new PluginProcessmakerCase;
// $locCase->getFromDB($_POST['cases_id']);
// $resultPM = $PM_SOAP->cancelCase($locCase->fields['case_guid']); //, $_POST['plugin_processmaker_del_index'], $_POST['plugin_processmaker_users_id'] ) ;
// if ($resultPM->status_code === 0) {
// //$locCase = new PluginProcessmakerCase;
// //$locCase->getFromDB($_POST['cases_id']);
// if ($locCase->cancelCase()) {
// Session::addMessageAfterRedirect($LANG['processmaker']['item']['case']['cancelled'], true, INFO);
// } else {
// Session::addMessageAfterRedirect($LANG['processmaker']['item']['case']['errorcancelled'], true, ERROR);
// }
// } else {
// if ($resultPM->status_code == 100 && $locCase->deleteCase()) { // case is draft then delete it
// // request delete from pm itself
// $PM_SOAP->login(true);
// $resultPM = $PM_SOAP->deleteCase($locCase->fields['case_guid']);
// if ($resultPM->status_code == 0) {
// Session::addMessageAfterRedirect($LANG['processmaker']['item']['case']['deleted'], true, INFO);
// } else {
// Session::addMessageAfterRedirect($LANG['processmaker']['item']['case']['errordeleted'], true, ERROR);
// }
// } else {
// Session::addMessageAfterRedirect($LANG['processmaker']['item']['case']['errorcancelled']. " " . $resultPM->message, true, ERROR);
// }
// }
}
break;
}
// to return to item
Html::back();