You are here

class ModuleUpdater in Drupal 7

Class for updating modules using FileTransfer classes via authorize.php.

Hierarchy

Expanded class hierarchy of ModuleUpdater

2 string references to 'ModuleUpdater'
hook_updater_info in modules/system/system.api.php
Provide information on Updaters (classes that can update Drupal).
system_updater_info in modules/system/system.module
Implements hook_updater_info().

File

modules/system/system.updater.inc, line 12
Subclasses of the Updater class to update Drupal core knows how to update. At this time, only modules and themes are supported.

View source
class ModuleUpdater extends Updater implements DrupalUpdaterInterface {

  /**
   * Return the directory where a module should be installed.
   *
   * If the module is already installed, drupal_get_path() will return
   * a valid path and we should install it there (although we need to use an
   * absolute path, so we prepend DRUPAL_ROOT). If we're installing a new
   * module, we always want it to go into sites/all/modules, since that's
   * where all the documentation recommends users install their modules, and
   * there's no way that can conflict on a multi-site installation, since
   * the Update manager won't let you install a new module if it's already
   * found on your system, and if there was a copy in sites/all, we'd see it.
   */
  public function getInstallDirectory() {
    if ($this
      ->isInstalled() && ($relative_path = drupal_get_path('module', $this->name))) {
      $relative_path = dirname($relative_path);
    }
    else {
      $relative_path = 'sites/all/modules';
    }
    return DRUPAL_ROOT . '/' . $relative_path;
  }
  public function isInstalled() {
    return (bool) drupal_get_filename('module', $this->name, NULL, FALSE);
  }
  public static function canUpdateDirectory($directory) {
    if (file_scan_directory($directory, '/.*\\.module$/')) {
      return TRUE;
    }
    return FALSE;
  }
  public static function canUpdate($project_name) {
    return (bool) drupal_get_path('module', $project_name);
  }

  /**
   * Return available database schema updates one a new version is installed.
   */
  public function getSchemaUpdates() {
    require_once DRUPAL_ROOT . '/includes/install.inc';
    require_once DRUPAL_ROOT . '/includes/update.inc';
    if (_update_get_project_type($project) != 'module') {
      return array();
    }
    module_load_include('install', $project);
    if (!($updates = drupal_get_schema_versions($project))) {
      return array();
    }
    $updates_to_run = array();
    $modules_with_updates = update_get_update_list();
    if ($updates = $modules_with_updates[$project]) {
      if ($updates['start']) {
        return $updates['pending'];
      }
    }
    return array();
  }

  /**
   * Returns a list of post install actions.
   */
  public function postInstallTasks() {
    return array(
      l(t('Install another module'), 'admin/modules/install'),
      l(t('Enable newly added modules'), 'admin/modules'),
      l(t('Administration pages'), 'admin'),
    );
  }
  public function postUpdateTasks() {

    // We don't want to check for DB updates here, we do that once for all
    // updated modules on the landing page.
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ModuleUpdater::canUpdate public static function
ModuleUpdater::canUpdateDirectory public static function Determine if the Updater can handle the project provided in $directory. Overrides DrupalUpdaterInterface::canUpdateDirectory
ModuleUpdater::getInstallDirectory public function Return the directory where a module should be installed. Overrides DrupalUpdaterInterface::getInstallDirectory
ModuleUpdater::getSchemaUpdates public function Return available database schema updates one a new version is installed.
ModuleUpdater::isInstalled public function Checks if the project is installed. Overrides DrupalUpdaterInterface::isInstalled
ModuleUpdater::postInstallTasks public function Returns a list of post install actions. Overrides Updater::postInstallTasks
ModuleUpdater::postUpdateTasks public function Return an array of links to pages that should be visited post operation. Overrides Updater::postUpdateTasks
Updater::$source public property
Updater::factory public static function Return an Updater of the appropriate type depending on the source.
Updater::findInfoFile public static function Figure out what the most important (or only) info file is in a directory.
Updater::getBackupDir public function Return the full path to a directory where backups should be written.
Updater::getInstallArgs protected function Store the default parameters for the Updater.
Updater::getProjectName public static function Get the name of the project directory (basename).
Updater::getProjectTitle public static function Return the project name from a Drupal info file.
Updater::getUpdaterFromDirectory public static function Determine which Updater class can operate on the given directory.
Updater::install public function Installs a Drupal project, returns a list of next actions.
Updater::makeBackup public function Perform a backup.
Updater::makeWorldReadable public function Ensure that a given directory is world readable.
Updater::postInstall public function Perform actions after installation. 1
Updater::postUpdate public function Perform actions after new code is updated.
Updater::prepareInstallDirectory public function Make sure the installation parent directory exists and is writable.
Updater::update public function Updates a Drupal project, returns a list of next actions.
Updater::__construct public function