PageRenderTime 34ms CodeModel.GetById 1ms RepoModel.GetById 0ms app.codeStats 0ms

/drush/commands/core/drupal/environment_7.inc

#
Pascal | 179 lines | 107 code | 13 blank | 59 comment | 11 complexity | 2965093e357a1dfd8aaba612a1f9c4b8 MD5 | raw file
Possible License(s): AGPL-1.0
  1. <?php
  2. // $Id: environment_7.inc,v 1.16 2010/10/15 09:04:37 jonhattan Exp $
  3. /**
  4. * @file
  5. * Specific functions for a drupal 7 environment.
  6. * drush_include_engine() magically includes either this file
  7. * or environment_X.inc depending on which version of drupal drush
  8. * is called from.
  9. */
  10. /**
  11. * Get complete information for all available modules.
  12. *
  13. * @return
  14. * An array containing module info for all available modules.
  15. */
  16. function drush_get_modules() {
  17. return system_rebuild_module_data();
  18. }
  19. /**
  20. * Return dependencies and its status for modules.
  21. *
  22. * @param $modules
  23. * Array of module names
  24. * @param $module_info
  25. * Drupal 'files' array for modules as returned by drush_get_modules().
  26. * @return
  27. * Array with dependencies and status for $modules
  28. */
  29. function drush_check_module_dependencies($modules, $module_info) {
  30. $status = array();
  31. foreach ($modules as $key => $module) {
  32. $dependencies = array_reverse($module_info[$module]->requires);
  33. $unmet_dependencies = array_diff(array_keys($dependencies), array_keys($module_info));
  34. if (!empty($unmet_dependencies)) {
  35. $status[$key]['error'] = array(
  36. 'code' => 'DRUSH_PM_ENABLE_DEPENDENCY_NOT_FOUND',
  37. '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)))
  38. );
  39. }
  40. else {
  41. // check for version incompatibility
  42. foreach ($dependencies as $dependency_name => $v) {
  43. $current_version = $module_info[$dependency_name]->info['version'];
  44. $incompatibility = drupal_check_incompatibility($v, $current_version);
  45. if (!is_null($incompatibility)) {
  46. $status[$key]['error'] = array(
  47. 'code' => 'DRUSH_PM_ENABLE_DEPENDENCY_VERSION_MISMATCH',
  48. '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))
  49. );
  50. }
  51. }
  52. }
  53. $status[$key]['dependencies'] = array_keys($dependencies);
  54. }
  55. return $status;
  56. }
  57. /**
  58. * Return dependents of modules.
  59. *
  60. * @param $modules
  61. * Array of module names
  62. * @param $module_info
  63. * Drupal 'files' array for modules as returned by drush_get_modules().
  64. * @return
  65. * Array with dependents for each one of $modules
  66. */
  67. function drush_module_dependents($modules, $module_info) {
  68. $dependents = array();
  69. foreach ($modules as $module) {
  70. $dependents = array_merge($dependents, drupal_map_assoc(array_keys($module_info[$module]->required_by)));
  71. }
  72. return array_unique($dependents);
  73. }
  74. /**
  75. * Enable a list of modules. It is assumed the list contains all the dependencies not already enabled.
  76. *
  77. * @param $modules
  78. * Array of module names
  79. */
  80. function drush_module_enable($modules) {
  81. module_enable($modules, FALSE);
  82. }
  83. /**
  84. * Disable a list of modules. It is assumed the list contains all dependents not already disabled.
  85. *
  86. * @param $modules
  87. * Array of module names
  88. */
  89. function drush_module_disable($modules) {
  90. module_disable($modules, FALSE);
  91. }
  92. /**
  93. * Uninstall a list of modules.
  94. *
  95. * @param $modules
  96. * Array of module names
  97. */
  98. function drush_module_uninstall($modules) {
  99. require_once drush_get_context('DRUSH_DRUPAL_ROOT') . '/includes/install.inc';
  100. drupal_uninstall_modules($modules);
  101. }
  102. /**
  103. * Submit the system modules form.
  104. *
  105. * The modules should already be fully enabled/disabled before calling this
  106. * function. Calling this function just makes sure any activities triggered by
  107. * the form submit (such as admin_role) are completed.
  108. */
  109. function drush_system_modules_form_submit($active_modules) {
  110. module_load_include('inc', 'system', 'system.admin');
  111. $form_state = array('values' => array('status' => $active_modules));
  112. drupal_form_submit('system_modules', $form_state);
  113. // Because normally system_modules_submit would call this function if modules
  114. // had been changed, in this case we are submitting the module form without
  115. // any changes, so we need to clear caches manually.
  116. drupal_flush_all_caches();
  117. }
  118. /**
  119. * Get complete information for all available themes.
  120. *
  121. * @return
  122. * An array containing theme info for all available themes.
  123. */
  124. function drush_get_themes() {
  125. return system_rebuild_theme_data();
  126. }
  127. /**
  128. * Enable a list of themes.
  129. *
  130. * @param $themes
  131. * Array of theme names.
  132. */
  133. function drush_theme_enable($themes) {
  134. theme_enable($themes);
  135. }
  136. /**
  137. * Disable a list of themes.
  138. *
  139. * @param $themes
  140. * Array of theme names.
  141. */
  142. function drush_theme_disable($themes) {
  143. theme_disable($themes);
  144. }
  145. /**
  146. * Helper function to obtain the severity levels based on Drupal version.
  147. *
  148. * This is a copy of watchdog_severity_levels() without t().
  149. *
  150. * Severity levels, as defined in RFC 3164: http://www.ietf.org/rfc/rfc3164.txt.
  151. *
  152. * @return
  153. * Array of watchdog severity levels.
  154. */
  155. function core_watchdog_severity_levels() {
  156. return array(
  157. WATCHDOG_EMERGENCY=> 'emergency',
  158. WATCHDOG_ALERT => 'alert',
  159. WATCHDOG_CRITICAL => 'critical',
  160. WATCHDOG_ERROR => 'error',
  161. WATCHDOG_WARNING => 'warning',
  162. WATCHDOG_NOTICE => 'notice',
  163. WATCHDOG_INFO => 'info',
  164. WATCHDOG_DEBUG => 'debug',
  165. );
  166. }