/** * Returns COinS tags for inclusion in page * * @param SearchResult_or_BundleableLabelableBaseModelWithAttributes_subclass $pm_instance_or_result * @param string $ps_output_type * @param array $pa_options */ public static function getTags($pm_instance_or_result, $ps_output_type = null, $pa_options = null) { $va_config = COinS::_getConfig($vs_table_name = $pm_instance_or_result->tableName(), $ps_output_type); $va_urls = array(); if (is_subclass_of($pm_instance_or_result, 'BaseModel')) { $qr_res = $pm_instance_or_result->makeSearchResult($pm_instance_or_result->tableName(), array($pm_instance_or_result->getPrimaryKey())); } else { $qr_res = $pm_instance_or_result; } $o_dm = Datamodel::load(); $t_instance = $o_dm->getInstanceByTableName($vs_table_name, true); $vs_type_fld_name = $t_instance->getTypeFieldName(); $t_item = new ca_list_items(); while ($qr_res->nextHit()) { $vs_type_name = null; if ($vn_type_id = $qr_res->get($vs_type_fld_name)) { if ($t_item->load($vn_type_id)) { $vs_type_name = $t_item->get('idno'); } } $va_mappings = isset($va_config[$vs_type_name]) ? $va_config[$vs_type_name] : $va_config['__default__']; $va_people_mappings = $va_mappings['People']; unset($va_mappings['People']); $va_item = $va_people = array(); foreach ($va_mappings as $vs_key => $va_mapping) { if (!is_array($va_mapping)) { $vs_static = (string) $va_mapping; } else { $vs_static = $va_mapping['value']; $vs_bundle = $va_mapping['bundle']; $va_options = $va_mapping['options']; } if ($vs_bundle) { $va_item[$vs_key] = $qr_res->get($vs_bundle, $va_options); } else { $va_item[$vs_key] = $vs_static; } } if (is_array($va_people_mappings)) { foreach ($va_people_mappings as $vn_person_type => $va_mapping) { if (!is_array($va_mapping)) { $vs_static = (string) $va_mapping; } else { $vs_static = $va_mapping['value']; $vs_forename_bundle = $va_mapping['forename']; $vs_surname_bundle = $va_mapping['surname']; $va_options = $va_mapping['options']; } $vs_forename = $qr_res->get($vs_forename_bundle, $va_options); $vs_surname = $qr_res->get($vs_surname_bundle, $va_options); if ($vs_forename || $vs_surname) { $va_people[] = array('DocRelationship' => $vn_person_type, 'FirstName' => $vs_forename, 'LastName' => $vs_surname); } } } $va_urls[] = $vs_url = COinS::_CreateOpenURL($va_item, $va_people); $va_tags[] = "<span class='Z3988' title='{$vs_url}'></span>"; } $vb_return_urls = isset($pa_options['returnUrls']) && $pa_options['returnUrls']; if (isset($pa_options['returnAsArray']) && $pa_options['returnAsArray']) { return $vb_return_urls ? $va_urls : $va_tags; } else { $vs_delimiter = isset($pa_options['delimiter']) ? $pa_options['delimiter'] : "\n"; return join($vs_delimiter, $vb_return_urls ? $va_urls : $va_tags); } }