From a2bc8bf7a4bf480f8f114670abc245aaaa7639ad Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Thu, 16 May 2013 16:11:51 -0400 Subject: [PATCH] CRM-12647 - CRM_Utils_Migrate_Export - Extract method addMappedXMLFields() ---------------------------------------- * CRM-12647: Customization export/import crashes on "&" http://issues.civicrm.org/jira/browse/CRM-12647 --- CRM/Utils/Migrate/Export.php | 48 +++++++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/CRM/Utils/Migrate/Export.php b/CRM/Utils/Migrate/Export.php index 77da85aba3..92f1ed78ea 100644 --- a/CRM/Utils/Migrate/Export.php +++ b/CRM/Utils/Migrate/Export.php @@ -321,23 +321,9 @@ AND entity_id IS NULL } while ($dao->fetch()) { - $additional = NULL; - if ($add) { - foreach ($add as $filter) { - if (isset($dao->{$filter[1]})) { - if (isset($filter[3])) { - $label = $this->_xml[$filter[0]]['map']["{$filter[3]}." . $dao->{$filter[1]}]; - } - else { - $label = $this->_xml[$filter[0]]['map'][$dao->{$filter[1]}]; - } - $additional .= "\n <{$filter[2]}>{$label}"; - } - } - } $this->_xml[$groupName]['data'] .= $this->exportDAO($dao, $this->_xml[$groupName]['name'], - $additional + $this->addMappedXMLFields($add, $dao) ); if ($map) { if (isset($map[2])) { @@ -350,6 +336,38 @@ AND entity_id IS NULL } } + /** + * Given a set of field mappings, generate XML for the mapped fields + * + * @param array $mappedFields each item is an array(0 => MappedEntityname, 1 => InputFieldName (id-field), 2 => OutputFieldName (name-field), 3 => OptionalPrefix) + * @param CRM_Core_DAO $dao + * @return null|string XML + */ + public function addMappedXMLFields($mappedFields, $dao) { + $additional = NULL; + if ($mappedFields) { + foreach ($mappedFields as $mappedField) { + if (isset($dao->{$mappedField[1]})) { + if (isset($mappedField[3])) { + $label = $this->_xml[$mappedField[0]]['map']["{$mappedField[3]}." . $dao->{$mappedField[1]}]; + } + else { + $label = $this->_xml[$mappedField[0]]['map'][$dao->{$mappedField[1]}]; + } + $additional .= "\n <{$mappedField[2]}>{$label}"; + } + } + return $additional; + } + return $additional; + } + + /** + * @param CRM_Core_DAO $object + * @param string $objectName business-entity/xml-tag name + * @param string $additional XML + * @return string XML + */ function exportDAO($object, $objectName, $additional = NULL) { $dbFields = & $object->fields(); -- 2.25.1