set('config_entity_sort', TRUE); return parent::sort($a, $b); } /** * {@inheritdoc} */ public function postSave(EntityStorageInterface $storage, $update = TRUE) { // Used to test secondary writes during config sync. if ($this->id() == 'primary') { $secondary = $storage->create([ 'id' => 'secondary', 'label' => 'Secondary Default', ]); $secondary->save(); } if ($this->id() == 'deleter') { $deletee = $storage->load('deletee'); $deletee->delete(); } } /** * {@inheritdoc} */ public static function postDelete(EntityStorageInterface $storage, array $entities) { parent::postDelete($storage, $entities); foreach ($entities as $entity) { if ($entity->id() == 'deleter') { $deletee = $storage->load('deletee'); $deletee->delete(); } } } /** * {@inheritdoc} */ public function onDependencyRemoval(array $dependencies) { // Record which entities have this method called on and what dependencies // are passed. $called = \Drupal::state()->get('config_test.on_dependency_removal_called', []); $called[$this->id()] = $dependencies; $called[$this->id()]['config'] = array_keys($called[$this->id()]['config']); $called[$this->id()]['content'] = array_keys($called[$this->id()]['content']); \Drupal::state()->set('config_test.on_dependency_removal_called', $called); $changed = parent::onDependencyRemoval($dependencies); if (!isset($this->dependencies['enforced']['config'])) { return $changed; } $fix_deps = \Drupal::state()->get('config_test.fix_dependencies', []); foreach ($dependencies['config'] as $entity) { if (in_array($entity->getConfigDependencyName(), $fix_deps)) { $key = array_search($entity->getConfigDependencyName(), $this->dependencies['enforced']['config']); if ($key !== FALSE) { $changed = TRUE; unset($this->dependencies['enforced']['config'][$key]); } } } // If any of the dependencies removed still exists, return FALSE. if (array_intersect_key(array_flip($this->dependencies['enforced']['config']), $dependencies['config'])) { return FALSE; } return $changed; } /** * Sets the enforced dependencies. * * @param array $dependencies * A config dependency array. * * @return $this * * @see \Drupal\Core\Config\Entity\ConfigDependencyManager */ public function setEnforcedDependencies(array $dependencies) { $this->dependencies['enforced'] = $dependencies; return $this; } /** * {@inheritdoc} */ public function isInstallable() { return $this->id != 'isinstallable' || \Drupal::state()->get('config_test.isinstallable'); } }