Example #1
0
 /**
  * @param \DateTime $date
  *
  * @return Rates
  */
 public function getRates(\DateTime $date = null)
 {
     if ($date === null) {
         $date = new \DateTime();
     }
     // Pokud je pozadan kurz pro dnesni den a jeste nebylo 14:15 zverejnim vcerejsi kurz
     if ($date->format('Hi') < 1415) {
         $date->modify('-1 day');
     }
     $cachedFileName = $date->format('Ymd') . '.php';
     if (!is_dir($this->cacheDir)) {
         mkdir($this->cacheDir);
     }
     $cachedFile = $this->cacheDir . '/cnb_' . $cachedFileName;
     if (!is_file($cachedFile)) {
         $url = sprintf(self::API_URL, urlencode($date->format('d.m.Y')));
         $file = explode("\n", file_get_contents($url));
         $rates = [];
         foreach ($file as $index => $line) {
             // Datum a hlavicku souboru preskocime
             if ($index < 2) {
                 continue;
             }
             // Pokud je radek prazdny
             if (empty($line)) {
                 continue;
             }
             $rate = explode('|', $line);
             $rates[$rate[3]] = new Rate($date, $rate[3], $rate[0], $rate[1], Lib::toNumber($rate[2]), Lib::toNumber($rate[4]));
         }
         file_put_contents($cachedFile, serialize($rates));
     } else {
         $rates = unserialize(file_get_contents($cachedFile));
     }
     // Prevedeni do objektu Rates pro lepsi pristup v sablonach
     return new Rates($date, $rates);
 }
Example #2
0
 /**
  * @param $name
  * @param null $city
  *
  * @throws InvalidArgumentException
  * @throws \Exception
  *
  * @return array|AresRecord[]|AresRecords
  */
 public function findByName($name, $city = null)
 {
     if (strlen($name) < 3) {
         throw new InvalidArgumentException('Zadejte minimálně 3 znaky pro hledání.');
     }
     $url = sprintf(self::URL_FIND, urlencode(Lib::stripDiacritics($name)), urlencode(Lib::stripDiacritics($city)));
     $cachedFileName = date($this->cacheStrategy) . '_' . md5($name . $city) . '.php';
     $cachedFile = $this->cacheDir . '/find_' . $cachedFileName;
     $cachedRawFile = $this->cacheDir . '/find_raw_' . $cachedFileName;
     if (is_file($cachedFile)) {
         return unserialize(file_get_contents($cachedFile));
     }
     $aresRequest = file_get_contents($url, null, stream_context_create($this->contextOptions));
     if ($this->debug) {
         file_put_contents($cachedRawFile, $aresRequest);
     }
     $aresResponse = simplexml_load_string($aresRequest);
     if (!$aresResponse) {
         throw new AresException('Databáze ARES není dostupná.');
     }
     $ns = $aresResponse->getDocNamespaces();
     $data = $aresResponse->children($ns['are']);
     $elements = $data->children($ns['dtt'])->V->S;
     if (!count($elements)) {
         throw new AresException('Nic nebylo nalezeno.');
     }
     $records = new AresRecords();
     foreach ($elements as $element) {
         $record = new AresRecord();
         $record->setCompanyId(strval($element->ico));
         $record->setTaxId($element->dph ? str_replace('dic=', 'CZ', strval($element->p_dph)) : '');
         $record->setCompanyName(strval($element->ojm));
         //'adresa' => strval($element->jmn));
         $records[] = $record;
     }
     file_put_contents($cachedFile, serialize($records));
     return $records;
 }