/** * Process the result of the given node. Returns false if no other nodes * should be run, or a string with the next node name. * * @param Node $node Node that was run. * * @return string|false */ protected function processNodeResult(Node $node) { $ret = false; $name = $node->getName(); if (isset($this->nodeResults[$name])) { foreach ($this->nodeResults[$name] as $resultInfo) { /* @var $resultInfo NodeActionCommand */ if ($resultInfo->appliesTo($node)) { if ($resultInfo->isActionHangup()) { $this->logDebug("Hanging up after {$name}"); $this->client->hangup(); } elseif ($resultInfo->isActionJumpTo()) { $data = $resultInfo->getActionData(); if (isset($data['nodeEval'])) { $callback = $data['nodeEval']; $nodeName = $callback($node); } else { $nodeName = $data['nodeName']; } $this->logDebug("Jumping from {$name} to {$nodeName}"); $ret = $nodeName; break; } elseif ($resultInfo->isActionExecute()) { $this->logDebug("Executing callback after {$name}"); $data = $resultInfo->getActionData(); $callback = $data['callback']; $callback($node); } } } } return $ret; }