%PDF- %PDF-
Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/wiki/widgets/ |
Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/wiki/widgets/CategoryListItem.php |
<?php /** * Created by PhpStorm. * User: kingb * Date: 07.09.2018 * Time: 15:08 */ namespace humhub\modules\wiki\widgets; use humhub\components\Widget; use humhub\modules\content\components\ContentContainerActiveRecord; use humhub\modules\user\models\User; use humhub\modules\wiki\models\WikiPage; use humhub\modules\wiki\permissions\AdministerPages; use humhub\modules\wiki\permissions\CreatePage; use humhub\modules\wiki\permissions\EditPages; use Yii; class CategoryListItem extends Widget { /** * @var WikiPage */ public $category; /** * @var string */ public $title; /** * @var string */ public $icon; /** * @var WikiPage[] */ public $pages; /** * @var ContentContainerActiveRecord */ public $contentContainer; /** * @var bool */ public $hideTitle = false; /** * @var bool */ public $showAddPage; /** * @var bool */ public $showDrag; /** * @var bool|null */ private static $canAdminister = null; /** * @var bool|null */ public static $canCreate = null; /** * @inheritdoc */ public function run() { if($this->showDrag === null) { $this->showDrag = $this->canAdminister(); } if($this->showAddPage === null) { $this->showAddPage = $this->canCreate(); } if ($this->category) { $this->title = $this->category->title; $this->pages = $this->category->findChildren()->all(); } return $this->render('categoryListItem', [ 'icon' => $this->icon, 'title' => $this->title, 'pages' => $this->pages, 'hideTitle' => $this->hideTitle, 'showAddPage' => $this->showAddPage, 'showDrag' => $this->showDrag, 'contentContainer' => $this->contentContainer, 'category' => $this->category, ]); } public static function clear() { static::$canAdminister = null; static::$canCreate = null; } private function canAdminister() { if(static::$canAdminister === null) { static::$canAdminister = $this->contentContainer->can(AdministerPages::class); } return static::$canAdminister; } private function canCreate() { if(static::$canCreate === null) { static::$canCreate = $this->contentContainer->can(CreatePage::class); } return static::$canCreate; } public function canEdit(WikiPage $page) { if (Yii::$app->user->isGuest || ($this->contentContainer instanceof User && !$this->contentContainer->isCurrentUser())) { return false; } if ($this->contentContainer->can(AdministerPages::class)) { return true; } if (!$page->admin_only && $this->contentContainer->can(EditPages::class)) { return true; } if (!Yii::$app->user->isGuest && !$page->admin_only && $page->content->created_by === Yii::$app->user->id) { return true; } return false; } }