ThemeUpdater

  1. drupal
    1. 7 modules/system/system.updater.inc

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

Hierarchy

Functions & methods

NameDescription
ThemeUpdater::canUpdate
ThemeUpdater::canUpdateDirectoryDetermine if the Updater can handle the project provided in $directory. Overrides DrupalUpdaterInterface::canUpdateDirectory
ThemeUpdater::getInstallDirectoryReturn the directory where a theme should be installed. Overrides DrupalUpdaterInterface::getInstallDirectory
ThemeUpdater::isInstalledChecks if the project is installed. Overrides DrupalUpdaterInterface::isInstalled
ThemeUpdater::postInstallPerform actions after installation. Overrides Updater::postInstall
ThemeUpdater::postInstallTasksReturn an array of links to pages that should be visited post operation. Overrides Updater::postInstallTasks
Updater::factoryReturn an Updater of the appropriate type depending on the source.
Updater::findInfoFileFigure out what the most important (or only) info file is in a directory.
Updater::getBackupDirReturn the full path to a directory where backups should be written.
Updater::getInstallArgsStore the default parameters for the Updater.
Updater::getProjectNameGet the name of the project directory (basename).
Updater::getProjectTitleReturn the project name from a Drupal info file.
Updater::getUpdaterFromDirectoryDetermine which Updater class can operate on the given directory.
Updater::installInstalls a Drupal project, returns a list of next actions.
Updater::makeBackupPerform a backup.
Updater::makeWorldReadableEnsure that a given directory is world readable.
Updater::postUpdatePerform actions after new code is updated.
Updater::postUpdateTasksReturn an array of links to pages that should be visited post operation.
Updater::prepareInstallDirectoryMake sure the installation parent directory exists and is writable.
Updater::updateUpdates a Drupal project, returns a list of next actions.
Updater::__construct

Properties

NameDescription
Updater::$source

File

modules/system/system.updater.inc, line 93
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 ($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_path('theme', $this->name);
  }

  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'),
    );
  }
}
Login or register to post comments