Scalr\System\Zmq\Cron\Task\LeaseManager::enqueue PHP Method

enqueue() public method

See also: Scalr\System\Zmq\Cron\TaskInterface::enqueue()
public enqueue ( )
    public function enqueue()
    {
        $queue = new ArrayObject([]);
        $db = \Scalr::getDb();
        $this->log('INFO', "Fetching farms...");
        $farms = [];
        $rs = $db->Execute("\n            SELECT env_id, value FROM governance\n            WHERE enabled = 1 AND name = ?\n        ", [Scalr_Governance::GENERAL_LEASE]);
        while ($env = $rs->FetchRow()) {
            $env['value'] = json_decode($env['value'], true);
            $period = 0;
            if (is_array($env['value']['notifications'])) {
                foreach ($env['value']['notifications'] as $notif) {
                    if ($notif['period'] > $period) {
                        $period = $notif['period'];
                    }
                }
                $dt = new DateTime();
                $dt->add(new DateInterval('P' . $period . 'D'));
                $fs = $db->GetAll("\n                    SELECT fs.farmid, f.status\n                    FROM farm_settings fs\n                    JOIN farms f ON f.id = fs.farmid\n                    WHERE fs.name = ? AND f.status = ? AND f.env_id = ? AND fs.value < ? AND fs.value != ''\n                ", [Entity\FarmSetting::LEASE_TERMINATE_DATE, FARM_STATUS::RUNNING, $env['env_id'], $dt->format('Y-m-d H:i:s')]);
                foreach ($fs as $f) {
                    if (!isset($farms[$f['farmid']])) {
                        $farms[$f['farmid']] = true;
                        $obj = new stdClass();
                        $obj->farmId = $f['farmid'];
                        $queue->append($obj);
                    }
                }
            }
        }
        $cnt = count($farms);
        $this->log('INFO', "%d lease task%s %s found", $cnt, $cnt != 1 ? 's' : '', $cnt != 1 ? 'were' : 'was');
        return $queue;
    }