Newer
Older
Moshe Weitzman
committed
<?php
/**
* @file
* Specific functions for a drupal 7 environment.
Moshe Weitzman
committed
* drush_include_engine() magically includes either this file
Moshe Weitzman
committed
* or environment_X.inc depending on which version of drupal drush
Moshe Weitzman
committed
* is called from.
*/
/**
Moshe Weitzman
committed
* Get complete information for all available modules.
Moshe Weitzman
committed
*
* @return
* An array containing module info for all available modules.
Moshe Weitzman
committed
*/
Moshe Weitzman
committed
function drush_get_modules() {
return system_rebuild_module_data();
}
/**
* Return dependencies and its status for modules.
*
* @param $modules
* Array of module names
* @param $module_info
* Drupal 'files' array for modules as returned by drush_get_modules().
* @return
* Array with dependencies and status for $modules
*/
function drush_check_module_dependencies($modules, $module_info) {
$status = array();
foreach ($modules as $key => $module) {
Moshe Weitzman
committed
$dependencies = array_reverse($module_info[$module]->requires);
Moshe Weitzman
committed
$unmet_dependencies = array_diff(array_keys($dependencies), array_keys($module_info));
if (!empty($unmet_dependencies)) {
$status[$key]['error'] = array(
'code' => 'DRUSH_PM_ENABLE_DEPENDENCY_NOT_FOUND',
Moshe Weitzman
committed
'message' => dt('Module !module cannot be enabled because it depends on the following modules which could not be found: !unmet_dependencies', array('!module' => $module, '!unmet_dependencies' => implode(',', $unmet_dependencies)))
Moshe Weitzman
committed
);
Moshe Weitzman
committed
}
else {
Moshe Weitzman
committed
// check for version incompatibility
foreach ($dependencies as $dependency_name => $v) {
$current_version = $module_info[$dependency_name]->info['version'];
$incompatibility = drupal_check_incompatibility($v, $current_version);
if (!is_null($incompatibility)) {
$status[$key]['error'] = array(
'code' => 'DRUSH_PM_ENABLE_DEPENDENCY_VERSION_MISMATCH',
'message' => dt('Module !module cannot be enabled because it depends on !dependency !required_version but !current_version is available', array('!module' => $module, '!dependency' => $dependency_name, '!required_version' => $incompatibility, '!current_version' => $current_version))
);
}
}
Moshe Weitzman
committed
}
$status[$key]['unmet-dependencies'] = $unmet_dependencies;
Moshe Weitzman
committed
$status[$key]['dependencies'] = array_keys($dependencies);
Moshe Weitzman
committed
}
Moshe Weitzman
committed
return $status;
Moshe Weitzman
committed
}
/**
Moshe Weitzman
committed
* Return dependents of modules.
Moshe Weitzman
committed
*
Moshe Weitzman
committed
* @param $modules
* Array of module names
* @param $module_info
* Drupal 'files' array for modules as returned by drush_get_modules().
Moshe Weitzman
committed
* @return
Moshe Weitzman
committed
* Array with dependents for each one of $modules
Moshe Weitzman
committed
*/
Moshe Weitzman
committed
function drush_module_dependents($modules, $module_info) {
$dependents = array();
foreach ($modules as $module) {
$dependents = array_merge($dependents, drupal_map_assoc(array_keys($module_info[$module]->required_by)));
Moshe Weitzman
committed
}
return array_unique($dependents);
Moshe Weitzman
committed
}
Moshe Weitzman
committed
/**
* Enable a list of modules. It is assumed the list contains all the dependencies not already enabled.
Moshe Weitzman
committed
*
Moshe Weitzman
committed
* @param $modules
* Array of module names
*/
function drush_module_enable($modules) {
Jonathan
committed
// The list of modules already have all the dependencies, but they might not
// be in the correct order. Still pass $enable_dependencies = TRUE so that
// Drupal will enable the modules in the correct order.
module_enable($modules);
Moshe Weitzman
committed
}
/**
* Disable a list of modules. It is assumed the list contains all dependents not already disabled.
*
* @param $modules
* Array of module names
*/
function drush_module_disable($modules) {
Jonathan
committed
// The list of modules already have all the dependencies, but they might not
// be in the correct order. Still pass $enable_dependencies = TRUE so that
// Drupal will enable the modules in the correct order.
module_disable($modules);
Moshe Weitzman
committed
}
/**
* Uninstall a list of modules.
*
* @param $modules
* Array of module names
*/
function drush_module_uninstall($modules) {
require_once drush_get_context('DRUSH_DRUPAL_ROOT') . '/includes/install.inc';
drupal_uninstall_modules($modules);
}
/**
* Submit the system modules form.
*
Moshe Weitzman
committed
* The modules should already be fully enabled/disabled before calling this
Moshe Weitzman
committed
* function. Calling this function just makes sure any activities triggered by
* the form submit (such as admin_role) are completed.
*/
function drush_system_modules_form_submit($active_modules) {
Moshe Weitzman
committed
module_load_include('inc', 'system', 'system.admin');
Moshe Weitzman
committed
$form_state = array('values' => array('status' => $active_modules));
drupal_form_submit('system_modules', $form_state);
// Because normally system_modules_submit would call this function if modules
// had been changed, in this case we are submitting the module form without
// any changes, so we need to clear caches manually.
drupal_flush_all_caches();
Moshe Weitzman
committed
}
/**
* Get complete information for all available themes.
*
* @return
* An array containing theme info for all available themes.
*/
function drush_get_themes() {
return system_rebuild_theme_data();
}
/**
* Enable a list of themes.
Moshe Weitzman
committed
*
* @param $themes
* Array of theme names.
*/
function drush_theme_enable($themes) {
theme_enable($themes);
}
/**
* Disable a list of themes.
Moshe Weitzman
committed
*
* @param $themes
* Array of theme names.
*/
function drush_theme_disable($themes) {
theme_disable($themes);
}
/**
* Helper function to obtain the severity levels based on Drupal version.
*
* This is a copy of watchdog_severity_levels() without t().
*
* Severity levels, as defined in RFC 3164: http://www.ietf.org/rfc/rfc3164.txt.
*
* @return
* Array of watchdog severity levels.
*/
function core_watchdog_severity_levels() {
return array(
WATCHDOG_EMERGENCY=> 'emergency',
WATCHDOG_ALERT => 'alert',
WATCHDOG_CRITICAL => 'critical',
WATCHDOG_ERROR => 'error',
WATCHDOG_WARNING => 'warning',
WATCHDOG_NOTICE => 'notice',
WATCHDOG_INFO => 'info',
WATCHDOG_DEBUG => 'debug',
);
}