You are here

class ThemeUpdater in Drupal 7

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

Hierarchy

Expanded class hierarchy of ThemeUpdater

2 string references to 'ThemeUpdater'
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 97
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 ThemeUpdater extends Updater implements DrupalUpdaterInterface {

  /**
   * Return the directory where a theme should be installed.
   *
   * If the theme 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
   * theme, we always want it to go into sites/all/themes, since that's
   * where all the documentation recommends users install their themes, and
   * there's no way that can conflict on a multi-site installation, since
   * the Update manager won't let you install a new theme 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('theme', $this->name))) {
      $relative_path = dirname($relative_path);
    }
    else {
      $relative_path = 'sites/all/themes';
    }
    return DRUPAL_ROOT . '/' . $relative_path;
  }
  public function isInstalled() {
    return (bool) drupal_get_filename('theme', $this->name, NULL, FALSE);
  }
  static function canUpdateDirectory($directory) {

    // This is a lousy test, but don't know how else to confirm it is a theme.
    if (file_scan_directory($directory, '/.*\\.module$/')) {
      return FALSE;
    }
    return TRUE;
  }
  public static function canUpdate($project_name) {
    return (bool) drupal_get_path('theme', $project_name);
  }
  public function postInstall() {

    // Update the system table.
    clearstatcache();
    system_rebuild_theme_data();
  }
  public function postInstallTasks() {
    return array(
      l(t('Enable newly added themes'), 'admin/appearance'),
      l(t('Administration pages'), 'admin'),
    );
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ThemeUpdater::canUpdate public static function
ThemeUpdater::canUpdateDirectory static function Determine if the Updater can handle the project provided in $directory. Overrides DrupalUpdaterInterface::canUpdateDirectory
ThemeUpdater::getInstallDirectory public function Return the directory where a theme should be installed. Overrides DrupalUpdaterInterface::getInstallDirectory
ThemeUpdater::isInstalled public function Checks if the project is installed. Overrides DrupalUpdaterInterface::isInstalled
ThemeUpdater::postInstall public function Perform actions after installation. Overrides Updater::postInstall
ThemeUpdater::postInstallTasks public function Return an array of links to pages that should be visited post operation. Overrides Updater::postInstallTasks
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::postUpdate public function Perform actions after new code is updated.
Updater::postUpdateTasks public function Return an array of links to pages that should be visited post operation. 1
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