/** * Returns the names of the datatypes for a given list of metadata elements * * @param array $element_codes List of codes of the elements in question * @return array Names of the datatypes, e.g. "List", "Text", etc. */ public function getElementTypesForCodes($element_codes) { $vo_db = new Db(); if (!is_array($element_codes)) { throw new SoapFault("Server", "Invalid argument"); } $va_return = array(); foreach ($element_codes as $vs_element_code) { $qr_elements = $vo_db->query("SELECT datatype FROM ca_metadata_elements WHERE element_code=?", $vs_element_code); while ($qr_elements->nextRow()) { $va_return[$vs_element_code] = ca_metadata_elements::getAttributeNameForTypeCode(intval($qr_elements->get("datatype"))); } } return $va_return; }
print caNavUrl($this->request, 'administrate/setup', 'Elements', 'Edit', array('parent_id' => $vn_element_id, 'element_id' => $va_sub_element['element_id'])); ?> " class="caDeleteLabelButton"><?php print caNavIcon($this->request, __CA_NAV_BUTTON_EDIT__); ?> </a> <a href="<?php print caNavUrl($this->request, 'administrate/setup', 'Elements', 'Delete', array('parent_id' => $vn_element_id, 'element_id' => $va_sub_element['element_id'])); ?> " class="caDeleteLabelButton"><?php print caNavIcon($this->request, __CA_NAV_BUTTON_DEL_BUNDLE__); ?> </a> <span class="labelDisplay"> <?php print $va_sub_element['name'] . ' (' . $va_sub_element['element_code'] . ') [' . ca_metadata_elements::getAttributeNameForTypeCode($va_sub_element['datatype']) . ']'; ?> </span> </div> <?php } ?> </div> <div class="button labelInfo caAddLabelButton"> <a href="<?php print caNavUrl($this->request, 'administrate/setup', 'Elements', 'Edit', array('parent_id' => $vn_element_id, 'element_id' => 0)); ?> "> <?php print caNavIcon($this->request, __CA_NAV_BUTTON_ADD__); ?>
private function getElementAsDOM($pn_parent_id) { $t_element = new ca_metadata_elements(); $t_list = new ca_lists(); $qr_elements = $this->opo_db->query("SELECT * FROM ca_metadata_elements WHERE parent_id = ? ORDER BY element_id", $pn_parent_id); if (!$qr_elements->numRows()) { return null; } $vo_elements = $this->opo_dom->createElement("elements"); while ($qr_elements->nextRow()) { $vo_element = $this->opo_dom->createElement("metadataElement"); $vo_element->setAttribute("code", $this->makeIDNO($qr_elements->get("element_code"))); $vo_element->setAttribute("datatype", ca_metadata_elements::getAttributeNameForTypeCode($qr_elements->get("datatype"))); if ($qr_elements->get("list_id")) { $t_list->load($qr_elements->get("list_id")); $vo_element->setAttribute("list", $t_list->get("list_code")); } $vo_labels = $this->opo_dom->createElement("labels"); $qr_element_labels = $this->opo_db->query("SELECT * FROM ca_metadata_element_labels WHERE element_id=?", $qr_elements->get("element_id")); while ($qr_element_labels->nextRow()) { $vo_label = $this->opo_dom->createElement("label"); $vo_label->setAttribute("locale", $this->opt_locale->localeIDToCode($qr_element_labels->get("locale_id"))); $vo_label->appendChild($this->opo_dom->createElement("name", caEscapeForXML($qr_element_labels->get("name")))); if (strlen(trim($qr_element_labels->get("description"))) > 0) { $vo_label->appendChild($this->opo_dom->createElement("description", caEscapeForXML($qr_element_labels->get("description")))); } $vo_labels->appendChild($vo_label); } $vo_element->appendChild($vo_labels); $t_element->load($qr_elements->get("element_id")); $vo_settings = $this->opo_dom->createElement("settings"); if (is_array($va_settings = $t_element->getSettings())) { foreach ($va_settings as $vs_setting => $va_values) { if (is_null($va_values)) { continue; } if (!is_array($va_values)) { $va_values = array($va_values); } foreach ($va_values as $vs_value) { $vo_setting = $this->opo_dom->createElement("setting", $vs_value); $vo_setting->setAttribute("name", $vs_setting); $vo_settings->appendChild($vo_setting); } } } $vo_element->appendChild($vo_settings); $vo_sub_elements = $this->getElementAsDOM($qr_elements->get("element_id")); if ($vo_sub_elements) { $vo_element->appendChild($vo_sub_elements); } $vo_elements->appendChild($vo_element); } return $vo_elements; }
private function getModelInfoForType($ps_type) { $t_instance = $this->_getTableInstance($this->getTableName()); $t_list = new ca_lists(); $va_return = array(); $vs_type_list_code = $t_instance->getTypeListCode(); // type info $va_item = $t_list->getItemFromList($vs_type_list_code, $ps_type); $va_return["type_info"] = $va_item; $va_return["type_info"]["display_label"] = $t_list->getItemFromListForDisplay($vs_type_list_code, $ps_type); // applicable element codes and related info $va_elements = array(); $va_codes = $t_instance->getApplicableElementCodes($va_item["item_id"]); $va_codes = array_flip($va_codes); foreach ($va_codes as $vs_code => $va_junk) { // subelements $t_element = $t_instance->_getElementInstance($vs_code); foreach ($t_element->getElementsInSet() as $va_element_in_set) { if ($va_element_in_set["datatype"] == 0) { continue; } // don't include sub-containers $va_element_in_set["datatype"] = ca_metadata_elements::getAttributeNameForTypeCode($va_element_in_set["datatype"]); $va_elements[$vs_code]["elements_in_set"][$va_element_in_set["element_code"]] = $va_element_in_set; } // element label and description $va_label = $t_instance->getAttributeLabelAndDescription($vs_code); $va_elements[$vs_code]["name"] = $va_label["name"]; if (isset($va_label["description"])) { $va_elements[$vs_code]["description"] = $va_label["description"]; } } $va_return["elements"] = $va_elements; // possible relationships with "valid tables" (i.e. those that are accessible via services) $t_rel_types = new ca_relationship_types(); foreach ($this->opa_valid_tables as $vs_table) { $vs_rel_table = $t_rel_types->getRelationshipTypeTable($this->getTableName(), $vs_table); $va_info = $t_rel_types->getRelationshipInfo($vs_rel_table); foreach ($va_info as $va_tmp) { $va_return["relationship_types"][$vs_table][$va_tmp["type_code"]] = $va_tmp; } } return $va_return; }