[Space::USERGROUP_OWNER, Space::USERGROUP_ADMIN]]]; } public function actionIndex() { $model = new SpaceProfileForm(['contentContainer' => $this->contentContainer]); if ($model->load(Yii::$app->request->post())) { $model->iconFile = UploadedFile::getInstance($model, 'iconFile'); $model->backgroundImageFile = UploadedFile::getInstance($model, 'backgroundImageFile'); if ($model->save()) { $this->view->saved(); return $this->refresh(); } } $subNav = null; if (class_exists(RescueSettingsMenu::class)) { $subNav = RescueSettingsMenu::widget(['space' => $this->contentContainer]); } return $this->render('index', [ 'model' => $model, 'subNav' => $subNav, ]); } public function actionSetup() { if (!Yii::$app->request->isPost) { throw new BadRequestHttpException('Invalid request method.'); } if (!$this->contentContainer instanceof Space) { $this->view->error(Yii::t('SpaceProfilesModule.base', 'Setup can only be run inside a space.')); return $this->redirect($this->contentContainer->createUrl('/space_profiles/settings')); } try { $result = ModuleSetupService::runForSpace($this->contentContainer); $appliedCount = count($result['applied'] ?? []); if ($appliedCount > 0) { $this->view->success(Yii::t('SpaceProfilesModule.base', 'Setup completed. Applied {count} migration(s).', [ 'count' => $appliedCount, ])); } else { $this->view->success(Yii::t('SpaceProfilesModule.base', 'Setup completed. No pending migrations were found.')); } } catch (\Throwable $e) { Yii::error($e, 'space_profiles.setup'); $this->view->error(Yii::t('SpaceProfilesModule.base', 'Setup failed. Please check logs and try again.')); } return $this->redirect($this->contentContainer->createUrl('/space_profiles/settings')); } }