From d18d8cd0a5b87de155a75e20583a1d1dac6bcd0a Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Sun, 19 May 2013 21:57:53 -0400 Subject: [PATCH] CRM_Utils_Migrate_Export - Allow cherry-picking of CustomGroups for export --- CRM/Utils/Migrate/Export.php | 57 ++++++++++++++++++++++++++++++++++-- 1 file changed, 55 insertions(+), 2 deletions(-) diff --git a/CRM/Utils/Migrate/Export.php b/CRM/Utils/Migrate/Export.php index e1f5105f56..9045c95d89 100644 --- a/CRM/Utils/Migrate/Export.php +++ b/CRM/Utils/Migrate/Export.php @@ -263,6 +263,59 @@ class CRM_Utils_Migrate_Export { $this->fetch('mappingField', 'CRM_Core_DAO_MappingField'); } + /** + * @param array $customGroupIds list of custom groups to export + * @return void + */ + function buildCustomGroups($customGroupIds) { + $customGroupIdsSql = implode(',', array_filter($customGroupIds, 'is_numeric')); + if (empty($customGroupIdsSql)) { + return; + } + + $sql = " + SELECT distinct(g.id), g.* + FROM civicrm_option_group g, + civicrm_custom_field f, + civicrm_custom_group cg + WHERE f.option_group_id = g.id + AND f.custom_group_id = cg.id + AND cg.id in ($customGroupIdsSql) + "; + $this->fetch('optionGroup', 'CRM_Core_DAO_OptionGroup', $sql); + + $sql = " + SELECT distinct(v.id), v.*, g.name as prefix + FROM civicrm_option_value v, + civicrm_option_group g, + civicrm_custom_field f, + civicrm_custom_group cg + WHERE v.option_group_id = g.id + AND f.option_group_id = g.id + AND f.custom_group_id = cg.id + AND cg.id in ($customGroupIdsSql) + "; + + $this->fetch('optionValue', 'CRM_Core_DAO_OptionValue', $sql); + + $sql = " + SELECT cg.* + FROM civicrm_custom_group cg + WHERE cg.id in ($customGroupIdsSql) + + "; + $this->fetch('customGroup', 'CRM_Core_DAO_CustomGroup', $sql); + + $sql = " + SELECT f.* + FROM civicrm_custom_field f, + civicrm_custom_group cg + WHERE f.custom_group_id = cg.id + AND cg.id in ($customGroupIdsSql) + "; + $this->fetch('customField', 'CRM_Core_DAO_CustomField', $sql); + } + /** * Render the in-memory representation as XML * @@ -296,7 +349,7 @@ class CRM_Utils_Migrate_Export { $result = array(); foreach (array_keys($this->_xml) as $key) { if (!empty($this->_xml[$key]['data'])) { - $result[ $this->_xml[$key]['name'] ] = $this->_xml[$key]['data']; + $result[ $this->_xml[$key]['name'] ] = array_values($this->_xml[$key]['data']); } } return $result; @@ -315,7 +368,7 @@ class CRM_Utils_Migrate_Export { } while ($dao->fetch()) { - $this->_xml[$groupName]['data'][] = $this->exportDAO($this->_xml[$groupName]['name'], $dao, $mappedFields); + $this->_xml[$groupName]['data'][$dao->id] = $this->exportDAO($this->_xml[$groupName]['name'], $dao, $mappedFields); if ($idNameFields) { // index the id/name fields so that we can translate from FK ids to FK names if (isset($idNameFields[2])) { -- 2.25.1