Skip to content

Commit

Permalink
PCHR-4346: Sync CRM_Export_BAO_Export in hrjobcontract with CiviCRM 5…
Browse files Browse the repository at this point in the history
….7.0
  • Loading branch information
davialexandre committed Oct 30, 2018
1 parent a6c3a38 commit 185f9a8
Showing 1 changed file with 72 additions and 77 deletions.
149 changes: 72 additions & 77 deletions hrjobcontract/CRM/Export/BAO/Export.php
Original file line number Diff line number Diff line change
Expand Up @@ -773,10 +773,6 @@ public static function exportCustom($customSearchClass, $formValues, $order) {
* @param $field
*/
public static function sqlColumnDefn($processor, &$sqlColumns, $field) {
if (substr($field, -4) == '_a_b' || substr($field, -4) == '_b_a') {
return;
}

$sqlColumns[$processor->getMungedFieldName($field)] = $processor->getSqlColumnDefinition($field);
}

Expand Down Expand Up @@ -1384,14 +1380,11 @@ public static function componentPaymentFields() {
*
* @param string $field
* @param array $headerRows
* @param array $sqlColumns
* Columns to go in the temp table.
* @param \CRM_Export_BAO_ExportProcessor $processor
* @param array|string $value
*
* @return array
*/
public static function setHeaderRows($field, $headerRows, $sqlColumns, $processor, $value) {
public static function setHeaderRows($field, $headerRows, $processor) {

$queryFields = $processor->getQueryFields();
if (substr($field, -11) == 'campaign_id') {
Expand All @@ -1408,79 +1401,14 @@ public static function setHeaderRows($field, $headerRows, $sqlColumns, $processo
// @todo - set this correctly in the xml rather than here.
$headerRows[] = ts('IM Service Provider');
}
elseif ($processor->isRelationshipTypeKey($field)) {
foreach ($value as $relationField => $relationValue) {
// below block is same as primary block (duplicate)
if (isset($queryFields[$relationField]['title'])) {
if ($queryFields[$relationField]['name'] == 'name') {
$headerName = $field . '-' . $relationField;
}
else {
if ($relationField == 'current_employer') {
$headerName = $field . '-' . 'current_employer';
}
else {
$headerName = $field . '-' . $queryFields[$relationField]['name'];
}
}

if (!$processor->isHouseholdMergeRelationshipTypeKey($field)) {
// Do not add to header row if we are only generating for merge reasons.
$headerRows[] = $headerName;
}

self::sqlColumnDefn($processor, $sqlColumns, $headerName);
}
elseif ($relationField == 'phone_type_id') {
$headerName = $field . '-' . 'Phone Type';
$headerRows[] = $headerName;
self::sqlColumnDefn($processor, $sqlColumns, $headerName);
}
elseif ($relationField == 'provider_id') {
$headerName = $field . '-' . 'Im Service Provider';
$headerRows[] = $headerName;
self::sqlColumnDefn($processor, $sqlColumns, $headerName);
}
elseif ($relationField == 'state_province_id') {
$headerName = $field . '-' . 'state_province_id';
$headerRows[] = $headerName;
self::sqlColumnDefn($processor, $sqlColumns, $headerName);
}
elseif (is_array($relationValue) && $relationField == 'location') {
// fix header for location type case
foreach ($relationValue as $ltype => $val) {
foreach (array_keys($val) as $fld) {
$type = explode('-', $fld);

$hdr = "{$ltype}-" . $queryFields[$type[0]]['title'];

if (!empty($type[1])) {
if (CRM_Utils_Array::value(0, $type) == 'phone') {
$hdr .= "-" . CRM_Core_PseudoConstant::getLabel('CRM_Core_BAO_Phone', 'phone_type_id', $type[1]);
}
elseif (CRM_Utils_Array::value(0, $type) == 'im') {
$hdr .= "-" . CRM_Core_PseudoConstant::getLabel('CRM_Core_BAO_IM', 'provider_id', $type[1]);
}
}
$headerName = $field . '-' . $hdr;
$headerRows[] = $headerName;
self::sqlColumnDefn($processor, $sqlColumns, $headerName);
}
}
}
}
self::manipulateHeaderRows($headerRows);
}
elseif ($processor->isExportPaymentFields() && array_key_exists($field, self::componentPaymentFields())) {
$headerRows[] = CRM_Utils_Array::value($field, self::componentPaymentFields());
}
else {
$headerRows[] = $field;
}

self::sqlColumnDefn($processor, $sqlColumns, $field);

return array($headerRows, $sqlColumns);
return $headerRows;
}

/**
Expand Down Expand Up @@ -1517,9 +1445,75 @@ public static function getExportStructureArrays($returnProperties, $processor) {
$imProviders = CRM_Core_PseudoConstant::get('CRM_Core_DAO_IM', 'provider_id');
$queryFields = $processor->getQueryFields();
foreach ($returnProperties as $key => $value) {
if ($key != 'location' || !is_array($value)) {
if (($key != 'location' || !is_array($value)) && !$processor->isRelationshipTypeKey($key)) {
$outputColumns[$key] = $value;
list($headerRows, $sqlColumns) = self::setHeaderRows($key, $headerRows, $sqlColumns, $processor, $value);
$headerRows = self::setHeaderRows($key, $headerRows, $processor);
self::sqlColumnDefn($processor, $sqlColumns, $key);
}
elseif ($processor->isRelationshipTypeKey($key)) {
$outputColumns[$key] = $value;
$field = $key;
foreach ($value as $relationField => $relationValue) {
// below block is same as primary block (duplicate)
if (isset($queryFields[$relationField]['title'])) {
if ($queryFields[$relationField]['name'] == 'name') {
$headerName = $field . '-' . $relationField;
}
else {
if ($relationField == 'current_employer') {
$headerName = $field . '-' . 'current_employer';
}
else {
$headerName = $field . '-' . $queryFields[$relationField]['name'];
}
}

if (!$processor->isHouseholdMergeRelationshipTypeKey($field)) {
// Do not add to header row if we are only generating for merge reasons.
$headerRows[] = $headerName;
}

self::sqlColumnDefn($processor, $sqlColumns, $headerName);
}
elseif ($relationField == 'phone_type_id') {
$headerName = $field . '-' . 'Phone Type';
$headerRows[] = $headerName;
self::sqlColumnDefn($processor, $sqlColumns, $headerName);
}
elseif ($relationField == 'provider_id') {
$headerName = $field . '-' . 'Im Service Provider';
$headerRows[] = $headerName;
self::sqlColumnDefn($processor, $sqlColumns, $headerName);
}
elseif ($relationField == 'state_province_id') {
$headerName = $field . '-' . 'state_province_id';
$headerRows[] = $headerName;
self::sqlColumnDefn($processor, $sqlColumns, $headerName);
}
elseif (is_array($relationValue) && $relationField == 'location') {
// fix header for location type case
foreach ($relationValue as $ltype => $val) {
foreach (array_keys($val) as $fld) {
$type = explode('-', $fld);

$hdr = "{$ltype}-" . $queryFields[$type[0]]['title'];

if (!empty($type[1])) {
if (CRM_Utils_Array::value(0, $type) == 'phone') {
$hdr .= "-" . CRM_Core_PseudoConstant::getLabel('CRM_Core_BAO_Phone', 'phone_type_id', $type[1]);
}
elseif (CRM_Utils_Array::value(0, $type) == 'im') {
$hdr .= "-" . CRM_Core_PseudoConstant::getLabel('CRM_Core_BAO_IM', 'provider_id', $type[1]);
}
}
$headerName = $field . '-' . $hdr;
$headerRows[] = $headerName;
self::sqlColumnDefn($processor, $sqlColumns, $headerName);
}
}
}
}
self::manipulateHeaderRows($headerRows);
}
else {
foreach ($value as $locationType => $locationFields) {
Expand All @@ -1544,7 +1538,8 @@ public static function getExportStructureArrays($returnProperties, $processor) {
$metadata[$daoFieldName]['pseudoconstant']['var'] = 'imProviders';
}
self::sqlColumnDefn($processor, $sqlColumns, $outputFieldName);
list($headerRows, $sqlColumns) = self::setHeaderRows($outputFieldName, $headerRows, $sqlColumns, $processor, $value);
$headerRows = self::setHeaderRows($outputFieldName, $headerRows, $processor);
self::sqlColumnDefn($processor, $sqlColumns, $outputFieldName);
if ($actualDBFieldName == 'country' || $actualDBFieldName == 'world_region') {
$metadata[$daoFieldName] = array('context' => 'country');
}
Expand Down

0 comments on commit 185f9a8

Please sign in to comment.