function api_package_field_validate(&$_fields_package, $package_field_name_format = "|field|") { require_once(CACTI_BASE_PATH . "/lib/package/package_info.php"); if (sizeof($_fields_package) == 0) { return array(); } /* array containing errored fields */ $error_fields = array(); /* get a complete field list */ $fields_package = api_package_form_list(); /* base fields */ while (list($_field_name, $_field_array) = each($fields_package)) { if ((isset($_fields_package[$_field_name])) && (isset($_field_array["validate_regexp"])) && (isset($_field_array["validate_empty"]))) { $form_field_name = str_replace("|field|", $_field_name, $package_field_name_format); if (!form_input_validate($_fields_package[$_field_name], $form_field_name, $_field_array["validate_regexp"], $_field_array["validate_empty"])) { $error_fields[] = $form_field_name; } } } return $error_fields; }
function api_package_save($package_id, &$_fields_package) { require_once(CACTI_BASE_PATH . "/lib/package/package_info.php"); /* sanity checks */ validate_id_die($package_id, "package_id", true); /* field: id */ $_fields["id"] = array("type" => DB_TYPE_INTEGER, "value" => $package_id); /* convert the input array into something that is compatible with db_replace() */ $_fields += sql_get_database_field_array($_fields_package, api_package_form_list()); /* check for an empty field list */ if (sizeof($_fields) == 1) { return true; } if (db_replace("package", $_fields, array("id"))) { if (empty($package_id)) { return db_fetch_insert_id(); }else{ return $package_id; } }else{ return false; } }
function package_header_import(&$xml_array) { require_once(CACTI_BASE_PATH . "/lib/package/package_info.php"); require_once(CACTI_BASE_PATH . "/lib/package/package_update.php"); /* * XML Tag: <package> */ /* obtain a list of all package specific fields */ $package_fields = api_package_form_list(); if (isset($xml_array["package"])) { $save_fields = array(); /* get the base fields from the xml */ foreach (array_keys($package_fields) as $field_name) { if (isset($xml_array["package"][$field_name])) { $save_fields[$field_name] = xml_character_decode($xml_array["package"][$field_name]); } } /* save the package to the database */ $package_id = api_package_save(0, $save_fields); if ($package_id === false) { return false; } } /* * XML Tag: <metadata> */ /* obtain a list of all package metadata specific fields */ $package_metadata_fields = api_package_metadata_form_list(); if ((isset($xml_array["metadata"])) && (is_array($xml_array["metadata"]))) { /* loop through each available package metadata field */ foreach ($xml_array["metadata"] as $package_metadata_hash => $package_metadata) { $save_fields = array(); /* make sure that each metadata item is associated with the new package */ $save_fields["package_id"] = $package_id; /* get the base fields from the xml */ foreach (array_keys($package_metadata_fields) as $field_name) { if (isset($package_metadata[$field_name])) { if ($field_name == "payload") { /* decode any binary payload data */ $save_fields[$field_name] = base64_decode(str_replace("\n", "", $package_metadata[$field_name])); }else{ $save_fields[$field_name] = xml_character_decode($package_metadata[$field_name]); } } } /* save the package metadata item to the database */ api_package_metadata_save(0, $save_fields); } } return $package_id; }
function &package_header_export($package_id, $indent = 1) { require_once(CACTI_BASE_PATH . "/lib/package/package_info.php"); $xml = ""; /* * XML Tag: <package> */ /* obtain a list of all package specific fields */ $package_fields = api_package_form_list(); /* obtain a copy of this specfic package */ $package = api_package_get($package_id); $_xml = ""; foreach (array_keys($package_fields) as $field_name) { /* create an XML key for each graph template field */ $_xml .= package_xml_tag_get($field_name, xml_character_encode($package[$field_name]), $indent + 2); } /* add a few extra fields that are not part of the form */ $_package_version = $package["version"] + 1; $_package_version_cacti = CACTI_VERSION; $_package_date_create = date('Y-m-d H:i:s'); $_xml .= package_xml_tag_get("version", $_package_version, $indent + 2); $_xml .= package_xml_tag_get("version_cacti", $_package_version_cacti, $indent + 2); $_xml .= package_xml_tag_get("date_create", $_package_date_create, $indent + 2); /* obtain a list of graph template associated with this particular package */ $package_graph_templates = api_package_graph_template_list($package_id); if (sizeof($package_graph_templates) > 0) { $i = 0; $items_list = ""; foreach ($package_graph_templates as $graph_template) { /* create a delimited list of each item, making sure to resolve internal ID's */ $items_list .= package_hash_get($graph_template["id"], "graph_template") . (($i + 1) < sizeof($package_graph_templates) ? "|" : ""); $i++; } } /* add the items list that we created above */ $_xml .= package_xml_tag_get("items", $items_list, $indent + 2); /* append the result onto the final XML string */ $xml .= package_xml_tag_get("package", $_xml, $indent + 1, true); /* * XML Tag: <metadata> */ /* obtain a list of all package metadata specific fields */ $package_metadata_fields = api_package_metadata_form_list(); /* obtain a list of all package metadata items */ $package_metadata_items = api_package_metadata_list($package_id, 0, true); $_xml = ""; if (sizeof($package_metadata_items) > 0) { $i = 0; foreach ($package_metadata_items as $package_metadata_item) { $__xml = ""; foreach (array_keys($package_metadata_fields) as $field_name) { if ($field_name == "payload") { /* since the payload might contain binary data, we need to base64 encode it first */ $__xml .= package_xml_tag_get($field_name, xml_character_encode(wordwrap(base64_encode($package_metadata_item[$field_name]), 100, "\n", true)), $indent + 3); }else{ /* create an XML key for each graph template item field */ $__xml .= package_xml_tag_get($field_name, xml_character_encode($package_metadata_item[$field_name]), $indent + 3); } } /* append the result onto a temporary XML string */ $_xml .= package_xml_tag_get("item_" . str_pad($i, 5, "0", STR_PAD_LEFT), $__xml, $indent + 2, true); $i++; } } /* append the result onto the final XML string */ $xml .= package_xml_tag_get("metadata", $_xml, $indent + 1, true); $xml = package_xml_tag_get("header", $xml, $indent, true); return $xml; }