Ejemplo n.º 1
0
 /**
  * Starts synchronization process of the database.
  * @param bool $skipTimeStamp Disables time stamp validation.
  * @return string
  */
 public function SynchronizeDB($skipTimeStamp = false)
 {
     if (WebServiceVirgo::WS()) {
         try {
             Errors::LogSynchroStep('VirgoApi - SynchronizeDB() - SYNCHRONIZATION START...');
             $date = $this->LoadParam(VirgoAPI::PARAM_SYNCHRONIZATION_TIME, time());
             if (time() - $date > Config::$DataSynchronizationInterval || $skipTimeStamp) {
                 $this->SaveParam(VirgoAPI::PARAM_SYNCHRONIZATION_TIME, time());
                 $cwd = getcwd();
                 chdir(VIRGO_API_DIR);
                 WebServiceVirgo::WS()->LoginEx();
                 //wyslanie odslon ofert
                 WebServiceVirgo::WS()->NoteOffersViews(Offers::GetOffersViews());
                 $log = "";
                 $count = WebServiceVirgo::WS()->GetOffers($log);
                 Errors::LogSynchroStep('VirgoApi - SynchronizeDB() - step 1');
                 $count2 = WebServiceVirgo::WS()->GetInvestments();
                 Errors::LogSynchroStep('VirgoApi - SynchronizeDB() - step 2');
                 //pobranie listy aktualnych ofert
                 //weryfikacja ofert czy istnieja jesli nie to usuwa z bazy
                 $xmlOffersLoaded = $this->GetOffersList(true);
                 if ($xmlOffersLoaded !== true) {
                     return 'VirgoAPI:SynchronizeDB: XML Error - VirgoAPI::GetOffersList(true)';
                 }
                 Errors::LogSynchroStep('VirgoApi - SynchronizeDB() - step 3');
                 $missingIds = $xmlOffersLoaded ? Offers::VerifyOffers() : array();
                 Errors::LogSynchroStep('VirgoApi - SynchronizeDB() - step 4');
                 if (count($missingIds) > 0) {
                     if (!file_exists("logs")) {
                         mkdir("logs");
                     }
                     $d = date("Y_m_d_H_i_s");
                     $logFileHandle = fopen("logs/" . $d . "_log.txt", "w");
                     fwrite($logFileHandle, $log);
                     fclose($logFileHandle);
                     copy("tmp.xml", "logs/" . $d . "_tmp.xml");
                     WebServiceVirgo::WS()->SetMissingOffers($missingIds);
                 }
                 Errors::LogSynchroStep('VirgoApi - SynchronizeDB() - step 5');
                 if (Config::$UsePropertiesDiskCache) {
                     $this->ClearPropertiesCache();
                 }
                 WebServiceVirgo::WS()->Logout();
                 chdir($cwd);
                 return "Ofs: {$count}, Invs: {$count2}";
             } else {
                 return "-";
             }
         } catch (Exception $ex) {
             Errors::LogError("VirgoAPI:SynchronizeDB", $ex->getMessage());
             return "ERROR";
         }
         Errors::LogSynchroStep('VirgoApi - SynchronizeDB() - SYNCHRONIZATION DONE!');
     } else {
         return 'Error: WebService not available';
     }
 }