class ThemeUpdater

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 drupal/modules/system/system.api.php
Provide information on Updaters (classes that can update Drupal).
system_updater_info in drupal/modules/system/system.module
Implements hook_updater_info().

File

drupal/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

Name Modifierssort descending Type Description Overrides
Updater::getInstallArgs protected function Store the default parameters for the Updater.
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::__construct public function
Updater::update public function Updates a Drupal project, returns a list of next actions.
Updater::install public function Installs a Drupal project, returns a list of next actions.
Updater::prepareInstallDirectory public function Make sure the installation parent directory exists and is writable.
Updater::makeWorldReadable public function Ensure that a given directory is world readable.
Updater::makeBackup public function Perform a backup.
Updater::getBackupDir public function Return the full path to a directory where backups should be written.
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::$source public property
ThemeUpdater::canUpdate public static function
Updater::factory public static function Return an Updater of the appropriate type depending on the source.
Updater::getUpdaterFromDirectory public static function Determine which Updater class can operate on the given directory.
Updater::findInfoFile public static function Figure out what the most important (or only) info file is in a directory.
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.
ThemeUpdater::canUpdateDirectory static function Determine if the Updater can handle the project provided in $directory. Overrides DrupalUpdaterInterface::canUpdateDirectory