Exemple #1
0
 public static function fetchRawData($class = null)
 {
     // Check params
     if (empty($class) && empty($_POST['class'])) {
         self::$negative_messages[] = "Class is not defined";
         return false;
     }
     // Define vars
     $timezone = new \DateTimeZone(get_option("timezone_string"));
     $ignore_daily_restrictions = !empty($_POST['ignore_daily_restrictions']);
     $start = !empty($_POST['start']) ? $_POST['start'] : (new \Datetime("-3 days", $timezone))->format("Y-m-d\\T00:00:00");
     $end = !empty($_POST['end']) ? $_POST['end'] : (new \Datetime("-1 day", $timezone))->format("Y-m-d\\T00:00:00");
     $class = !empty($class) ? $class : $_POST['class'];
     $credentials = Connection::getStoredOptions();
     // Check the neceessity of fetch properties
     if (!$ignore_daily_restrictions) {
         $options = self::getStoredOptions();
         $current_date = new \Datetime("now", $timezone);
         $fetch_date_option_name = "last_fetch_date_{$class}";
         $last_fetch_date = new \Datetime($options->{$fetch_date_option_name});
         $interval = $current_date->diff($last_fetch_date);
         if ($interval->format("%d") == 0) {
             self::$negative_messages[] = "Properties for class \"{$class}\" has been already fetched today";
             return;
         } else {
             self::storeOptions([$fetch_date_option_name => $current_date->format("Y-m-d H:i:s")]);
         }
     }
     // Init Libs
     $Rets = new Libs\Rets($credentials->url, $credentials->login, $credentials->password);
     if (!$Rets->login()) {
         self::$negative_messages[] = "Can't connect to RETS server";
         return false;
     }
     // Fetch the properties
     $fetched_qty = $Rets->fetchProperties($class, $start, $end);
     // Add message info about fetched properties
     self::$positive_messages[] = "Saved {$fetched_qty} properties with class \"{$class}\"";
 }