protected function save($xml) { $code = array(new \Nette\DateTime((string) $xml->Cube->Cube["time"])); $ex = explode(self::PIPE, self::ITEM_EUR); if (count($ex) === 2 && $ex[self::RATE] >= 0) { $currCode = Currency::code($ex[self::CODE]); $code[$currCode] = new Currency($currCode, $ex[self::RATE]); } foreach ($xml->Cube->Cube->Cube as $rate) { $currCode = Currency::code((string) $rate["currency"]); $rate = (string) $rate["rate"]; $code[$currCode] = new Currency($currCode, $rate); } return $code; }
protected function save($data) { $code = array($data[0]); unset($data[0]); foreach ($data as $val) { $ex = explode(self::PIPE, $val); if (count($ex) != 5 || $ex[self::TO] <= 0 || isset($code[$ex[self::TO]])) { continue; } $currCode = Currency::code($ex[self::CODE]); $obj = $code[$currCode] = new Currency($currCode, $ex[self::TO]); $obj->country = $ex[self::COUNTRY]; $obj->name = $ex[self::NAME]; } return $code; }
/** * transfer number by exchange rate * @param double|int|string $price number * @param string|FALSE $from default currency, FALSE no transfer * @param string $to output currency * @param int $round number round * @return double */ public function change($price, $from = NULL, $to = NULL, $round = NULL) { $price = (double) $price; $to = $to === NULL ? $from : ($to ? $to : $this->getDefault()); if ($from !== FALSE && $to) { $from = $from ? $from : $this->getDefault(); if (Currency::code($to) != Currency::code($from)) { $fromCurrency = $this->loadCurrency($from); $toCurrency = $this->loadCurrency($to); $price *= $toCurrency->getRate() / $fromCurrency->getRate(); } } if ($round !== NULL) { $price = round($price, $round); } return $price; }