class ViewStorageController in Views (for Drupal 7) 8.3
Defines the storage controller class for ViewStorage entities.
Hierarchy
- class \Drupal\views\ViewStorageController extends \Drupal\Core\Config\Entity\ConfigStorageController
Expanded class hierarchy of ViewStorageController
1 file declares its use of ViewStorageController
- ViewStorageTest.php in lib/
Drupal/ views/ Tests/ ViewStorageTest.php - Definition of Drupal\views\Tests\ViewStorageTest.
File
- lib/
Drupal/ views/ ViewStorageController.php, line 17 - Definition of Drupal\views\ViewStorageController.
Namespace
Drupal\viewsView source
class ViewStorageController extends ConfigStorageController {
/**
* Holds a UUID factory instance.
*
* @var Drupal\Component\Uuid\Uuid
*/
protected $uuidFactory = NULL;
/**
* Overrides Drupal\config\ConfigStorageController::load();
*/
public function load(array $ids = NULL) {
$entities = parent::load($ids);
// Only return views for enabled modules.
return array_filter($entities, function ($entity) {
if (module_exists($entity
->getModule())) {
return TRUE;
}
return FALSE;
});
}
/**
* Overrides Drupal\config\ConfigStorageController::attachLoad();
*/
protected function attachLoad(&$queried_entities, $revision_id = FALSE) {
foreach ($queried_entities as $id => $entity) {
// Create a uuid if we don't have one.
if (empty($entity->{$this->uuidKey})) {
// Only get an instance of uuid once.
if (!isset($this->uuidFactory)) {
$this->uuidFactory = new Uuid();
}
$entity->{$this->uuidKey} = $this->uuidFactory
->generate();
}
$this
->attachDisplays($entity);
}
parent::attachLoad($queried_entities, $revision_id);
}
/**
* Overrides Drupal\config\ConfigStorageController::postSave().
*/
public function postSave(EntityInterface $entity, $update) {
parent::postSave($entity, $update);
// Clear caches.
views_invalidate_cache();
}
/**
* Overrides Drupal\config\ConfigStorageController::create().
*/
public function create(array $values) {
// If there is no information about displays available add at least the
// default display.
$values += array(
'display' => array(
'default' => array(
'display_plugin' => 'default',
'id' => 'default',
'display_title' => 'Master',
),
),
);
$entity = parent::create($values);
$this
->attachDisplays($entity);
return $entity;
}
/**
* Add defaults to the display options.
*
* @param Drupal\Core\Entity\EntityInterface $entity
*/
protected function attachDisplays(EntityInterface $entity) {
if (isset($entity->display) && is_array($entity->display)) {
$displays = array();
foreach ($entity
->get('display') as $key => $options) {
$options += array(
'display_options' => array(),
'display_plugin' => NULL,
'id' => NULL,
'display_title' => '',
'position' => NULL,
);
// Add the defaults for the display.
$displays[$key] = $options;
}
$entity
->set('display', $displays);
}
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ViewStorageController:: |
protected | property | Holds a UUID factory instance. | |
ViewStorageController:: |
protected | function | Add defaults to the display options. | |
ViewStorageController:: |
protected | function | Overrides Drupal\config\ConfigStorageController::attachLoad(); | |
ViewStorageController:: |
public | function | Overrides Drupal\config\ConfigStorageController::create(). | |
ViewStorageController:: |
public | function | Overrides Drupal\config\ConfigStorageController::load(); | |
ViewStorageController:: |
public | function | Overrides Drupal\config\ConfigStorageController::postSave(). |