Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 4 |
CRAP | |
0.00% |
0 / 35 |
ShortcutSet | |
0.00% |
0 / 1 |
|
0.00% |
0 / 4 |
110 | |
0.00% |
0 / 35 |
postSave | |
0.00% |
0 / 1 |
30 | |
0.00% |
0 / 13 |
|||
preDelete | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 11 |
|||
resetLinkWeights | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 7 |
|||
getShortcuts | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\shortcut\Entity\ShortcutSet. | |
*/ | |
namespace Drupal\shortcut\Entity; | |
use Drupal\Core\Config\Entity\ConfigEntityBundleBase; | |
use Drupal\Core\Entity\EntityStorageInterface; | |
use Drupal\shortcut\ShortcutSetInterface; | |
/** | |
* Defines the Shortcut set configuration entity. | |
* | |
* @ConfigEntityType( | |
* id = "shortcut_set", | |
* label = @Translation("Shortcut set"), | |
* handlers = { | |
* "storage" = "Drupal\shortcut\ShortcutSetStorage", | |
* "access" = "Drupal\shortcut\ShortcutSetAccessControlHandler", | |
* "list_builder" = "Drupal\shortcut\ShortcutSetListBuilder", | |
* "form" = { | |
* "default" = "Drupal\shortcut\ShortcutSetForm", | |
* "add" = "Drupal\shortcut\ShortcutSetForm", | |
* "edit" = "Drupal\shortcut\ShortcutSetForm", | |
* "customize" = "Drupal\shortcut\Form\SetCustomize", | |
* "delete" = "Drupal\shortcut\Form\ShortcutSetDeleteForm" | |
* } | |
* }, | |
* config_prefix = "set", | |
* bundle_of = "shortcut", | |
* entity_keys = { | |
* "id" = "id", | |
* "label" = "label" | |
* }, | |
* links = { | |
* "customize-form" = "/admin/config/user-interface/shortcut/manage/{shortcut_set}/customize", | |
* "delete-form" = "/admin/config/user-interface/shortcut/manage/{shortcut_set}/delete", | |
* "edit-form" = "/admin/config/user-interface/shortcut/manage/{shortcut_set}", | |
* "collection" = "/admin/config/user-interface/shortcut", | |
* }, | |
* config_export = { | |
* "id", | |
* "label", | |
* } | |
* ) | |
*/ | |
class ShortcutSet extends ConfigEntityBundleBase implements ShortcutSetInterface { | |
/** | |
* The machine name for the configuration entity. | |
* | |
* @var string | |
*/ | |
protected $id; | |
/** | |
* The human-readable name of the configuration entity. | |
* | |
* @var string | |
*/ | |
protected $label; | |
/** | |
* {@inheritdoc} | |
*/ | |
public function postSave(EntityStorageInterface $storage, $update = TRUE) { | |
parent::postSave($storage, $update); | |
if (!$update && !$this->isSyncing()) { | |
// Save a new shortcut set with links copied from the user's default set. | |
$default_set = shortcut_default_set(); | |
// This is the default set, do not copy shortcuts. | |
if ($default_set->id() != $this->id()) { | |
foreach ($default_set->getShortcuts() as $shortcut) { | |
$shortcut = $shortcut->createDuplicate(); | |
$shortcut->enforceIsNew(); | |
$shortcut->shortcut_set->target_id = $this->id(); | |
$shortcut->save(); | |
} | |
} | |
} | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public static function preDelete(EntityStorageInterface $storage, array $entities) { | |
parent::preDelete($storage, $entities); | |
foreach ($entities as $entity) { | |
$storage->deleteAssignedShortcutSets($entity); | |
// Next, delete the shortcuts for this set. | |
$shortcut_ids = \Drupal::entityQuery('shortcut') | |
->condition('shortcut_set', $entity->id(), '=') | |
->execute(); | |
$controller = \Drupal::entityManager()->getStorage('shortcut'); | |
$entities = $controller->loadMultiple($shortcut_ids); | |
$controller->delete($entities); | |
} | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function resetLinkWeights() { | |
$weight = -50; | |
foreach ($this->getShortcuts() as $shortcut) { | |
$shortcut->setWeight(++$weight); | |
$shortcut->save(); | |
} | |
return $this; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function getShortcuts() { | |
$shortcuts = \Drupal::entityManager()->getStorage('shortcut')->loadByProperties(array('shortcut_set' => $this->id())); | |
uasort($shortcuts, array('\Drupal\shortcut\Entity\Shortcut', 'sort')); | |
return $shortcuts; | |
} | |
} |