public function produceResponse(Parser $parser, MessageTranslator $translator, array $request) { $session = $translator->getSession(); $this->config = $request; $this->menu_path = $session->getMenuPath(); $this->option = $session->getOption(); if ($this->option) { $menu = $parser->getMenuPlain($session); if ($menu['type'] == "message") { $this->message = $menu['message']; } } elseif ($this->option == null) { $this->message = $parser->makeMenu($session); } return $this->message; }
private function messageIterator(array $menu, array $message, Parser $parser) { if (empty($message)) { if ($parser->getMenuPlain()['type'] == 'master_menu') { $this->session->setOperation("mt-cont"); } return ""; } foreach ($message as $key) { if ($this->session->isAction()) { $option = array_pop($message); $this->session->setOption($option); $this->session->setOperation("mt-cont"); } elseif (isset($menu[$key]) && !$this->session->isAction()) { if ($menu[$key]['type'] == "sub_menu") { $operation = $menu[$key]['response']; $this->session->setOperation($operation); $this->session->setMenuPath($this->session->getMenuPath() . '.options.' . $key . '.sub_menu'); array_shift($message); return $this->messageIterator($menu[$key]['sub_menu']['options'], $message, $parser); } elseif ($menu[$key]['type'] == "message") { $operation = $menu[$key]['response']; $this->session->setOption($key); $this->session->setOperation($operation); $this->session->setMenuPath($this->session->getMenuPath() . '.options.' . $key); } else { $option = array_pop($message); $this->session->setOption($option); if (isset($menu[$key])) { $operation = $menu[$key]['response']; $this->session->setOperation($operation); } } } } }