Example #1
0
 public function getImages($property_id)
 {
     $property = $this->get($property_id);
     $credentials = \Vividcrestrealestate\Core\Administration\Connection::getStoredOptions();
     $PropertyInfo = new PropertyInfo();
     $Rets = new \Vividcrestrealestate\Core\Libs\Rets($credentials->url, $credentials->login, $credentials->password);
     if ($Rets->login()) {
         $images_ids_data = $PropertyInfo->get(['confines' => ["`property_id`='{$property->id}'", "`key`='images_ids'"]]);
         if (!empty($images_ids_data[0])) {
             $images_ids = explode(",", $images_ids_data[0]->value);
             foreach ($images_ids as $image_id) {
                 $image = $Rets->getCachedImage($image_id, $property->mls_id);
                 if (!empty($image)) {
                     $images[] = $image;
                 }
             }
         }
     }
     if (empty($images)) {
         $images = [$property->main_image];
     }
     return $images;
 }
Example #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);
     });
 }