Skip to content

Commit 658e93a

Browse files
committed
Fixed issue that prevents script tasks to be executed and synchronized with GLPI items
Set version to RE-2.4
1 parent 369b9f6 commit 658e93a

File tree

2 files changed

+45
-24
lines changed

2 files changed

+45
-24
lines changed

workflow/engine/classes/WsBase.php

Lines changed: 43 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public function login($userid, $password)
7272

7373
$sessionId = G::generateUniqueID();
7474
$wsResponse = new WsResponse('0', $sessionId);
75-
$timelife = explode( ':', gmdate("H:i:s", ini_get('session.cookie_lifetime')));
75+
$timelife = explode( ':', gmdate("H:i:s", ini_get('session.cookie_lifetime')));
7676
$session = new Session();
7777
$session->setSesUid($sessionId);
7878
$session->setSesStatus('ACTIVE');
@@ -81,7 +81,7 @@ public function login($userid, $password)
8181
$session->setSesInitDate(date('Y-m-d H:i:s'));
8282
$session->setSesDueDate(date(
8383
'Y-m-d H:i:s',
84-
mktime(date('H') + $timelife[0], date('i') + $timelife[1], date('s') + $timelife[2], date('m'), date('d'), date('Y'))
84+
mktime(date('H') + $timelife[0], date('i') + $timelife[1], date('s') + $timelife[2], date('m'), date('d'), date('Y'))
8585
));
8686
$session->setSesEndDate('');
8787
$session->Save();
@@ -106,18 +106,18 @@ public function login($userid, $password)
106106
public function processList()
107107
{
108108
try {
109-
// getting bpmn projects
110-
$c = new Criteria('workflow');
111-
$c->addSelectColumn(BpmnProjectPeer::PRJ_UID);
112-
$ds = ProcessPeer::doSelectRS($c, Propel::getDbConnection('workflow_ro') );
113-
$ds->setFetchmode(ResultSet::FETCHMODE_ASSOC);
114-
$bpmnProjects = [];
115-
116-
while ($ds->next()) {
117-
$row = $ds->getRow();
118-
$bpmnProjects[] = $row['PRJ_UID'];
119-
}
120-
109+
// getting bpmn projects
110+
$c = new Criteria('workflow');
111+
$c->addSelectColumn(BpmnProjectPeer::PRJ_UID);
112+
$ds = ProcessPeer::doSelectRS($c, Propel::getDbConnection('workflow_ro') );
113+
$ds->setFetchmode(ResultSet::FETCHMODE_ASSOC);
114+
$bpmnProjects = [];
115+
116+
while ($ds->next()) {
117+
$row = $ds->getRow();
118+
$bpmnProjects[] = $row['PRJ_UID'];
119+
}
120+
121121
$result = [];
122122
$oCriteria = new Criteria('workflow');
123123
$oCriteria->add(ProcessPeer::PRO_STATUS, 'DISABLED', Criteria::NOT_EQUAL);
@@ -130,8 +130,8 @@ public function processList()
130130
$arrayProcess = $oProcess->load($aRow['PRO_UID']);
131131
$result[] = array(
132132
'guid' => $aRow['PRO_UID'],
133-
'name' => $arrayProcess['PRO_TITLE'],
134-
'project_type' => in_array($aRow['PRO_UID'], $bpmnProjects) ? 'bpmn' : 'classic'
133+
'name' => $arrayProcess['PRO_TITLE'],
134+
'project_type' => in_array($aRow['PRO_UID'], $bpmnProjects) ? 'bpmn' : 'classic'
135135
);
136136
$oDataset->next();
137137
}
@@ -549,14 +549,14 @@ public function userList()
549549
try {
550550
$result = [];
551551
$criteria = new Criteria('workflow');
552-
//$criteria->add(UsersPeer::USR_STATUS, 'ACTIVE');
552+
//$criteria->add(UsersPeer::USR_STATUS, 'ACTIVE');
553553
$criteria->add(UsersPeer::USR_UID, [RBAC::GUEST_USER_UID], Criteria::NOT_IN);
554554
$dataset = UsersPeer::doSelectRS($criteria);
555555
$dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
556556
$dataset->next();
557557

558558
while ($row = $dataset->getRow()) {
559-
$result[] = ['guid' => $row['USR_UID'], 'name' => $row['USR_USERNAME'], 'status' => $row['USR_STATUS']];
559+
$result[] = ['guid' => $row['USR_UID'], 'name' => $row['USR_USERNAME'], 'status' => $row['USR_STATUS']];
560560
$dataset->next();
561561
}
562562

@@ -1788,7 +1788,7 @@ public function getVariables($caseId, $variables)
17881788
$resFields = [];
17891789

17901790
foreach ($variables as $key => $val) {
1791-
//$a .= $val->name . ', ';
1791+
//$a .= $val->name . ', ';
17921792

17931793
if (isset($oldFields[$val->name])) {
17941794
if (!is_array($oldFields[$val->name])) {
@@ -2487,21 +2487,42 @@ public function derivateCase($userId, $caseId, $delIndex, $bExecuteTriggersBefor
24872487
//Now fill the array of AppDelegationPeer
24882488
$oCriteria = new Criteria('workflow');
24892489
$oCriteria->addSelectColumn(AppDelegationPeer::DEL_INDEX);
2490+
$oCriteria->addSelectColumn(AppDelegationPeer::DEL_PREVIOUS);
24902491
$oCriteria->addSelectColumn(AppDelegationPeer::USR_UID);
24912492
$oCriteria->addSelectColumn(AppDelegationPeer::TAS_UID);
24922493
$oCriteria->addSelectColumn(AppDelegationPeer::DEL_THREAD);
24932494
$oCriteria->addSelectColumn(AppDelegationPeer::DEL_THREAD_STATUS);
24942495
$oCriteria->addSelectColumn(AppDelegationPeer::DEL_FINISH_DATE);
24952496
$oCriteria->add(AppDelegationPeer::APP_UID, $caseId);
2496-
$oCriteria->add(AppDelegationPeer::DEL_PREVIOUS, $delIndex);
24972497
$oCriteria->addAscendingOrderByColumn(AppDelegationPeer::DEL_INDEX);
24982498
$oDataset = AppDelegationPeer::doSelectRS($oCriteria);
24992499
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
25002500

25012501
$aCurrentUsers = [];
2502-
2502+
2503+
// all tasks
2504+
$allTasks = [];
25032505
while ($oDataset->next()) {
25042506
$aAppDel = $oDataset->getRow();
2507+
$allTasks[$aAppDel['DEL_INDEX']] = $aAppDel;
2508+
}
2509+
2510+
function searchNewlyActivatedTasks($tasks, $prev_index) {
2511+
$ret = [];
2512+
foreach(array_filter($tasks, function($rw) use($prev_index) {
2513+
return $rw['DEL_PREVIOUS'] == $prev_index;
2514+
}) as $task) {
2515+
if ($task['DEL_THREAD_STATUS'] == 'CLOSED') {
2516+
$ret = array_merge($ret, searchNewlyActivatedTasks($tasks, $task['DEL_INDEX']));
2517+
} else {
2518+
$ret[] = $tasks[$task['DEL_INDEX']];
2519+
}
2520+
}
2521+
return $ret;
2522+
}
2523+
2524+
// search the tasks with matching previous_index to be able to get the newly created tasks
2525+
foreach (searchNewlyActivatedTasks($allTasks, $delIndex) as $aAppDel) {
25052526
$oUser = new Users();
25062527

25072528
try {
@@ -2930,7 +2951,7 @@ public function systemInformation()
29302951
define('SKIP_RENDER_SYSTEM_INFORMATION', true);
29312952

29322953
require_once(PATH_METHODS . 'login' . PATH_SEP . 'dbInfo.php');
2933-
$result = new stdClass;
2954+
$result = new stdClass;
29342955
$result->status_code = 0;
29352956
$result->message = G::loadTranslation('ID_SUCESSFUL');
29362957
$result->timestamp = date('Y-m-d H:i:s');
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?php
22
if (!defined('PM_VERSION')) {
3-
define("PM_VERSION", "3.3.0-community-RE-2.3");
4-
define("PM_BUILD_VERSION", "3.3.0-community-RE-2.3");
3+
define("PM_VERSION", "3.3.0-community-RE-2.4");
4+
define("PM_BUILD_VERSION", "3.3.0-community-RE-2.4");
55
}

0 commit comments

Comments
 (0)