/** * * * @param string $ps_refinery_name * * @return array */ function caGenericImportSplitter($ps_refinery_name, $ps_item_prefix, $ps_table, $po_refinery_instance, &$pa_destination_data, $pa_group, $pa_item, $pa_source_data, $pa_options) { global $g_ui_locale_id; $po_refinery_instance->setReturnsMultipleValues(true); $o_dm = Datamodel::load(); $po_refinery_instance->setReturnsMultipleValues(true); $o_log = caGetOption('log', $pa_options, null); $o_reader = caGetOption('reader', $pa_options, null); $o_trans = caGetOption('transaction', $pa_options, null); $pn_value_index = caGetOption('valueIndex', $pa_options, 0); // We can probably always use the item destination – using group destination is a vestige of older code and no longer is used // but we're leaving it in for now as a fallback it item dest is not set for some reason $va_group_dest = isset($pa_item['destination']) && $pa_item['destination'] ? explode(".", $pa_item['destination']) : explode(".", $pa_group['destination']); $vs_terminal = array_pop($va_group_dest); $vs_dest_table = $va_group_dest[0]; $va_group_dest[] = $vs_terminal; $pm_value = !isset($pa_source_data[$pa_item['source']]) && $o_reader ? caProcessImportItemSettingsForValue($o_reader->get($pa_item['source'], array('returnAsArray' => true)), $pa_item['settings']) : $pa_source_data[$pa_item['source']]; if (is_array($pm_value)) { if (isset($pm_value[$pn_value_index])) { $va_delimited_items = $pm_value[$pn_value_index]; // for input formats that support repeating values } else { $va_delimited_items = array_shift($va_delimited_items); } } else { $va_delimited_items = array($pm_value); } if (!is_array($va_delimited_items)) { $va_delimited_items = array($va_delimited_items); } $va_delimiter = $pa_item['settings']["{$ps_refinery_name}_delimiter"]; if (!is_array($va_delimiter)) { $va_delimiter = array($va_delimiter); } if (sizeof($va_delimiter)) { foreach ($va_delimiter as $vn_index => $vs_delim) { if (!trim($vs_delim, "\t ")) { unset($va_delimiter[$vn_index]); continue; } $va_delimiter[$vn_index] = preg_quote($vs_delim, "!"); } } $va_match_on = caGetOption('matchOn', $pa_options, null); if (!is_array($va_match_on) && $va_match_on) { $va_match_on = array($va_match_on); } elseif (is_array($va_match_on = $pa_item['settings']["{$ps_refinery_name}_matchOn"])) { $pa_options['matchOn'] = $va_match_on; } $pb_dont_create = caGetOption('dontCreate', $pa_options, (bool) $pa_item['settings']["{$ps_refinery_name}_dontCreate"]); $va_vals = array(); $vn_c = 0; if (!($t_instance = $o_dm->getInstanceByTableName($ps_table, true))) { return array(); } if ($o_trans) { $t_instance->setTransaction($o_trans); } $vs_label_fld = $t_instance->getLabelDisplayField(); if (sizeof($va_group_dest) == 1 && $vs_terminal == $ps_table || $vs_terminal != $ps_table && sizeof($va_group_dest) > 1) { foreach ($va_delimited_items as $vn_x => $vs_delimited_item) { $va_items = sizeof($va_delimiter) ? preg_split("!(" . join("|", $va_delimiter) . ")!", $vs_delimited_item) : array($vs_delimited_item); foreach ($va_items as $vn_i => $vs_item) { $va_parents = $pa_item['settings']["{$ps_refinery_name}_parents"]; if (!($vs_item = trim($vs_item))) { if (is_array($va_parents) && sizeof($va_parents) > 0) { // try to ladder up the parents hierarchy since the base value is blank (see PROV-972) $vs_display_field = $t_instance->getLabelDisplayField(); while (sizeof($va_parents) > 0) { $va_p = array_pop($va_parents); if ($vs_laddered_val = BaseRefinery::parsePlaceholder($va_p[$vs_display_field], $pa_source_data, $pa_item, $pn_value_index, array('reader' => $o_reader, 'delimiter' => $va_delimiter, 'returnDelimitedValueAt' => $vn_x))) { if ($o_log) { $o_log->logDebug(_t('[{$ps_refinery_name}] Used parent value %1 because the mapped value was blank', $vs_item)); } $vs_item = $vs_laddered_val; break; } } } if (!$vs_item) { continue; } } if (is_array($va_skip_values = $pa_item['settings']["{$ps_refinery_name}_skipIfValue"]) && in_array($vs_item, $va_skip_values)) { if ($o_log) { $o_log->logDebug(_t('[{$ps_refinery_name}] Skipped %1 because it was in the skipIfValue list', $vs_item)); } continue; } // Set label $va_val = array(); // Set value as hierarchy if ($va_hierarchy_setting = $pa_item['settings']["{$ps_refinery_name}_hierarchy"]) { $va_attr_vals = $va_val = caProcessRefineryParents($ps_refinery_name, $ps_table, $va_hierarchy_setting, $pa_source_data, $pa_item, $pn_value_index, array_merge($pa_options, array('hierarchyMode' => true))); $vs_item = $va_val['_preferred_label']; } else { // Set type if ($vs_type_opt = $pa_item['settings']["{$ps_refinery_name}_{$ps_item_prefix}Type"]) { $va_val['_type'] = BaseRefinery::parsePlaceholder($vs_type_opt, $pa_source_data, $pa_item, $pn_value_index, array('reader' => $o_reader)); } if ((!isset($va_val['_type']) || !$va_val['_type']) && ($vs_type_opt = $pa_item['settings']["{$ps_refinery_name}_{$ps_item_prefix}TypeDefault"])) { if (!($va_val['_type'] = BaseRefinery::parsePlaceholder($vs_type_opt, $pa_source_data, $pa_item, $pn_value_index, array('reader' => $o_reader, 'delimiter' => $va_delimiter, 'returnDelimitedValueAt' => $vn_x)))) { $va_val['_type'] = BaseRefinery::parsePlaceholder($vs_type_opt, $pa_source_data, $pa_item, $pn_value_index, array('reader' => $o_reader)); } } // Set lot_status if ($vs_type_opt = $pa_item['settings']["{$ps_refinery_name}_{$ps_item_prefix}Status"]) { $va_val['_status'] = BaseRefinery::parsePlaceholder($vs_type_opt, $pa_source_data, $pa_item, $pn_value_index, array('reader' => $o_reader)); } if ((!isset($va_val['_status']) || !$va_val['_status']) && ($vs_type_opt = $pa_item['settings']["{$ps_refinery_name}_{$ps_item_prefix}StatusDefault"])) { $va_val['_status'] = BaseRefinery::parsePlaceholder($vs_type_opt, $pa_source_data, $pa_item, $pn_value_index, array('reader' => $o_reader)); } if ((!isset($va_val['_type']) || !$va_val['_type']) && $o_log) { $o_log->logWarn(_t("[{$ps_refinery_name}] No %2 type is set for %2 %1", $vs_item, $ps_item_prefix)); } // // Storage location specific options // if ($ps_refinery_name == 'storageLocationSplitter' && ($va_hier_delimiter = $pa_item['settings']['storageLocationSplitter_hierarchicalDelimiter'])) { if (!is_array($va_hier_delimiter)) { $va_hier_delimiter = array($va_hier_delimiter); } if (sizeof($va_hier_delimiter)) { foreach ($va_hier_delimiter as $vn_index => $vs_delim) { if (!trim($vs_delim, "\t ")) { unset($va_hier_delimiter[$vn_index]); continue; } $va_hier_delimiter[$vn_index] = preg_quote($vs_delim, "!"); } } $va_location_hier = preg_split("!(" . join("|", $va_hier_delimiter) . ")!", $vs_item); if (sizeof($va_location_hier) > 1) { $vn_location_id = null; if (!is_array($va_types = $pa_item['settings']['storageLocationSplitter_hierarchicalStorageLocationTypes'])) { $va_types = array(); } $vs_item = array_pop($va_location_hier); if (!($va_val['_type'] = array_pop($va_types))) { $va_val['_type'] = $pa_item['settings']['storageLocationSplitter_storageLocationTypeDefault']; } foreach ($va_location_hier as $vn_i => $vs_parent) { if (sizeof($va_types) > 0) { $vs_type = array_shift($va_types); } else { if (!($vs_type = $pa_item['settings']['storageLocationSplitter_storageLocationType'])) { $vs_type = $pa_item['settings']['storageLocationSplitter_storageLocationTypeDefault']; } } if (!$vs_type) { break; } $vn_location_id = DataMigrationUtils::getStorageLocationID($vs_parent, $vn_location_id, $vs_type, $g_ui_locale_id, array('idno' => $vs_parent, 'parent_id' => $vn_location_id), $pa_options); } $va_val['parent_id'] = $va_val['_parent_id'] = $vn_location_id; } } else { // Set parents if ($va_parents) { $va_val['parent_id'] = $va_val['_parent_id'] = caProcessRefineryParents($ps_refinery_name, $ps_table, $va_parents, $pa_source_data, $pa_item, $pn_value_index, $pa_options); } if (isset($pa_options['defaultParentID']) && (!isset($va_val['parent_id']) || !$va_val['parent_id'])) { $va_val['parent_id'] = $va_val['_parent_id'] = $pa_options['defaultParentID']; } } if (isset($pa_options['hierarchyID']) && $pa_options['hierarchyID'] && ($vs_hier_id_fld = $t_instance->getProperty('HIERARCHY_ID_FLD'))) { $va_val[$vs_hier_id_fld] = $pa_options['hierarchyID']; } // Set attributes if (is_array($va_attr_vals = caProcessRefineryAttributes($pa_item['settings']["{$ps_refinery_name}_attributes"], $pa_source_data, $pa_item, $vn_i, array('log' => $o_log, 'reader' => $o_reader)))) { $va_val = array_merge($va_val, $va_attr_vals); } // Set interstitials if (isset($pa_options['mapping']) && is_array($va_attr_vals = caProcessInterstitialAttributes($ps_refinery_name, $pa_options['mapping']->get('table_num'), $ps_table, $pa_source_data, $pa_item, $vn_i, array('log' => $o_log, 'reader' => $o_reader)))) { $va_val = array_merge($va_val, $va_attr_vals); } // Set relationships on the related table caProcessRefineryRelatedMultiple($po_refinery_instance, $pa_item, $pa_source_data, $vn_i, $o_log, $o_reader, $va_val, $va_attr_vals); // Set nonpreferred labels if (is_array($va_non_preferred_labels = $pa_item['settings']["{$ps_refinery_name}_nonPreferredLabels"])) { $pa_options['nonPreferredLabels'] = array(); foreach ($va_non_preferred_labels as $va_label) { foreach ($va_label as $vs_k => $vs_v) { $va_label[$vs_k] = BaseRefinery::parsePlaceholder($vs_v, $pa_source_data, $pa_item, $pn_value_index, array('reader' => $o_reader, 'returnAsString' => true, 'delimiter' => ' ')); } $pa_options['nonPreferredLabels'][] = $va_label; } } } if ($vs_dest_table != $ps_table && sizeof($va_group_dest) > 1) { $vs_item = BaseRefinery::parsePlaceholder($vs_item, $pa_source_data, $pa_item, $pn_value_index, array('reader' => $o_reader, 'returnAsString' => true, 'delimiter' => ' ')); if (!is_array($va_attr_vals)) { $va_attr_vals = array(); } $va_attr_vals_with_parent = array_merge($va_attr_vals, array('parent_id' => $va_val['parent_id'] ? $va_val['parent_id'] : $va_val['_parent_id'])); $pa_options = array('matchOn' => array('idno', 'label')) + $pa_options; switch ($ps_table) { case 'ca_objects': $vn_item_id = DataMigrationUtils::getObjectID($vs_item, $va_val['parent_id'], $va_val['_type'], $g_ui_locale_id, $va_attr_vals_with_parent, $pa_options); break; case 'ca_object_lots': if (isset($va_val['_status'])) { $va_attr_vals['lot_status_id'] = $va_val['_status']; } unset($va_val['_status']); $vn_item_id = DataMigrationUtils::getObjectLotID($vs_item, $vs_item, $va_val['_type'], $g_ui_locale_id, $va_attr_vals, $pa_options); break; case 'ca_entities': $vn_item_id = DataMigrationUtils::getEntityID(DataMigrationUtils::splitEntityName($vs_item, $pa_options), $va_val['_type'], $g_ui_locale_id, $va_attr_vals_with_parent, $pa_options); break; case 'ca_places': $vn_item_id = DataMigrationUtils::getPlaceID($vs_item, $va_val['parent_id'], $va_val['_type'], $g_ui_locale_id, $va_attr_vals_with_parent, $pa_options); break; case 'ca_occurrences': $vn_item_id = DataMigrationUtils::getOccurrenceID($vs_item, $va_val['parent_id'], $va_val['_type'], $g_ui_locale_id, $va_attr_vals_with_parent, $pa_options); break; case 'ca_collections': $vn_item_id = DataMigrationUtils::getCollectionID($vs_item, $va_val['_type'], $g_ui_locale_id, $va_attr_vals_with_parent, $pa_options); break; case 'ca_loans': $vn_item_id = DataMigrationUtils::getLoanID($vs_item, $va_val['_type'], $g_ui_locale_id, $va_attr_vals_with_parent, $pa_options); break; case 'ca_movements': $vn_item_id = DataMigrationUtils::getMovementID($vs_item, $va_val['_type'], $g_ui_locale_id, $va_attr_vals_with_parent, $pa_options); break; case 'ca_list_items': if (!$pa_options['list_id']) { if ($o_log) { $o_log->logDebug(_t('[importHelpers:caGenericImportSplitter] List was not specified')); } continue 2; } $va_attr_vals_with_parent['is_enabled'] = 1; $vn_item_id = DataMigrationUtils::getListItemID($pa_options['list_id'], $vs_item, $va_val['_type'], $g_ui_locale_id, $va_attr_vals_with_parent, $pa_options); break; case 'ca_storage_locations': $vn_item_id = DataMigrationUtils::getStorageLocationID($vs_item, $va_val['parent_id'], $va_val['_type'], $g_ui_locale_id, $va_attr_vals_with_parent, $pa_options); break; case 'ca_object_representations': if ($o_log) { $o_log->logDebug(_t('[importHelpers:caGenericImportSplitter] Only media paths can be mapped for object representations.')); } continue 2; default: if ($o_log) { $o_log->logDebug(_t('[importHelpers:caGenericImportSplitter] Invalid table %1', $ps_table)); } continue 2; break; } if ($vn_item_id) { $va_vals[][$vs_terminal] = $vn_item_id; continue; } else { if ($o_log && !$pb_dont_create) { $o_log->logError(_t("[{$ps_refinery_name}Refinery] Could not add %2 %1", $vs_item, $ps_item_prefix)); } } } elseif (sizeof($va_group_dest) == 1 && $vs_terminal == $ps_table) { // Set relationship type if ($vs_rel_type_opt = $pa_item['settings']["{$ps_refinery_name}_relationshipType"]) { $va_val['_relationship_type'] = BaseRefinery::parsePlaceholder($vs_rel_type_opt, $pa_source_data, $pa_item, $pn_value_index, array('reader' => $o_reader)); } if ((!isset($va_val['_relationship_type']) || !$va_val['_relationship_type']) && ($vs_rel_type_opt = $pa_item['settings']["{$ps_refinery_name}_relationshipTypeDefault"])) { if (!($va_val['_relationship_type'] = BaseRefinery::parsePlaceholder($vs_rel_type_opt, $pa_source_data, $pa_item, $pn_value_index, array('reader' => $o_reader, 'delimiter' => $va_delimiter, 'returnDelimitedValueAt' => $vn_x)))) { $va_val['_relationship_type'] = BaseRefinery::parsePlaceholder($vs_rel_type_opt, $pa_source_data, $pa_item, $pn_value_index, array('reader' => $o_reader)); } } if ((!isset($va_val['_relationship_type']) || !$va_val['_relationship_type']) && $o_log) { $o_log->logWarn(_t("[{$ps_refinery_name}Refinery] No relationship type is set for %2 %1", $vs_item, $ps_item_prefix)); } switch ($ps_table) { case 'ca_entities': $va_val['preferred_labels'] = DataMigrationUtils::splitEntityName($vs_item, $pa_options); if (!isset($va_val['idno'])) { $va_val['idno'] = $vs_item; } break; case 'ca_list_items': $va_val['preferred_labels'] = array('name_singular' => str_replace("_", " ", $vs_item), 'name_plural' => str_replace("_", " ", $vs_item)); $va_val['_list'] = $pa_options['list_id']; if (!isset($va_val['idno'])) { $va_val['idno'] = $vs_item; } break; case 'ca_storage_locations': case 'ca_movements': case 'ca_loans': case 'ca_collections': case 'ca_occurrences': case 'ca_places': case 'ca_objects': $va_val['preferred_labels'] = array('name' => $vs_item); if (!isset($va_val['idno'])) { $va_val['idno'] = $vs_item; } break; case 'ca_object_lots': $va_val['preferred_labels'] = array('name' => $vs_item); if (!isset($va_val['idno_stub'])) { $va_val['idno_stub'] = $vs_item; } if (isset($va_val['_status'])) { $va_val['lot_status_id'] = $va_val['_status']; } unset($va_val['_status']); break; case 'ca_object_representations': if (!($vs_batch_media_directory = $t_instance->getAppConfig()->get('batch_media_import_root_directory'))) { break; } if (!isset($va_val['preferred_labels'])) { $va_val['preferred_labels'] = array('name' => $vs_item); } if (isset($pa_item['settings']['objectRepresentationSplitter_mediaPrefix']) && $pa_item['settings']['objectRepresentationSplitter_mediaPrefix'] && isset($va_val['media']['media']) && $va_val['media']['media']) { $va_val['media']['media'] = $vs_batch_media_directory . '/' . $pa_item['settings']['objectRepresentationSplitter_mediaPrefix'] . '/' . $va_val['media']['media']; } if (!isset($va_val['idno'])) { $va_val['idno'] = $vs_item; } break; default: if ($o_log) { $o_log->logDebug(_t('[importHelpers:caGenericImportSplitter] Invalid table %1', $ps_table)); } continue 2; break; } if (isset($pa_options['nonPreferredLabels']) && is_array($pa_options['nonPreferredLabels'])) { $va_val['nonpreferred_labels'] = $pa_options['nonPreferredLabels']; } } elseif (sizeof($va_group_dest) == 2 && $vs_terminal == 'preferred_labels') { switch ($ps_table) { case 'ca_entities': $va_val = DataMigrationUtils::splitEntityName($vs_item, $pa_options); break; case 'ca_list_items': $va_val = array('name_singular' => $vs_item, 'name_plural' => $vs_item); break; case 'ca_storage_locations': case 'ca_movements': case 'ca_loans': case 'ca_collections': case 'ca_occurrences': case 'ca_places': case 'ca_objects': $va_val = array('name' => $vs_item); break; case 'ca_object_lots': $va_val = array('name' => $vs_item); break; case 'ca_object_representations': if ($o_log) { $o_log->logDebug(_t('[importHelpers:caGenericImportSplitter] Cannot map preferred labels to object representations. Only media paths can be mapped.')); } continue 2; default: if ($o_log) { $o_log->logDebug(_t('[importHelpers:caGenericImportSplitter] Invalid table %1', $ps_table)); } continue 2; break; } } else { if ($o_log) { $o_log->logError(_t("[{$ps_refinery_name}Refinery] Could not add %2 %1: cannot map %3 using %1", $vs_item, $ps_item_prefix, join(".", $va_group_dest))); } } $va_val['_matchOn'] = $va_match_on; if ($pb_dont_create) { $va_val['_dontCreate'] = 1; } $va_vals[] = $va_val; $vn_c++; } } } else { if ($o_log) { $o_log->logError(_t("[{$ps_refinery_name}Refinery] Cannot map %1 using this refinery", $pa_group['destination'])); } return array(); } return $va_vals; }
/** * */ public function refine(&$pa_destination_data, $pa_group, $pa_item, $pa_source_data, $pa_options = null) { $o_log = isset($pa_options['log']) && is_object($pa_options['log']) ? $pa_options['log'] : null; $va_group_dest = explode(".", $pa_group['destination']); $vs_terminal = array_pop($va_group_dest); $pm_value = $pa_source_data[$pa_item['source']]; if (is_array($pm_value)) { $va_entities = $pm_value; // for input formats that support repeating values } else { $va_entities = array($pm_value); } $va_vals = array(); $vn_c = 0; $t_entity = new ca_entities(); foreach ($va_entities as $pm_value) { if (!($vs_entity = trim($pm_value))) { return array(); } if (is_array($va_skip_values = $pa_item['settings']['entityJoiner_skipIfValue']) && in_array($vs_entity, $va_skip_values)) { return array(); } $va_name = array(); foreach ($t_entity->getLabelUIFields() as $vs_fld) { $va_name[$vs_fld] = BaseRefinery::parsePlaceholder($pa_item['settings']['entityJoiner_' . $vs_fld], $pa_source_data, $pa_item, $vn_c, array('reader' => caGetOption('reader', $pa_options, null), 'returnAsString' => true, 'delimiter' => ' ')); } if (isset($va_name[$vs_terminal])) { return $va_name[$vs_terminal]; } if (in_array($vs_terminal, array('preferred_labels', 'nonpreferred_labels'))) { return $va_name; } // Set label $va_val = array('preferred_labels' => $va_name); // Set relationship type if ($vs_rel_type_opt = $pa_item['settings']['entityJoiner_relationshipType']) { $va_val['_relationship_type'] = BaseRefinery::parsePlaceholder($vs_rel_type_opt, $pa_source_data, $pa_item, $vn_c, array('reader' => caGetOption('reader', $pa_options, null), 'returnAsString' => true, 'delimiter' => ' ')); } if ((!isset($va_val['_relationship_type']) || !$va_val['_relationship_type']) && ($vs_rel_type_opt = $pa_item['settings']['entityJoiner_relationshipTypeDefault'])) { $va_val['_relationship_type'] = BaseRefinery::parsePlaceholder($vs_rel_type_opt, $pa_source_data, $pa_item, $vn_c, array('reader' => caGetOption('reader', $pa_options, null), 'returnAsString' => true, 'delimiter' => ' ')); } if ((!isset($va_val['_relationship_type']) || !$va_val['_relationship_type']) && $o_log) { $o_log->logWarn(_t('[entityJoinerRefinery] No relationship type is set for entity %1', $vs_entity)); } // Set entity_type if ($vs_type_opt = $pa_item['settings']['entityJoiner_entityType']) { $va_val['_type'] = BaseRefinery::parsePlaceholder($vs_type_opt, $pa_source_data, $pa_item, $vn_c, array('reader' => caGetOption('reader', $pa_options, null), 'returnAsString' => true, 'delimiter' => ' ')); } if ((!isset($va_val['_type']) || !$va_val['_type']) && ($vs_type_opt = $pa_item['settings']['entityJoiner_entityTypeDefault'])) { $va_val['_type'] = BaseRefinery::parsePlaceholder($vs_type_opt, $pa_source_data, $pa_item, $vn_c, array('reader' => caGetOption('reader', $pa_options, null), 'returnAsString' => true, 'delimiter' => ' ')); } if ((!isset($va_val['_type']) || !$va_val['_type']) && $o_log) { $o_log->logWarn(_t('[entityJoinerRefinery] No entity type is set for entity %1', $vs_entity)); } // Set attributes if (is_array($va_attr_vals = caProcessRefineryAttributes($pa_item['settings']['entityJoiner_attributes'], $pa_source_data, $pa_item, $vn_c, array('reader' => caGetOption('reader', $pa_options, null), 'log' => $o_log)))) { $va_val = array_merge($va_val, $va_attr_vals); } // Set interstitials if (isset($pa_options['mapping']) && is_array($va_attr_vals = caProcessInterstitialAttributes('entityJoiner', $pa_options['mapping']->get('table_num'), 'ca_entities', $pa_source_data, $pa_item, $vn_c, array('reader' => caGetOption('reader', $pa_options, null), 'log' => $o_log)))) { $va_val = array_merge($va_val, $va_attr_vals); } caProcessRefineryRelatedMultiple($this, $pa_item, $pa_source_data, $vn_c, $o_log, caGetOption('reader', $pa_options, null), $va_val, $va_vals); // nonpreferred labels if (is_array($pa_item['settings']['entityJoiner_nonpreferred_labels'])) { $va_non_preferred_labels = array(); foreach ($pa_item['settings']['entityJoiner_nonpreferred_labels'] as $vn_index => $va_elements) { if (is_array($va_elements)) { $vb_non_pref_label_was_set = false; foreach ($va_elements as $vs_k => $vs_v) { if (!trim($vs_v)) { continue; } if ($vs_k == 'split') { if (!is_array($va_non_preferred_labels[$vn_index])) { $va_non_preferred_labels[$vn_index] = array(); } if ($vs_name = BaseRefinery::parsePlaceholder($vs_v, $pa_source_data, $pa_item, $vn_c, array('reader' => caGetOption('reader', $pa_options, null), 'returnAsString' => true, 'delimiter' => ' '))) { $va_non_preferred_labels[$vn_index] = array_merge($va_non_preferred_labels[$vn_index], DataMigrationUtils::splitEntityName($vs_name)); $vb_non_pref_label_was_set = true; } } else { if ($va_non_preferred_labels[$vn_index][$vs_k] = trim(BaseRefinery::parsePlaceholder($vs_v, $pa_source_data, $pa_item, $vn_c, array('reader' => caGetOption('reader', $pa_options, null), 'returnAsString' => true, 'delimiter' => ' ')))) { $vb_non_pref_label_was_set = true; } } } } if (!$vb_non_pref_label_was_set) { unset($va_non_preferred_labels[$vn_index]); } } if (sizeof($va_non_preferred_labels)) { $va_val['nonpreferred_labels'] = $va_non_preferred_labels; } } $va_vals[] = $va_val; $vn_c++; } return $va_vals; }