public static function getActuallyStatus($model) { $category = $model->category_id; $role = self::getRole(); $user_id = Yii::$app->user->id; $haveModers = RelationCategories::find()->joinWith(['role'])->where(['category_id' => $category, 'auth_assignment.item_name' => User::MODER])->all(); $moderHaveRCategory = RelationCategories::find()->joinWith(['role'])->where(['relation_categories.user_id' => $user_id, 'category_id' => $category, 'auth_assignment.item_name' => User::MODER])->one(); $haveSModers = RelationCategories::find()->joinWith(['role'])->where(['category_id' => $category, 'auth_assignment.item_name' => User::SMODER])->all(); $smoderHaveRCategory = RelationCategories::find()->joinWith(['role'])->where(['relation_categories.user_id' => $user_id, 'category_id' => $category, 'auth_assignment.item_name' => User::SMODER])->one(); if ($model->status == News::MODER_NEWS && $role != User::ADMIN) { if ($model->isNewRecord || $model->oldAttributes['status'] == News::TEMP_NEWS || $model->oldAttributes['status'] == News::BAD_NEWS) { if (empty($haveModers)) { $model->status = News::SMODER_NEWS; } else { if ($role == User::MODER) { if (!is_null($moderHaveRCategory)) { $model->status = News::SMODER_NEWS; } } } } } if ($model->status == News::SMODER_NEWS && $role != User::ADMIN) { if (empty($haveSModers)) { $model->status = News::ADMIN_NEWS; } else { if ($role == User::SMODER) { if (!is_null($smoderHaveRCategory)) { $model->status = News::ADMIN_NEWS; } } } } }