From 6eb7dfed149e04ca39c576b058106e547c8c0fdc Mon Sep 17 00:00:00 2001
From: "tim.plunkett" <tim.plunkett@241634.no-reply.drupal.org>
Date: Thu, 7 Jun 2012 18:24:06 +0200
Subject: [PATCH] Issue #1548240 by fgm, tim.plunkett | GiorgosK:
 $this->original_value did not always existe in
 views_handler_field::render_text().

---
 handlers/views_handler_field.inc | 11 +++++++++++
 tests/field/views_fieldapi.test  |  8 ++++++++
 2 files changed, 19 insertions(+)

diff --git a/handlers/views_handler_field.inc b/handlers/views_handler_field.inc
index 22a1c4bb8453..5cd82d8be5ee 100644
--- a/handlers/views_handler_field.inc
+++ b/handlers/views_handler_field.inc
@@ -46,6 +46,13 @@ class views_handler_field extends views_handler {
   var $field_alias = 'unknown';
   var $aliases = array();
 
+  /**
+   * The field value prior to any rewriting.
+   *
+   * @var mixed
+   */
+  public $original_value = NULL;
+
   /**
    * @var array
    * Stores additional fields which get's added to the query.
@@ -1080,6 +1087,10 @@ function render($values) {
   function advanced_render($values) {
     if ($this->allow_advanced_render() && method_exists($this, 'render_item')) {
       $raw_items = $this->get_items($values);
+      // If there are no items, set the original value to NULL.
+      if (empty($raw_items)) {
+        $this->original_value = NULL;
+      }
     }
     else {
       $value = $this->render($values);
diff --git a/tests/field/views_fieldapi.test b/tests/field/views_fieldapi.test
index 2b807243338f..aa5798862dc7 100644
--- a/tests/field/views_fieldapi.test
+++ b/tests/field/views_fieldapi.test
@@ -273,6 +273,8 @@ class viewsHandlerFieldFieldTest extends ViewsFieldApiTestHelper {
 
     // Setup a field with cardinality > 1.
     $this->fields[3] = $field = field_create_field(array('field_name' => 'field_name_3', 'type' => 'text', 'cardinality' => FIELD_CARDINALITY_UNLIMITED));
+    // Setup a field that will have no value.
+    $this->fields[4] = $field = field_create_field(array('field_name' => 'field_name_4', 'type' => 'text', 'cardinality' => FIELD_CARDINALITY_UNLIMITED));
 
     $this->setUpInstances();
 
@@ -290,6 +292,8 @@ class viewsHandlerFieldFieldTest extends ViewsFieldApiTestHelper {
       for ($j = 0; $j < 5; $j++) {
         $edit[$this->fields[3]['field_name']][LANGUAGE_NOT_SPECIFIED][$j]['value'] = $this->randomName(8);
       }
+      // Set this field to be empty.
+      $edit[$this->fields[4]['field_name']] = array();
 
       $this->nodes[$i] = $this->drupalCreateNode($edit);
     }
@@ -353,6 +357,10 @@ class viewsHandlerFieldFieldTest extends ViewsFieldApiTestHelper {
       }
       $this->assertEqual($rendered_field, implode(', ', $items), 'Take sure that the amount of items are limited.');
     }
+
+    // Test that an empty field is rendered without error.
+    $rendered_field = $view->style_plugin->get_field(4, $this->fields[4]['field_name']);
+
     $view->destroy();
 
     // Test delta limit + offset
-- 
GitLab