Skip to content

Commit

Permalink
Convert enable/disable module to post request
Browse files Browse the repository at this point in the history
  • Loading branch information
samerton committed Aug 28, 2021
1 parent 2c01512 commit 4815784
Show file tree
Hide file tree
Showing 2 changed files with 94 additions and 83 deletions.
12 changes: 8 additions & 4 deletions custom/panel_templates/Default/core/modules.tpl
Expand Up @@ -65,15 +65,19 @@
<div class="float-md-right">
{if $module.enabled}
{if $module.disable_link}
<a class="btn btn-danger btn-sm"
href="{$module.disable_link}">{$DISABLE}</a>
<form action="{$module.disable_link}" method="post">
<input type="hidden" name="token" value="{$TOKEN}" />
<input type="submit" class="btn btn-danger btn-sm" value="{$DISABLE}" />
</form>
{else}
<a class="btn btn-warning btn-sm disabled"><i
class="fa fa-lock"></i></a>
{/if}
{else}
<a class="btn btn-primary btn-sm"
href="{$module.enable_link}">{$ENABLE}</a>
<form action="{$module.enable_link}" method="post">
<input type="hidden" name="token" value="{$TOKEN}" />
<input type="submit" class="btn btn-primary btn-sm" value="{$ENABLE}" />
</form>
{/if}
</div>
</td>
Expand Down
165 changes: 86 additions & 79 deletions modules/Core/pages/panel/modules.php
Expand Up @@ -147,68 +147,71 @@
// Enable a module
if(!isset($_GET['m']) || !is_numeric($_GET['m']) || $_GET['m'] == 1) die('Invalid module!');

// Get module name
$name = $queries->getWhere('modules', array('id', '=', $_GET['m']));
if(!count($name)){
Redirect::to(URL::build('/panel/modules'));
die();
}
if (Token::check($_POST['token'])) {
// Get module name
$name = $queries->getWhere('modules', array('id', '=', $_GET['m']));
if(!count($name)){
Redirect::to(URL::build('/panel/modules'));
die();
}

$name = Output::getClean($name[0]->name);
$name = Output::getClean($name[0]->name);

// Ensure module is valid
if(!file_exists(ROOT_PATH . '/modules/' . $name . '/init.php')){
Redirect::to(URL::build('/panel/modules'));
die();
}
// Ensure module is valid
if(!file_exists(ROOT_PATH . '/modules/' . $name . '/init.php')){
Redirect::to(URL::build('/panel/modules'));
die();
}

$module = null;
$module = null;

require_once(ROOT_PATH . '/modules/' . $name . '/init.php');
require_once(ROOT_PATH . '/modules/' . $name . '/init.php');

if($module instanceof Module){
// Cache
$cache->setCache('modulescache');
$modules = array();
if($module instanceof Module){
// Cache
$cache->setCache('modulescache');
$modules = array();

$order = Module::determineModuleOrder();
$order = Module::determineModuleOrder();

foreach ($order['modules'] as $key => $item) {
$modules[] = array(
'name' => $item,
'priority' => $key
);
}
foreach ($order['modules'] as $key => $item) {
$modules[] = array(
'name' => $item,
'priority' => $key
);
}

// Store
$cache->store('enabled_modules', $modules);
// Store
$cache->store('enabled_modules', $modules);

// OK to enable
$module->onEnable();
// OK to enable
$module->onEnable();

if (!in_array($module->getName(), $order['failed'])) {
$queries->update('modules', $_GET['m'], array(
'enabled' => 1
));
Session::flash('admin_modules', $language->get('admin', 'module_enabled'));
} else {
$enabled_modules = array();
if (!in_array($module->getName(), $order['failed'])) {
$queries->update('modules', $_GET['m'], array(
'enabled' => 1
));
Session::flash('admin_modules', $language->get('admin', 'module_enabled'));
} else {
$enabled_modules = array();

foreach ($modules as $item) {
$enabled_modules[] = $item['name'];
}
foreach ($module->getLoadAfter() as $item) {
if (!in_array($item, $enabled_modules)) {
Session::flash('admin_modules_error', str_replace('{x}', Output::getClean($item), $language->get('admin', 'unable_to_enable_module_dependencies')));
Redirect::to(URL::build('/panel/core/modules'));
die();
foreach ($modules as $item) {
$enabled_modules[] = $item['name'];
}
foreach ($module->getLoadAfter() as $item) {
if (!in_array($item, $enabled_modules)) {
Session::flash('admin_modules_error', str_replace('{x}', Output::getClean($item), $language->get('admin', 'unable_to_enable_module_dependencies')));
Redirect::to(URL::build('/panel/core/modules'));
die();
}
}
Session::flash('admin_modules_error', $language->get('admin', 'unable_to_enable_module'));
}

} else
Session::flash('admin_modules_error', $language->get('admin', 'unable_to_enable_module'));
}

} else
Session::flash('admin_modules_error', $language->get('admin', 'unable_to_enable_module'));
} else Session::flash('admin_modules_error', $language->get('general', 'invalid_token'));

Redirect::to(URL::build('/panel/core/modules'));
die();
Expand All @@ -217,47 +220,51 @@
// Disable a module
if(!isset($_GET['m']) || !is_numeric($_GET['m']) || $_GET['m'] == 1) die('Invalid module!');

// Get module name
$name = $queries->getWhere('modules', array('id', '=', $_GET['m']));
$name = Output::getClean($name[0]->name);

foreach (Module::getModules() as $item) {
if (in_array($name, $item->getLoadAfter())) {
// Unable to disable module
Session::flash('admin_modules_error', str_replace('{x}', Output::getClean($item->getName()), $language->get('admin', 'unable_to_disable_module')));
Redirect::to(URL::build('/panel/core/modules'));
die();
if (Token::check($_POST['token'])) {
// Get module name
$name = $queries->getWhere('modules', array('id', '=', $_GET['m']));
$name = Output::getClean($name[0]->name);

foreach (Module::getModules() as $item) {
if (in_array($name, $item->getLoadAfter())) {
// Unable to disable module
Session::flash('admin_modules_error', str_replace('{x}', Output::getClean($item->getName()), $language->get('admin', 'unable_to_disable_module')));
Redirect::to(URL::build('/panel/core/modules'));
die();
}
}
}

$queries->update('modules', $_GET['m'], array(
'enabled' => 0
));
$queries->update('modules', $_GET['m'], array(
'enabled' => 0
));

// Cache
$cache->setCache('modulescache');
$modules = array();
// Cache
$cache->setCache('modulescache');
$modules = array();

$order = Module::determineModuleOrder();
$order = Module::determineModuleOrder();

foreach ($order['modules'] as $key => $item) {
if ($item != $name) {
$modules[] = array(
'name' => $item,
'priority' => $key
);
foreach ($order['modules'] as $key => $item) {
if ($item != $name) {
$modules[] = array(
'name' => $item,
'priority' => $key
);
}
}
}

// Store
$cache->store('enabled_modules', $modules);
// Store
$cache->store('enabled_modules', $modules);

if(file_exists(ROOT_PATH . '/modules/' . $name . '/init.php')){
require_once(ROOT_PATH . '/modules/' . $name . '/init.php');
$module->onDisable();
}

if(file_exists(ROOT_PATH . '/modules/' . $name . '/init.php')){
require_once(ROOT_PATH . '/modules/' . $name . '/init.php');
$module->onDisable();
}
Session::flash('admin_modules', $language->get('admin', 'module_disabled'));

} else Session::flash('admin_modules_error', $language->get('general', 'invalid_token'));

Session::flash('admin_modules', $language->get('admin', 'module_disabled'));
Redirect::to(URL::build('/panel/core/modules'));
die();

Expand Down

0 comments on commit 4815784

Please sign in to comment.