%PDF- %PDF-
Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/gallery/models/ |
Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/gallery/models/StreamGallery.php |
<?php namespace humhub\modules\gallery\models; use \humhub\modules\comment\models\Comment; use humhub\modules\content\components\ContentContainerActiveRecord; use humhub\modules\content\models\Content; use humhub\modules\content\widgets\Stream; use \humhub\modules\file\models\File; use humhub\modules\gallery\helpers\Url; use \humhub\modules\post\models\Post; use humhub\modules\stream\actions\ContentContainerStream; use humhub\modules\stream\models\StreamQuery; use humhub\modules\stream\models\WallStreamQuery; use \Yii; use yii\data\Pagination; use yii\db\ActiveQuery; /** * This is the model class for a stream gallery. * TODO: Video support! * * @package humhub.modules.gallery.models * @since 1.0 * @author Sebastian Stumpf */ class StreamGallery extends BaseGallery { /** * @inheritdoc */ public $silentContentCreation = true; /** * @param ContentContainerActiveRecord $container * @param bool $init * @throws \yii\base\Exception * @return static */ public static function findForContainer(ContentContainerActiveRecord $container, $init = false) { $result = static::find()->contentContainer($container)->where(['type' => StreamGallery::class])->one(); if(!$result && $init) { $result = new StreamGallery($container, Content::VISIBILITY_PUBLIC, [ 'title' => Yii::t('GalleryModule.base', 'Posted pictures'), 'description' => Yii::t('GalleryModule.base', 'This gallery contains all posted pictures.') ]); $result->save(); } return $result; } public function getUrl() { return Url::toStreamGallery($this->content->container); } public function getPreviewImageUrl() { // search for file by given thumbnail id $path = $this->getPreviewImageUrlFromThumbFileId(); if ($path !== null) { return $path; } // get first image from the complete filelist as fallback $file = $this->fileListQuery()->one(); if(!$file) { return $this->getDefaultPreviewImageUrl(); } $preview = SquarePreviewImage::getSquarePreviewImageUrlFromFile($file); return $preview ?: $this->getDefaultPreviewImageUrl(); } public function getItemId() { return 'stream-gallery_' . $this->id; } /** * @return ActiveQuery */ public function fileListQuery() { $container = $this->content->container; $joinCondition = 'content.contentcontainer_id = :containerId AND content.object_id = file.object_id and content.object_model = file.object_model'; $query = File::find() ->innerJoin('content', $joinCondition, ['containerId' => $this->content->container->contentcontainer_id]) // ->where('content.visibility = :visibility', [':visibility' => Content::VISIBILITY_PUBLIC]) ->andWhere(['like', 'file.mime_type', 'image/']) ->andWhere('content.object_model != :media', ['media' => Media::class]) ->andWhere('show_in_stream = 1') ->orderBy(['file.updated_at' => SORT_DESC]); if(!$container->canAccessPrivateContent()) { $query->andWhere('content.visibility = :visibility', [':visibility' => Content::VISIBILITY_PUBLIC]); } return $query; } public function getFileList($page = 0) { $fileQuery = $this->fileListQuery(); $countQuery = clone $fileQuery; $pages = new Pagination([ 'page' => $page, 'pageSize' => $this->getPageSize(), 'totalCount' => $countQuery->count()]); $files = $fileQuery->limit($pages->pageSize)->offset($pages->offset)->orderBy(['file.updated_at' => SORT_DESC])->all(); return $files; } public function getMetaData() { $result = parent::getMetaData(); $result['footerOverwrite'] = ' '; return $result; } public function getTitle() { return Yii::t('GalleryModule.base', 'Posted Media Files'); } public function isEmpty() { return empty($this->fileListQuery()->count()); } public function getCreator() { // stream galleries should be automatically created, internally they have a creator but that should not be displayed return ''; } }