Commit 09eee38c authored by Nicolas Widart's avatar Nicolas Widart

Major code refactoring

parent 35b8c056
<?php namespace Modules\Workshop\Http\Controllers; <?php namespace Modules\Workshop\Http\Controllers;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Redirect; use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\View; use Illuminate\Support\Facades\View;
use Laracasts\Flash\Flash; use Laracasts\Flash\Flash;
use Modules\Core\Http\Controllers\Admin\AdminBaseController; use Modules\Core\Http\Controllers\Admin\AdminBaseController;
use Modules\Workshop\Http\Requests\ModulesRequest; use Modules\Workshop\Http\Requests\ModulesRequest;
use Pingpong\Modules\Module; use Modules\Workshop\Manager\ModuleManager;
class ModulesController extends AdminBaseController class ModulesController extends AdminBaseController
{ {
/** /**
* @var Module * @var ModuleManager
*/ */
private $module; private $moduleManager;
public function __construct(Module $module) public function __construct(ModuleManager $moduleManager)
{ {
parent::__construct(); parent::__construct();
$this->module = $module; $this->moduleManager = $moduleManager;
} }
public function index() public function index()
{ {
$modules = $this->module->all(); $modules = $this->moduleManager->all();
$coreModules = $this->getCoreModules(); $coreModules = $this->moduleManager->getCoreModules();
return View::make('workshop::admin.modules.index', compact('modules', 'coreModules')); return View::make('workshop::admin.modules.index', compact('modules', 'coreModules'));
} }
public function store(ModulesRequest $request) public function store(ModulesRequest $request)
{ {
$enabledModules = $this->getFlippedEnabledModules(); $enabledModules = $this->moduleManager->getFlippedEnabledModules();
$modules = $request->modules; $modules = $request->modules;
foreach ($modules as $module => $value) { foreach ($modules as $module => $value) {
...@@ -40,54 +39,10 @@ class ModulesController extends AdminBaseController ...@@ -40,54 +39,10 @@ class ModulesController extends AdminBaseController
unset($modules[$module]); unset($modules[$module]);
} }
} }
// Disabled not needed modules $this->moduleManager->disableModules($enabledModules);
$this->disableModules($enabledModules); $this->moduleManager->enableModules($modules);
// Enable new modules
$this->enableModules($modules);
Flash::success('Modules configuration saved!'); Flash::success('Modules configuration saved!');
return Redirect::route('dashboard.modules.index'); return Redirect::route('dashboard.modules.index');
} }
/**
* @return array
*/
private function getCoreModules()
{
$coreModules = Config::get('core::config.CoreModules');
$coreModules = array_flip($coreModules);
return $coreModules;
}
/**
* @return array
*/
private function getFlippedEnabledModules()
{
$enabledModules = $this->module->enabled();
$enabledModules = array_flip($enabledModules);
return $enabledModules;
}
private function disableModules($enabledModules)
{
$coreModules = $this->getCoreModules();
foreach ($enabledModules as $moduleToDisable => $value) {
if (isset($coreModules[$moduleToDisable])) {
continue;
}
$this->module->disable($moduleToDisable);
}
}
/**
* @param $modules
*/
private function enableModules($modules)
{
foreach ($modules as $moduleToEnable => $value) {
$this->module->enable($moduleToEnable);
}
}
} }
\ No newline at end of file
<?php namespace Modules\Workshop\Manager;
use Illuminate\Config\Repository as Config;
use Pingpong\Modules\Module;
class ModuleManager
{
/**
* @var Module
*/
private $module;
/**
* @var Config
*/
private $config;
/**
* @param Module $module
* @param Config $config
*/
public function __construct(Module $module, Config $config)
{
$this->module = $module;
$this->config = $config;
}
/**
* Return all modules
* @return array
*/
public function all()
{
return $this->module->all();
}
/**
* Get the core modules that shouldn't be disabled
* @return array|mixed
*/
public function getCoreModules()
{
$coreModules = $this->config->get('core::config.CoreModules');
$coreModules = array_flip($coreModules);
return $coreModules;
}
/**
* Get the enabled modules, with the module name as the key
* @return array
*/
public function getFlippedEnabledModules()
{
$enabledModules = $this->module->enabled();
$enabledModules = array_flip($enabledModules);
return $enabledModules;
}
/**
* Disable the given modules
* @param $enabledModules
*/
public function disableModules($enabledModules)
{
$coreModules = $this->getCoreModules();
foreach ($enabledModules as $moduleToDisable => $value) {
if (isset($coreModules[$moduleToDisable])) {
continue;
}
$this->module->disable($moduleToDisable);
}
}
/**
* Enable the given modules
* @param $modules
*/
public function enableModules($modules)
{
foreach ($modules as $moduleToEnable => $value) {
$this->module->enable($moduleToEnable);
}
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment