private function deleteNewEntries($tableName, Gpf_DateTime $fromDate) { $updateBuilder = new Gpf_SqlBuilder_UpdateBuilder(); for ($i = $fromDate->getDay(); $i<=31; $i++) { $updateBuilder->set->add("raw_$i", 0); $updateBuilder->set->add("unique_$i", 0); if (strstr($tableName, 'click')) { $updateBuilder->set->add("declined_$i", 0); } } $updateBuilder->from->add($tableName); $updateBuilder->where->add('month', '=', $fromDate->getMonthStart()->toDate()); $updateBuilder->execute(); $delete = new Gpf_SqlBuilder_DeleteBuilder(); $delete->from->add($tableName); $delete->where->add('month', '>', $fromDate->toDate()); $delete->execute(); }
public function loadHistoricalRates() { $rawXmlData = file_get_contents('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist.xml'); $xml = new SimpleXMLElement($rawXmlData); $lastDate = null; $lastRates = null; Gpf_Log::debug('Loading to db...'); foreach ($xml->{"Cube"}->{"Cube"} as $dailyRates) { $attr = $dailyRates->attributes(); $date = new Gpf_DateTime($attr['time']); Gpf_Log::debug('Loading rates for ' . $date->toDate()); $dayBefore = new Gpf_DateTime($attr['time']); $dayBefore->addDay(1); if ($lastDate !== null && $dayBefore->toDate() != $lastDate->toDate()) { Gpf_Log::debug('Last date was ' . $lastDate->toDate() . '! Extending last saved rates validFrom parameters...'); foreach ($lastRates as $rate) { Gpf_Log::debug('Extending validFrom for currency ' . $rate->getValidFrom() . ' - ' . $rate->getValidTo() . ' - ' . $rate->getTargetCurrency() . ' to value ' . $dayBefore->toDate() . ' 00:00:00'); $rate->setValidFrom($dayBefore->toDate() . ' 00:00:00'); $rate->update(array(Gpf_Db_Table_CurrencyRates::VALID_FROM)); } } Gpf_Log::debug('Saving rates for ' . $date->toDate()); $lastRates = array(); foreach ($dailyRates->{"Cube"} as $currencyRate) { $info = $currencyRate->attributes(); Gpf_Log::debug('Saving EUR to ' . $info['currency'] . ', rate=' . $info['rate']); $rate = $this->saveDailyRate($date, (string) $info['currency'], (double) $info['rate']); $lastRates[] = $rate; } $lastDate = new Gpf_DateTime($attr['time']); } Gpf_Log::debug('Load complete'); }