%PDF- %PDF-
Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/calendar/controllers/ |
Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/calendar/controllers/ViewController.php |
<?php namespace humhub\modules\calendar\controllers; use DateTime; use humhub\modules\calendar\interfaces\event\AbstractCalendarQuery; use humhub\modules\calendar\widgets\FilterType; use humhub\modules\calendar\widgets\WallEntry; use humhub\modules\calendar\models\fullcalendar\FullCalendar; use humhub\modules\calendar\interfaces\CalendarService; use humhub\modules\calendar\permissions\CreateEntry; use humhub\modules\content\components\ContentContainerController; use Yii; use yii\base\InvalidConfigException; /** * ViewController displays the calendar on spaces or user profiles. * * @package humhub.modules_core.calendar.controllers * @author luke */ class ViewController extends ContentContainerController { /** * @inheritdoc */ public $hideSidebar = true; /** * @var CalendarService */ public $calendarService; /** * @inheritdoc */ public function init() { parent::init(); $this->calendarService = $this->module->get(CalendarService::class); } /** * @return string * @throws InvalidConfigException * @throws \Throwable */ public function actionIndex() { $this->view->setViewContext(WallEntry::VIEW_CONTEXT_FULLCALENDAR); return $this->render('index', [ 'contentContainer' => $this->contentContainer, 'canAddEntries' => $this->contentContainer->permissionManager->can(new CreateEntry()), 'filters' => [], ]); } /** * Loads entries within search interval, the given string contains timezone offset. * * @param $start string search start time e.g: '2019-12-30T00:00:00+01:00' * @param $end string search end time e.g: '2020-02-10T00:00:00+01:00' * @return \yii\web\Response * @throws \Exception * @throws \Throwable */ public function actionLoadAjax($start, $end) { $result = []; $filters = Yii::$app->request->get('filters', []); $types = Yii::$app->request->get('types', []); // Don't expand recurrence event on filter by "I'm attending" because this option is selected per each date separately $expand = !in_array(AbstractCalendarQuery::FILTER_PARTICIPATE, $filters); foreach ($this->calendarService->getCalendarItems( new DateTime($start), new DateTime($end), $filters, $this->contentContainer, null, $expand, $types) as $entry) { $result[] = FullCalendar::getFullCalendarArray($entry); } return $this->asJson($result); } public function actionFindFilterTypes($keyword) { return $this->asJson(FilterType::searchByContainer($keyword, $this->contentContainer)); } }