Скрипт отключает не нужные разширения.
- Залейте файл
cleanup.php
в папкуadministation
- Перейдите по адресу
https://www.example.com/administrator/cleanup.php
- Выберите те раширение которые надо отключить
- Нажмите
Cleanup
- Удалите файл
cleanup.php
<?php | |
/** | |
* @package Joomla cleanup after instalation | |
* @version 1.0.0 | |
* @author Igor Berdicheskiy - septdir.ru | |
* @copyright Copyright (c) 2013 - 2019 Igor Berdicheskiy. All rights reserved. | |
* @license GNU/GPL license: http://www.gnu.org/copyleft/gpl.html | |
* @link https://septdir.ru | |
*/ | |
define('_JEXEC', 1); | |
error_reporting(E_ALL); | |
ini_set('display_errors', 1); | |
// Load the administrator application's path constants | |
if (file_exists(__DIR__ . '/defines.php')) | |
{ | |
include_once __DIR__ . '/defines.php'; | |
} | |
if (!defined('_JDEFINES')) | |
{ | |
define('JPATH_BASE', __DIR__); | |
require_once JPATH_BASE . '/includes/defines.php'; | |
} | |
require_once JPATH_BASE . '/includes/framework.php'; | |
require_once JPATH_BASE . '/includes/helper.php'; | |
use Joomla\CMS\Factory; | |
$components = array( | |
4 => 'Banners', | |
8 => 'Contacts', | |
17 => 'News Feeds', | |
19 => 'Search', | |
27 => 'Smart Search', | |
30 => 'Content History', | |
33 => 'Fields', | |
34 => 'Multilingual Associations', | |
); | |
$modules = array( | |
'Site' => array( | |
200 => 'Articles - Archived', | |
201 => 'Articles - Latest', | |
202 => 'Articles - Most Read', | |
203 => 'Banners', | |
206 => 'Feed Display', | |
207 => 'Footer', | |
210 => 'Articles - Newsflash', | |
211 => 'Random Image', | |
212 => 'Articles - Related', | |
213 => 'Search', | |
214 => 'Statistics', | |
216 => 'Latest Users', | |
218 => 'Who\'s Online', | |
219 => 'Wrapper', | |
220 => 'Articles - Category', | |
221 => 'Articles - Categories', | |
223 => 'Smart Search', | |
316 => 'Tags - Popular', | |
317 => 'Tags - Similar', | |
), | |
'Admin' => array( | |
301 => 'Feed Display', | |
302 => 'Articles - Latest', | |
303 => 'Logged-in Users', | |
305 => 'Administrator Menu', | |
307 => 'Popular Articles', | |
309 => 'User Status', | |
310 => 'Administrator Sub-Menu', | |
311 => 'Title', | |
313 => 'Multilingual Status', | |
314 => 'Joomla! Version Information', | |
315 => 'Statistics', | |
318 => 'Sample Data', | |
319 => 'Action Logs - Latest', | |
320 => 'Privacy Dashboard', | |
) | |
); | |
$plugins = array( | |
'Action Log' => array( | |
484 => 'Action Log - Joomla', | |
), | |
'Authentication' => array( | |
449 => 'Authentication - Joomla', | |
), | |
'Content' => array( | |
403 => 'Content - Contact', | |
404 => 'Content - Email Cloaking', | |
406 => 'Content - Load Modules', | |
407 => 'Content - Page Break', | |
408 => 'Content - Page Navigation', | |
435 => 'Content - Joomla', | |
477 => 'Content - Fields', | |
), | |
'Editors' => array( | |
412 => 'Editor - TinyMCE', | |
), | |
'Button' => array( | |
413 => 'Button - Article', | |
414 => 'Button - Image', | |
415 => 'Button - Page Break', | |
416 => 'Button - Readmore', | |
453 => 'Button - Module', | |
459 => 'Button - Menu', | |
460 => 'Button - Contact', | |
478 => 'Button - Field', | |
), | |
'Fields' => array( | |
462 => 'Fields - Calendar', | |
463 => 'Fields - Checkboxes', | |
464 => 'Fields - Colour', | |
465 => 'Fields - Editor', | |
466 => 'Fields - Imagelist', | |
467 => 'Fields - Integer', | |
468 => 'Fields - List', | |
469 => 'Fields - Media', | |
470 => 'Fields - Radio', | |
471 => 'Fields - SQL', | |
472 => 'Fields - Text', | |
473 => 'Fields - Textarea', | |
474 => 'Fields - URL', | |
475 => 'Fields - User', | |
476 => 'Fields - Usergrouplist', | |
481 => 'Fields - Repeatable', | |
), | |
'Smart Search' => array( | |
442 => 'Smart Search - Categories', | |
443 => 'Smart Search - Contacts', | |
444 => 'Smart Search - Content', | |
445 => 'Smart Search - News Feeds', | |
447 => 'Smart Search - Tags', | |
), | |
'Privacy' => array( | |
487 => 'Privacy - User Accounts', | |
490 => 'Privacy - Contacts', | |
491 => 'Privacy - Content', | |
492 => 'Privacy - User Messages', | |
493 => 'Privacy - Action Logs', | |
495 => 'Privacy - Consents', | |
), | |
'Quick Icon' => array( | |
488 => 'Quick Icon - Joomla! Privacy Requests Notification', | |
), | |
'Sample Data' => array( | |
479 => 'Sample Data - Blog', | |
), | |
'Search' => array( | |
417 => 'Search - Categories', | |
418 => 'Search - Contacts', | |
419 => 'Search - Content', | |
420 => 'Search - News Feeds', | |
451 => 'Search - Tags', | |
), | |
'System' => array( | |
425 => 'System - Debug', | |
429 => 'System - SEF', | |
440 => 'System - Highlight', | |
452 => 'System - Joomla! Update Notification', | |
454 => 'System - Joomla! Statistics', | |
461 => 'System - Fields', | |
480 => 'System - Session Data Purge', | |
483 => 'System - User Actions Log', | |
486 => 'System - Log Rotation', | |
), | |
'User' => array( | |
432 => 'User - Joomla!', | |
), | |
); | |
$templates = array( | |
'Site' => array( | |
503 => 'Beez3', | |
506 => 'Protostar', | |
), | |
'Admin' => array( | |
504 => 'Hathor', | |
507 => 'Isis', | |
), | |
); | |
$notChecked = array( | |
// Modules - Admin | |
303, 305, 309, 310, 311, 314, 315, | |
// Plugins - Authentication | |
449, | |
// Plugins - Content | |
406, 435, | |
// Plugins - Editors | |
412, | |
// Plugins - Button | |
414, 416, 453, | |
// Plugins - System | |
425, 429, 480, 486, | |
// Plugins - User | |
432, | |
// Templates - Site | |
506, | |
// Templates - Admin | |
507, | |
); | |
$disable = array(); | |
$error = false; | |
if (!empty($_POST['disable'])) | |
{ | |
try | |
{ | |
$db = Factory::getDbo(); | |
$disable = $_POST['disable']; | |
// Disable extensions | |
$query = $db->getQuery(true) | |
->select('*') | |
->update($db->quoteName('#__extensions')) | |
->set('enabled = 0') | |
->where($db->quoteName('extension_id') . ' IN (' . implode(',', $disable) . ')'); | |
if (!$db->setQuery($query)->execute()) | |
{ | |
throw new Exception('Disable extensions error'); | |
} | |
// Remove modules | |
$removeModules = array(); | |
$modulesIds = array_keys($modules['Site']) + array_keys($modules['Admin']); | |
foreach ($disable as $value) | |
{ | |
if (in_array($value, $modulesIds)) | |
{ | |
$removeModules[] = $value; | |
} | |
} | |
if ($removeModules) | |
{ | |
$query = $db->getQuery(true) | |
->select('element') | |
->from($db->quoteName('#__extensions')) | |
->where($db->quoteName('extension_id') . ' IN (' . implode(',', $removeModules) . ')'); | |
$modElements = $db->setQuery($query)->loadColumn(); | |
foreach ($modElements as &$element) | |
{ | |
$element = $db->quote($element); | |
} | |
if ($modElements) | |
{ | |
$query = $db->getQuery(true) | |
->select('*') | |
->delete($db->quoteName('#__modules')) | |
->where($db->quoteName('module') . ' IN (' . implode(',', $modElements) . ')'); | |
if (!$db->setQuery($query)->execute()) | |
{ | |
throw new Exception('Remove modules error'); | |
} | |
} | |
} | |
} | |
catch (Exception $e) | |
{ | |
$error = $e->getMessage(); | |
} | |
} | |
?> | |
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="UTF-8"> | |
<title>Joomla - Cleanup after install</title> | |
<meta name="viewport" content="width=device-width, initial-scale=1"> | |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/uikit/3.1.4/css/uikit.min.css"/> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/uikit/3.1.4/js/uikit.min.js"></script> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/uikit/3.1.4/js/uikit-icons.min.js"></script> | |
<script> | |
function massAction(element) { | |
let type = element.getAttribute('data-type'); | |
document.querySelectorAll('[name="disable[]"]').forEach(function (checkbox) { | |
if (type === 'select') { | |
checkbox.setAttribute('checked', ''); | |
} else if (type === 'unselect') { | |
checkbox.removeAttribute('checked'); | |
} | |
}); | |
} | |
</script> | |
</head> | |
<body> | |
<form class="uk-container uk-form uk-card uk-card-body uk-card-default uk-margin-top" method="post"> | |
<div class="uk-flex uk-flex-middle uk-flex-between uk-margin-bottom"> | |
<h1 class="uk-margin-remove">Joomla - Cleanup after install</h1> | |
<div> | |
<button type="submit" class="uk-button uk-button-primary">Cleanup</button> | |
</div> | |
</div> | |
<?php if ($error): ?> | |
<div class="uk-alert uk-alert-danger uk-margin"> | |
<p><?php echo $error; ?></p> | |
</div> | |
<?php endif; ?> | |
<?php if ($disable && !$error): ?> | |
<div class="uk-alert uk-alert-success uk-margin"> | |
<p><strong><?php echo count($disable); ?></strong> was disabled</p> | |
</div> | |
<?php endif; ?> | |
<div class="uk-alert uk-alert-warning uk-margin"> | |
<p>Don't forget delete this file</p> | |
</div> | |
<div class="uk-alert uk-alert-primary uk-margin"> | |
<p>Please select which extensions <span class="uk-text-danger">was disabled</span></p> | |
</div> | |
<div class="uk-text-right"> | |
<a onclick="massAction(this);" data-type="select" class="uk-button uk-button-default uk-button-small"> | |
Select All | |
</a> | |
<a onclick="massAction(this);" data-type="unselect" class="uk-button uk-button-default uk-button-small"> | |
Unselect All | |
</a> | |
</div> | |
<h2 class="uk-margin-remove-top uk-margin-small-bottom">Components</h2> | |
<div class="uk-child-width-1-3@m uk-grid-small uk-margin-remove-vertical" uk-grid> | |
<div> | |
<?php foreach ($components as $extension_id => $title): | |
if (empty($disable) && !in_array($extension_id, $notChecked)) | |
{ | |
$checked = true; | |
} | |
elseif (!empty($disable) && in_array($extension_id, $disable)) | |
{ | |
$checked = true; | |
} | |
else | |
{ | |
$checked = false; | |
} | |
?> | |
<div> | |
<label for="disable-<?php echo $extension_id; ?>"> | |
<input id="disable-<?php echo $extension_id; ?>" class="uk-checkbox" type="checkbox" | |
name="disable[]" value="<?php echo $extension_id; ?>" | |
<?php echo ($checked) ? ' checked' : ''; ?>> | |
<?php echo $title; ?> | |
</label> | |
</div> | |
<?php endforeach; ?> | |
</div> | |
</div> | |
<hr> | |
<h2 class="uk-margin-remove-top uk-margin-small-bottom">Modules</h2> | |
<div class="uk-child-width-1-3@m uk-grid-small uk-margin-remove-vertical" uk-grid> | |
<?php foreach ($modules as $client => $extensions): | |
if (empty($disable) && !in_array($extension_id, $notChecked)) | |
{ | |
$checked = true; | |
} | |
elseif (!empty($disable) && in_array($extension_id, $disable)) | |
{ | |
$checked = true; | |
} | |
else | |
{ | |
$checked = false; | |
} | |
?> | |
<div> | |
<h3 class="uk-margin-small-bottom"><?php echo $client; ?></h3> | |
<?php foreach ($extensions as $extension_id => $title): | |
if (empty($disable) && !in_array($extension_id, $notChecked)) | |
{ | |
$checked = true; | |
} | |
elseif (!empty($disable) && in_array($extension_id, $disable)) | |
{ | |
$checked = true; | |
} | |
else | |
{ | |
$checked = false; | |
} | |
?> | |
<div> | |
<label for="disable-<?php echo $extension_id; ?>"> | |
<input id="disable-<?php echo $extension_id; ?>" class="uk-checkbox" type="checkbox" | |
name="disable[]" value="<?php echo $extension_id; ?>" | |
<?php echo ($checked) ? ' checked' : ''; ?>> | |
<?php echo $title; ?> | |
</label> | |
</div> | |
<?php endforeach; ?> | |
</div> | |
<?php endforeach; ?> | |
</div> | |
<hr> | |
<h2 class="uk-margin-remove-top uk-margin-small-bottom">Plugins</h2> | |
<div class="uk-child-width-1-3@m uk-grid-small uk-margin-remove-vertical" uk-grid> | |
<?php foreach ($plugins as $folder => $extensions) : ?> | |
<div> | |
<h3 class="uk-margin-small-bottom"><?php echo $folder; ?></h3> | |
<?php foreach ($extensions as $extension_id => $title): | |
if (empty($disable) && !in_array($extension_id, $notChecked)) | |
{ | |
$checked = true; | |
} | |
elseif (!empty($disable) && in_array($extension_id, $disable)) | |
{ | |
$checked = true; | |
} | |
else | |
{ | |
$checked = false; | |
} | |
?> | |
<div> | |
<label for="disable-<?php echo $extension_id; ?>"> | |
<input id="disable-<?php echo $extension_id; ?>" class="uk-checkbox" type="checkbox" | |
name="disable[]" value="<?php echo $extension_id; ?>" | |
<?php echo ($checked) ? ' checked' : ''; ?>> | |
<?php echo $title; ?> | |
</label> | |
</div> | |
<?php endforeach; ?> | |
</div> | |
<?php endforeach; ?> | |
</div> | |
<hr> | |
<h2 class="uk-margin-remove-top uk-margin-small-bottom">Templates</h2> | |
<div class="uk-child-width-1-3@m uk-grid-small uk-margin-remove-vertical" uk-grid> | |
<?php foreach ($templates as $client => $extensions): | |
if (empty($disable) && !in_array($extension_id, $notChecked)) | |
{ | |
$checked = true; | |
} | |
elseif (!empty($disable) && in_array($extension_id, $disable)) | |
{ | |
$checked = true; | |
} | |
else | |
{ | |
$checked = false; | |
} | |
?> | |
<div> | |
<h3 class="uk-margin-small-bottom"><?php echo $client; ?></h3> | |
<?php foreach ($extensions as $extension_id => $title): | |
if (empty($disable) && !in_array($extension_id, $notChecked)) | |
{ | |
$checked = true; | |
} | |
elseif (!empty($disable) && in_array($extension_id, $disable)) | |
{ | |
$checked = true; | |
} | |
else | |
{ | |
$checked = false; | |
} | |
?> | |
<div> | |
<label for="disable-<?php echo $extension_id; ?>"> | |
<input id="disable-<?php echo $extension_id; ?>" class="uk-checkbox" type="checkbox" | |
name="disable[]" value="<?php echo $extension_id; ?>" | |
<?php echo ($checked) ? ' checked' : ''; ?>> | |
<?php echo $title; ?> | |
</label> | |
</div> | |
<?php endforeach; ?> | |
</div> | |
<?php endforeach; ?> | |
</div> | |
</form> | |
</body> | |
</html> |