_service = $service; } public function behaviors(): array { return [ 'access' => [ 'class' => AccessControl::class, 'rules' => [ [ 'actions' => ['list', 'disable', 'enable', 'delete', 'search'], 'allow' => true, 'roles' => ['ModuleManagement'], ], [ // all the action are accessible to admin 'allow' => true, 'roles' => ['admin'], ], ], ], 'verbs' => [ 'class' => VerbFilter::class, 'actions' => [ 'delete' => ['POST'], 'disable' => ['POST'], 'enable' => ['POST'], 'install' => ['POST'], ], ], ]; } /** * List of modules * @return string */ public function actionList() { $modules = \Yii::$app->moduleManager->getModules(); return $this->render('list', [ 'modules' => $modules, ]); } public function actionDelete($id) { $module = $this->findModel($id); $this->_service->delete($module); return $this->redirect(['module/list']); } public function actionDisable($id) { $module = $this->findModel($id); $this->_service->disable($module); return $this->redirect(['module/list']); } public function actionEnable($id) { $module = $this->findModel($id); $this->_service->enable($module); return $this->redirect(['module/list']); } public function actionSearch() { $message = null; try { $list = file_get_contents('http://zertex.ru/zxcms/modules.txt'); $links = array_filter(explode('|', $list)); $modules = []; foreach ($links as $link) { $manifest = file_get_contents($link); $manifest = eval(str_replace('language . '/' . $manifest['name'] . '.php', $link); try { $language = file_get_contents($languageFile); $language = eval(str_replace('render('remote-list', [ 'modules' => $modules, 'message' => $message, ]); } protected function findModel($id): ModuleRecord { if (($model = ModuleRecord::findOne($id)) !== null) { return $model; } throw new NotFoundHttpException('The requested module does not exist.'); } }