%PDF- %PDF-
Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/gallery/models/forms/ |
Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/gallery/models/forms/GalleryEditForm.php |
<?php /** * @link https://www.humhub.org/ * @copyright Copyright (c) 2017 HumHub GmbH & Co. KG * @license https://www.humhub.com/licences * */ /** * Created by PhpStorm. * User: buddha * Date: 04.06.2017 * Time: 16:12 */ namespace humhub\modules\gallery\models\forms; use humhub\modules\content\components\ContentContainerActiveRecord; use humhub\modules\content\models\Content; use humhub\modules\gallery\models\CustomGallery; use humhub\modules\space\models\Space; use Yii; use yii\base\Model; use yii\web\HttpException; /** * Class GalleryEditForm used to load/save gallery edit form data. * * @package humhub\modules\gallery\models\forms */ class GalleryEditForm extends Model { /** * @var CustomGallery gallery instance */ public $instance; /** * @var int content visibility */ public $visibility; /** * @var ContentContainerActiveRecord */ public $contentContainer; /** * @inheritdoc */ public function init() { parent::init(); if(!$this->instance) { $this->visibility = $this->getDefaultVisibility(); $this->instance = new CustomGallery(); $this->instance->content->container = $this->contentContainer; $this->instance->content->visibility = $this->visibility; } else if(!($this->instance instanceof CustomGallery)) { throw new HttpException(404); } else if($this->instance->content->container->id != $this->contentContainer->id) { throw new HttpException(404); } else if(!$this->instance->content->canEdit()) { throw new HttpException(403); } else { $this->visibility = $this->instance->content->visibility; } } public function attributeLabels() { return [ 'title' => Yii::t('GalleryModule.base', 'Title'), 'description' => Yii::t('GalleryModule.base', 'Description'), 'sort_order' => Yii::t('GalleryModule.base', 'Sort Order'), ]; } /** * @return int the default visibility of the given content container */ private function getDefaultVisibility() { if($this->contentContainer instanceof Space) { return $this->contentContainer->getDefaultContentVisibility(); } else { return Content::VISIBILITY_PUBLIC; } } /** * @inheritdoc */ public function load($data, $formName = null) { parent::load($data, $formName); return $this->instance->load($data, $formName); } /** * @inheritdoc */ public function rules() { $rules = parent::rules(); $rules[] = ['visibility', 'integer', 'min' => Content::VISIBILITY_PRIVATE, 'max' => Content::VISIBILITY_PUBLIC]; return $rules; } /** * Saves the gallery data and updates it's visibility settings. * @return bool * @throws \Throwable */ public function save() { if(!$this->validate()) { return false; } return CustomGallery::getDb()->transaction(function() { $this->updateVisibility(); return $this->instance->save(); }); } /** * Updates the content visibility and furthermore updates all related media content. * @param $insert */ protected function updateVisibility() { if($this->visibility === null) { return; } if ($this->instance->content->visibility != $this->visibility) { $this->instance->content->visibility = $this->visibility; $contentIds = []; foreach($this->instance->mediaList as $media) { $contentIds[] = $media->content->id; } Content::updateAll(['visibility' => $this->visibility], ['in', 'id', $contentIds]); } } }