Пример #1
0
 /**
  * Autocomplete wiki title.
  * @param integer $ign ignore suggests from wiki page id
  * @param string $q
  */
 public function actionWikiSuggest($ign = '', $q = '')
 {
     Yii::$app->response->format = Response::FORMAT_JSON;
     $query = Wiki::find()->andFilterWhere(['like', 'title', $q])->orderBy('title')->limit(10);
     if ($ign) {
         /** @var $wiki Wiki */
         $wiki = $this->findModel(Wiki::className(), $ign);
         $children = $wiki->getChildrenAll(function ($query) {
             $query->select('id');
         });
         $childrenIds = array_map(function ($child) {
             return $child->id;
         }, $children);
         $query->where(['!=', 'id', $wiki->id])->andWhere(['not in', 'id', $childrenIds]);
     }
     $wikis = $query->all();
     return array_map(function (Wiki $wiki) {
         return ['id' => $wiki->id, 'text' => $wiki->title];
     }, $wikis);
 }
Пример #2
0
 /**
  * @inheritdoc
  */
 public function rules()
 {
     return [['mode', 'required', 'message' => 'Select how to delete pages.'], ['mode', 'integer'], ['mode', 'in', 'range' => [self::DELETE_CHILDREN, self::DELETE_MOVEUP, self::DELETE_MOVEID]], ['mode', 'validateMode'], ['parentId', 'integer'], ['parentId', 'exist', 'when' => function (DeleteWiki $model) {
         return $model->mode == self::DELETE_MOVEID;
     }, 'targetClass' => Wiki::className(), 'targetAttribute' => ['parentId' => 'id']]];
 }
Пример #3
0
 /**
  * @return ActiveQuery
  */
 public function getWiki()
 {
     return $this->hasOne(Wiki::className(), ['id' => 'wiki_id']);
 }