/** * */ public function get() { if (!is_object($t_entity = $this->_checkEntity())) { return $t_entity; } $vn_id = $t_entity->getPrimaryKey(); $t_list = new ca_lists(); $vn_yes_id = $t_list->getItemIDFromList("yes_no", "yes"); $vn_no_id = $t_list->getItemIDFromList("yes_no", "no"); $vn_male_id = $t_list->getItemIDFromList("genders", "male"); $vn_female_id = $t_list->getItemIDFromList("genders", "female"); // get victim info $va_data = array('id' => $vn_id, 'forename' => $t_entity->get('ca_entities.preferred_labels.forename'), 'other_forenames' => $t_entity->get('ca_entities.preferred_labels.other_forenames'), 'surname' => $t_entity->get('ca_entities.preferred_labels.surname'), 'middlename' => $t_entity->get('ca_entities.preferred_labels.middlename'), 'displayname' => $t_entity->get('ca_entities.preferred_labels.displayname'), 'prefix' => $t_entity->get('ca_entities.preferred_labels.prefix'), 'suffix' => $t_entity->get('ca_entities.preferred_labels.suffix'), 'gender' => $t_entity->get('ca_entities.gender') == $vn_male_id ? "M" : "F", 'pregnant' => $t_entity->get('ca_entities.pregnant') == $vn_yes_id ? 1 : 0, 'final_text_bio' => $t_entity->get('ca_entities.final_text_bio'), 'lifespan' => $t_entity->get('ca_entities.lifespan', array('dateFormat' => 'iso8601')), 'lifespan_as_text' => $t_entity->get('ca_entities.lifetime_text'), 'last_modification' => $t_entity->get('ca_entities.lastModified', array("dateFormat" => 'iso8601'))); $va_nonpreferred_labels = $t_entity->get('ca_entities.nonpreferred_labels', array('returnAsArray' => true, 'assumeDisplayField' => false)); foreach ($va_nonpreferred_labels as $va_label) { $va_data['alternate_names'][] = $va_label; } // add place info $va_places = $t_entity->getRelatedItems('ca_places'); $t_place = new ca_places(); $va_place_type_list = $t_place->getTypeList(); $va_place_type_idnos = array(); foreach ($va_place_type_list as $vn_type_id => $va_type) { if (!$va_type['is_enabled']) { continue; } $va_place_type_idnos[] = $va_type['idno']; } $va_data['place_types'] = $va_place_type_idnos; foreach ($va_places as $vn_relation_id => $va_rel_info) { if ($t_place->load($va_rel_info['place_id'])) { $va_place_ids = $t_place->get('ca_places.hierarchy.place_id', array('returnAsArray' => true)); array_shift($va_place_ids); $vn_i = 0; foreach ($va_place_ids as $vn_id) { if ($t_place->load($vn_id)) { if (!($vs_type_name = $va_place_type_list[$vn_place_type_id = $t_place->get('type_id')]['idno'])) { $vs_type_name = $vn_place_type_id; } $va_data['locations'][$va_rel_info['relationship_type_code']][$vs_type_name] = $t_place->get('ca_places.preferred_labels.name'); $vn_i++; } } } } // add affiliations $va_entities = $t_entity->getRelatedItems('ca_entities', array('restrict_to_relationship_types' => array('employer', 'affiliation'))); $t_rel_entity = new ca_entities(); $va_units = array(); foreach ($va_entities as $vn_relation_id => $va_rel_info) { if ($t_rel_entity->load($va_rel_info['entity_id'])) { $va_display_names = $t_rel_entity->get('ca_entities.hierarchy.preferred_labels.displayname', array('returnAsArray' => true)); if ($va_rel_info['relationship_type_code'] == 'affiliation') { if (sizeof($va_display_names) > 1) { $va_units[] = array_pop($va_display_names); } } else { if (sizeof($va_display_names) > 1) { array_pop($va_display_names); } } $va_data['affiliations'][$va_rel_info['relationship_type_code']][] = array('displayname' => $va_display_names, 'id' => $va_rel_info['entity_id'], 'aliases' => array_values($t_rel_entity->get('ca_entities.nonpreferred_labels.displayname', array('returnAsArray' => true)))); } } // add group $va_data['affiliations']['group'][] = array('displayname' => array($t_entity->get('ca_entities.groupName')), 'id' => -1, 'aliases' => array()); // Map bottom level of two level affiliation to fake "unit" relationship // This let's the Memorial Table CMS easily make the unit value searchable foreach ($va_units as $vs_unit) { $va_data['affiliations']['unit'][] = array('displayname' => array($vs_unit), 'id' => -1, 'aliases' => array()); } return $this->makeResponse($va_data); }