From 10db2c1799e7115396c88f215d7080c814bf6224 Mon Sep 17 00:00:00 2001
From: Daniel Wehner <daniel.wehner@erdfisch.de>
Date: Mon, 27 Aug 2012 11:32:50 +0200
Subject: [PATCH] Simplify the constructor of ViewDisplay.

---
 lib/Drupal/views/Tests/ViewStorageTest.php |  2 +-
 lib/Drupal/views/ViewDisplay.php           | 20 +++++++++++++-------
 lib/Drupal/views/ViewStorageController.php | 12 ++++++++++--
 3 files changed, 24 insertions(+), 10 deletions(-)

diff --git a/lib/Drupal/views/Tests/ViewStorageTest.php b/lib/Drupal/views/Tests/ViewStorageTest.php
index fa07fbe1a863..5dc7ec07f0c3 100644
--- a/lib/Drupal/views/Tests/ViewStorageTest.php
+++ b/lib/Drupal/views/Tests/ViewStorageTest.php
@@ -168,7 +168,7 @@ function testConfigurableCRUD() {
     $created_loaded = reset($loaded_entities);
     $values_loaded = config('views.view.archive')->get();
 
-    $this->assertTrue(isset($created_loaded->display['default']->display_options), 'Make sure that the display options exists.');
+    $this->assertTrue(isset($created_loaded->display['default']->display_options), 'Make sure that the display options exist.');
     $this->assertEqual($created_loaded->display['default']->display_plugin, 'default', 'Make sure the right display plugin is set.');
 
     $this->assertEqual($values, $values_loaded, 'The loaded config is the same as the original loaded one.');
diff --git a/lib/Drupal/views/ViewDisplay.php b/lib/Drupal/views/ViewDisplay.php
index 1e374d431d94..aa8c6cdd3010 100644
--- a/lib/Drupal/views/ViewDisplay.php
+++ b/lib/Drupal/views/ViewDisplay.php
@@ -29,13 +29,19 @@ class ViewDisplay {
    */
   public $display_options;
 
-  function __construct(array $display_options = array()) {
-    if (!empty($display_options)) {
-      $this->display_options = $display_options['display_options'];
-      $this->display_plugin = $display_options['display_plugin'];
-      $this->id = $display_options['id'];
-      $this->display_title = $display_options['display_title'];
-    }
+  public function __construct(array $display_options = array()) {
+    $display_options += array(
+      'display_options' => array(),
+      'display_plugin' => NULL,
+      'id' => NULL,
+      'display_title' => '',
+      'position' => NULL,
+    );
+
+    $this->display_options = $display_options['display_options'];
+    $this->display_plugin = $display_options['display_plugin'];
+    $this->id = $display_options['id'];
+    $this->display_title = $display_options['display_title'];
   }
 
 }
diff --git a/lib/Drupal/views/ViewStorageController.php b/lib/Drupal/views/ViewStorageController.php
index f297b075c4e3..7318b3c5090f 100644
--- a/lib/Drupal/views/ViewStorageController.php
+++ b/lib/Drupal/views/ViewStorageController.php
@@ -104,7 +104,6 @@ public function save(StorableInterface $entity) {
    * 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(
@@ -124,13 +123,22 @@ public function create(array $values) {
    *
    * @param Drupal\entity\StorableInterface $entity
    */
-  protected function attachDisplays($entity) {
+  protected function attachDisplays(StorableInterface $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,
+        );
         // Create a ViewDisplay object using the display options.
         $displays[$key] = new ViewDisplay($options);
       }
+
       $entity->set('display', $displays);
     }
   }
-- 
GitLab