コード例 #1
0
ファイル: Update.php プロジェクト: frankcr/sftw8
 /**
  * Callback for updating a theme.
  *
  * @param array $form
  *   Nested array of form elements that comprise the form.
  * @param \Drupal\Core\Form\FormStateInterface $form_state
  *   The current state of the form.
  */
 public static function updateTheme(array $form, FormStateInterface $form_state)
 {
     if ($theme = SystemThemeSettings::getTheme($form, $form_state)) {
         $update_manager = new UpdateManager($theme);
         $installed = [];
         // Iterate over all pending updates.
         $pending = $update_manager->getPendingUpdates();
         foreach ($pending as $version => $update) {
             // Run the update.
             $result = $update->update($theme);
             // Update failed. Show a message and stop the process.
             if ($result === FALSE) {
                 drupal_set_message(t('The update @title (@version) failed. No further updates can be processed at this time.', ['@title' => $update->getTitle(), '@version' => $version]), 'error');
                 break;
             }
             // Update succeeded.
             $installed[] = $version;
         }
         // Save the last installed schema version.
         if ($installed) {
             $installed = array_flip($installed);
             foreach (array_keys($installed) as $version) {
                 $installed[$version] = new FormattableMarkup('@version - @title', ['@version' => $version, '@title' => $pending[$version]->getTitle()]);
             }
             $build = ['#theme' => 'item_list', '#items' => $installed];
             drupal_set_message(t('Successfully installed the following update(s) for %theme: @installed', ['%theme' => $theme->getTitle(), '@installed' => \Drupal::service('renderer')->render($build)]));
             // Save the latest installed version.
             $theme->setSetting('schema', max(array_keys($installed)));
         }
     }
 }
コード例 #2
0
ファイル: Theme.php プロジェクト: Suite5/feelmybook
 /**
  * Installs a Bootstrap based theme.
  */
 protected final function install()
 {
     $update_manager = new UpdateManager($this);
     $this->setSetting('schema', $update_manager->getLatestVersion());
 }