From b7172dd65b2e386e2b2fc10ff2ac3f05905e991d Mon Sep 17 00:00:00 2001 From: DemeritCowboy Date: Sun, 20 Oct 2019 00:45:34 -0400 Subject: [PATCH] prevent php warning --- CRM/Case/BAO/CaseType.php | 7 ++- tests/phpunit/CRM/Case/BAO/CaseTypeTest.php | 54 +++++++++++++++++++ .../CRM/Case/BAO/xml/empty-node-text.xml | 49 +++++++++++++++++ 3 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 tests/phpunit/CRM/Case/BAO/xml/empty-node-text.xml diff --git a/CRM/Case/BAO/CaseType.php b/CRM/Case/BAO/CaseType.php index 2127b92e37..7a107d2b15 100644 --- a/CRM/Case/BAO/CaseType.php +++ b/CRM/Case/BAO/CaseType.php @@ -219,7 +219,12 @@ class CRM_Case_BAO_CaseType extends CRM_Case_DAO_CaseType { */ protected static function encodeXmlString($str) { // PHP 5.4: return htmlspecialchars($str, ENT_XML1, 'UTF-8') - return htmlspecialchars($str); + if (is_scalar($str)) { + return htmlspecialchars($str); + } + else { + return NULL; + } } /** diff --git a/tests/phpunit/CRM/Case/BAO/CaseTypeTest.php b/tests/phpunit/CRM/Case/BAO/CaseTypeTest.php index 30a4974b7b..54514f9bbe 100644 --- a/tests/phpunit/CRM/Case/BAO/CaseTypeTest.php +++ b/tests/phpunit/CRM/Case/BAO/CaseTypeTest.php @@ -115,10 +115,64 @@ class CRM_Case_BAO_CaseTypeTest extends CiviUnitTestCase { 'xml' => file_get_contents(__DIR__ . '/xml/forkable-1.xml'), ]; + $fixtures['empty-node-text'] = [ + 'json' => json_encode([ + 'activityTypes' => [ + ['name' => 'First act'], + ['name' => 'Second act'], + ], + 'activitySets' => [ + [ + 'name' => 'set1', + 'label' => 'Label 1', + 'timeline' => 1, + 'activityTypes' => [ + ['name' => 'Open Case', 'status' => 'Completed'], + ], + ], + [ + 'name' => 'set2', + 'label' => 'Label 2', + 'timeline' => 1, + 'activityTypes' => [ + [ + 'name' => 'First act', + 'status' => 'Scheduled', + 'reference_activity' => 'Open Case', + 'reference_offset' => 1, + 'reference_select' => 'newest', + 'default_assignee_type' => '2', + 'default_assignee_relationship' => '2_b_a', + 'default_assignee_contact' => [], + ], + ], + ], + ], + 'timelineActivityTypes' => [ + ['name' => 'Open Case', 'status' => 'Completed'], + [ + 'name' => 'First act', + 'status' => 'Scheduled', + 'reference_activity' => 'Open Case', + 'reference_offset' => '1', + 'reference_select' => 'newest', + 'default_assignee_type' => '2', + 'default_assignee_relationship' => '2_b_a', + 'default_assignee_contact' => [], + ], + ], + 'caseRoles' => [ + ['name' => 'First role', 'creator' => 1, 'manager' => 1], + ], + ]), + 'xml' => file_get_contents(__DIR__ . '/xml/empty-node-text.xml'), + ]; + $cases = []; foreach ([ 'empty-defn', 'empty-lists', + 'empty-node-text', 'one-item-in-each', 'two-items-in-each', 'forkable-0', diff --git a/tests/phpunit/CRM/Case/BAO/xml/empty-node-text.xml b/tests/phpunit/CRM/Case/BAO/xml/empty-node-text.xml new file mode 100644 index 0000000000..48c116b523 --- /dev/null +++ b/tests/phpunit/CRM/Case/BAO/xml/empty-node-text.xml @@ -0,0 +1,49 @@ + + + Housing Support + + + First act + + + Second act + + + + + set1 + + true + + + Open Case + Completed + + + + + set2 + + true + + + First act + Scheduled + Open Case + 1 + newest + 2 + 2_b_a + + + + + + + + First role + 1 + 1 + + + -- 2.25.1