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 | 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 | +?> | |
... | ... |