示例#1
0
 /**
  * Invoke an action given its name
  *
  * This function requests information necessary to operate on
  * VSST060 AIS application
  *
  * @param Trace $trace trace object
  * @param string $action action name
  * @param Request $request incoming request
  */
 public function invokeAction(Trace $trace, $action, Request $request)
 {
     Preconditions::checkIsString($action);
     Preconditions::checkNotNull($request);
     $screenFactory = $this->factory;
     $register = $screenFactory->newRegisterPredmetovScreen($trace);
     $this->registerPredmetovScreen = $register;
     $result = parent::invokeAction($trace, $action, $request);
     if ($this->registerPredmetovScreen) {
         $this->registerPredmetovScreen->closeWindow();
     }
     return $result;
 }
示例#2
0
 /**
  * Get table definitions from DOMDocument
  *
  * @param Trace $trace for creating logs, tracking activity
  * @param $dom DOMDocument from ais2ResponseHtml
  * @returns array(string) Definition of table
  */
 private function getOptionsFromDom(Trace $trace, DOMDocument $dom)
 {
     Preconditions::checkNotNull($dom);
     $optionElements = $dom->getElementsByTagName('option');
     if ($optionElements == null) {
         throw new ParseException("Can't find options!");
     }
     $options = array();
     foreach ($optionElements as $option) {
         $options[] = $option->nodeValue;
     }
     return $options;
 }
示例#3
0
 /**
  * Extract Table data from DOMDocument
  *
  * @param Trace $trace for creating logs, tracking activity
  * @param $dom DOMDocument part of ais2ResponseHTML which contain Table
  * @returns array(string=>array(string)) Returns rows of Table, where index is rowId
  */
 private function getTableDataFromDom(Trace $trace, DOMDocument $dom)
 {
     Preconditions::checkNotNull($dom);
     $tdata = array();
     $trace->tlog("Finding element with id dataTabBody0");
     $element = $dom->getElementById('dataTabBody0');
     if ($element == null) {
         throw new ParseException("Can't find table data");
     }
     $trace->tlog("Element found");
     foreach ($element->childNodes as $aisRow) {
         assert($aisRow->tagName == "tr");
         assert($aisRow->hasAttribute("id"));
         assert($aisRow->hasChildNodes());
         // TODO: asserty prerobit na exceptiony
         $row = array();
         $trace->tlog("Extracting row id.");
         $rowId = $aisRow->getAttribute("id");
         $index = StrUtil::match('@^row_([0-9]+)$@', $rowId);
         if ($index === false) {
             throw new ParseException("Unexpected row id format");
         }
         $trace->tlog("Extraction is correct.");
         $index = intval($index);
         foreach ($aisRow->childNodes as $ais_td) {
             assert($ais_td->tagName == "td");
             $row[] = $this->getCellContent($ais_td);
         }
         $tdata[$index] = $row;
     }
     return $tdata;
 }
示例#4
0
 public function testNullFail()
 {
     $this->setExpectedException("InvalidArgumentException");
     $x = null;
     Preconditions::checkNotNull($x, "x should'n be null");
 }
示例#5
0
 /**
  * Invoke an action given its name
  *
  * This function requests information necessary to operate on
  * VSES017 AIS application
  *
  * @param Trace $trace trace object
  * @param string $action action name
  * @param Request $request incoming request
  */
 public function invokeAction(Trace $trace, $action, Request $request)
 {
     Preconditions::checkIsString($action);
     if (!$this->loginManager->isLoggedIn()) {
         throw new AuthenticationRequiredException();
     }
     Preconditions::checkNotNull($request);
     // check access to application
     $apps = $this->session->read('ais/aisApps');
     if (!is_array($apps)) {
         throw new Exception("Interná chyba - zoznam AIS aplikácii je nekorektný.");
     }
     if (!in_array(AIS2ApplicationEnum::ADMINISTRACIA_STUDIA, $apps)) {
         return $this->renderResponse('studium/notAvailable');
     }
     $screenFactory = $this->factory;
     $adminStudia = $screenFactory->newAdministraciaStudiaScreen($trace);
     $this->administraciaStudiaScreen = $adminStudia;
     $this->studium = $request->getParameter('studium', '0');
     $this->zoznamStudii = $adminStudia->getZoznamStudii($trace->addChild("Get Zoznam Studii:"));
     $this->zapisneListy = $adminStudia->getZapisneListy($trace->addChild('getZapisneListy'), $this->studium);
     $this->warnings->warnWrongTableStructure($trace, 'zoznam studii', regression\ZoznamStudiiRegression::get(), $this->zoznamStudii->getTableDefinition());
     $this->warnings->warnWrongTableStructure($trace, 'zoznam zapisnych listov', regression\ZoznamZapisnychListovRegression::get(), $this->zapisneListy->getTableDefinition());
     $zapisneListyData = $this->zapisneListy->getData();
     if (count($zapisneListyData) == 0) {
         $this->zapisnyList = null;
         $this->terminyHodnoteniaScreen = null;
         $this->hodnoteniaScreen = null;
         $this->templateParams['zapisnyListObj'] = null;
     } else {
         $this->zapisnyList = $request->getParameter('list');
         if ($this->zapisnyList === '') {
             // Ak nemame nastaveny zapisny list, zobreme aktualny
             // ak nenajdeme aktualny, zoberme posledny v zozname
             $aktualnyAkadRok = FajrUtils::getAcademicYear();
             $this->zapisnyList = null;
             foreach ($zapisneListyData as $zapList) {
                 if ($zapList['popisAkadRok'] == $aktualnyAkadRok) {
                     $this->zapisnyList = $zapList['index'];
                 }
             }
             // nenasli sme
             if ($this->zapisnyList === null) {
                 $lastList = end($zapisneListyData);
                 $this->zapisnyList = $lastList['index'];
             }
         }
         $this->zapisnyList = intval($this->zapisnyList);
         $this->zapisnyListObj = $zapisneListyData[$this->zapisnyList];
         $this->templateParams['zapisnyListObj'] = $this->zapisnyListObj;
         try {
             $this->terminyHodnoteniaScreen = $screenFactory->newTerminyHodnoteniaScreen($trace, $adminStudia->getParamNameFromZapisnyListIndex($trace, $this->zapisnyList, VSES017\AdministraciaStudiaScreen::ACTION_TERMINY_HODNOTENIA));
         } catch (ParseException $e) {
             $this->terminyHodnoteniaScreen = null;
         }
         // FIXME: chceme to nejak refaktorovat, aby sme nevytvarali zbytocne
         // objekty, ktore v konstruktore robia requesty
         $this->hodnoteniaScreen = $screenFactory->newHodnoteniaPriemeryScreen($trace, $adminStudia->getParamNameFromZapisnyListIndex($trace, $this->zapisnyList, VSES017\AdministraciaStudiaScreen::ACTION_HODNOTENIA_PRIEMERY));
     }
     $this->templateParams['currentTab'] = '';
     $this->templateParams['zoznamStudii'] = $this->zoznamStudii;
     $this->templateParams['studium'] = $this->studium;
     // TODO(anty): refactor
     $zoznamStudiiData = $this->zoznamStudii->getData();
     $this->templateParams['studiumObj'] = $zoznamStudiiData[$this->studium];
     $this->templateParams['zapisneListy'] = $this->zapisneListy;
     $this->templateParams['zapisnyList'] = $this->zapisnyList;
     // TODO(anty): refactor
     if (array_key_exists($action, $this->actionInfo)) {
         $info = $this->actionInfo[$action];
         if ($info['requiresZapisnyList'] && $this->zapisnyList === null) {
             $this->templateParams['activeTab'] = $info['tabName'];
             return $this->renderResponse('studium/chybaZapisnyList', $this->templateParams);
         }
     }
     $result = parent::invokeAction($trace, $action, $request);
     if ($this->terminyHodnoteniaScreen) {
         $this->terminyHodnoteniaScreen->closeWindow();
     }
     if ($this->hodnoteniaScreen) {
         $this->hodnoteniaScreen->closeWindow();
     }
     if ($this->administraciaStudiaScreen) {
         $this->administraciaStudiaScreen->closeWindow();
     }
     return $result;
 }
示例#6
0
 /**
  * Return the full url for the specified path.
  *
  * @param string $path path to page
  *
  * @returns string fully qualified url.
  */
 private function _getUrl($path)
 {
     Preconditions::checkNotNull($path, "url path shouldn't be null.");
     Preconditions::checkIsString($path, "url path should be string.");
     return self::PROTOCOL . $this->serverName . '/' . $path;
 }