Esempio n. 1
0
 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);
                 }
             }
         }
     }
 }