Skip to content

Commit

Permalink
Merge pull request #15554 from demeritcowboy/casetype-xml-array
Browse files Browse the repository at this point in the history
dev/core#1335 - Prevent php warning when saving case type
  • Loading branch information
mattwire authored Oct 20, 2019
2 parents 9aac918 + b7172dd commit ec21196
Show file tree
Hide file tree
Showing 3 changed files with 109 additions and 1 deletion.
7 changes: 6 additions & 1 deletion CRM/Case/BAO/CaseType.php
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,12 @@ public static function convertDefinitionToXML($name, $definition) {
*/
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;
}
}

/**
Expand Down
54 changes: 54 additions & 0 deletions tests/phpunit/CRM/Case/BAO/CaseTypeTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -115,10 +115,64 @@ public function definitionProvider() {
'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',
Expand Down
49 changes: 49 additions & 0 deletions tests/phpunit/CRM/Case/BAO/xml/empty-node-text.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
<?xml version="1.0" encoding="utf-8" ?>
<CaseType>
<name>Housing Support</name>
<ActivityTypes>
<ActivityType>
<name>First act</name>
</ActivityType>
<ActivityType>
<name>Second act</name>
</ActivityType>
</ActivityTypes>
<ActivitySets>
<ActivitySet>
<name>set1</name>
<label>Label 1</label>
<timeline>true</timeline>
<ActivityTypes>
<ActivityType>
<name>Open Case</name>
<status>Completed</status>
</ActivityType>
</ActivityTypes>
</ActivitySet>
<ActivitySet>
<name>set2</name>
<label>Label 2</label>
<timeline>true</timeline>
<ActivityTypes>
<ActivityType>
<name>First act</name>
<status>Scheduled</status>
<reference_activity>Open Case</reference_activity>
<reference_offset>1</reference_offset>
<reference_select>newest</reference_select>
<default_assignee_type>2</default_assignee_type>
<default_assignee_relationship>2_b_a</default_assignee_relationship>
<default_assignee_contact></default_assignee_contact>
</ActivityType>
</ActivityTypes>
</ActivitySet>
</ActivitySets>
<CaseRoles>
<RelationshipType>
<name>First role</name>
<creator>1</creator>
<manager>1</manager>
</RelationshipType>
</CaseRoles>
</CaseType>

0 comments on commit ec21196

Please sign in to comment.