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; }
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); }); }