Alert * @copyright Tamaranga */ abstract class ItemAlertGeneral extends Block { /** @var ItemForm */ public $form; public function init() { parent::init(); $this->setTemplate('form/alert', 'listings'); } public function data() { if (! $this->form->edit()) { return false; } $data = parent::data(); $data['status'] = $this->form->item['status'] ?? 0; $data['publicated_to'] = $this->form->item['publicated_to'] ?? 0; $data['publicated_period'] = $this->form->item['publicated_period'] ?? 0; $data['blocked_reason'] = $this->form->item['blocked_reason'] ?? ''; $data['refresh'] = false; if ($data['publicated_period']) { $data['refresh'] = (strtotime($data['publicated_to']) - time()) < 172800; /* менее 2 дней */ } return $data; } public function onRefreshAction() { $response = []; do { if (! $this->form->edit()) { break; } if (! $this->isRequestValid()) { break; } if (($this->form->item['status'] ?? 0) != Listings::STATUS_PUBLICATED) { break; } if (Listings::limitsExceed([ 'user_id' => User::id(), 'company_id' => $this->form->item['company_id'] ?? 0, 'cat_id' => $this->form->item['cat_id'] ?? 0, ])) { break; } # от даты завершения публикации $to = $this->form->item['publicated_to'] ?? 0; if (strtotime($to) < time()){ $to = false; } $res = Listings::model()->itemSave($this->form->item['id'], [ 'publicated_to' => Listings::itemPublicationPeriod()->refreshTo($to), ]); if (empty($res)) { break; } $response['message'] = _t('listings', 'The time of the listing was successfully extended'); } while(false); if (empty($response['message']) && $this->errors->no()) { $this->errors->reloadPage(); } return $this->ajaxResponseForm($response); } public function onPublicateAction() { $response = []; do { if (! $this->form->edit()) { break; } if (! $this->isRequestValid()) { break; } $res = Listings::itemPublicate($this->form->item['id'] ?? 0); if (empty($res)) { break; } $response['message'] = _t('listings', 'Listing was successfully published'); } while (false); if (empty($response['message']) && $this->errors->no()) { $this->errors->reloadPage(); } return $this->ajaxResponseForm($response); } }