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