You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					92 lines
				
				1.9 KiB
			
		
		
			
		
	
	
					92 lines
				
				1.9 KiB
			| 
								 
											7 years ago
										 
									 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Created by Error202
							 | 
						||
| 
								 | 
							
								 * Date: 17.08.2018
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace backend\controllers;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use core\entities\ModuleRecord;
							 | 
						||
| 
								 | 
							
								use core\services\ModuleService;
							 | 
						||
| 
								 | 
							
								use yii\web\Controller;
							 | 
						||
| 
								 | 
							
								use yii\filters\VerbFilter;
							 | 
						||
| 
								 | 
							
								use yii\filters\AccessControl;
							 | 
						||
| 
								 | 
							
								use yii\web\NotFoundHttpException;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class ModuleController extends Controller
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									private $service;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function __construct( string $id, $module, ModuleService $service, array $config = [] ) {
							 | 
						||
| 
								 | 
							
										parent::__construct( $id, $module, $config );
							 | 
						||
| 
								 | 
							
										$this->service = $service;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function behaviors(): array
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										return [
							 | 
						||
| 
								 | 
							
											'access' => [
							 | 
						||
| 
								 | 
							
												'class' => AccessControl::class,
							 | 
						||
| 
								 | 
							
												'rules' => [
							 | 
						||
| 
								 | 
							
													[
							 | 
						||
| 
								 | 
							
														'actions' => ['list', 'disable', 'enable', 'delete'],
							 | 
						||
| 
								 | 
							
														'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'],
							 | 
						||
| 
								 | 
							
												],
							 | 
						||
| 
								 | 
							
											],
							 | 
						||
| 
								 | 
							
										];
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function actionList()
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										//$modules = ModuleRecord::find()->all();
							 | 
						||
| 
								 | 
							
										$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']);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									protected function findModel($id): ModuleRecord
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										if (($model = ModuleRecord::findOne($id)) !== null) {
							 | 
						||
| 
								 | 
							
											return $model;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										throw new NotFoundHttpException('The requested module does not exist.');
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 |