CRM-15097 - CiviCase XML - Parse/encode property "forkable"
authorTim Otten <totten@civicrm.org>
Tue, 12 Aug 2014 06:29:34 +0000 (23:29 -0700)
committerTim Otten <totten@civicrm.org>
Tue, 12 Aug 2014 08:17:07 +0000 (01:17 -0700)
CRM/Case/BAO/CaseType.php
tests/phpunit/CRM/Case/BAO/CaseTypeTest.php

index 4b33515613a3b884266bf16b37c9c96ccc7573e8..44e2169e96334521a7658621898356db9407a014 100644 (file)
@@ -99,6 +99,10 @@ class CRM_Case_BAO_CaseType extends CRM_Case_DAO_CaseType {
     $xmlFile = '<?xml version="1.0" encoding="iso-8859-1" ?>' . "\n\n<CaseType>\n";
     $xmlFile .= "<name>{$name}</name>\n";
 
+    if (array_key_exists('forkable', $definition)) {
+      $xmlFile .= "<forkable>" . ((int) $definition['forkable']) . "</forkable>\n";
+    }
+
     if (isset($definition['activityTypes'])) {
       $xmlFile .= "<ActivityTypes>\n";
       foreach ($definition['activityTypes'] as $values) {
@@ -175,6 +179,10 @@ class CRM_Case_BAO_CaseType extends CRM_Case_DAO_CaseType {
     // build PHP array based on definition
     $definition = array();
 
+    if (isset($xml->forkable)) {
+      $definition['forkable'] = (int) $xml->forkable;
+    }
+
     // set activity types
     if (isset($xml->ActivityTypes)) {
       $definition['activityTypes'] = array();
index aceffd46903b5879ba9e22dc1454b1803538020f..ebccffad527882778bef2a9d754bd5b44bab5282 100644 (file)
@@ -182,12 +182,38 @@ class CRM_Case_BAO_CaseTypeTest extends CiviUnitTestCase {
       ',
     );
 
+    $fixtures['forkable-0'] = array(
+      'json' => json_encode(array(
+        'forkable' => 0,
+      )),
+      'xml' => '<?xml version="1.0" encoding="iso-8859-1" ?>
+<CaseType>
+  <name>Housing Support</name>
+  <forkable>0</forkable>
+</CaseType>
+      ',
+    );
+
+    $fixtures['forkable-1'] = array(
+      'json' => json_encode(array(
+        'forkable' => 1,
+      )),
+      'xml' => '<?xml version="1.0" encoding="iso-8859-1" ?>
+<CaseType>
+  <name>Housing Support</name>
+  <forkable>1</forkable>
+</CaseType>
+      ',
+    );
+
     $cases = array();
     foreach (array(
                'empty-defn',
                'empty-lists',
                'one-item-in-each',
                'two-items-in-each',
+               'forkable-0',
+               'forkable-1',
              ) as $key) {
       $cases[] = array($key, $fixtures[$key]['json'], $fixtures[$key]['xml']);
     }