예제 #1
0
 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();
 }
예제 #2
0
 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');
 }