示例#1
0
 /**
  * Imports data for a provider that was manually uploaded in theme settings.
  *
  * @param \Drupal\Core\Form\FormStateInterface $form_state
  *   The current state of the form.
  */
 private function importProviderData(FormStateInterface $form_state)
 {
     if ($form_state->getValue('clicked_button') === t('Save provider data')->render()) {
         $provider_path = ProviderManager::FILE_PATH;
         file_prepare_directory($provider_path, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS);
         $provider = $form_state->getValue('cdn_provider', $this->theme->getSetting('cdn_provider'));
         $file = "{$provider_path}/{$provider}.json";
         if ($import_data = $form_state->getValue('cdn_provider_import_data', FALSE)) {
             file_unmanaged_save_data($import_data, $file, FILE_EXISTS_REPLACE);
         } elseif ($file && file_exists($file)) {
             file_unmanaged_delete($file);
         }
         // Clear the cached definitions so they can get rebuilt.
         $this->providerManager->clearCachedDefinitions();
     }
 }
示例#2
0
/**
 * Retrieves a list of available CDN providers for the Bootstrap framework.
 *
 * @param string $provider
 *   A specific provider data to return.
 * @param bool $reset
 *   Toggle determining whether or not to reset the database cache.
 *
 * @return array|FALSE
 *   An associative array of CDN providers, keyed by their machine name if
 *   $provider is not set. If $provider is set and exists, it's individual
 *   data array will be returned. If $provider is set and the data does not
 *   exist then FALSE will be returned.
 *
 * @deprecated Will be removed in a future release.
 *
 * @code
 *   // Before.
 *   $providers = bootstrap_cdn_provider();
 *   $jsdelivr = bootstrap_cdn_provider('jsdelivr');
 *
 *   // After.
 *   use Drupal\bootstrap\Bootstrap;
 *   use Drupal\bootstrap\Plugin\ProviderManager;
 *
 *   $theme = Bootstrap::getTheme();
 *
 *   // Get provider definitions, the "equivalent" for bootstrap_cdn_provider().
 *   $provider_manager = new ProviderManager($theme);
 *   $providers = $provider_manager->getDefinitions();
 *   $jsdelivr = $provider_manager->getDefinition('jsdelivr');
 *
 *   // You should, however, use the the fully initialized classes made
 *   // available through a theme instance.
 *   $providers = $theme->getProviders();
 *   $jsdelivr = $theme->getProvider('jsdelivr');
 * @endcode
 *
 * @see \Drupal\bootstrap\Plugin\ProviderManager
 * @see \Drupal\bootstrap\Theme::getProviders()
 * @see \Drupal\bootstrap\Theme::getProvider()
 */
function bootstrap_cdn_provider($provider = NULL, $reset = FALSE)
{
    Bootstrap::deprecated();
    $provider_manager = new ProviderManager(Bootstrap::getTheme());
    if ($reset) {
        $provider_manager->clearCachedDefinitions();
    }
    if (isset($provider)) {
        if ($provider_manager->hasDefinition($provider)) {
            return $provider_manager->getDefinition($provider);
        }
        return FALSE;
    }
    return $provider_manager->getDefinitions();
}
示例#3
0
 /**
  * Retrieves all CDN providers.
  *
  * @return \Drupal\bootstrap\Plugin\Provider\ProviderInterface[]
  *   All provider instances.
  */
 public function getProviders()
 {
     $providers = [];
     $provider_manager = new ProviderManager($this);
     foreach (array_keys($provider_manager->getDefinitions()) as $provider) {
         if ($provider === 'none') {
             continue;
         }
         $providers[$provider] = $provider_manager->createInstance($provider, ['theme' => $this]);
     }
     return $providers;
 }