<?php

// Load Wordpress core
require_once __DIR__ . "/../../../../../wp-load.php";
// Set system params
date_default_timezone_set(get_option("timezone_string"));
// Set params
$classes = \Vividcrestrealestate\Core\Libs\Rets::getPossibleClasses();
// Init Lib
$Exchange = new \Vividcrestrealestate\Core\Administration\Exchange();
// Fetch properties for all classes if it necessary
$current_date = new \Datetime();
foreach ($classes as $class) {
    $last_fetch_date = new \Datetime(get_option("rets_exchange_last_fetch_date_{$class}", "2000-01-01"));
    $interval = $current_date->diff($last_fetch_date);
    if ($interval->format("%d") > 0) {
        $Exchange->fetchRawData($class);
    } else {
        echo date("Y-m-d H:i:s") . " | There is no properties to fetch for class \"{$class}\": Last Fetch Date: " . $last_fetch_date->format("Y-m-d H:i:s") . "; Interval: " . $interval->format("%d") . " days" . PHP_EOL;
    }
}
// Process properties
$Exchange->processData(200);
// Get the messages
$messages = array_merge((array) $Exchange->getPositiveMessages(), (array) $Exchange->getNegativeMessages());
// Show messages
echo date("Y-m-d H:i:s") . " | " . implode(PHP_EOL . date("Y-m-d H:i:s") . " | ", $messages) . PHP_EOL;
Exemple #2
0
 public static function processData($batch_size = null)
 {
     // Check params
     if (empty($batch_size) && empty($_POST['batch_size'])) {
         self::$negative_messages[] = "Batch size is not defined";
         return false;
     }
     // Pin the time of start
     $start = new \Datetime();
     // Define vars
     $options = self::getStoredOptions();
     $batch_size = !empty($batch_size) ? $batch_size : $_POST['batch_size'];
     $credentials = Connection::getStoredOptions();
     // Define processing progress status
     if ($options->is_processing_in_progress) {
         self::$negative_messages[] = "Properties is already processing";
         return;
     } else {
         self::storeOptions(['is_processing_in_progress' => true]);
     }
     // Init Libs
     $ProcessingProperties = new Structures\ProcessingProperties();
     // Define quantity of processing properties
     $unprocecced_qty = $ProcessingProperties->getNumberOfUnprocessed();
     $processed_qty = $batch_size >= $unprocecced_qty ? $batch_size : $unprocecced_qty;
     $processed_today_qty = $ProcessingProperties->getNumberOfProcessed(date("Y-m-d"));
     // Define necessity of processing
     if ($unprocecced_qty == 0 || $processed_today_qty >= 10000) {
         // Inform if nothing to do
         self::$negative_messages[] = $unprocecced_qty == 0 ? "There is no unprocessed properties" : "Daily limit for processing properties is exceeded (limit: 10000, processed: {$processed_today_qty})";
         // Remove processing lock
         self::storeOptions(['is_processing_in_progress' => false]);
         // Stop working
         return;
     }
     // Process properties
     try {
         $Rets = new Libs\Rets($credentials->url, $credentials->login, $credentials->password);
         if (!$Rets->login()) {
             self::$negative_messages[] = "Can't connect to RETS server";
             return false;
         }
         $Rets->processProperties($batch_size);
     } catch (\Exception $e) {
         self::$negative_messages[] = "Error due processing properties: {$e->getMessage()}";
         $processed_qty = 0;
     }
     // Change processing progress status
     self::storeOptions(['is_processing_in_progress' => false]);
     // Fetch time info
     $end = new \Datetime();
     $interval = $start->diff($end);
     $spent_seconds = $interval->format("%s");
     // Add message info about processed properties
     self::$positive_messages[] = "{$batch_size} properties has been processed for the {$spent_seconds} seconds";
     // Edit info about number of unprocessed properties
     $remaining_qty = $ProcessingProperties->getNumberOfUnprocessed();
     array_walk(self::$positive_messages, function (&$message) use($remaining_qty) {
         $message = preg_replace("/^There is (\\d*) unprocessed properties\$/", "There is {$remaining_qty} unprocessed properties", $message);
     });
 }