예제 #1
0
 public function testParseAISDateTime()
 {
     $this->assertEquals(AIS2Utils::parseAISDateTime("11.01.2010 08:30"), mktime(8, 30, 00, 1, 11, 2010));
     $this->assertEquals(AIS2Utils::parseAISDateTime("31.02.2011 09:35"), mktime(9, 35, 00, 2, 31, 2011));
     // parsovanie bez uvodnych nul zatial nepodporujeme (a ani nemusime)
     // AIS2Utils::parseAISDateTime("31.2.2011 9:35");
     $this->setExpectedException("Exception");
     AIS2Utils::parseAISDateTime("8:30 11.1.2010");
 }
예제 #2
0
 /**
  * Akcia pre zobrazenie mojich terminov hodnotenia
  *
  * @param Trace $trace trace object
  * @param Request $request request from browser
  */
 public function runMojeTerminyHodnotenia(Trace $trace, Request $request)
 {
     $this->templateParams['currentTab'] = 'TerminyHodnotenia';
     if ($this->terminyHodnoteniaScreen == null) {
         return $this->renderResponse('studium/terminyHodnoteniaNedostupne', $this->templateParams);
     }
     $termin = $request->getParameter('termin');
     $terminyHodnotenia = $this->terminyHodnoteniaScreen->getTerminyHodnotenia($trace->addChild("get terminy hodnotenia"));
     $this->warnings->warnWrongTableStructure($trace, 'moje terminy hodnotenia', regression\MojeTerminyRegression::get(), $terminyHodnotenia->getTableDefinition());
     $hodnotenia = $this->hodnoteniaScreen->getHodnotenia($trace->addChild("get hodnotenia"));
     $this->warnings->warnWrongTableStructure($trace, 'hodnotenia', regression\HodnoteniaRegression::get(), $hodnotenia->getTableDefinition());
     $hodnoteniePredmetu = array();
     foreach ($hodnotenia->getData() as $hodnoteniaRow) {
         $hodnoteniePredmetu[$hodnoteniaRow[HodnoteniaFields::PREDMET_SKRATKA]] = $hodnoteniaRow[HodnoteniaFields::ZNAMKA];
     }
     if ($request->getParameter('format') === 'ics') {
         $calendar = CalendarProvider::getInstance();
         $calendar->setConfig('unique_id', $request->getHostName());
         $calendar->setProperty('METHOD', 'PUBLISH');
         $calendar->setProperty("x-wr-calname", 'Moje termíny hodnotenia');
         $calendar->setProperty("X-WR-CALDESC", "Kalendár skúšok vyexportovaný z aplikácie FAJR");
         $calendar->setProperty("X-WR-TIMEZONE", 'Europe/Bratislava');
         $datetimeFields = array('TZID=Europe/Bratislava');
         foreach ($terminyHodnotenia->getData() as $terminyRow) {
             if ($terminyRow[TerminyFields::JE_PRIHLASENY] !== 'TRUE') {
                 continue;
             }
             $casSkusky = AIS2Utils::parseAISDateTime($terminyRow[TerminyFields::DATUM] . " " . $terminyRow[TerminyFields::CAS]);
             $vevent = new \vevent();
             $vevent->setProperty('dtstart', FajrUtils::datetime2icsdatetime($casSkusky), $datetimeFields);
             // koniec dame povedzme 4 hodiny po konci, kedze nevieme kolko skuska trva
             $vevent->setProperty('dtend', FajrUtils::datetime2icsdatetime($casSkusky + 4 * 3600), $datetimeFields);
             $vevent->setProperty('location', $terminyRow['miestnosti']);
             $vevent->setProperty('summary', $terminyRow['predmetNazov']);
             // TODO: toto uid je unikatne, len pokial sa nezmeni niektora z vlastnosti skusok
             // co znamena, ze to nie je uplne OK podla standardu
             // - sposobi to, ze pridavanie novych skusok bude fungovat OK
             // ale mazanie/presuvanie nebude fungovat
             // najlepsie by bolo, ak by sme mali nejake unikatne id-cko skusky priamo z AISu
             $uid = $casSkusky . '-' . $terminyRow[TerminyFields::PREDMET_SKRATKA];
             $uid .= '-' . $terminyRow['miestnosti'];
             $uid .= '@' . $request->getHostName();
             $uid = str_replace(' ', '-', $uid);
             $vevent->setProperty('uid', $uid);
             $description = 'Prihlasovanie: ' . $terminyRow['prihlasovanie'] . "\r\n";
             $description .= 'Odhlasovanie: ' . $terminyRow['odhlasovanie'] . "\r\n";
             $description .= 'Poznámka: ' . $terminyRow['poznamka'];
             $vevent->setProperty('description', $description);
             $calendar->setComponent($vevent);
         }
         $response = new Response($calendar->createCalendar());
         $response->headers->set('Content-Type', 'text/calendar; charset=utf-8');
         $response->headers->set('Content-Disposition', 'attachment; filename="MojeSkusky.ics"');
         $response->setMaxAge(10);
         return $response;
     }
     $terminyHodnoteniaActive = array();
     $terminyHodnoteniaOld = array();
     foreach ($terminyHodnotenia->getData() as $terminyRow) {
         $mojeTerminyRow = $terminyRow;
         if ($terminyRow[TerminyFields::ZNAMKA] == '') {
             // skusme najst znamku v hodnoteniach
             $predmet = $terminyRow[TerminyFields::PREDMET_SKRATKA];
             if (isset($hodnoteniePredmetu[$predmet]) && $hodnoteniePredmetu[$predmet] != '') {
                 // TODO(ppershing): move this to another field and deal with it in template!
                 $mojeTerminyRow[TerminyFields::ZNAMKA] = $hodnoteniePredmetu[$predmet] . " (nepriradená k termínu)";
             }
         }
         $datum = AIS2Utils::parseAISDateTime($terminyRow[TerminyFields::DATUM] . " " . $terminyRow[TerminyFields::CAS]);
         if ($datum < $this->serverTime) {
             if ($terminyRow[TerminyFields::JE_PRIHLASENY] == 'TRUE') {
                 $terminyHodnoteniaOld[] = $mojeTerminyRow;
             }
         } else {
             if ($terminyRow[TerminyFields::MOZE_ODHLASIT] == 1) {
                 $mojeTerminyRow[MojeTerminyFields::HASH_ODHLASENIE] = StudiumUtils::hashNaOdhlasenie($terminyRow);
             }
             $terminyHodnoteniaActive[] = $mojeTerminyRow;
         }
     }
     $this->templateParams['prihlaseni'] = null;
     if ($request->getParameter('termin') !== '') {
         $prihlaseni = $this->terminyHodnoteniaScreen->getZoznamPrihlasenychDialog($trace, $termin)->getZoznamPrihlasenych($trace);
         $this->warnings->warnWrongTableStructure($trace, 'prihlaseni na termin', regression\PrihlaseniNaTerminRegression::get(), $prihlaseni->getTableDefinition());
         $this->templateParams['prihlaseni'] = $prihlaseni->getData();
     }
     $this->templateParams['terminyActive'] = $terminyHodnoteniaActive;
     $this->templateParams['terminyOld'] = $terminyHodnoteniaOld;
     $this->templateParams['termin'] = $termin;
     return $this->renderResponse('studium/mojeTerminyHodnotenia', $this->templateParams);
 }