diff --git a/README.md b/README.md
index d5b74f4..9130842 100644
--- a/README.md
+++ b/README.md
@@ -6,6 +6,8 @@ version 3.4.x is compatible with GLPI 9.2 and needs ProcessMaker either 3.0.1.8-
version 3.5.x is compatible with GLPI 9.3 and needs ProcessMaker 3.3.0-RE-1.x (https://github.com/tomolimo/processmaker-server/releases/latest)
+version 3.6.x is compatible with GLPI 9.4 and needs ProcessMaker 3.3.0-RE-1.x (https://github.com/tomolimo/processmaker-server/releases/latest)
+
This plugin can run classic and bpmn processes
An IRC channel is available: #processmaker-glpi on https://webchat.freenode.net/
diff --git a/ajax/dropdownProcesses.php b/ajax/dropdownProcesses.php
index ba543e3..f8c8fc9 100644
--- a/ajax/dropdownProcesses.php
+++ b/ajax/dropdownProcesses.php
@@ -45,7 +45,7 @@ if (!isset($_REQUEST['emptylabel']) || ($_REQUEST['emptylabel'] == '')) {
$search="";
if (!empty($_REQUEST['searchText'])) {
- $search = Search::makeTextSearch($_REQUEST['searchText']);
+ $search = ['LIKE', Search::makeTextSearchValue($_REQUEST['searchText'])];
}
$processes = [];
@@ -65,8 +65,10 @@ $count_cases_per_item = isset($_REQUEST['specific_tags']['count_cases_per_item']
$result = PluginProcessmakerProcess::getSqlSearchResult(false, $search);
-if ($DB->numrows($result)) {
- while ($data = $DB->fetch_array($result)) {
+//if ($DB->numrows($result)) {
+// while ($data = $DB->fetch_array($result)) {
+if ($result->numrows()) {
+ foreach ($result as $data) {
$process_entities = PluginProcessmakerProcess::getEntitiesForProfileByProcess($data["id"], $_SESSION['glpiactiveprofile']['id'], true);
$can_add = $data['max_cases_per_item'] == 0 || !isset($count_cases_per_item[$data["id"]]) || $count_cases_per_item[$data["id"]] < $data['max_cases_per_item'];
if ($processall
diff --git a/ajax/dropdownUsers.php b/ajax/dropdownUsers.php
index 16785f1..6015a0b 100644
--- a/ajax/dropdownUsers.php
+++ b/ajax/dropdownUsers.php
@@ -58,20 +58,29 @@ if ($one_item < 0) {
$start = ($_REQUEST['page']-1)*$_REQUEST['page_limit'];
$LIMIT = "LIMIT $start,".$_REQUEST['page_limit'];
$searchText = isset($_REQUEST['searchText']) ? $_REQUEST['searchText'] : "";
- $result = PluginProcessmakerUser::getSqlSearchResult( $_REQUEST['specific_tags']['taskGuid'], false, $_REQUEST['right'], $_REQUEST["entity_restrict"],
+ /*$result*/$res = PluginProcessmakerUser::getSqlSearchResult( $_REQUEST['specific_tags']['taskGuid'], false, $_REQUEST['right'], $_REQUEST["entity_restrict"],
$_REQUEST['value'], $used, $searchText, $LIMIT);
} else {
- $query = "SELECT DISTINCT `glpi_users`.*
- FROM `glpi_users`
- WHERE `glpi_users`.`id` = '$one_item';";
- $result = $DB->query($query);
+ $res = $DB->request([
+ 'SELECT' => 'glpi_users.*',
+ 'FROM' => 'glpi_users',
+ 'WHERE' => [
+ 'glpi_users.id' => $one_item
+ ]
+ ]);
+ //$query = "SELECT DISTINCT `glpi_users`.*
+ // FROM `glpi_users`
+ // WHERE `glpi_users`.`id` = '$one_item';";
+ //$result = $DB->query($query);
}
$users = [];
// Count real items returned
$count = 0;
-if ($DB->numrows($result)) {
- while ($data = $DB->fetch_assoc($result)) {
+//if ($DB->numrows($result)) {
+// while ($data = $DB->fetch_assoc($result)) {
+if ($res->numrows()) {
+ foreach ($res as $data) {
$users[$data["id"]] = $dbu->formatUserName($data["id"], $data["name"], $data["realname"],
$data["firstname"]);
$logins[$data["id"]] = $data["name"];
diff --git a/front/processmaker.helpdesk.form.php b/front/processmaker.helpdesk.form.php
index 5a7175a..9c1e5cc 100644
--- a/front/processmaker.helpdesk.form.php
+++ b/front/processmaker.helpdesk.form.php
@@ -225,7 +225,7 @@ if (!Session::haveRight('ticket', CREATE)
&& !Session::haveRight('reminder_public', READ)
&& !Session::haveRight("rssfeed_public", READ)) {
- if (Session::haveRight('followup', TicketFollowup::SEEPUBLIC)
+ if (Session::haveRight('followup', ITILFollowup::SEEPUBLIC) //TicketFollowup::SEEPUBLIC
|| Session::haveRight('task', TicketTask::SEEPUBLIC)
|| Session::haveRightsOr('ticketvalidation', [TicketValidation::VALIDATEREQUEST,
TicketValidation::VALIDATEINCIDENT])) {
@@ -245,9 +245,14 @@ Html::helpHeader(__('New ticket'), $_SERVER['PHP_SELF'], $_SESSION["glpiname"]);
if (isset($_REQUEST['case_guid'])) {
+ $res = $DB->request(
+ 'glpi_plugin_processmaker_cases', [
+ ' case_guid'=>$_REQUEST['case_guid']
+ ]);
$query = "SELECT * FROM glpi_plugin_processmaker_cases WHERE case_guid='".$_REQUEST['case_guid']."'";
- $res = $DB->query( $query );
- if ($DB->numrows( $res )) { // a ticket already exists for this case, then show new cases
+ //$res = $DB->query( $query );
+ //if ($DB->numrows( $res )) { // a ticket already exists for this case, then show new cases
+ if ($res->numrows()) { // a ticket already exists for this case, then show new cases
processMakerShowProcessList(Session::getLoginUserID(), 1);
} else {
// before showing the case, we must check the rights for this user to view it, if entity has been changed in the meanwhile
diff --git a/inc/case.class.php b/inc/case.class.php
index 907507a..44c2d9e 100644
--- a/inc/case.class.php
+++ b/inc/case.class.php
@@ -265,11 +265,18 @@ class PluginProcessmakerCase extends CommonDBTM {
*/
public function reassignTask ($delIndex, $newDelIndex, $delThread, $newDelThread, $newTech) {
global $DB;
-
- $query = "SELECT * FROM glpi_plugin_processmaker_tasks WHERE plugin_processmaker_cases_id={$this->getID()} AND del_index=$delIndex AND del_thread=$delThread; ";
- $res = $DB->query($query);
- if ($DB->numrows($res) > 0) {
- $row = $DB->fetch_array( $res );
+ $res = $DB->request('glpi_plugin_processmaker_tasks', [
+ 'AND' => [
+ 'plugin_processmaker_cases_id' => $this->getID(),
+ 'del_index' => $delIndex,
+ 'del_thead' => $delThread
+ ]
+ ]);
+ //$query = "SELECT * FROM glpi_plugin_processmaker_tasks WHERE plugin_processmaker_cases_id={$this->getID()} AND del_index=$delIndex AND del_thread=$delThread; ";
+ //$res = $DB->query($query);
+ //if ($DB->numrows($res) > 0) {
+ // $row = $DB->fetch_array( $res );
+ if ($row = $res->next()) {
$glpi_task = new $row['itemtype'];
$glpi_task->getFromDB( $row['items_id'] );
@@ -281,8 +288,15 @@ class PluginProcessmakerCase extends CommonDBTM {
$glpi_task->update( [ 'id' => $row['items_id'], $foreignkey => $glpi_task->fields[ $foreignkey ], 'users_id_tech' => $newTech ]);
// then update the delIndex and delThread
- $query = "UPDATE glpi_plugin_processmaker_tasks SET del_index = $newDelIndex, del_thread = $newDelThread WHERE id={$row['id']}; ";
- $res = $DB->query($query);
+ //$query = "UPDATE glpi_plugin_processmaker_tasks SET del_index = $newDelIndex, del_thread = $newDelThread WHERE id={$row['id']}; ";
+ //$res = $DB->query($query);
+ $DB->Update( 'glpi_plugin_processmaker_tasks', [
+ 'del_index' => $newDelIndex,
+ 'del_thread' => $newDelThread
+ ], [
+ 'id' => $row['id']
+ ]
+ );
}
}
@@ -295,11 +309,20 @@ class PluginProcessmakerCase extends CommonDBTM {
// get all tasks that are OPEN for any sub-case of this case
$case_tasks = [];
- $query = "SELECT `glpi_plugin_processmaker_tasks`.* FROM `glpi_plugin_processmaker_tasks`
- WHERE `glpi_plugin_processmaker_tasks`.`plugin_processmaker_cases_id`={$this->getID()} AND `del_thread_status`='OPEN'";
- foreach ($DB->request($query) as $task) {
+ $res = $DB->request('glpi_plugin_processmaker_tasks', [
+ 'AND' => [
+ 'plugin_processmaker_cases_id' => $this->getID(),
+ 'del_thread_status' => 'OPEN'
+ ]
+ ]);
+ foreach ($res as $task) {
$case_tasks[$task['del_index']] = $task;
}
+ //$query = "SELECT `glpi_plugin_processmaker_tasks`.* FROM `glpi_plugin_processmaker_tasks`
+ // WHERE `glpi_plugin_processmaker_tasks`.`plugin_processmaker_cases_id`={$this->getID()} AND `del_thread_status`='OPEN'";
+ //foreach ($DB->request($query) as $task) {
+ // $case_tasks[$task['del_index']] = $task;
+ //}
//// get all tasks that are OPEN for any sub-case of this case
//$sub_cases = [];
@@ -314,11 +337,19 @@ class PluginProcessmakerCase extends CommonDBTM {
if (property_exists($caseInfo, 'currentUsers')) {
$caseInfo->currentUsers = $this->sortTasks($caseInfo->currentUsers, PluginProcessmakerUser::getPMUserId(Session::getLoginUserID()));
}
- $query = "SELECT `DEL_INDEX`, `DEL_DELEGATE_DATE` FROM `APP_DELEGATION` WHERE `APP_UID`='{$caseInfo->caseId}'";
+ $res = $PM_DB->request([
+ 'SELECT' => ['DEL_INDEX', 'DEL_DELEGATE_DATE'],
+ 'FROM' => 'APP_DELEGATION',
+ 'WHERE' => ['APP_UID' => $caseInfo->caseId]
+ ]);
+ //$query = "SELECT `DEL_INDEX`, `DEL_DELEGATE_DATE` FROM `APP_DELEGATION` WHERE `APP_UID`='{$caseInfo->caseId}'";
$tasks = [];
- foreach ($PM_DB->request($query) as $row) {
+ foreach ($res as $row) {
$tasks[$row['DEL_INDEX']] = $row['DEL_DELEGATE_DATE'];
}
+ //foreach ($PM_DB->request($query) as $row) {
+ // $tasks[$row['DEL_INDEX']] = $row['DEL_DELEGATE_DATE'];
+ //}
echo "
";
// show the case properties like given by PM server
@@ -346,9 +377,21 @@ class PluginProcessmakerCase extends CommonDBTM {
$case_url .= $case_tasks[$currentTask->delIndex]['id'];
echo "".$currentTask->taskName." | ";
} else {
- $res = $PM_DB->query("SELECT APP_UID FROM SUB_APPLICATION WHERE APP_PARENT='{$this->fields['case_guid']}' AND DEL_INDEX_PARENT={$currentTask->delIndex} AND SA_STATUS='ACTIVE'");
- if ($res && $PM_DB->numrows($res) == 1) {
- $row = $PM_DB->fetch_assoc($res);
+ $res = $PM_DB->request([
+ 'SELECT' => 'APP_UID',
+ 'FROM' => 'SUB_APPLICATION',
+ 'WHERE' => [
+ 'AND' => [
+ 'APP_PARENT' => $this->fields['case_guid'],
+ 'DEL_INDEX_PARENT' => $currentTask->delIndex,
+ 'SA_STATUS' => 'ACTIVE'
+ ]
+ ]
+ ]);
+ //$res = $PM_DB->query("SELECT APP_UID FROM SUB_APPLICATION WHERE APP_PARENT='{$this->fields['case_guid']}' AND DEL_INDEX_PARENT={$currentTask->delIndex} AND SA_STATUS='ACTIVE'");
+ //if ($res && $PM_DB->numrows($res) == 1) {
+ // $row = $PM_DB->fetch_assoc($res);
+ if ($res->numrows() == 1 && $row = $res->next()) {
$sub_case = new PluginProcessmakerCase;
$sub_case->getFromGUID($row['APP_UID']);
$case_url .= $sub_case->getID()."-".$currentTask->delIndex;
@@ -572,20 +615,36 @@ class PluginProcessmakerCase extends CommonDBTM {
$canupdate = $item->can($items_id, UPDATE);
$rand = mt_rand();
-
- $query = "SELECT gppc.`id` AS assocID, gppc.`id` as id, gppp.id as pid, gppp.name as pname, gppc.`case_status`, gppc.`plugin_processmaker_cases_id`
- FROM `glpi_plugin_processmaker_cases` as gppc
- LEFT JOIN `glpi_plugin_processmaker_processes` AS gppp ON gppp.`id`=gppc.`plugin_processmaker_processes_id`
- WHERE gppc.`itemtype` = '$itemtype'
- AND gppc.`items_id` = $items_id
- ";
- $result = $DB->query($query);
+ $res = $DB->request([
+ 'SELECT' => ['gppc.id AS assocID', 'gppc.id AS id', 'gppp.id AS pid', 'gppp.name AS pname', 'gppc.case_status', 'gppc.plugin_processmaker_cases_id'],
+ 'FROM' => 'glpi_plugin_processmaker_cases AS gppc',
+ 'LEFT JOIN' => [
+ 'glpi_plugin_processmaker_processes AS gppp' => [
+ 'FKEY' => [
+ 'gppp' => 'id',
+ 'gppc' => 'plugin_processmaker_processes_id']
+ ]
+ ],
+ 'WHERE' => [
+ 'AND' => [
+ 'gppc.itemtype' => $itemtype,
+ 'gppc.items_id' => $items_id
+ ]
+ ]
+ ]);
+ //$query = "SELECT gppc.`id` AS assocID, gppc.`id` as id, gppp.id as pid, gppp.name as pname, gppc.`case_status`, gppc.`plugin_processmaker_cases_id`
+ // FROM `glpi_plugin_processmaker_cases` as gppc
+ // LEFT JOIN `glpi_plugin_processmaker_processes` AS gppp ON gppp.`id`=gppc.`plugin_processmaker_processes_id`
+ // WHERE gppc.`itemtype` = '$itemtype'
+ // AND gppc.`items_id` = $items_id
+ // ";
+ //$result = $DB->query($query);
$cases = [];
$used = [];
$pid = [];
- if ($numrows = $DB->numrows($result)) {
- while ($data = $DB->fetch_assoc($result)) {
+ if ($numrows = $res->numrows()) {
+ foreach ($res as $data) {
$cases[$data['id']] = $data;
$used[$data['id']] = $data['id'];
if (isset($pid[$data['pid']])) {
@@ -595,6 +654,17 @@ class PluginProcessmakerCase extends CommonDBTM {
}
}
}
+ //if ($numrows = $DB->numrows($result)) {
+ // while ($data = $DB->fetch_assoc($result)) {
+ // $cases[$data['id']] = $data;
+ // $used[$data['id']] = $data['id'];
+ // if (isset($pid[$data['pid']])) {
+ // $pid[$data['pid']] += 1;
+ // } else {
+ // $pid[$data['pid']] = 1;
+ // }
+ // }
+ //}
$columns = ['pname' => __('Process', 'processmaker'),
'name' => __('Title', 'processmaker'),
@@ -621,18 +691,23 @@ class PluginProcessmakerCase extends CommonDBTM {
echo "| ";
echo __('Select the process you want to add', 'processmaker');
echo " | ";
+ $condition[] = ['is_active' => 1];
if ($itemtype == 'Ticket') {
+ $condition[] = ['is_incident' => 1];
$is_itemtype = "AND is_incident=1";
if ($item->fields['type'] == Ticket::DEMAND_TYPE) {
+ $condition[] = ['is_request' => 1];
$is_itemtype = "AND is_request=1";
}
} else {
+ $condition[] = ['is_'.strtolower($itemtype) => 1];
$is_itemtype = "AND is_".strtolower($itemtype)."=1";
}
PluginProcessmakerProcess::dropdown(['value' => 0,
'entity' => $item->fields['entities_id'],
'name' => 'plugin_processmaker_processes_id',
- 'condition' => "is_active=1 $is_itemtype",
+ //'condition' => "is_active=1 $is_itemtype",
+ 'condition' => $condition,
'specific_tags' => ['count_cases_per_item' => $pid]
]);
echo " | ";
@@ -762,14 +837,24 @@ class PluginProcessmakerCase extends CommonDBTM {
private function deleteTasks() {
global $DB;
$ret = false;
+ $sub = new QuerySubQuery([
+ 'SELECT' => 'items_id',
+ 'FROM' => 'glpi_plugin_processmaker_tasks',
+ 'WHERE' => ['plugin_processmaker_cases_id' => $this->fields['id']]
+ ]);
- $query = "DELETE FROM glpi_".strtolower($this->fields['itemtype'])."tasks WHERE id IN (SELECT items_id FROM glpi_plugin_processmaker_tasks WHERE plugin_processmaker_cases_id='".$this->fields['id']."')";
- if ($DB->query( $query )) {
- $query = "DELETE FROM glpi_plugin_processmaker_tasks WHERE plugin_processmaker_cases_id='".$this->fields['id']."'";
- if ($DB->query( $query )) {
+ if ($DB->delete('glpi_'.strtolower($this->fields['itemtype']).'tasks', ['id' => $sub ])) {
+ if ($DB->delete('glpi_plugin_processmaker_tasks', ['plugin_processmaker_cases_id' => $this->fields['id']])) {
$ret = true;
}
}
+ //$query = "DELETE FROM glpi_".strtolower($this->fields['itemtype'])."tasks WHERE id IN (SELECT items_id FROM glpi_plugin_processmaker_tasks WHERE plugin_processmaker_cases_id='".$this->fields['id']."')";
+ //if ($DB->query( $query )) {
+ // $query = "DELETE FROM glpi_plugin_processmaker_tasks WHERE plugin_processmaker_cases_id='".$this->fields['id']."'";
+ // if ($DB->query( $query )) {
+ // $ret = true;
+ // }
+ //}
return $ret;
}
@@ -795,10 +880,29 @@ class PluginProcessmakerCase extends CommonDBTM {
$ret = false;
if (isset($this->fields['case_status']) && $this->fields['case_status'] == "TO_DO") {
- $query = "UPDATE glpi_".$this->fields['itemtype']."tasks SET state=0,users_id_tech=0,begin=NULL,end=NULL WHERE state=1 AND id in (select items_id from glpi_plugin_processmaker_tasks where plugin_processmaker_cases_id='".$this->fields['id']."')";
- if ($DB->query( $query )) {
+ $sub = new QuerySubQuery([
+ 'SELECT' => 'items_id',
+ 'FROM' => 'glpi_plugin_processmaker_tasks',
+ 'WHERE' => ['plugin_processmaker_cases_id' => $this->fields['id']]
+ ]);
+ $res = $DB->update('glpi_'.$this->fields['itemtype'].'tasks', [
+ 'state' => 0,
+ 'users_id_tech' => 0,
+ 'begin' => null,
+ 'end' => null
+ ], [
+ 'AND' => [
+ 'state' => 1,
+ 'id' => $sub
+ ]
+ ]);
+ if ($res) {
$ret = true;
}
+ //$query = "UPDATE glpi_".$this->fields['itemtype']."tasks SET state=0,users_id_tech=0,begin=NULL,end=NULL WHERE state=1 AND id in (select items_id from glpi_plugin_processmaker_tasks where plugin_processmaker_cases_id='".$this->fields['id']."')";
+ //if ($DB->query( $query )) {
+ // $ret = true;
+ //}
}
return $ret;
}
@@ -930,22 +1034,36 @@ class PluginProcessmakerCase extends CommonDBTM {
if (isset($options['searchopt']['processmaker_cases'])) {
switch ($options['searchopt']['processmaker_cases']) {
case 'creation_date':
- $res = $PM_DB->query('SELECT * FROM APPLICATION WHERE APP_NUMBER = '.$values['id']);
- if ($res->num_rows > 0) {
- $row = $PM_DB->fetch_assoc($res);
+ $res = $PM_DB->request('APPLICATION', [
+ 'APP_NUMBER' => $values['id']
+ ]
+ );
+ if ($row = $res->next()) {
return Html::convDateTime($row['APP_CREATE_DATE']);
}
+ //$res = $PM_DB->query('SELECT * FROM APPLICATION WHERE APP_NUMBER = '.$values['id']);
+ //if ($res->num_rows > 0) {
+ // $row = $PM_DB->fetch_assoc($res);
+ // return Html::convDateTime($row['APP_CREATE_DATE']);
+ //}
//$locCase = new self;
//$locCase->getFromDB($values['id']);
//$caseInfo = $locCase->getCaseInfo();
//return Html::convDateTime($caseInfo->createDate);
break;
case 'update_date':
- $res = $PM_DB->query('SELECT * FROM APPLICATION WHERE APP_NUMBER = '.$values['id']);
- if ($res->num_rows > 0) {
- $row = $PM_DB->fetch_assoc($res);
+ $res = $PM_DB->request('APPLICATION', [
+ 'APP_NUMBER' => $values['id']
+ ]
+ );
+ if ($row = $res->next()) {
return Html::convDateTime($row['APP_UPDATE_DATE']);
}
+ //$res = $PM_DB->query('SELECT * FROM APPLICATION WHERE APP_NUMBER = '.$values['id']);
+ //if ($res->num_rows > 0) {
+ // $row = $PM_DB->fetch_assoc($res);
+ // return Html::convDateTime($row['APP_UPDATE_DATE']);
+ //}
//$locCase = new self;
//$locCase->getFromDB($values['id']);
//$caseInfo = $locCase->getCaseInfo();
@@ -1356,9 +1474,12 @@ class PluginProcessmakerCase extends CommonDBTM {
function deleteCronTaskActions() {
global $DB;
- $query = "DELETE FROM `glpi_plugin_processmaker_crontaskactions` WHERE `plugin_processmaker_cases_id` = ".$this->getID();
-
- return $DB->query($query);
+ return $DB->delete('glpi_plugin_processmaker_crontaskactions', [
+ 'plugin_processmaker_cases_id' => $this->getID()
+ ]
+ );
+ //$query = "DELETE FROM `glpi_plugin_processmaker_crontaskactions` WHERE `plugin_processmaker_cases_id` = ".$this->getID();
+ //return $DB->query($query);
}
}
diff --git a/inc/config.class.php b/inc/config.class.php
index 3ad759e..e8c6ed2 100644
--- a/inc/config.class.php
+++ b/inc/config.class.php
@@ -307,11 +307,28 @@ class PluginProcessmakerConfig extends CommonDBTM {
echo " | ".__('Group in ProcessMaker which will contain all GLPI users', 'processmaker')." | ";
$pmGroups = [ 0 => Dropdown::EMPTY_VALUE ];
- $query = "SELECT DISTINCT CON_ID, CON_VALUE FROM CONTENT WHERE CON_CATEGORY='GRP_TITLE' ORDER BY CON_VALUE;";
+ //$res = $PM_DB->request([
+ // 'SELECT DISTINCT' => 'CON_ID',
+ // 'FIELDS' => 'CON_VALUE',
+ // 'FROM' => 'CONTENT',
+ // 'WHERE' => ['CON_CATEGORY' => 'GRP_TITLE'],
+ // 'ORDER' => 'CON_VALUE'
+ // ]);
+ //$query = "SELECT DISTINCT CON_ID, CON_VALUE FROM CONTENT WHERE CON_CATEGORY='GRP_TITLE' ORDER BY CON_VALUE;";
if ($PM_DB->connected) {
- foreach ($PM_DB->request( $query ) as $row) {
+ $res = $PM_DB->request([
+ 'SELECT DISTINCT' => 'CON_ID',
+ 'FIELDS' => 'CON_VALUE',
+ 'FROM' => 'CONTENT',
+ 'WHERE' => ['CON_CATEGORY' => 'GRP_TITLE'],
+ 'ORDER' => 'CON_VALUE'
+ ]);
+ foreach ($res as $row) {
$pmGroups[ $row['CON_ID'] ] = $row['CON_VALUE'];
}
+ //foreach ($PM_DB->request( $query ) as $row) {
+ // $pmGroups[ $row['CON_ID'] ] = $row['CON_VALUE'];
+ //}
Dropdown::showFromArray( 'pm_group_guid', $pmGroups, ['value' => $config->fields['pm_group_guid']] );
} else {
echo "".__('Not connected');
diff --git a/inc/process.class.php b/inc/process.class.php
index ea2cbe3..f0816a5 100644
--- a/inc/process.class.php
+++ b/inc/process.class.php
@@ -71,7 +71,7 @@ class PluginProcessmakerProcess extends CommonDBTM {
// we need to get the tasks + content from PM db
//$config = PluginProcessmakerConfig::getInstance() ;
//$database = $config->fields['pm_workspace'] ;
- $translates = false;
+ //$translates = false;
$mapLangs = [];
$dbu = new DbUtils;
// if (class_exists('DropdownTranslation')) {
@@ -79,7 +79,7 @@ class PluginProcessmakerProcess extends CommonDBTM {
$_SESSION['glpi_dropdowntranslations']['TaskCategory']['name'] = 'name';
$_SESSION['glpi_dropdowntranslations']['TaskCategory']['completename'] = 'completename';
$_SESSION['glpi_dropdowntranslations']['TaskCategory']['comment'] = 'comment';
- $translates = true;
+ //$translates = true;
// create a reversed map for languages
foreach ($CFG_GLPI['languages'] as $key => $valArray) {
$lg = locale_get_primary_language( $key );
@@ -88,9 +88,31 @@ class PluginProcessmakerProcess extends CommonDBTM {
}
//}
$lang = locale_get_primary_language( $CFG_GLPI['language'] );
- $query = "SELECT TASK.TAS_UID, TASK.TAS_START, TASK.TAS_TYPE, CONTENT.CON_LANG, CONTENT.CON_CATEGORY, CONTENT.CON_VALUE FROM TASK
- INNER JOIN CONTENT ON CONTENT.CON_ID=TASK.TAS_UID
- WHERE (TASK.TAS_TYPE = 'NORMAL' OR TASK.TAS_TYPE = 'SUBPROCESS') AND TASK.PRO_UID = '".$this->fields['process_guid']."' AND CONTENT.CON_CATEGORY IN ('TAS_TITLE', 'TAS_DESCRIPTION') ".($translates ? "" : " AND CONTENT.CON_LANG='$lang'")." ;";
+ $query = [
+ 'SELECT' => ['TASK.TAS_UID', 'TASK.TAS_START', 'TASK.TAS_TYPE', 'CONTENT.CON_LANG', 'CONTENT.CON_CATEGORY', 'CONTENT.CON_VALUE'],
+ 'FROM' => 'TASK',
+ 'INNER JOIN' => [
+ 'CONTENT' => [
+ 'FKEY' => [
+ 'CONTENT' => 'CON_ID',
+ 'TASK' => 'TAS_UID'
+ ]
+ ]
+ ],
+ 'WHERE' => [
+ 'AND' => [
+ 'TASK.TAS_TYPE' => ['NORMAL', 'SUBPROCESS'],
+ 'TASK.PRO_UID' => $this->fields['process_guid'],
+ 'CONTENT.CON_CATEGORY' => ['TAS_TITLE', 'TAS_DESCRIPTION']
+ ]
+ ]
+ ];
+ //if (!$translates) {
+ // $query['WHERE']['AND']['CONTENT.CON_LANG'] = $lang;
+ //}
+ //$query = "SELECT TASK.TAS_UID, TASK.TAS_START, TASK.TAS_TYPE, CONTENT.CON_LANG, CONTENT.CON_CATEGORY, CONTENT.CON_VALUE FROM TASK
+ // INNER JOIN CONTENT ON CONTENT.CON_ID=TASK.TAS_UID
+ // WHERE (TASK.TAS_TYPE = 'NORMAL' OR TASK.TAS_TYPE = 'SUBPROCESS') AND TASK.PRO_UID = '".$this->fields['process_guid']."' AND CONTENT.CON_CATEGORY IN ('TAS_TITLE', 'TAS_DESCRIPTION') ".($translates ? "" : " AND CONTENT.CON_LANG='$lang'")." ;";
$taskArray = [];
$defaultLangTaskArray = [];
foreach ($PM_DB->request( $query ) as $task) {
@@ -168,7 +190,7 @@ class PluginProcessmakerProcess extends CommonDBTM {
] );
}
// here we should take into account translations if any
- if ($translates && isset($taskArray[ $taskGUID ])) {
+ if ( isset($taskArray[ $taskGUID ])) {
foreach ($taskArray[ $taskGUID ] as $langTask => $taskL) {
// look for 'name' field
if ($loc_id = DropdownTranslation::getTranslationID( $taskCat->getID(), 'TaskCategory', 'name', $langTask )) {
@@ -289,8 +311,13 @@ class PluginProcessmakerProcess extends CommonDBTM {
$proc->getFromDB($key);
// check if at least one case is existing for this process
- $query = "SELECT * FROM `".PluginProcessmakerCase::getTable()."` WHERE `plugin_processmaker_processes_id` = ".$key;
- $res = $DB->query($query);
+ $res = $DB->request(
+ PluginProcessmakerCase::getTable(), [
+ 'plugin_processmaker_processes_id' => $key
+ ]
+ );
+ //$query = "SELECT * FROM `".PluginProcessmakerCase::getTable()."` WHERE `plugin_processmaker_processes_id` = ".$key;
+ //$res = $DB->query($query);
if ($DB->numrows($res) === 0) {
// and if no will delete the process
$proc->delete(['id' => $key]);
@@ -386,15 +413,21 @@ class PluginProcessmakerProcess extends CommonDBTM {
public function getFromGUID($process_guid) {
global $DB;
- $query = "SELECT *
- FROM `".$this->getTable()."`
- WHERE `process_guid` = '$process_guid'";
+ $res = $DB->request(
+ $this->getTable(), [
+ 'process_guid' => $process_guid
+ ]
+ );
+ //$query = "SELECT *
+ // FROM `".$this->getTable()."`
+ // WHERE `process_guid` = '$process_guid'";
- if ($result = $DB->query($query)) {
- if ($DB->numrows($result) != 1) {
+ //if ($result = $DB->query($query)) {
+ if ($res) {
+ if ($res->numrows() != 1) {//if ($DB->numrows($result) != 1) {
return false;
}
- $this->fields = $DB->fetch_assoc($result);
+ $this->fields = $res->next(); //$DB->fetch_assoc($result);
if (is_array($this->fields) && count($this->fields)) {
return true;
}
@@ -784,31 +817,38 @@ class PluginProcessmakerProcess extends CommonDBTM {
*
* @return mysql result set.
**/
- static function getSqlSearchResult ($count = true, $search = '') {
+ static function getSqlSearchResult ($count = true, $search = []) {
global $DB, $CFG_GLPI;
-
+ $query = [];
$where = '';
$orderby = '';
if (isset($_REQUEST['condition']) && isset($_SESSION['glpicondition'][$_REQUEST['condition']])) {
- $where = ' WHERE '.$_SESSION['glpicondition'][$_REQUEST['condition']]; //glpi_plugin_processmaker_processes.is_active=1 ';
+ //$where = ' WHERE '.$_SESSION['glpicondition'][$_REQUEST['condition']]; //glpi_plugin_processmaker_processes.is_active=1 ';
+ $query['WHERE']['AND'] = $_SESSION['glpicondition'][$_REQUEST['condition']];
}
if ($count) {
- $fields = " COUNT(DISTINCT glpi_plugin_processmaker_processes.id) AS cpt ";
+ //$fields = " COUNT(DISTINCT glpi_plugin_processmaker_processes.id) AS cpt ";
+ $query['SELECT'] = ['COUNT' => 'glpi_plugin_processmaker_processes.id AS cpt'];
} else {
- $fields = " DISTINCT glpi_plugin_processmaker_processes.* ";
- $orderby = " ORDER BY glpi_plugin_processmaker_processes.name ASC";
+ //$fields = " DISTINCT glpi_plugin_processmaker_processes.* ";
+ $query['SELECT'] = ['glpi_plugin_processmaker_processes.*'];
+ $query['ORDER'] ='glpi_plugin_processmaker_processes.name ASC';
+ //$orderby = " ORDER BY glpi_plugin_processmaker_processes.name ASC";
}
- if (strlen($search)>0 && $search!=$CFG_GLPI["ajax_wildcard"]) {
- $where .= " AND (glpi_plugin_processmaker_processes.name $search
- OR glpi_plugin_processmaker_processes.comment $search) ";
+ if (!empty($search) && $search!=$CFG_GLPI["ajax_wildcard"]) {
+ $query['WHERE']['AND']['OR']['glpi_plugin_processmaker_processes.name'] = $search;
+ $query['WHERE']['AND']['OR']['glpi_plugin_processmaker_processes.comment'] = $search;
+ //$where .= " AND (glpi_plugin_processmaker_processes.name $search
+ // OR glpi_plugin_processmaker_processes.comment $search) ";
}
-
- $query = "SELECT $fields FROM glpi_plugin_processmaker_processes ".$where." ".$orderby.";";
-
- return $DB->query($query);
+ $query['FROM'] = 'glpi_plugin_processmaker_processes';
+ //$query = "SELECT $fields FROM glpi_plugin_processmaker_processes ".$where." ".$orderby.";";
+ //return $DB->query($query);
+ $r= $DB->request($query);
+ return $DB->request($query);
}
/**
@@ -826,11 +866,13 @@ class PluginProcessmakerProcess extends CommonDBTM {
"comment" => ""];
}
- $query="SELECT * FROM glpi_plugin_processmaker_processes WHERE id=$pid";
- $result = $DB->query($query);
- if ($result && $DB->numrows($result)==1) {
- $data = $DB->fetch_assoc($result);
- $processname = $data["name"];
+ $res = $DB->request('glpi_plugin_processmaker_processes', ['id' => $pid]);
+ //$query="SELECT * FROM glpi_plugin_processmaker_processes WHERE id=$pid";
+ //$result = $DB->query($query);
+ //if ($result && $DB->numrows($result)==1) {
+ // $data = $DB->fetch_assoc($result);
+ if ($res && $res->numrows() == 1) {
+ $processname = $res['name'];//$data["name"];
if ($link==2) {
$process["name"] = $processname;
$process["link"] = $CFG_GLPI["root_doc"]."/plugins/processmaker/front/process.form.php?id=".$pid;
@@ -856,13 +898,24 @@ class PluginProcessmakerProcess extends CommonDBTM {
static function getEntitiesForProfileByProcess($processes_id, $profiles_id, $child = false) {
global $DB;
$dbu = new DbUtils;
+ $res = $DB->request([
+ 'SELECT' => ['entities_id', 'is_recursive'],
+ 'FROM' => 'glpi_plugin_processmaker_processes_profiles',
+ 'WHERE' => [
+ 'AND' => [
+ 'plugin_processmaker_processes_id' => $processes_id,
+ 'profiles_id' => $profiles_id
+ ]
+ ]
+ ]);
$query = "SELECT `entities_id`, `is_recursive`
FROM `glpi_plugin_processmaker_processes_profiles`
WHERE `plugin_processmaker_processes_id` = '$processes_id'
AND `profiles_id` = '$profiles_id'";
$entities = [];
- foreach ($DB->request($query) as $data) {
+ //foreach ($DB->request($query) as $data) {
+ foreach ($res as $data) {
if ($child && $data['is_recursive']) {
foreach ($dbu->getSonsOf('glpi_entities', $data['entities_id']) as $id) {
$entities[$id] = $id;
diff --git a/inc/process_profile.class.php b/inc/process_profile.class.php
index 20990aa..2bcdb64 100644
--- a/inc/process_profile.class.php
+++ b/inc/process_profile.class.php
@@ -59,23 +59,50 @@ class PluginProcessmakerProcess_Profile extends CommonDBTM
Html::closeForm();
echo "";
}
-
- $query = "SELECT DISTINCT gpp.`id` AS linkID,
- `glpi_profiles`.`id`,
- `glpi_profiles`.`name`,
- `gpp`.`is_recursive`,
- `glpi_entities`.`completename`,
- `gpp`.`entities_id`
- FROM `". self::getTable() ."` as gpp
- LEFT JOIN `glpi_profiles`
- ON (`gpp`.`profiles_id` = `glpi_profiles`.`id`)
- LEFT JOIN `glpi_entities`
- ON (`gpp`.`entities_id` = `glpi_entities`.`id`)
- WHERE `gpp`.`plugin_processmaker_processes_id` = '$ID'
- ORDER BY `glpi_profiles`.`name`, `glpi_entities`.`completename`";
- $result = $DB->query($query);
- $num = $DB->numrows($result);
-
+ $res = $DB->request([
+ 'SELECT DISTINCT' => 'gpp.id AS linkID',
+ 'FIELDS' => [
+ 'gpp.id AS linkID',
+ 'glpi_profiles.id',
+ 'glpi_profiles.name',
+ 'gpp.is_recursive',
+ 'glpi_entities.completename',
+ 'gpp.entities_id'
+ ],
+ 'FROM' => self::getTable() .' AS gpp',
+ 'LEFT JOIN' => [
+ 'glpi_profiles' => [
+ 'FKEY' => [
+ 'glpi_profiles' => 'id',
+ 'gpp' => 'profiles_id'
+ ]
+ ],
+ 'glpi_entities' => [
+ 'FKEY' => [
+ 'glpi_entities' => 'id',
+ 'gpp' => 'entities_id'
+ ]
+ ]
+ ],
+ 'WHERE' => [ 'gpp.plugin_processmaker_processes_id' => $ID ],
+ 'ORDER' => [ 'glpi_profiles.name', 'glpi_entities.completename' ]
+ ]);
+ //$query = "SELECT DISTINCT gpp.`id` AS linkID,
+ // `glpi_profiles`.`id`,
+ // `glpi_profiles`.`name`,
+ // `gpp`.`is_recursive`,
+ // `glpi_entities`.`completename`,
+ // `gpp`.`entities_id`
+ // FROM `". self::getTable() ."` as gpp
+ // LEFT JOIN `glpi_profiles`
+ // ON (`gpp`.`profiles_id` = `glpi_profiles`.`id`)
+ // LEFT JOIN `glpi_entities`
+ // ON (`gpp`.`entities_id` = `glpi_entities`.`id`)
+ // WHERE `gpp`.`plugin_processmaker_processes_id` = '$ID'
+ // ORDER BY `glpi_profiles`.`name`, `glpi_entities`.`completename`";
+ //$result = $DB->query($query);
+ //$num = $DB->numrows($result);
+ $num = $res->numrows();
echo " ";
Html::openMassiveActionsForm('mass'.__CLASS__.$rand);
@@ -103,7 +130,8 @@ class PluginProcessmakerProcess_Profile extends CommonDBTM
$header_end .= " |
";
echo $header_begin.$header_top.$header_end;
- while ($data = $DB->fetch_assoc($result)) {
+ //while ($data = $DB->fetch_assoc($result)) {
+ foreach ($res as $data) {
echo "";
if ($canedit) {
echo "| ";
@@ -171,12 +199,12 @@ class PluginProcessmakerProcess_Profile extends CommonDBTM
function prepareInputForAdd($input) {
$tmp = new self;
$restrict=[
- 'WHERE' => [
- 'plugin_processmaker_processes_id' => $input['plugin_processmaker_processes_id'],
- 'entities_id' => $input['entities_id'],
- 'profiles_id' => $input['profiles_id']
- ],
- ];
+ 'WHERE' => [
+ 'plugin_processmaker_processes_id' => $input['plugin_processmaker_processes_id'],
+ 'entities_id' => $input['entities_id'],
+ 'profiles_id' => $input['profiles_id']
+ ],
+ ];
if ($tmp->getFromDBByRequest($restrict)) {
//// then update existing
//$tmp->update(['id' => $tmp->getID(),
diff --git a/inc/processmaker.class.php b/inc/processmaker.class.php
index 72cd854..3f74361 100644
--- a/inc/processmaker.class.php
+++ b/inc/processmaker.class.php
@@ -135,28 +135,28 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
/**
- * Summary of addTicketFollowup
+ * Summary of addItemFollowup
* @param mixed $itemId
* @param mixed $txtForFollowup
* @param integer $users_id optional, if null will uses logged-in user
*/
- public function addTicketFollowup($itemId, $txtForFollowup, $users_id = null) {
+ public function addItemFollowup($itemtype, $itemId, $txtForFollowup, $users_id = null) {
global $DB;
- $fu = new TicketFollowup();
+ $fu = new ITILFollowup();//new TicketFollowup();
$fu->getEmpty(); // to get default values
$input = $fu->fields;
- if (isset( $txtForFollowup['GLPI_TICKET_FOLLOWUP_CONTENT'] )) {
- $input['content'] = $DB->escape($txtForFollowup['GLPI_TICKET_FOLLOWUP_CONTENT']);
+ if (isset( $txtForFollowup['GLPI_ITEM_FOLLOWUP_CONTENT'] )) {
+ $input['content'] = $DB->escape($txtForFollowup['GLPI_ITEM_FOLLOWUP_CONTENT']);
}
- if (isset( $txtForFollowup['GLPI_TICKET_FOLLOWUP_IS_PRIVATE'] )) {
- $input['is_private'] = $txtForFollowup['GLPI_TICKET_FOLLOWUP_IS_PRIVATE'];
+ if (isset( $txtForFollowup['GLPI_ITEM_FOLLOWUP_IS_PRIVATE'] )) {
+ $input['is_private'] = $txtForFollowup['GLPI_ITEM_FOLLOWUP_IS_PRIVATE'];
}
- if (isset( $txtForFollowup['GLPI_TICKET_FOLLOWUP_REQUESTTYPES_ID'] )) {
- $input['requesttypes_id'] = $txtForFollowup['GLPI_TICKET_FOLLOWUP_REQUESTTYPES_ID'];
+ if (isset( $txtForFollowup['GLPI_ITEM_FOLLOWUP_REQUESTTYPES_ID'] )) {
+ $input['requesttypes_id'] = $txtForFollowup['GLPI_ITEM_FOLLOWUP_REQUESTTYPES_ID'];
}
- $input['tickets_id'] = $itemId;
+ $input['items_id'] = $itemId;//$input['tickets_id'] = $itemId;
$input['users_id'] = (isset($users_id) ? $users_id : Session::getLoginUserID( true )); // $this->taskWriter;
-
+ $input['itemtype'] = $itemtype;
$fu->add( $input );
}
@@ -266,8 +266,10 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
$pass = md5(Toolbox::encrypt( $gusr->getID().$gusr->getName().time(), GLPIKEY) );
//$pmusr->update( array('id' => $pmusr->getID(), 'password' => $pass) );
// and must be updated also in PM db
- $PM_DB->query("UPDATE RBAC_USERS SET USR_PASSWORD='".$pass."' WHERE USR_UID='".$pmusr->fields['pm_users_id']."' ");
- $PM_DB->query("UPDATE USERS SET USR_PASSWORD='".$pass."' WHERE USR_UID='".$pmusr->fields['pm_users_id']."' ");
+ $PM_DB->update('RBAC_USERS', ['USR_PASSWORD' => $pass], ['USR_UID' => $pmusr->fields['pm_users_id']]);
+ //$PM_DB->query("UPDATE RBAC_USERS SET USR_PASSWORD='".$pass."' WHERE USR_UID='".$pmusr->fields['pm_users_id']."' ");
+ $PM_DB->update('USERS', ['USR_PASSWORD' => $pass], ['USR_UID' => $pmusr->fields['pm_users_id']]);
+ //$PM_DB->query("UPDATE USERS SET USR_PASSWORD='".$pass."' WHERE USR_UID='".$pmusr->fields['pm_users_id']."' ");
//}
//$locSession = $this->pmSoapClient->login( array( 'userid' => $gusr->fields['name'], 'password' => 'md5:'.$pmusr->fields['password']) );
$locSession = $this->pmSoapClient->login( ['userid' => $gusr->fields['name'], 'password' => 'md5:'.$pass] );
@@ -868,8 +870,9 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
*/
function updateGroup($group_id, $groupStatus) {
global $PM_DB;
- $query = "UPDATE GROUPWF SET GRP_STATUS='$groupStatus' WHERE GRP_UID='$group_id';";
- $PM_DB->query( $query );
+ $PM_DB->update('GROUPWF', ['GRP_STATUS' => $groupStatus], ['GRP_UID' => $group_id]);
+ //$query = "UPDATE GROUPWF SET GRP_STATUS='$groupStatus' WHERE GRP_UID='$group_id';";
+ //$PM_DB->query( $query );
if ($PM_DB->affected_rows != 1) {
return false;
} else {
@@ -1049,7 +1052,8 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
$formerusers_id = 0;
// get the list of taskactions to be done
$locCase = new PluginProcessmakerCase;
- foreach ($DB->request( $dbu->getTableForItemType('PluginProcessmakerCrontaskaction'), ' `state` = '.PluginProcessmakerCrontaskaction::DATA_READY ) as $taskaction) {
+ //foreach ($DB->request( $dbu->getTableForItemType('PluginProcessmakerCrontaskaction'), ' `state` = '.PluginProcessmakerCrontaskaction::DATA_READY ) as $taskaction) {
+ foreach ($DB->request( $dbu->getTableForItemType('PluginProcessmakerCrontaskaction'), ['state' => PluginProcessmakerCrontaskaction::DATA_READY] ) as $taskaction) {
if ($locCase->getFromDB($taskaction['plugin_processmaker_cases_id'])) {
// there is an existing case for this crontaskaction.
try {
@@ -1188,7 +1192,8 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
// get list of case assigned to GLPI items
$draftCases = [0];
$query = "SELECT id FROM glpi_plugin_processmaker_cases WHERE case_status = 'DRAFT';";
- foreach ($DB->request( $query ) as $row) {
+ //foreach ($DB->request( $query ) as $row) {
+ foreach ($DB->request(['SELECT' => 'id', 'FROM' => 'glpi_plugin_processmaker_cases'], ['case_status' => 'DRAFT']) as $row) {
$draftCases[] = $row['id'];
}
@@ -1205,7 +1210,14 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
AND DATEDIFF( NOW(), APP_UPDATE_DATE) > ".$task->fields['param']."
AND APP_NUMBER NOT IN (".implode(',', $draftCases).");
";
- foreach ($PM_DB->request( $query ) as $row) {
+ $res = $PM_DB->request('APPLICATION', ['AND' => [
+ 'APP_DATA' => ['LIKE', '%s:24:\"GLPI_SELFSERVICE_CREATED\";s:1:\"1\"%'],
+ 'APP_STATUS' => 'DRAFT',
+ 'RAW' => ['DATEDIFF(NOW(), APP_UPDATE_DATE)' => ['>', $task->fields['param']]],
+ 'NOT' => ['APP_NUMBER' => $draftCases]
+ ]]);
+ //foreach ($PM_DB->request( $query ) as $row) {
+ foreach ($res as $row) {
$ret = $PM_SOAP->deleteCase( $row['APP_UID'] );
$task->addVolume(1);
if ($ret !== false) {
@@ -1254,8 +1266,13 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
}
$pmGroupList = $PM_SOAP->groupList( );
- foreach ($pmGroupList as $pmGroup) {
- if ($pmGroup->guid == $PM_SOAP->pm_group_guid) {
+ $pmGroup = null;
+ //if($pmgrp_key = array_search($PM_SOAP->pm_group_guid, array_column($pmGroupList, 'guid'))) {
+ // $pmgroup = $pmGroupList[$pmgrp_key];
+ //}
+ foreach ($pmGroupList as $pmGroupL) {
+ if ($pmGroupL->guid == $PM_SOAP->pm_group_guid) {
+ $pmGroup = $pmGroupL;
break; // to get the name :)
}
}
@@ -1267,10 +1284,16 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
// get the complete user list from GLPI DB
$glpiUserList = [];
- foreach ($DB->request("SELECT glpi_users.id, glpi_users.name, glpi_users.realname, glpi_users.firstname, glpi_users.is_active, glpi_users.is_deleted, glpi_plugin_processmaker_users.pm_users_id as pmUserId
- FROM glpi_users
- LEFT JOIN glpi_plugin_processmaker_users on glpi_plugin_processmaker_users.id = glpi_users.id
- WHERE name not like '*%'") as $dbgroup) {
+ $res = $DB->request(['SELECT' => ['glpi_users.id', 'glpi_users.name', 'glpi_users.realname', 'glpi_users.firstname', 'glpi_users.is_active', 'glpi_users.is_deleted', 'glpi_plugin_processmaker_users.pm_users_id as pmUserId'],
+ 'FROM' => 'glpi_users',
+ 'LEFT JOIN' => ['glpi_plugin_processmaker_users' => ['FKEY' => ['glpi_plugin_processmaker_users' => 'id', 'glpi_users' => 'id']]],
+ 'WHERE' => ['name' => ['NOT LIKE', '*%']]
+ ]);
+ //foreach ($DB->request("SELECT glpi_users.id, glpi_users.name, glpi_users.realname, glpi_users.firstname, glpi_users.is_active, glpi_users.is_deleted, glpi_plugin_processmaker_users.pm_users_id as pmUserId
+ // FROM glpi_users
+ // LEFT JOIN glpi_plugin_processmaker_users on glpi_plugin_processmaker_users.id = glpi_users.id
+ // WHERE name not like '*%'") as $dbgroup) {
+ foreach ($res as $dbgroup) {
$glpiUserList[ strtolower($dbgroup['name'])] = $dbgroup;
}
@@ -1286,13 +1309,14 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
$task->log( "Added user: '".$user['name']."'" );
// then assign user to group
- $pmResult2 = $PM_SOAP->assignUserToGroup( $pmResult->userUID, $pmGroup->guid );
- if ($pmResult2->status_code == 0) {
- $task->log( "Added user: '".$user['name']."' to '".$pmGroup->name."' group" );
- } else {
- $task->log( "Error PM: '".$pmResult2->message."'" );
+ if($pmGroup) {
+ $pmResult2 = $PM_SOAP->assignUserToGroup( $pmResult->userUID, $pmGroup->guid );
+ if ($pmResult2->status_code == 0) {
+ $task->log( "Added user: '".$user['name']."' to '".$pmGroup->name."' group" );
+ } else {
+ $task->log( "Error PM: '".$pmResult2->message."'" );
+ }
}
-
// insert into DB the link between glpi users and pm user
$pmuser = new PluginProcessmakerUser;
if ($pmuser->getFromDB( $user['id'] )) {
@@ -1379,7 +1403,12 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
// so now treat GLPI groups
$glpiGroupList = [];
- foreach ($DB->request("SELECT id, name, is_task, is_usergroup FROM glpi_groups WHERE is_task=1 AND is_usergroup=1") as $dbgroup) {
+ $res = $DB->request(['SELECT' => ['id', 'name', 'is_task', 'is_usergroup'],
+ 'FROM' => 'glpi_groups',
+ 'WHERE' => ['AND' => ['is_task' => 1, 'is_usergroup' => 1]]
+ ]);
+ //foreach ($DB->request("SELECT id, name, is_task, is_usergroup FROM glpi_groups WHERE is_task=1 AND is_usergroup=1") as $dbgroup) {
+ foreach ($res as $dbgroup) {
$glpiGroupList[$dbgroup['name']] = $dbgroup;
}
@@ -1408,25 +1437,44 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
// for each group will delete users and re-create them
// not really optimized, but this way we are sure that groups are synchronized
// must be redesigned
- $query = "DELETE FROM GROUP_USER WHERE GROUP_USER.GRP_UID='".$pmGroupList[$group['name']]['CON_ID']."';";
- $PM_DB->query( $query );
+ $PM_DB->delete('GROUP_USER', ['GROUP_USER.GRP_UID' => $pmGroupList[$group['name']]['CON_ID']]);
+ //$query = "DELETE FROM GROUP_USER WHERE GROUP_USER.GRP_UID='".$pmGroupList[$group['name']]['CON_ID']."';";
+ //$PM_DB->query( $query );
// and insert all users from real GLPI group
- foreach ($DB->request("SELECT glpi_groups_users.users_id, glpi_plugin_processmaker_users.pm_users_id
- FROM glpi_groups
- JOIN glpi_groups_users ON glpi_groups_users.groups_id=glpi_groups.id
- JOIN glpi_plugin_processmaker_users ON glpi_plugin_processmaker_users.id=glpi_groups_users.users_id
- WHERE glpi_groups.name='".$group['name']."'") as $user ) {
- $query = "INSERT INTO GROUP_USER (`GRP_UID`, `USR_UID`) VALUES ( '".$pmGroupList[$group['name']]['CON_ID']."', '".$user['pm_users_id']."' )";
- $PM_DB->query( $query );
+ $res = $DB->request(['SELECT' => ['glpi_groups_users.users_id', 'glpi_plugin_processmaker_users.pm_users_id'],
+ 'FROM' => 'glpi_groups',
+ 'INNER JOIN' => ['glpi_groups_users' => ['FKEY' => ['glpi_groups_users' => 'groups_id', 'glpi_groups' => 'id']],
+ 'glpi_plugin_processmaker_users' => ['FKEY' => ['glpi_plugin_processmaker_users' => 'id', 'glpi_groups_users' => 'users_id']]],
+ 'WHERE' => ['glpi_groups.name' => $group['name']]]);
+
+ //foreach ($DB->request("SELECT glpi_groups_users.users_id, glpi_plugin_processmaker_users.pm_users_id
+ // FROM glpi_groups
+ // JOIN glpi_groups_users ON glpi_groups_users.groups_id=glpi_groups.id
+ // JOIN glpi_plugin_processmaker_users ON glpi_plugin_processmaker_users.id=glpi_groups_users.users_id
+ // WHERE glpi_groups.name='".$group['name']."'") as $user ) {
+ foreach ($res as $user) {
+ //$query = "INSERT INTO GROUP_USER (`GRP_UID`, `USR_UID`) VALUES ( '".$pmGroupList[$group['name']]['CON_ID']."', '".$user['pm_users_id']."' )";
+ //$PM_DB->query( $query );
+ $PM_DB->insert('GROUP_USER', ['GRP_UID' => $pmGroupList[$group['name']]['CON_ID'],
+ 'USR_UID' => $user['pm_users_id']
+ ]
+ );
}
$task->addVolume(1);
$task->log( "Updated users into PM group: '".$group['name']."'" );
}
// now should renew the duedate of the users
- $PM_DB->query("UPDATE USERS SET USR_DUE_DATE='2035-12-31' WHERE USR_DUE_DATE<>'2035-12-31'; ");
- $PM_DB->query("UPDATE RBAC_USERS SET USR_DUE_DATE='2035-12-31' WHERE USR_DUE_DATE<>'2035-12-31'; ");
-
+ //$PM_DB->query("UPDATE USERS SET USR_DUE_DATE='2035-12-31' WHERE USR_DUE_DATE<>'2035-12-31'; ");
+ //$PM_DB->query("UPDATE RBAC_USERS SET USR_DUE_DATE='2035-12-31' WHERE USR_DUE_DATE<>'2035-12-31'; ");
+ $PM_DB->update('USERS',
+ ['USR_DUE_DATE' => '2035-12-31'],
+ ['USR_DUE_DATE' => ['!=', '2035-12-31']]
+ );
+ $PM_DB->update('RBAC_USERS',
+ ['USR_DUE_DATE' => '2035-12-31'],
+ ['USR_DUE_DATE' => ['!=', '2035-12-31']]
+ );
if ($error) {
return -1;
} else {
@@ -1684,10 +1732,22 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
if ($techId == 0) { // then we must look-up DB to get the group that will be assigned to the task
$groupname='';
if ($groupId == 0) {
+ $res = $PM_DB->request([
+ 'SELECT' => 'CONTENT.CON_VALUE',
+ 'FROM' => 'TASK_USER',
+ 'INNER JOIN' => ['CONTENT' => ['AND' => ['FKEY' => ['CONTENT' => 'CON_ID', 'TASK_USER' => 'USR_UID'], ['CONTENT' => 'CON_CATEGORY', 'GRP_TITLE'], ['CONTENT' => 'CON_LANG', 'en']]]],
+ 'WHERE' => ['AND' => ['TASK_USER.TAS_UID' => $pmTaskId, 'TASK_USER.TU_RELATION' => 2]],
+ 'LIMIT' => 1
+ ]);
$query = "SELECT CONTENT.CON_VALUE FROM TASK_USER
JOIN CONTENT ON CONTENT.CON_ID=TASK_USER.USR_UID AND CONTENT.CON_CATEGORY='GRP_TITLE' AND CONTENT.CON_LANG = 'en'
WHERE TASK_USER.TAS_UID='$pmTaskId' AND TASK_USER.TU_RELATION=2 LIMIT 1;";
} else {
+ $res = $PM_DB->request([
+ 'SELECT' => 'CON_VALUE',
+ 'FROM' => 'CONTENT',
+ 'WHERE' => ['AND' => ['CONTENT.CON_ID' => $groupId, 'CONTENT.CON_CATEGORY' => 'GRP_TITLE', 'CONTENT.CON_LANG' => 'en']]
+ ]);
$query = "SELECT CON_VALUE FROM CONTENT
WHERE CONTENT.CON_ID='$groupId' AND CONTENT.CON_CATEGORY='GRP_TITLE' AND CONTENT.CON_LANG='en' ;";
}
@@ -1695,17 +1755,26 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
// or
// as there is only one group per guid
// then we should have at maximun 1 record
- foreach ($PM_DB->request($query) as $onlyrec) {
+ foreach ($res as $onlyrec) {
+ //foreach ($PM_DB->request($query) as $onlyrec) {
$groupname = $onlyrec['CON_VALUE'];
}
$groups_id_tech = 0;
- $query = "SELECT id AS glpi_group_id FROM glpi_groups WHERE name LIKE '$groupname';";
- $res = $DB->query($query);
- if ($DB->numrows($res) > 0) {
- $row = $DB->fetch_array( $res );
+ $res = $DB->request([
+ 'SELECT' => 'id AS glpi_group_id',
+ 'FROM' => 'glpi_groups',
+ 'WHERE' => ['name' => ['LIKE', $groupname]]
+ ]);
+ if ($row = $res->next()) {
$groups_id_tech = $row['glpi_group_id'];
}
+ //$query = "SELECT id AS glpi_group_id FROM glpi_groups WHERE name LIKE '$groupname';";
+ //$res = $DB->query($query);
+ //if ($DB->numrows($res) > 0) {
+ // $row = $DB->fetch_array( $res );
+ // $groups_id_tech = $row['glpi_group_id'];
+ //}
} else {
// adds the user tech to ticket watcher if neccessary
@@ -1762,9 +1831,18 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
// 'plugin_processmaker_cases_id' => $cases_id,
// 'del_index' => $delIndex
// ], [], false);
- $query = "INSERT INTO glpi_plugin_processmaker_tasks (items_id, itemtype, plugin_processmaker_cases_id, plugin_processmaker_taskcategories_id, del_index, del_thread)
- VALUES ({$glpi_task->getId()}, '{$glpi_task->getType()}', $cases_id, {$pmtaskcat->fields['id']}, $delIndex, $delThread);";
- $DB->query( $query );
+ $DB->insert('glpi_plugin_processmaker_tasks',
+ [
+ 'items_id' => $glpi_task->getId(),
+ 'itemtype' => $glpi_task->getType(),
+ 'plugin_processmaker_cases_id' => $cases_id,
+ 'plugin_processmaker_taskcategories_id' => $pmtaskcat->fields['id'],
+ 'del_index' => $delIndex,
+ 'del_thread' =>$delThread
+ ]);
+ //$query = "INSERT INTO glpi_plugin_processmaker_tasks (items_id, itemtype, plugin_processmaker_cases_id, plugin_processmaker_taskcategories_id, del_index, del_thread)
+ // VALUES ({$glpi_task->getId()}, '{$glpi_task->getType()}', $cases_id, {$pmtaskcat->fields['id']}, $delIndex, $delThread);";
+ //$DB->query( $query );
}
// send notification if needed for new task as now we have the PluginProcessmakerTask in the DB
@@ -1989,10 +2067,12 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
global $DB;
$query = "SELECT * FROM glpi_plugin_processmaker_tasks WHERE plugin_processmaker_cases_id=$cases_id and del_index=$delIndex; ";
- $res = $DB->query($query);
- if ($DB->numrows($res) > 0) {
+ //$res = $DB->query($query);
+ $res = $DB->request('glpi_plugin_processmaker_tasks', ['AND' => ['plugin_processmaker_cases_id' => $cases_id, 'del_index' => $delIndex]]);
+ //if ($DB->numrows($res) > 0) {
+ if ($row = $res->next()) {
$dbu = new DbUtils;
- $row = $DB->fetch_array( $res );
+ //$row = $DB->fetch_array( $res );
$glpi_task = new $row['itemtype'];
$glpi_task->getFromDB( $row['items_id'] );
@@ -2040,8 +2120,8 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
self::restoreNotification($donotif);
// Close the task
- $DB->query("UPDATE glpi_plugin_processmaker_tasks SET del_thread_status = '".PluginProcessmakerTask::CLOSED."' WHERE id = {$row['id']}");
-
+ //$DB->query("UPDATE glpi_plugin_processmaker_tasks SET del_thread_status = '".PluginProcessmakerTask::CLOSED."' WHERE id = {$row['id']}");
+ $DB->update('glpi_plugin_processmaker_tasks', ['del_thread_status' => PluginProcessmakerTask::CLOSED], ['id' => $row['id']]);
// restore current glpi time
$_SESSION["glpi_currenttime"] = $saved_date_time;
@@ -2059,12 +2139,13 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
*/
public function claimTask($cases_id, $delIndex, $users_id_tech = null) {
global $DB;
-
+ $res = $DB->request('glpi_plugin_processmaker_tasks', ['AND' => ['plugin_processmaker_cases_id' => $cases_id, 'del_index' => $delIndex]]);
$query = "SELECT * FROM glpi_plugin_processmaker_tasks WHERE plugin_processmaker_cases_id='$cases_id' and del_index=$delIndex; ";
- $res = $DB->query($query);
- if ($DB->numrows($res) > 0) {
+ //$res = $DB->query($query);
+ //if ($DB->numrows($res) > 0) {
+ if ($row = $res->next()) {
$dbu = new DbUtils;
- $row = $DB->fetch_array( $res );
+ //$row = $DB->fetch_array( $res );
$glpi_task = new $row['itemtype'];
$glpi_task->getFromDB( $row['items_id'] );
@@ -2089,14 +2170,14 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
*/
public static function getCaseIdFromItem ($item_type, $item_id) {
global $DB;
-
+ $res = $DB->request('glpi_plugin_processmaker_cases', ['AND' => ['itemtype' => $item_type, 'items_id' => $item_id]]);
$query = "SELECT * FROM glpi_plugin_processmaker_cases WHERE `itemtype` = '$item_type' AND `items_id` = $item_id ;";
- $res = $DB->query($query);
- if ($DB->numrows($res) > 0) {
- // case is existing for this item
- // then get info from db
- $row = $DB->fetch_array($res);
-
+ // $res = $DB->query($query);
+ //if ($DB->numrows($res) > 0) {
+ // // case is existing for this item
+ // // then get info from db
+ // $row = $DB->fetch_array($res);
+ if ($row = $res->next()) {
return $row['id'];
}
@@ -2112,14 +2193,14 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
*/
public static function getCaseGuidFromItem ($item_type, $item_id) {
global $DB;
-
+ $res = $DB->request('glpi_plugin_processmaker_cases', ['AND' => ['itemtype' => $item_type, 'items_id' => $item_id]]);
$query = "SELECT * FROM glpi_plugin_processmaker_cases WHERE `itemtype` = '$item_type' AND `items_id` = $item_id ;";
- $res = $DB->query($query);
- if ($DB->numrows($res) > 0) {
- // case is existing for this item
- // then get info from db
- $row = $DB->fetch_array($res);
-
+ //$res = $DB->query($query);
+ //if ($DB->numrows($res) > 0) {
+ // // case is existing for this item
+ // // then get info from db
+ // $row = $DB->fetch_array($res);
+ if ($row = $res->next()) {
return $row['case_guid'];
}
@@ -2363,12 +2444,19 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
$item_users = $item->userlinkclass;
$item_userstable = $dbu->getTableForItemType( $item_users );
$itemlink = getForeignKeyFieldForItemType( $itemtype );
-
+ $res = $DB->request([
+ 'SELECT' => ['glpi_plugin_processmaker_users.pm_users_id as pm_users_id', 'glpi_plugin_processmaker_users.id as id'],
+ 'FROM' => $item_userstable,
+ 'LEFT JOIN' => ['glpi_plugin_processmaker_users' => ['FKEY' => ['glpi_plugin_processmaker_users' => 'id', $item_userstable => 'users_id']]],
+ 'WHERE' => ['AND' => ["$item_userstable.$itemlink" => $itemId, "$item_userstable.type" => $userType]],
+ 'ORDER' => ['ORDER' => $item_userstable.'.id']
+ ]);
$query = "select glpi_plugin_processmaker_users.pm_users_id as pm_users_id, glpi_plugin_processmaker_users.id as id from $item_userstable
- left join glpi_plugin_processmaker_users on glpi_plugin_processmaker_users.id = $item_userstable.users_id
- where $item_userstable.$itemlink = $itemId and $item_userstable.type = $userType
+ left join glpi_plugin_processmaker_users on glpi_plugin_processmaker_users.id = $item_userstable.users_id
+ where $item_userstable.$itemlink = $itemId and $item_userstable.type = $userType
order by $item_userstable.id";
- foreach ($DB->request( $query ) as $dbuser) {
+ //foreach ($DB->request( $query ) as $dbuser) {
+ foreach ($res as $dbuser) {
$users[] = [ 'glpi_id' => $dbuser['id'], 'pm_id' => $dbuser['pm_users_id'] ];
}
@@ -2612,18 +2700,53 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
global $DB;
$dbu = new DbUtils;
$processList = [ ];
- $entityAncestors = implode( ", ", $dbu->getAncestorsOf( $dbu->getTableForItemType( 'Entity' ), $entity ) );
- if (strlen( $entityAncestors ) > 0) {
- $entityAncestors = " OR (entities_id IN ($entityAncestors) AND is_recursive = 1) ";
+ //$entityAncestors = implode( ", ", $dbu->getAncestorsOf( $dbu->getTableForItemType( 'Entity' ), $entity ) );
+ $entityAncestors = $dbu->getAncestorsOf( $dbu->getTableForItemType( 'Entity' ), $entity );
+ //if (strlen( $entityAncestors ) > 0) {
+ if ($category > 0) {
+ $query = [
+ 'SELECT DISTINCT' => ['glpi_plugin_processmaker_processes.id' ],
+ 'FIELDS' => ['glpi_plugin_processmaker_processes.name'],
+ //'DISTINCT' => true,
+ 'FROM' => 'glpi_plugin_processmaker_processes',
+ 'INNER JOIN' => [
+ 'glpi_plugin_processmaker_processes_profiles' => [
+ 'FKEY' => [
+ 'glpi_plugin_processmaker_processes_profiles' => 'plugin_processmaker_processes_id',
+ 'glpi_plugin_processmaker_processes' => 'id',
+ ['AND' => [
+ 'glpi_plugin_processmaker_processes.itilcategories_id' => ['!=', 0]
+ ]
+ ]
+ ]
+ ]
+ ],
+ 'WHERE' => [
+ 'AND' => [
+ 'itilcategories_id' => $category,
+ 'type' => $type,
+ 'profiles_id' => $profile,
+ 'entities_id' => $entity
+ ]
+ ]
+ ];
+ if (count( $entityAncestors ) > 0) {
+ //$entityAncestors = " OR (entities_id IN ($entityAncestors) AND is_recursive = 1) ";
+ $entityAncestors[] = $entity;
+ $query['WHERE']['AND']['entities_id'] = $entityAncestors;
+ $query['WHERE']['AND']['is_recursive'] = 1;
+ }
+ $res = $DB->request($query);
+ foreach ($res as $row) {
+ $processList[] = $row;
+ }
+ $processList = array_map("unserialize", array_unique(array_map("serialize", $processList)));
}
+ //$query ="SELECT DISTINCT glpi_plugin_processmaker_processes.id, glpi_plugin_processmaker_processes.name FROM glpi_plugin_processmaker_processes
+ // INNER JOIN glpi_plugin_processmaker_processes_profiles ON glpi_plugin_processmaker_processes_profiles.plugin_processmaker_processes_id=glpi_plugin_processmaker_processes.id
+ // WHERE is_active = 1 AND itilcategories_id = $category AND `type` = $type AND profiles_id = $profile AND (entities_id = $entity $entityAncestors)";
- $query ="SELECT DISTINCT glpi_plugin_processmaker_processes.id, glpi_plugin_processmaker_processes.name FROM glpi_plugin_processmaker_processes
- INNER JOIN glpi_plugin_processmaker_processes_profiles ON glpi_plugin_processmaker_processes_profiles.plugin_processmaker_processes_id=glpi_plugin_processmaker_processes.id
- WHERE is_active = 1 AND itilcategories_id = $category AND `type` = $type AND profiles_id = $profile AND (entities_id = $entity $entityAncestors)";
-
- foreach ($DB->request( $query ) as $row) {
- $processList[] = $row;
- }
+ //foreach ($DB->request( $query ) as $row) {
return $processList;
@@ -2757,8 +2880,11 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
"GLPI_NEXT_GROUP_TO_BE_ASSIGNED",
"GLPI_ITEM_TITLE",
"GLPI_TICKET_FOLLOWUP_CONTENT",
+ "GLPI_ITEM_FOLLOWUP_CONTENT",
"GLPI_TICKET_FOLLOWUP_IS_PRIVATE",
+ "GLPI_ITEM_FOLLOWUP_IS_PRIVATE",
"GLPI_TICKET_FOLLOWUP_REQUESTTYPES_ID",
+ "GLPI_ITEM_FOLLOWUP_REQUESTTYPES_ID",
"GLPI_ITEM_TASK_ENDDATE",
"GLPI_ITEM_TASK_STARTDATE",
"GLPI_ITEM_TASK_REMINDER",
@@ -2842,7 +2968,7 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
}
$createFollowup = false; // by default
- if (array_key_exists( 'GLPI_TICKET_FOLLOWUP_CONTENT', $casevariablevalues ) && $casevariablevalues[ 'GLPI_TICKET_FOLLOWUP_CONTENT' ] != '') {
+ if (array_key_exists( 'GLPI_ITEM_FOLLOWUP_CONTENT', $casevariablevalues ) && $casevariablevalues[ 'GLPI_ITEM_FOLLOWUP_CONTENT' ] != '') {
//&& array_key_exists( 'GLPI_TICKET_FOLLOWUP_IS_PRIVATE', $infoForTasks )
//&& array_key_exists( 'GLPI_TICKET_FOLLOWUP_REQUESTTYPES_ID', $infoForTasks )
$createFollowup = true;
@@ -2883,7 +3009,7 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
// create a followup if requested
if ($createFollowup && $itemtype == 'Ticket') {
- $this->addTicketFollowup( $items_id, $casevariablevalues );
+ $this->addItemFollowup( $itemtype, $items_id, $casevariablevalues );
}
if ($txtItemTitle != '') {
@@ -2920,10 +3046,23 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
$locTaskCat = new PluginProcessmakerTaskCategory;
if ($locTaskCat->getFromGUID($route->taskId) && $locTaskCat->fields['is_subprocess']) {
// look for APP_UID
+ $res = $PM_DB->request([
+ 'SELECT' => [
+ 'APPUID'
+ ],
+ 'FROM' => 'SUB_APPLICATION',
+ 'WHERE' => [
+ 'AND' => [
+ 'APP_PARENT' => $myCase->fields['case_guid'],
+ 'DEL_INDEX_PARENT' => $route->delIndex,
+ 'SA_STATUS' => 'ACTIVE'
+ ]
+ ]
+ ]);
$res = $PM_DB->query("SELECT APP_UID FROM SUB_APPLICATION WHERE APP_PARENT='{$myCase->fields['case_guid']}' AND DEL_INDEX_PARENT={$route->delIndex} AND SA_STATUS='ACTIVE'"); // AND DEL_THREAD_PARENT={$route->delThread} seems like it is not set to correct threadIndex
- if ($res && $PM_DB->numrows($res) == 1) {
+ if ($row = $res->next() && $PM_DB->numrows($res) == 1) {
// then new task is a sub-process,
- $row = $PM_DB->fetch_assoc($res);
+ //$row = $PM_DB->fetch_assoc($res);
// now need to get the PRO_UID
$sub_caseInfo = self::getCaseInfo($row['APP_UID']);
@@ -2961,7 +3100,18 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
// if end date was specified, then must change due date of the PM task
if ($taskEndDate != '') {
- $PM_DB->query( "UPDATE APP_DELEGATION SET DEL_TASK_DUE_DATE='$taskEndDate' WHERE APP_UID='".$sub_caseInfo->caseId."' AND DEL_INDEX=".$sub_route->delIndex);
+ $PM_DB->update(
+ 'APP_DELEGATION',
+ [
+ 'DEL_TASK_DUE_DATE' => $taskEndDate
+ ],
+ ['AND' => [
+ 'APP_UID' => $sub_caseInfo->caseId,
+ 'DEL_INDEX' => $sub_route->delIndex
+ ]
+ ]
+ );
+ //$PM_DB->query( "UPDATE APP_DELEGATION SET DEL_TASK_DUE_DATE='$taskEndDate' WHERE APP_UID='".$sub_caseInfo->caseId."' AND DEL_INDEX=".$sub_route->delIndex);
}
}
@@ -3032,7 +3182,17 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
);
// if end date was specified, then must change due date of the PM task
if ($taskEndDate != '') {
- $PM_DB->query( "UPDATE APP_DELEGATION SET DEL_TASK_DUE_DATE='$taskEndDate' WHERE APP_UID='".$caseInfo->caseId."' AND DEL_INDEX=".$route->delIndex);
+ $PM_DB->update(
+ 'APP_DELEGATION',
+ [
+ 'DEL_TASK_DUE_DATE' => $taskEndDate
+ ],
+ ['AND' => [
+ 'APP_UID' => $caseInfo->caseId,
+ 'DEL_INDEX' => $route->delIndex
+ ]
+ ]);
+ //$PM_DB->query( "UPDATE APP_DELEGATION SET DEL_TASK_DUE_DATE='$taskEndDate' WHERE APP_UID='".$caseInfo->caseId."' AND DEL_INDEX=".$route->delIndex);
}
}
@@ -3079,7 +3239,8 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
// if end date was specified, then must change due date of the PM task
if ($taskEndDate != '') {
- $PM_DB->query( "UPDATE APP_DELEGATION SET DEL_TASK_DUE_DATE='$taskEndDate' WHERE APP_UID='".$sub_caseInfo->caseId."' AND DEL_INDEX=".$open_task->delIndex);
+ $PM_DB->update('APP_DELEGATION', ['DEL_TASK_DUE_DATE' => $taskEndDate], ['AND' => ['APP_UID' => $sub_caseInfo->caseId, 'DEL_INDEX' => $open_task->delIndex]]);
+ //$PM_DB->query( "UPDATE APP_DELEGATION SET DEL_TASK_DUE_DATE='$taskEndDate' WHERE APP_UID='".$sub_caseInfo->caseId."' AND DEL_INDEX=".$open_task->delIndex);
}
}
}
@@ -3102,7 +3263,15 @@ class PluginProcessmakerProcessmaker extends CommonDBTM {
public static function getPMGroups() {
global $PM_DB;
$pmGroupList = [];
- foreach ($PM_DB->request("SELECT * FROM CONTENT WHERE CONTENT.CON_CATEGORY='GRP_TITLE' AND CONTENT.CON_LANG='en'") as $dbgroup) {
+ $res = $PM_DB->request(
+ 'CONTENT', [
+ 'AND' => [
+ 'CONTENT.CON_CATEGORY' => 'GRP_TITLE',
+ 'CONTENT.CON_LANG' => 'en'
+ ]
+ ]);
+ //foreach ($PM_DB->request("SELECT * FROM CONTENT WHERE CONTENT.CON_CATEGORY='GRP_TITLE' AND CONTENT.CON_LANG='en'") as $dbgroup) {
+ foreach ($res as $dbgroup) {
$pmGroupList[$dbgroup['CON_VALUE']] = $dbgroup;
}
return $pmGroupList;
diff --git a/inc/profile.class.php b/inc/profile.class.php
index fa6690d..b1c2fe0 100644
--- a/inc/profile.class.php
+++ b/inc/profile.class.php
@@ -116,12 +116,10 @@ class PluginProcessmakerProfile extends CommonDBTM {
$dbu = new DbUtils;
$profileRight = new ProfileRight();
foreach ($rights as $right => $value) {
- if ($dbu->countElementsInTable('glpi_profilerights',
- "`profiles_id`='$profiles_id' AND `name`='$right'") && $drop_existing) {
+ if ($dbu->countElementsInTable('glpi_profilerights', ['AND' => ['profiles_id' => $profiles_id, 'name' => $right]]) && $drop_existing) {
$profileRight->deleteByCriteria(['profiles_id' => $profiles_id, 'name' => $right]);
}
- if (!$dbu->countElementsInTable('glpi_profilerights',
- "`profiles_id`='$profiles_id' AND `name`='$right'")) {
+ if (!$dbu->countElementsInTable('glpi_profilerights', ['AND' => ['profiles_id' => $profiles_id, 'name' => $right]])) {
$myright['profiles_id'] = $profiles_id;
$myright['name'] = $right;
$myright['rights'] = $value;
diff --git a/inc/task.class.php b/inc/task.class.php
index fe843f8..c8cf125 100644
--- a/inc/task.class.php
+++ b/inc/task.class.php
@@ -79,13 +79,24 @@ class PluginProcessmakerTask extends CommonITILTask
$selfTable = $dbu->getTableForItemType( __CLASS__);
//$itemTypeTaskTable = getTableForItemType( $itemtype );
+ $res = $DB->request([
+ 'SELECT' => $selfTable.'.items_id AS taskID',
+ 'FROM' => $selfTable,
+ 'WHERE' => [
+ 'AND' => [
+ $selfTable.'del_thread_status' => self::OPEN,
+ $selfTable.'plugin_processmaker_cases_id' =>$case_id
+ ]
+ ]
+ ]);
$query = "SELECT `$selfTable`.`items_id` as taskID from $selfTable
WHERE `$selfTable`.`del_thread_status` = '".self::OPEN."' AND `$selfTable`.`plugin_processmaker_cases_id` = '$case_id';";
//$query = "SELECT $itemTypeTaskTable.id as taskID from $itemTypeTaskTable
// INNER JOIN $selfTable on $selfTable.items_id=$itemTypeTaskTable.id
// WHERE $itemTypeTaskTable.state=1 and $selfTable.plugin_processmaker_cases_id='$case_id';";
- foreach ($DB->request($query) as $row) {
+ //foreach ($DB->request($query) as $row) {
+ foreach ($res as $row) {
$ret[$row['taskID']]=$row['taskID'];
}
return $ret;
@@ -164,8 +175,17 @@ class PluginProcessmakerTask extends CommonITILTask
// get all tasks that are OPEN for this case
$tasks = [];
+ $res = $DB->request(
+ 'glpi_plugin_processmaker_tasks', [
+ 'AND' => [
+ 'plugin_processmaker_cases_id' => $case->fields['id'],
+ 'del_thread_status' => 'OPEN'
+ ]
+ ]
+ );
$query = "SELECT * FROM `glpi_plugin_processmaker_tasks` WHERE `plugin_processmaker_cases_id`={$case->fields['id']} AND `del_thread_status`='OPEN'";
- foreach ($DB->request($query) as $task) {
+ //foreach ($DB->request($query) as $task) {
+ foreach ($res as $task) {
$tasks[$task['del_index']] = $task;
}
@@ -200,9 +220,21 @@ class PluginProcessmakerTask extends CommonITILTask
}
foreach ($main_tasks as $task) {
- $res = $PM_DB->query("SELECT APP_UID FROM SUB_APPLICATION WHERE APP_PARENT='{$case->fields['case_guid']}' AND DEL_INDEX_PARENT={$task->delIndex} AND SA_STATUS='ACTIVE'");
- if ($res && $PM_DB->numrows($res) == 1) {
- $row = $PM_DB->fetch_assoc($res);
+ $res = $PM_DB->request([
+ 'SELECT' => 'APP_UID',
+ 'FROM' => 'SUB_APPLICATION',
+ 'WHERE' => [
+ 'AND' => [
+ 'APP_PARENT' => $case->fields['case_guid'],
+ 'DEL_INDEX_PARENT' => $task->delIndex,
+ 'SA_STATUS' => 'ACTIVE'
+ ]
+ ]
+ ]);
+ //$res = $PM_DB->query("SELECT APP_UID FROM SUB_APPLICATION WHERE APP_PARENT='{$case->fields['case_guid']}' AND DEL_INDEX_PARENT={$task->delIndex} AND SA_STATUS='ACTIVE'");
+ //if ($res && $PM_DB->numrows($res) == 1) {
+ if ($row = $res->next() && $res->numrows() == 1) {
+ //$row = $PM_DB->fetch_assoc($res);
$loc_case = new PluginProcessmakerCase;
$loc_case->getFromGUID($row['APP_UID']);
$tab[$loc_case->getID()."-".$task->delIndex] = "> ".$task->taskName."";
@@ -253,18 +285,34 @@ class PluginProcessmakerTask extends CommonITILTask
// get all tasks that are OPEN for any sub-case of this case
$sub_tasks = [];
- $query = "SELECT `glpi_plugin_processmaker_tasks`.* FROM `glpi_plugin_processmaker_tasks`
- WHERE `glpi_plugin_processmaker_tasks`.`plugin_processmaker_cases_id`={$matches['cases_id']} AND `del_thread_status`='OPEN'";
- foreach ($DB->request($query) as $task) {
+ $res = $DB->request(
+ 'glpi_plugin_processmaker_tasks AS ppt',
+ ['AND' => [
+ 'ppt.plugin_processmaker_cases_id' => $matches['cases_id'],
+ 'del_thread_status' => 'OPEN']
+ ]
+ );
+ //$query = "SELECT `glpi_plugin_processmaker_tasks`.* FROM `glpi_plugin_processmaker_tasks`
+ // WHERE `glpi_plugin_processmaker_tasks`.`plugin_processmaker_cases_id`={$matches['cases_id']} AND `del_thread_status`='OPEN'";
+ //foreach ($DB->request($query) as $task) {
+ foreach ($res as $task) {
$sub_tasks[$task['plugin_processmaker_cases_id']][$task['del_index']] = $task;
}
$sub_case = new PluginProcessmakerCase;
$sub_case->getFromDB($matches['cases_id']);
$sub_case_url = $sub_case->getLinkURL().'&forcetab=PluginProcessmakerTask$';
- $query = "SELECT `DEL_INDEX`, `DEL_DELEGATE_DATE` FROM `APP_DELEGATION` WHERE `APP_UID`='{$sub_case->fields['case_guid']}'";
+ $res = $PM_DB->request([
+ 'SELECT' => ['DEL_INDEX', 'DEL_DELEGATE_DATE'],
+ 'FROM' => 'APP_DELEGATION',
+ 'WHERE' => [
+ 'APP_UID' => $sub_case->fields['case_guid']
+ ]
+ ]);
+ //$query = "SELECT `DEL_INDEX`, `DEL_DELEGATE_DATE` FROM `APP_DELEGATION` WHERE `APP_UID`='{$sub_case->fields['case_guid']}'";
$sub_tasks_pm = [];
- foreach ($PM_DB->request($query) as $row) {
+ //foreach ($PM_DB->request($query) as $row) {
+ foreach ($res as $row) {
$sub_tasks_pm[$row['DEL_INDEX']] = $row['DEL_DELEGATE_DATE'];
}
diff --git a/inc/taskcategory.class.php b/inc/taskcategory.class.php
index d915b52..a16b692 100644
--- a/inc/taskcategory.class.php
+++ b/inc/taskcategory.class.php
@@ -38,11 +38,36 @@ class PluginProcessmakerTaskCategory extends CommonDBTM
" | ".__('Sub-process', 'processmaker')." | " .
"
";
+ $res = $DB->request([
+ 'SELECT' => [
+ 'pm.pm_task_guid',
+ 'pm.taskcategories_id',
+ 'pm.is_start',
+ 'gl.name',
+ 'gl.completename',
+ 'gl.comment',
+ 'pm.is_active',
+ 'pm.is_subprocess'
+ ],
+ 'FROM' => 'glpi_plugin_processmaker_taskcategories AS pm',
+ 'LEFT JOIN' => [
+ 'glpi_taskcategories AS gl' => [
+ 'FKEY' => [
+ 'gl' => 'id',
+ 'pm' => 'taskcategories_id'
+ ]
+ ]
+ ],
+ 'WHERE' => [
+ 'pm.plugin_processmaker_processes_id' => $item->getId()
+ ]
+ ]);
$query = "SELECT pm.pm_task_guid, pm.taskcategories_id, pm.`is_start`, gl.name, gl.completename, gl.`comment`, pm.is_active, pm.is_subprocess FROM glpi_plugin_processmaker_taskcategories AS pm
LEFT JOIN glpi_taskcategories AS gl ON pm.taskcategories_id=gl.id
WHERE pm.plugin_processmaker_processes_id=".$item->getID().";";
- foreach ($DB->request($query) as $taskCat) {
+ //foreach ($DB->request($query) as $taskCat) {
+ foreach ($res as $taskCat) {
echo "";
echo "| query($query)) {
- if ($DB->numrows($result) != 1) {
+ $res = $DB->request(
+ $this->getTable(),
+ [
+ 'pm_task_guid' => $task_guid
+ ]
+ );
+ if ($res) {
+ if ($res->numrows() != 1) {
return false;
}
- $this->fields = $DB->fetch_assoc($result);
+ $this->fields = $res->next();
if (is_array($this->fields) && count($this->fields)) {
return true;
}
}
+
+ //$query = "SELECT *
+ // FROM `".$this->getTable()."`
+ // WHERE `pm_task_guid` = '$task_guid'";
+
+ //if ($result = $DB->query($query)) {
+ // if ($DB->numrows($result) != 1) {
+ // return false;
+ // }
+ // $this->fields = $DB->fetch_assoc($result);
+ // if (is_array($this->fields) && count($this->fields)) {
+ // return true;
+ // }
+ //}
return false;
}
@@ -144,19 +185,33 @@ class PluginProcessmakerTaskCategory extends CommonDBTM
function getFromDBbyCategory($catid) {
global $DB;
- $query = "SELECT *
- FROM `".$this->getTable()."`
- WHERE `taskcategories_id` = $catid";
-
- if ($result = $DB->query($query)) {
- if ($DB->numrows($result) != 1) {
+ $res = $DB->request(
+ $this->getTable(),
+ [
+ 'taskcategories_id' => $catid
+ ]
+ );
+ //$query = "SELECT *
+ // FROM `".$this->getTable()."`
+ // WHERE `taskcategories_id` = $catid";
+ if ($res) {
+ if ($res->numrows() != 1) {
return false;
}
- $this->fields = $DB->fetch_assoc($result);
+ $this->fields = $res->next();
if (is_array($this->fields) && count($this->fields)) {
return true;
}
}
+ //if ($result = $DB->query($query)) {
+ // if ($DB->numrows($result) != 1) {
+ // return false;
+ // }
+ // $this->fields = $DB->fetch_assoc($result);
+ // if (is_array($this->fields) && count($this->fields)) {
+ // return true;
+ // }
+ //}
return false;
}
diff --git a/inc/user.class.php b/inc/user.class.php
index 72bee97..9c22743 100644
--- a/inc/user.class.php
+++ b/inc/user.class.php
@@ -28,107 +28,207 @@ class PluginProcessmakerUser extends CommonDBTM {
static function getSqlSearchResult ($taskId, $count = true, $right = "all", $entity_restrict = -1, $value = 0,
$used = [], $search = '', $limit = '') {
global $DB, $PM_DB, $CFG_GLPI;
-
+ $res1 = new QuerySubQuery([
+ 'SELECT' => ['GROUP_USER.USR_UID AS pm_user_id'],
+ 'FROM' => 'TASK_USER',
+ 'INNER JOIN' => [
+ 'GROUP_USER' => [
+ 'FKEY' => [
+ 'GROUP_USER' => 'GRP_UID',
+ 'TASK_USER' => 'USR_UID',
+ ['AND' => [
+ 'TASk_USER.TU_RELATION' => 2,
+ 'TASk_USER.TU_TYPE' => 1
+ ]
+ ]
+ ]
+ ]
+ ]
+ ]);
+ $res2 = new QuerySubQuery([
+ 'SELECT' => 'TASK_USER.USR_UID AS pm_user_id',
+ 'FROM' => 'TASK_USER',
+ 'WHERE' => [
+ 'AND' => [
+ 'TAS_UID' => $taskId,
+ 'TASK_USER.TU_RELATION' => 1,
+ 'TASk_USER.TU_TYPE' => 1
+ ]
+ ]
+ ]);
+ $union = new QueryUnion([$res1, $res2]);
+ $res = $PM_DB->request([
+ 'FROM' => $union
+ ]);
// first need to get all users from $taskId
//$db_pm = PluginProcessmakerConfig::getInstance()->getProcessMakerDB();
- $pmQuery = "SELECT GROUP_USER.USR_UID AS pm_user_id FROM TASK_USER
- JOIN GROUP_USER ON GROUP_USER.GRP_UID=TASK_USER.USR_UID AND TASK_USER.TU_RELATION = 2 AND TASK_USER.TU_TYPE=1
- WHERE TAS_UID = '$taskId'
- UNION
- SELECT TASK_USER.USR_UID AS pm_user_id FROM TASK_USER
- WHERE TAS_UID = '$taskId' AND TASK_USER.TU_RELATION = 1 AND TASK_USER.TU_TYPE=1 ; ";
+ //$pmQuery = "SELECT GROUP_USER.USR_UID AS pm_user_id FROM TASK_USER
+ // JOIN GROUP_USER ON GROUP_USER.GRP_UID=TASK_USER.USR_UID AND TASK_USER.TU_RELATION = 2 AND TASK_USER.TU_TYPE=1
+ // WHERE TAS_UID = '$taskId'
+ // UNION
+ // SELECT TASK_USER.USR_UID AS pm_user_id FROM TASK_USER
+ // WHERE TAS_UID = '$taskId' AND TASK_USER.TU_RELATION = 1 AND TASK_USER.TU_TYPE=1 ; ";
$pmUsers = [ ];
- foreach ($PM_DB->request( $pmQuery ) as $pmUser) {
+ //foreach ($PM_DB->request( $pmQuery ) as $pmUser) {
+ foreach ($res as $pmUser) {
$pmUsers[ ] = $pmUser[ 'pm_user_id' ];
}
- $where = '';
+ //$where = '';
$joinprofile = false;
+
switch ($right) {
case "id" :
- $where = " `glpi_users`.`id` = '".Session::getLoginUserID()."' ";
+ $used[] = Session::getLoginUserID();
+ //$where = " `glpi_users`.`id` = '".Session::getLoginUserID()."' ";
+ $query2['WHERE']['AND']['glpi_users.id'] = Session::getLoginUserID();
break;
case "all" :
- $where = " `glpi_users`.`id` > '1' ";
+ //$where = " `glpi_users`.`id` > '1' ";
+ $query2['WHERE']['AND']['glpi_users.id'] = ['>', 1];
break;
}
- $where .= " AND glpi_plugin_processmaker_users.pm_users_id IN ('".join("', '", $pmUsers)."') ";
+ //$where .= " AND glpi_plugin_processmaker_users.pm_users_id IN ('".join("', '", $pmUsers)."') ";
- $where .= " AND `glpi_users`.`is_deleted` = '0'
- AND `glpi_users`.`is_active` = '1' ";
+ //$where .= " AND `glpi_users`.`is_deleted` = '0'
+ // AND `glpi_users`.`is_active` = '1' ";
+
+ $query2['WHERE']['AND']['glpi_plugin_processmaker_users.pm_users_id'] = $pmUsers;
+ $query2['WHERE']['AND']['glpi_users.is_deleted'] = 0;
+ $query2['WHERE']['AND']['glpi_users.is_active'] = 1;
if ((is_numeric($value) && $value)
|| count($used)) {
- $where .= " AND `glpi_users`.`id` NOT IN (";
+ //$where .= " AND `glpi_users`.`id` NOT IN (";
if (is_numeric($value)) {
$first = false;
- $where .= $value;
+ //$where .= $value;
+ $used[] = $value;
+ //$query2['WHERE']['AND']['NOT']['glpi_users.id'] = $value;
} else {
$first = true;
}
- foreach ($used as $val) {
- if ($first) {
- $first = false;
- } else {
- $where .= ",";
- }
- $where .= $val;
- }
- $where .= ")";
+ //$query2['WHERE']['AND']['NOT']['glpi_users.id'] = $used;
+ //foreach ($used as $val) {
+ // if ($first) {
+ // $first = false;
+ // } else {
+ // $where .= ",";
+ // }
+ // $where .= $val;
+ //}
+ //$where .= ")";
}
if ($count) {
- $query = "SELECT COUNT(DISTINCT glpi_users.id ) AS cpt ";
+ //$query = "SELECT COUNT(DISTINCT glpi_users.id ) AS cpt ";
+ $query2['SELECT'] = ['COUNT DISTINCT' => 'glpi_users.id AS cpt'];
+
} else {
- $query = "SELECT DISTINCT glpi_users.id , `glpi_users`.`realname`, `glpi_users`.`firstname`, `glpi_users`.`name`, `glpi_useremails`.`email` ";
+ //$query = "SELECT DISTINCT glpi_users.id , `glpi_users`.`realname`, `glpi_users`.`firstname`, `glpi_users`.`name`, `glpi_useremails`.`email` ";
+ $query2['SELECT DISTINCT'] = 'glpi_users.id';
+ $query2['FIELDS'] = ['glpi_users.realname', 'glpi_users.firstname', 'glpi_users.name', 'glpi_useremails.email'];
}
+ $query2['FROM'] = 'glpi_plugin_processmaker_users';
+ //$query .= "FROM glpi_plugin_processmaker_users
+ // JOIN glpi_users ON glpi_users.id=glpi_plugin_processmaker_users.id ";
+ $query2['FROM'] = 'glpi_plugin_processmaker_users';
+ $query2['INNER JOIN'] = [
+ 'glpi_users' => [
+ 'FKEY' => [
+ 'glpi_users' => 'id',
+ 'glpi_plugin_processmaker_users' => 'id'
+ ]
+ ]
+ ];
- $query .= "FROM glpi_plugin_processmaker_users
- JOIN glpi_users ON glpi_users.id=glpi_plugin_processmaker_users.id ";
-
- $query .= " LEFT JOIN `glpi_useremails`
- ON (`glpi_users`.`id` = `glpi_useremails`.`users_id` AND `glpi_useremails`.is_default = 1)";
- $query .= " LEFT JOIN `glpi_profiles_users`
- ON (`glpi_users`.`id` = `glpi_profiles_users`.`users_id`)";
+ //$query .= " LEFT JOIN `glpi_useremails`
+ // ON (`glpi_users`.`id` = `glpi_useremails`.`users_id` AND `glpi_useremails`.is_default = 1)";
+ $query2['LEFT JOIN'] = [
+ 'glpi_useremails' => [
+ 'FKEY' => [
+ 'glpi_users' => 'id',
+ 'glpi_useremails' => 'users_id', [
+ 'AND' => [
+ 'glpi_useremails.is_default' => 1
+ ]
+ ]
+ ]
+ ],
+ 'glpi_profiles_users' => [
+ 'FKEY' => [
+ 'glpi_users' => 'id',
+ 'glpi_profiles_users' => 'users_id'
+ ]
+ ]
+ ];
+ //$query .= " LEFT JOIN `glpi_profiles_users`
+ // ON (`glpi_users`.`id` = `glpi_profiles_users`.`users_id`)";
if ($joinprofile) {
- $query .= " LEFT JOIN `glpi_profiles`
- ON (`glpi_profiles`.`id` = `glpi_profiles_users`.`profiles_id`) ";
+ $query2['LEFT JOIN'] = [
+ 'glpi_profiles' => [
+ 'FKEY' => [
+ 'glpi_profiles' => 'id',
+ 'glpi_profiles_user' => 'profiles_id'
+ ]
+ ]
+ ];
+ //$query .= " LEFT JOIN `glpi_profiles`
+ // ON (`glpi_profiles`.`id` = `glpi_profiles_users`.`profiles_id`) ";
}
if ($count) {
- $query .= " WHERE $where ";
+ $query2['WHERE']['AND']['NOT']['glpi_users.id'] = $used;
+ //$query .= " WHERE $where ";
} else {
if (strlen($search)>0 && $search!=$CFG_GLPI["ajax_wildcard"]) {
- $where .= " AND (`glpi_users`.`name` ".Search::makeTextSearch($search)."
- OR `glpi_users`.`realname` ".Search::makeTextSearch($search)."
- OR `glpi_users`.`firstname` ".Search::makeTextSearch($search)."
- OR `glpi_users`.`phone` ".Search::makeTextSearch($search)."
- OR `glpi_useremails`.`email` ".Search::makeTextSearch($search)."
- OR CONCAT(`glpi_users`.`realname`,' ',`glpi_users`.`firstname`) ".
- Search::makeTextSearch($search).")";
+ $query2['WHERE']['AND'] = [
+ 'glpi_users.name' => ['LIKE',Search::makeTextSearchValue($search)],
+ 'OR' => [
+ 'glpi_users.realname' => ['LIKE',Search::makeTextSearchValue($search)],
+ 'glpi_users.firstname' => ['LIKE',Search::makeTextSearchValue($search)],
+ 'glpi_users.phone' => ['LIKE',Search::makeTextSearchValue($search)],
+ 'glpi_useremails.email' => ['LIKE',Search::makeTextSearchValue($search)],
+ 'RAW' => [
+ "CONCAT(`glpi_users`.`realname`,' ',`glpi_users`.`firstname`)".Search::makeTextSearch($search)
+ ]
+ ]
+ ];
+ //$where .= " AND (`glpi_users`.`name` ".Search::makeTextSearch($search)."
+ // OR `glpi_users`.`realname` ".Search::makeTextSearch($search)."
+ // OR `glpi_users`.`firstname` ".Search::makeTextSearch($search)."
+ // OR `glpi_users`.`phone` ".Search::makeTextSearch($search)."
+ // OR `glpi_useremails`.`email` ".Search::makeTextSearch($search)."
+ // OR CONCAT(`glpi_users`.`realname`,' ',`glpi_users`.`firstname`) ".
+ // Search::makeTextSearch($search).")";
}
- $query .= " WHERE $where ";
+ $query2['WHERE']['AND']['NOT']['glpi_users.id'] = $used;
+ //$query .= " WHERE $where ";
if ($_SESSION["glpinames_format"] == User::FIRSTNAME_BEFORE) {
- $query.=" ORDER BY `glpi_users`.`firstname`,
- `glpi_users`.`realname`,
- `glpi_users`.`name` ";
+ //$query.=" ORDER BY `glpi_users`.`firstname`,
+ // `glpi_users`.`realname`,
+ // `glpi_users`.`name` ";
+ $query2['ORDER'] = ['glpi_users.firstname', 'glpi_users.realname', 'glpi_users.name'];
} else {
- $query.=" ORDER BY `glpi_users`.`realname`,
- `glpi_users`.`firstname`,
- `glpi_users`.`name` ";
+ //$query.=" ORDER BY `glpi_users`.`realname`,
+ // `glpi_users`.`firstname`,
+ // `glpi_users`.`name` ";
+ $query2['ORDER'] = ['glpi_users.realname', 'glpi_users.firstname', 'glpi_users.name'];
}
if ($search != $CFG_GLPI["ajax_wildcard"]) {
- $query .= " $limit";
+ //$query .= " $limit";
+ $query2['LIMIT'] = 200;
}
}
- return $DB->query($query);
+ return $DB->request($query2);
+ //return $DB->query($query);
}
diff --git a/processmaker.xml b/processmaker.xml
index ec7c16b..b58b56c 100644
--- a/processmaker.xml
+++ b/processmaker.xml
@@ -36,6 +36,10 @@
3.5.2
9.3
+
+ 3.6.2
+ 9.4
+
en_gb
diff --git a/setup.php b/setup.php
index f8f94ab..6d8be9c 100644
--- a/setup.php
+++ b/setup.php
@@ -2,7 +2,7 @@
// used for case cancellation
define("CANCEL", 256);
-define('PROCESSMAKER_VERSION', '3.5.2');
+define('PROCESSMAKER_VERSION', '3.6.2');
// Init the hooks of the plugins -Needed
function plugin_init_processmaker() {
@@ -128,8 +128,8 @@ function plugin_version_processmaker() {
'homepage' => 'https://github.com/tomolimo/processmaker',
'requirements' => [
'glpi' => [
- 'min' => '9.3',
- 'max' => '9.4'
+ 'min' => '9.4',
+ 'max' => '9.5'
],
]
];
@@ -137,8 +137,8 @@ function plugin_version_processmaker() {
// Optional : check prerequisites before install : may print errors or add to message after redirect
function plugin_processmaker_check_prerequisites() {
- if (version_compare(GLPI_VERSION, '9.3', 'lt') || version_compare(GLPI_VERSION, '9.4', 'ge')) {
- echo "This plugin requires GLPI >= 9.3 and < 9.4";
+ if (version_compare(GLPI_VERSION, '9.4', 'lt') || version_compare(GLPI_VERSION, '9.5', 'ge')) {
+ echo "This plugin requires GLPI >= 9.4 and < 9.5";
return false;
}
|