Esempio n. 1
0
 /**
  * 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;
 }
Esempio n. 4
0
 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;
 }