Commit 8814aa3ac1075a4329a0c880745e0ef3778a469a
1 parent
029d9224
Exists in
master
and in
63 other branches
Improve iteration on process nodes (for #6284)
Showing
1 changed file
with
21 additions
and
4 deletions
Show diff stats
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 | +?> |