class ModuleUpdater

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

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

Title Sort descending Modifiers Object type Summary Overriden Title 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::$name protected property
Updater::$source public property
Updater::$title protected 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

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.