class ExtensionsDev in Site Audit 8.3
Provides the ExtensionsDev Check.
Plugin annotation
@SiteAuditCheck(
id = "extensions_dev",
name = @Translation("Development"),
description = @Translation("Check for enabled development modules."),
report = "extensions"
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\site_audit\Plugin\SiteAuditCheckBase implements SiteAuditCheckInterface uses StringTranslationTrait
- class \Drupal\site_audit\Plugin\SiteAuditCheck\ExtensionsDev
- class \Drupal\site_audit\Plugin\SiteAuditCheckBase implements SiteAuditCheckInterface uses StringTranslationTrait
Expanded class hierarchy of ExtensionsDev
File
- src/
Plugin/ SiteAuditCheck/ ExtensionsDev.php, line 17
Namespace
Drupal\site_audit\Plugin\SiteAuditCheckView source
class ExtensionsDev extends SiteAuditCheckBase {
/**
* {@inheritdoc}.
*/
public function getResultFail() {
}
/**
* {@inheritdoc}.
*/
public function getResultInfo() {
return $this
->getResultWarn();
}
/**
* {@inheritdoc}.
*/
public function getResultPass() {
return $this
->t('No enabled development extensions were detected; no action required.');
}
/**
* {@inheritdoc}.
*/
public function getResultWarn() {
$ret_val = $this
->t('The following development modules(s) are currently enabled: @list', [
'@list' => implode(', ', array_keys($this->registry->extensions_dev)),
]);
$show_table = TRUE;
if (site_audit_env_is_dev()) {
$show_table = FALSE;
}
$table_rows = [];
foreach ($this->registry->extensions_dev as $row) {
$table_rows[] = $row;
}
$header = [
$this
->t('Name'),
$this
->t('Reason'),
];
return [
'#theme' => 'table',
'#class' => 'table-condensed',
'#header' => $header,
'#rows' => $table_rows,
];
}
/**
* {@inheritdoc}.
*/
public function getAction() {
if ($this
->getScore() == SiteAuditCheckBase::AUDIT_CHECK_SCORE_WARN) {
$show_action = TRUE;
if (site_audit_env_is_dev()) {
$show_action = FALSE;
}
if ($show_action) {
return $this
->t('Disable development modules for increased stability, security and performance in the Live (production) environment.');
}
}
}
/**
* {@inheritdoc}.
*/
public function calculateScore() {
if (!isset($this->registry->extensions) || empty($this->registry->extensions)) {
$this->registry->extensions = \Drupal::service('extension.list.module')
->getList();
uasort($this->registry->extensions, 'system_sort_modules_by_info_name');
}
$this->registry->extensions_dev = [];
$extension_info = $this->registry->extensions;
// uasort($extension_info, '_drush_pm_sort_extensions');.
$dev_extensions = $this
->getExtensions();
foreach ($extension_info as $key => $extension) {
$row = [];
// Not in the list of known development modules.
if (!array_key_exists($extension
->getName(), $dev_extensions)) {
unset($extension_info[$key]);
continue;
}
// Do not report modules that are dependencies of other modules, such
// as field_ui in Drupal Commerce.
if (isset($extension->required_by) && !empty($extension->required_by)) {
unset($extension_info[$key]);
continue;
}
// Name.
$row[] = $extension
->getName();
// Reason.
$row[] = $dev_extensions[$extension
->getName()];
$this->registry->extensions_dev[$extension
->getName()] = $row;
}
if (!empty($this->registry->extensions_dev)) {
if (site_audit_env_is_dev()) {
return SiteAuditCheckBase::AUDIT_CHECK_SCORE_INFO;
}
return SiteAuditCheckBase::AUDIT_CHECK_SCORE_WARN;
}
return SiteAuditCheckBase::AUDIT_CHECK_SCORE_PASS;
}
/**
* Get a list of development extension names and reasons.
*
* @return array
* Keyed by module machine name, value is explanation.
*/
public function getExtensions() {
$developer_modules = [
'ipsum' => $this
->t('Development utility to generate fake content.'),
'testmodule' => $this
->t('Internal test module.'),
// Examples module.
'block_example' => $this
->t('Development examples.'),
'cache_example' => $this
->t('Development examples.'),
'config_entity_example' => $this
->t('Development examples.'),
'content_entity_example' => $this
->t('Development examples.'),
'dbtng_example' => $this
->t('Development examples.'),
'email_example' => $this
->t('Development examples.'),
'examples' => $this
->t('Development examples.'),
'field_example' => $this
->t('Development examples.'),
'field_permission_example' => $this
->t('Development examples.'),
'file_example' => $this
->t('Development examples.'),
'js_example' => $this
->t('Development examples.'),
'node_type_example' => $this
->t('Development examples.'),
'page_example' => $this
->t('Development examples.'),
'phpunit_example' => $this
->t('Development examples.'),
'simpletest_example' => $this
->t('Development examples.'),
'tablesort_example' => $this
->t('Development examples.'),
'tour_example' => $this
->t('Development examples.'),
];
// From http://drupal.org/project/admin_menu admin_menu.inc in function
// _admin_menu_developer_modules().
$admin_menu_developer_modules = [
'admin_devel' => $this
->t('Debugging utility; degrades performance.'),
'cache_disable' => $this
->t('Development utility and performance drain; degrades performance.'),
'coder' => $this
->t('Debugging utility; potential security risk and unnecessary performance hit.'),
'content_copy' => $this
->t('Development utility; unnecessary overhead.'),
'context_ui' => $this
->t('Development user interface; unnecessary overhead.'),
'debug' => $this
->t('Debugging utility; potential security risk, unnecessary overhead.'),
'delete_all' => $this
->t('Development utility; potentially dangerous.'),
'demo' => $this
->t('Development utility for sandboxing.'),
'devel' => $this
->t('Debugging utility; degrades performance and potential security risk.'),
'devel_node_access' => $this
->t('Development utility; degrades performance and potential security risk.'),
'devel_themer' => $this
->t('Development utility; degrades performance and potential security risk.'),
'field_ui' => $this
->t('Development user interface; allows privileged users to change site structure which can lead to data inconsistencies. Best practice is to store Content Types in code and deploy changes instead of allowing editing in live environments.'),
'fontyourface_ui' => $this
->t('Development user interface; unnecessary overhead.'),
'form_controller' => $this
->t('Development utility; unnecessary overhead.'),
'imagecache_ui' => $this
->t('Development user interface; unnecessary overhead.'),
'journal' => $this
->t('Development utility; unnecessary overhead.'),
'l10n_client' => $this
->t('Development utility; unnecessary overhead.'),
'l10n_update' => $this
->t('Development utility; unnecessary overhead.'),
'macro' => $this
->t('Development utility; unnecessary overhead.'),
'rules_admin' => $this
->t('Development user interface; unnecessary overhead.'),
'stringoverrides' => $this
->t('Development utility.'),
'trace' => $this
->t('Debugging utility; degrades performance and potential security risk.'),
'upgrade_status' => $this
->t('Development utility for performing a major Drupal core update; should removed after use.'),
'user_display_ui' => $this
->t('Development user interface; unnecessary overhead.'),
'util' => $this
->t('Development utility; unnecessary overhead, potential security risk.'),
'views_ui' => $this
->t('Development UI; allows privileged users to change site structure which can lead to performance problems or inconsistent behavior. Best practice is to store Views in code and deploy changes instead of allowing editing in live environments.'),
'views_theme_wizard' => $this
->t('Development utility; unnecessary overhead, potential security risk.'),
];
return array_merge($admin_menu_developer_modules, $developer_modules);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ExtensionsDev:: |
public | function |
. Overrides SiteAuditCheckBase:: |
|
ExtensionsDev:: |
public | function |
. Overrides SiteAuditCheckBase:: |
|
ExtensionsDev:: |
public | function | Get a list of development extension names and reasons. | |
ExtensionsDev:: |
public | function |
. Overrides SiteAuditCheckBase:: |
|
ExtensionsDev:: |
public | function |
. Overrides SiteAuditCheckBase:: |
|
ExtensionsDev:: |
public | function |
. Overrides SiteAuditCheckBase:: |
|
ExtensionsDev:: |
public | function |
. Overrides SiteAuditCheckBase:: |
|
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
3 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
SiteAuditCheckBase:: |
protected | property | Names of checks that should not run as a result of this check. | |
SiteAuditCheckBase:: |
protected | property | Options passed in for reports and checks. | |
SiteAuditCheckBase:: |
protected | property | User has opted out of this check in configuration. | |
SiteAuditCheckBase:: |
protected | property | If set, will override the Report's percentage. | |
SiteAuditCheckBase:: |
protected | property | Use for passing data between checks within a report. | |
SiteAuditCheckBase:: |
protected | property | Quantifiable number associated with result on a scale of 0 to 2. | |
SiteAuditCheckBase:: |
protected | property | Are we in a static context. | |
SiteAuditCheckBase:: |
constant | |||
SiteAuditCheckBase:: |
constant | |||
SiteAuditCheckBase:: |
constant | |||
SiteAuditCheckBase:: |
constant | |||
SiteAuditCheckBase:: |
protected | function | Invoke another check's calculateScore() method if it is needed. | |
SiteAuditCheckBase:: |
public | function | Get a more verbose description of what is being checked. | |
SiteAuditCheckBase:: |
public | function | Get the ID or machine name for the check. | |
SiteAuditCheckBase:: |
public | function | Get the label for the check that describes, high level what is happening. | |
SiteAuditCheckBase:: |
public | function | Get the report percent override, if any. | |
SiteAuditCheckBase:: |
public | function | Get the check registry. | |
SiteAuditCheckBase:: |
public | function | Determine the result message based on the score. | |
SiteAuditCheckBase:: |
public | function | Get a quantifiable number representing a check result; lazy initialization. | |
SiteAuditCheckBase:: |
public | function | Get a human readable label for a score. | |
SiteAuditCheckBase:: |
public | function | Display action items for a user to perform. | |
SiteAuditCheckBase:: |
public | function | Determine whether the check failed so badly that the report must stop. | |
SiteAuditCheckBase:: |
public | function |
Constructor. Overrides PluginBase:: |
|
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |