Example #1
0
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;
}
Example #2
0
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;
	}
}
Example #3
0
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;
}
Example #4
0
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;
}