Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 13 |
CRAP | |
0.00% |
0 / 55 |
| PluginSettingsBase | |
0.00% |
0 / 1 |
|
0.00% |
0 / 13 |
600 | |
0.00% |
0 / 55 |
| defaultSettings | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| getSettings | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 5 |
|||
| getSetting | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 5 |
|||
| mergeDefaults | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| setSettings | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
| setSetting | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| getThirdPartySettings | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 5 |
|||
| getThirdPartySetting | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 2 |
|||
| setThirdPartySetting | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| unsetThirdPartySetting | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 6 |
|||
| getThirdPartyProviders | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| calculateDependencies | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 7 |
|||
| onDependencyRemoval | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 8 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\Core\Field\PluginSettingsBase. | |
| */ | |
| namespace Drupal\Core\Field; | |
| use Drupal\Component\Plugin\DependentPluginInterface; | |
| use Drupal\Core\Plugin\PluginBase; | |
| /** | |
| * Base class for the Field API plugins. | |
| * | |
| * This class handles lazy replacement of default settings values. | |
| */ | |
| abstract class PluginSettingsBase extends PluginBase implements PluginSettingsInterface, DependentPluginInterface { | |
| /** | |
| * The plugin settings. | |
| * | |
| * @var array | |
| */ | |
| protected $settings = array(); | |
| /** | |
| * The plugin settings injected by third party modules. | |
| * | |
| * @see hooks | |
| * | |
| * @var array | |
| */ | |
| protected $thirdPartySettings = array(); | |
| /** | |
| * Whether default settings have been merged into the current $settings. | |
| * | |
| * @var bool | |
| */ | |
| protected $defaultSettingsMerged = FALSE; | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public static function defaultSettings() { | |
| return array(); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getSettings() { | |
| // Merge defaults before returning the array. | |
| if (!$this->defaultSettingsMerged) { | |
| $this->mergeDefaults(); | |
| } | |
| return $this->settings; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getSetting($key) { | |
| // Merge defaults if we have no value for the key. | |
| if (!$this->defaultSettingsMerged && !array_key_exists($key, $this->settings)) { | |
| $this->mergeDefaults(); | |
| } | |
| return isset($this->settings[$key]) ? $this->settings[$key] : NULL; | |
| } | |
| /** | |
| * Merges default settings values into $settings. | |
| */ | |
| protected function mergeDefaults() { | |
| $this->settings += static::defaultSettings(); | |
| $this->defaultSettingsMerged = TRUE; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function setSettings(array $settings) { | |
| $this->settings = $settings; | |
| $this->defaultSettingsMerged = FALSE; | |
| return $this; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function setSetting($key, $value) { | |
| $this->settings[$key] = $value; | |
| return $this; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getThirdPartySettings($module = NULL) { | |
| if ($module) { | |
| return isset($this->thirdPartySettings[$module]) ? $this->thirdPartySettings[$module] : NULL; | |
| } | |
| return $this->thirdPartySettings; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getThirdPartySetting($module, $key, $default = NULL) { | |
| return isset($this->thirdPartySettings[$module][$key]) ? $this->thirdPartySettings[$module][$key] : $default; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function setThirdPartySetting($module, $key, $value) { | |
| $this->thirdPartySettings[$module][$key] = $value; | |
| return $this; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function unsetThirdPartySetting($module, $key) { | |
| unset($this->thirdPartySettings[$module][$key]); | |
| // If the third party is no longer storing any information, completely | |
| // remove the array holding the settings for this module. | |
| if (empty($this->thirdPartySettings[$module])) { | |
| unset($this->thirdPartySettings[$module]); | |
| } | |
| return $this; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getThirdPartyProviders() { | |
| return array_keys($this->thirdPartySettings); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function calculateDependencies() { | |
| if (!empty($this->thirdPartySettings)) { | |
| // Create dependencies on any modules providing third party settings. | |
| return array( | |
| 'module' => array_keys($this->thirdPartySettings) | |
| ); | |
| } | |
| return array(); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function onDependencyRemoval(array $dependencies) { | |
| $changed = FALSE; | |
| if (!empty($this->thirdPartySettings) && !empty($dependencies['module'])) { | |
| $old_count = count($this->thirdPartySettings); | |
| $this->thirdPartySettings = array_diff_key($this->thirdPartySettings, array_flip($dependencies['module'])); | |
| $changed = $old_count != count($this->thirdPartySettings); | |
| } | |
| return $changed; | |
| } | |
| } |