Commit 8814aa3ac1075a4329a0c880745e0ef3778a469a

Authored by Benjamin Renard
1 parent 029d9224

Improve iteration on process nodes (for #6284)

src/Request/ProcessRequestImpl/Process/ProcessManagerClass.php
@@ -241,6 +241,17 @@ class ProcessManagerClass @@ -241,6 +241,17 @@ class ProcessManagerClass
241 return $process; 241 return $process;
242 } 242 }
243 243
  244 + // Next element sibling for DOMElement
  245 + function fNextEltSibling($node) {
  246 + while ($node && ($node = $node->nextSibling)) {
  247 + if ($node instanceof DOMElement) {
  248 + break;
  249 + }
  250 + }
  251 + return $node;
  252 + }
  253 +
  254 +
244 /* 255 /*
245 * @brief Get information about a process 256 * @brief Get information about a process
246 */ 257 */
@@ -250,7 +261,8 @@ class ProcessManagerClass @@ -250,7 +261,8 @@ class ProcessManagerClass
250 $update = $args['update']; 261 $update = $args['update'];
251 262
252 $processNodes = $dom->documentElement->getElementsByTagName("process"); 263 $processNodes = $dom->documentElement->getElementsByTagName("process");
253 - foreach ($processNodes as $processNode) 264 + $processNode = $processNodes->item(0);
  265 + while ($processNode)
254 { 266 {
255 if ($processNode->getAttribute('xml:id') == $id) 267 if ($processNode->getAttribute('xml:id') == $id)
256 { 268 {
@@ -269,6 +281,7 @@ class ProcessManagerClass @@ -269,6 +281,7 @@ class ProcessManagerClass
269 281
270 return array('success' => true, 'result' => $processInfo); 282 return array('success' => true, 'result' => $processInfo);
271 } 283 }
  284 + $processNode = $this->fNextEltSibling($processNode);
272 } 285 }
273 286
274 return array('success' => false, 'message' => 'Cannot get process from id'); 287 return array('success' => false, 'message' => 'Cannot get process from id');
@@ -280,7 +293,8 @@ class ProcessManagerClass @@ -280,7 +293,8 @@ class ProcessManagerClass
280 private function deleteProcessFromId($dom, $id) 293 private function deleteProcessFromId($dom, $id)
281 { 294 {
282 $processNodes = $dom->documentElement->getElementsByTagName("process"); 295 $processNodes = $dom->documentElement->getElementsByTagName("process");
283 - foreach ($processNodes as $processNode) 296 + $processNode = $processNodes->item(0);
  297 + while ($processNode)
284 { 298 {
285 if ($processNode->getAttribute('xml:id') == $id) 299 if ($processNode->getAttribute('xml:id') == $id)
286 { 300 {
@@ -296,6 +310,7 @@ class ProcessManagerClass @@ -296,6 +310,7 @@ class ProcessManagerClass
296 310
297 return array('success' => true); 311 return array('success' => true);
298 } 312 }
  313 + $processNode = $this->fNextEltSibling($processNode);
299 } 314 }
300 315
301 return array('success' => false, 'message' => 'Cannot get process from id'); 316 return array('success' => false, 'message' => 'Cannot get process from id');
@@ -307,7 +322,8 @@ class ProcessManagerClass @@ -307,7 +322,8 @@ class ProcessManagerClass
307 private function killProcessFromId($dom, $id) 322 private function killProcessFromId($dom, $id)
308 { 323 {
309 $processNodes = $dom->documentElement->getElementsByTagName("process"); 324 $processNodes = $dom->documentElement->getElementsByTagName("process");
310 - foreach ($processNodes as $processNode) 325 + $processNode = $processNodes->item(0);
  326 + while ($processNode)
311 { 327 {
312 if ($processNode->getAttribute('xml:id') == $id) 328 if ($processNode->getAttribute('xml:id') == $id)
313 { 329 {
@@ -326,10 +342,11 @@ class ProcessManagerClass @@ -326,10 +342,11 @@ class ProcessManagerClass
326 } 342 }
327 return array('success' => false, 'message' => 'Cannot process from id'); 343 return array('success' => false, 'message' => 'Cannot process from id');
328 } 344 }
  345 + $processNode = $this->fNextEltSibling($processNode);
329 } 346 }
330 347
331 return array('success' => false, 'message' => 'Cannot kill process from id '.$id); 348 return array('success' => false, 'message' => 'Cannot kill process from id '.$id);
332 } 349 }
333 } 350 }
334 351
335 -?>  
336 \ No newline at end of file 352 \ No newline at end of file
  353 +?>