/**
  * @inheritdoc
  */
 public function disableContentContainer(ContentContainerActiveRecord $container)
 {
     parent::disableContentContainer($container);
     foreach (Category::find()->contentContainer($container)->all() as $content) {
         $content->delete();
     }
     foreach (Link::find()->contentContainer($container)->all() as $content) {
         $content->delete();
     }
 }
 public function run()
 {
     $container = $this->contentContainer;
     if (!$container->getSetting('enableWidget', 'linklist')) {
         return;
     }
     $categoryBuffer = Category::find()->contentContainer($this->contentContainer)->orderBy(['sort_order' => SORT_ASC])->all();
     $categories = array();
     $links = array();
     $render = false;
     foreach ($categoryBuffer as $category) {
         $linkBuffer = Link::find()->where(array('category_id' => $category->id))->orderBy(['sort_order' => SORT_ASC])->all();
         // categories are only displayed in the widget if they contain at least one link
         if (!empty($linkBuffer)) {
             $categories[] = $category;
             $links[$category->id] = $linkBuffer;
             $render = true;
         }
     }
     // if none of the categories contains a link, the linklist widget is not rendered.
     if ($render) {
         return $this->render('linklistPanel', array('container' => $container, 'categories' => $categories, 'links' => $links));
     }
 }
 public function getCategory()
 {
     return $this->hasOne(Category::className(), ['id' => 'category_id']);
 }
 /**
  * Action that renders the view to add or edit a category.<br />
  * The request has to provide the id of the category the link should be created in, in the url parameter 'category_id'.<br />
  * If an existing ling should be edited, the link's id has to be given in 'link_id'.<br />
  * @see views/linklist/editCategory.php
  * @throws HttpException 404, if the logged in User misses the rights to access this view.
  */
 public function actionEditLink()
 {
     $link_id = (int) Yii::$app->request->get('link_id');
     $category_id = (int) Yii::$app->request->get('category_id');
     $link = Link::find()->where(array('linklist_link.id' => $link_id))->contentContainer($this->contentContainer)->one();
     // access level 0 may neither create nor edit
     if ($this->accessLevel == 0) {
         throw new HttpException(404, Yii::t('LinklistModule.base', 'You miss the rights to add/edit links!'));
     } else {
         if ($link == null) {
             // access level 1 + 2 may create
             $link = new Link();
             if (Category::find()->contentContainer($this->contentContainer)->where(['linklist_category.id' => $category_id])->one() == null) {
                 throw new HttpException(404, Yii::t('LinklistModule.base', 'The category you want to create your link in could not be found!'));
             }
             $link->category_id = $category_id;
             $link->content->container = $this->contentContainer;
         } else {
             if ($this->accessLevel == 1 && $link->content->created_by != Yii::$app->user->id) {
                 // access level 1 may edit own links, 2 all links
                 throw new HttpException(404, Yii::t('LinklistModule.base', 'You miss the rights to edit this link!'));
             }
         }
     }
     if ($link->load(Yii::$app->request->post()) && $link->validate() && $link->save()) {
         return $this->redirect($this->contentContainer->createUrl('/linklist/linklist/index'));
     }
     return $this->render('editLink', array('link' => $link));
 }
 public function up()
 {
     $this->renameClass('Link', Link::className());
     $this->renameClass('Category', Category::className());
 }