From a7ef6f36bb6b3fd87ebb5c58ef2e7465707f3dee Mon Sep 17 00:00:00 2001
From: Alex Pott <alex.a.pott@googlemail.com>
Date: Fri, 19 Jul 2013 18:22:38 +0100
Subject: [PATCH] Issue #2030551 by marcingy: Fixed PHP notice when creating
 new Drupal user.

---
 .../Core/Entity/EntityFormController.php      | 15 ++++---
 .../lib/Drupal/user/Tests/UserCreateTest.php  | 43 +++++++++++++++++++
 2 files changed, 52 insertions(+), 6 deletions(-)

diff --git a/core/lib/Drupal/Core/Entity/EntityFormController.php b/core/lib/Drupal/Core/Entity/EntityFormController.php
index 36fb3185ca41..dd479f23459e 100644
--- a/core/lib/Drupal/Core/Entity/EntityFormController.php
+++ b/core/lib/Drupal/Core/Entity/EntityFormController.php
@@ -461,13 +461,16 @@ protected function submitEntityLanguage(array $form, array &$form_state) {
       foreach (field_info_instances($entity_type, $entity->bundle()) as $instance) {
         $field_name = $instance['field_name'];
         $field = field_info_field($field_name);
-        $previous_langcode = $form[$field_name]['#language'];
 
-        // Handle a possible language change: new language values are inserted,
-        // previous ones are deleted.
-        if ($field['translatable'] && $previous_langcode != $current_langcode) {
-          $form_state['values'][$field_name][$current_langcode] = $form_state['values'][$field_name][$previous_langcode];
-          $form_state['values'][$field_name][$previous_langcode] = array();
+        if (isset($form[$field_name]['#language'])) {
+          $previous_langcode = $form[$field_name]['#language'];
+
+          // Handle a possible language change: new language values are inserted,
+          // previous ones are deleted.
+          if ($field['translatable'] && $previous_langcode != $current_langcode) {
+            $form_state['values'][$field_name][$current_langcode] = $form_state['values'][$field_name][$previous_langcode];
+            $form_state['values'][$field_name][$previous_langcode] = array();
+          }
         }
       }
     }
diff --git a/core/modules/user/lib/Drupal/user/Tests/UserCreateTest.php b/core/modules/user/lib/Drupal/user/Tests/UserCreateTest.php
index 565e40e10f96..2026e5c617b2 100644
--- a/core/modules/user/lib/Drupal/user/Tests/UserCreateTest.php
+++ b/core/modules/user/lib/Drupal/user/Tests/UserCreateTest.php
@@ -14,6 +14,13 @@
  */
 class UserCreateTest extends WebTestBase {
 
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = array('image');
+
   public static function getInfo() {
     return array(
       'name' => 'User create',
@@ -30,6 +37,42 @@ protected function testUserAdd() {
     $user = $this->drupalCreateUser(array('administer users'));
     $this->drupalLogin($user);
 
+    // Create a field and an instance.
+    $field_name = 'test_field';
+    $field = array(
+      'field_name' => $field_name,
+      'module' => 'image',
+      'type' => 'image',
+      'cardinality' => 1,
+      'locked' => FALSE,
+      'indexes' => array('target_id' => array('target_id')),
+      'settings' => array(
+        'uri_scheme' => 'public',
+        'default_image' => FALSE,
+      ),
+    );
+    entity_create('field_entity', $field)->save();
+
+    $instance = array(
+      'field_name' => $field_name,
+      'entity_type' => 'user',
+      'label' => 'Picture',
+      'bundle' => 'user',
+      'description' => t('Your virtual face or picture.'),
+      'required' => FALSE,
+      'settings' => array(
+        'file_extensions' => 'png gif jpg jpeg',
+        'file_directory' => 'pictures',
+        'max_filesize' => '30 KB',
+        'alt_field' => 0,
+        'title_field' => 0,
+        'max_resolution' => '85x85',
+        'min_resolution' => '',
+        'default_image' => 0,
+      ),
+    );
+    entity_create('field_instance', $instance)->save();
+
     // Test user creation page for valid fields.
     $this->drupalGet('admin/people/create');
     $this->assertFieldbyId('edit-status-0', 0, 'The user status option Blocked exists.', 'User login');
-- 
GitLab