コード例 #1
0
ファイル: import.php プロジェクト: resmon/resmon-cacti
function &xml_to_data_input_method($hash, &$xml_array, &$hash_cache)
{
    global $fields_data_input_edit, $fields_data_input_field_edit, $fields_data_input_field_edit_1;
    /* aggregate field arrays */
    $fields_data_input_field_edit += $fields_data_input_field_edit_1;
    /* import into: data_input */
    $_data_input_id = db_fetch_cell("select id from data_input where hash='{$hash}'");
    $save["id"] = empty($_data_input_id) ? "0" : $_data_input_id;
    $save["hash"] = $hash;
    reset($fields_data_input_edit);
    while (list($field_name, $field_array) = each($fields_data_input_edit)) {
        /* make sure this field exists in the xml array first */
        if (isset($xml_array[$field_name])) {
            /* fix issue with data input method importing and white spaces */
            if ($field_name == "input_string") {
                $xml_array[$field_name] = str_replace("><", "> <", $xml_array[$field_name]);
            }
            $save[$field_name] = addslashes(xml_character_decode($xml_array[$field_name]));
        }
    }
    $data_input_id = sql_save($save, "data_input");
    $hash_cache["data_input_method"][$hash] = $data_input_id;
    /* import into: data_input_fields */
    if (is_array($xml_array["fields"])) {
        while (list($item_hash, $item_array) = each($xml_array["fields"])) {
            /* parse information from the hash */
            $parsed_hash = parse_xml_hash($item_hash);
            /* invalid/wrong hash */
            if ($parsed_hash == false) {
                return false;
            }
            unset($save);
            $_data_input_field_id = db_fetch_cell("select id from data_input_fields where hash='" . $parsed_hash["hash"] . "' and data_input_id={$data_input_id}");
            $save["id"] = empty($_data_input_field_id) ? "0" : $_data_input_field_id;
            $save["hash"] = $parsed_hash["hash"];
            $save["data_input_id"] = $data_input_id;
            reset($fields_data_input_field_edit);
            while (list($field_name, $field_array) = each($fields_data_input_field_edit)) {
                /* make sure this field exists in the xml array first */
                if (isset($item_array[$field_name])) {
                    $save[$field_name] = addslashes(xml_character_decode($item_array[$field_name]));
                }
            }
            $data_input_field_id = sql_save($save, "data_input_fields");
            $hash_cache["data_input_field"][$parsed_hash["hash"]] = $data_input_field_id;
        }
    }
    /* update field use counter cache if possible */
    if (isset($xml_array["input_string"]) && !empty($data_input_id)) {
        generate_data_input_field_sequences($xml_array["input_string"], $data_input_id);
    }
    /* status information that will be presented to the user */
    $_SESSION["import_debug_info"]["type"] = empty($_data_input_id) ? "new" : "update";
    $_SESSION["import_debug_info"]["title"] = $xml_array["name"];
    $_SESSION["import_debug_info"]["result"] = empty($data_input_id) ? "fail" : "success";
    return $hash_cache;
}
コード例 #2
0
ファイル: package_import.php プロジェクト: songchin/Cacti
function package_data_query_import(&$xml_array, $package_id, $object_hash) {
	require_once(CACTI_BASE_PATH . "/lib/data_query/data_query_info.php");
	require_once(CACTI_BASE_PATH . "/lib/data_query/data_query_update.php");

	/*
	 * XML Tag: <data_query>
	 */

	/* obtain a list of all data query specific fields */
	$data_query_fields = api_data_query_form_list();

	if (isset($xml_array["data_query"])) {
		$save_fields = array();

		/* tag the data query as a package member */
		$save_fields["package_id"] = $package_id;

		/* get the base fields from the xml */
		foreach (array_keys($data_query_fields) as $field_name) {
			if (isset($xml_array["data_query"][$field_name])) {
				$save_fields[$field_name] = xml_character_decode($xml_array["data_query"][$field_name]);
			}
		}

		/* save the data query to the database and register its new id */
		$data_query_id = package_hash_update($object_hash, api_data_query_save(0, $save_fields));

		if ($data_query_id === false) {
			return;
		}
	}

	/*
	 * XML Tag: <fields>
	 */

	/* obtain a list of all data query field specific fields */
	$data_query_field_fields = api_data_query_field_form_list();

	if ((isset($xml_array["fields"])) && (is_array($xml_array["fields"]))) {
		/* loop through each available data query field */
		foreach ($xml_array["fields"] as $data_query_field_hash => $data_query_field) {
			$save_fields = array();

			/* make sure that each field is associated with the new data query */
			$save_fields["data_query_id"] = $data_query_id;

			/* get the base fields from the xml */
			foreach (array_keys($data_query_field_fields) as $field_name) {
				if (isset($data_query_field[$field_name])) {
					$save_fields[$field_name] = xml_character_decode($data_query_field[$field_name]);
				}
			}

			/* save the data query field to the database and register its new id */
			api_data_query_field_save(0, $save_fields);
		}
	}
}