function data_query_to_xml($data_query_id) { require_once(CACTI_BASE_PATH . "/lib/data_query/data_query_info.php"); $hash["data_query"] = get_hash_version("data_query") . get_hash_data_query($data_query_id); $xml_text = ""; $snmp_query = db_fetch_row("select * from snmp_query where id=$data_query_id"); $snmp_query_graph = db_fetch_assoc("select * from snmp_query_graph where snmp_query_id=$data_query_id"); if (empty($snmp_query["id"])) { $err_msg = "Invalid Data Query."; return $err_msg; } $xml_text .= "<hash_" . $hash["data_query"] . ">\n"; /* XML Branch: <> */ $fields_data_query_edit = data_query_form_list(); reset($fields_data_query_edit); while (list($field_name, $field_array) = each($fields_data_query_edit)) { if (($field_name == "data_input_id") && (!empty($snmp_query{$field_name}))) { $xml_text .= "\t<$field_name>hash_" . get_hash_version("data_input_method") . get_hash_data_input($snmp_query{$field_name}) . "</$field_name>\n"; }else{ if (($field_array["method"] != "hidden_zero") && ($field_array["method"] != "hidden") && ($field_array["method"] != "spacer")) { $xml_text .= "\t<$field_name>" . xml_character_encode($snmp_query{$field_name}) . "</$field_name>\n"; } } } /* XML Branch: <graphs> */ $xml_text .= "\t<graphs>\n"; $i = 0; if (sizeof($snmp_query_graph) > 0) { foreach ($snmp_query_graph as $item) { $hash["data_query_graph"] = get_hash_version("data_query_graph") . get_hash_data_query($item["id"], "data_query_graph"); $xml_text .= "\t\t<hash_" . $hash["data_query_graph"] . ">\n"; $fields_data_query_item_edit = data_query_item_form_list(); reset($fields_data_query_item_edit); while (list($field_name, $field_array) = each($fields_data_query_item_edit)) { if (($field_name == "graph_template_id") && (!empty($item{$field_name}))) { $xml_text .= "\t\t\t<$field_name>hash_" . get_hash_version("graph_template") . get_hash_graph_template($item{$field_name}) . "</$field_name>\n"; }else{ if (($field_array["method"] != "hidden_zero") && ($field_array["method"] != "hidden") && ($field_array["method"] != "spacer")) { $xml_text .= "\t\t\t<$field_name>" . xml_character_encode($item{$field_name}) . "</$field_name>\n"; } } } $snmp_query_graph_rrd_sv = db_fetch_assoc("select * from snmp_query_graph_rrd_sv where snmp_query_graph_id=" . $item["id"] . " order by sequence"); $snmp_query_graph_sv = db_fetch_assoc("select * from snmp_query_graph_sv where snmp_query_graph_id=" . $item["id"] . " order by sequence"); $snmp_query_graph_rrd = db_fetch_assoc("select * from snmp_query_graph_rrd where snmp_query_graph_id=" . $item["id"] . " and data_template_id > 0"); /* XML Branch: <graphs/rrd> */ $xml_text .= "\t\t\t<rrd>\n"; $i = 0; if (sizeof($snmp_query_graph_rrd) > 0) { foreach ($snmp_query_graph_rrd as $item2) { $xml_text .= "\t\t\t\t<item_" . str_pad(strval($i), 3, "0", STR_PAD_LEFT) . ">\n"; $xml_text .= "\t\t\t\t\t<snmp_field_name>" . $item2{"snmp_field_name"} . "</snmp_field_name>\n"; $xml_text .= "\t\t\t\t\t<data_template_id>hash_" . get_hash_version("data_template") . get_hash_data_template($item2{"data_template_id"}) . "</data_template_id>\n"; $xml_text .= "\t\t\t\t\t<data_template_rrd_id>hash_" . get_hash_version("data_template_item") . get_hash_data_template($item2{"data_template_rrd_id"}, "data_template_item") . "</data_template_rrd_id>\n"; $xml_text .= "\t\t\t\t</item_" . str_pad(strval($i), 3, "0", STR_PAD_LEFT) . ">\n"; $i++; } } $xml_text .= "\t\t\t</rrd>\n"; /* XML Branch: <graphs/sv_graph> */ $xml_text .= "\t\t\t<sv_graph>\n"; $j = 0; if (sizeof($snmp_query_graph_sv) > 0) { foreach ($snmp_query_graph_sv as $item2) { $hash["data_query_sv_graph"] = get_hash_version("data_query_sv_graph") . get_hash_data_query($item2["id"], "data_query_sv_graph"); $xml_text .= "\t\t\t\t<hash_" . $hash["data_query_sv_graph"] . ">\n"; $xml_text .= "\t\t\t\t\t<field_name>" . xml_character_encode($item2{"field_name"}) . "</field_name>\n"; $xml_text .= "\t\t\t\t\t<sequence>" . $item2{"sequence"} . "</sequence>\n"; $xml_text .= "\t\t\t\t\t<text>" . xml_character_encode($item2{"text"}) . "</text>\n"; $xml_text .= "\t\t\t\t</hash_" . $hash["data_query_sv_graph"] . ">\n"; $j++; } } $xml_text .= "\t\t\t</sv_graph>\n"; /* XML Branch: <graphs/sv_data_source> */ $xml_text .= "\t\t\t<sv_data_source>\n"; $j = 0; if (sizeof($snmp_query_graph_rrd_sv) > 0) { foreach ($snmp_query_graph_rrd_sv as $item2) { $hash["data_query_sv_data_source"] = get_hash_version("data_query_sv_data_source") . get_hash_data_query($item2["id"], "data_query_sv_data_source"); $xml_text .= "\t\t\t\t<hash_" . $hash["data_query_sv_data_source"] . ">\n"; $xml_text .= "\t\t\t\t\t<field_name>" . xml_character_encode($item2{"field_name"}) . "</field_name>\n"; $xml_text .= "\t\t\t\t\t<data_template_id>hash_" . get_hash_version("data_template") . get_hash_data_template($item2{"data_template_id"}) . "</data_template_id>\n"; $xml_text .= "\t\t\t\t\t<sequence>" . $item2{"sequence"} . "</sequence>\n"; $xml_text .= "\t\t\t\t\t<text>" . xml_character_encode($item2{"text"}) . "</text>\n"; $xml_text .= "\t\t\t\t</hash_" . $hash["data_query_sv_data_source"] . ">\n"; $j++; } } $xml_text .= "\t\t\t</sv_data_source>\n"; $xml_text .= "\t\t</hash_" . $hash["data_query_graph"] . ">\n"; $i++; } } $xml_text .= "\t</graphs>\n"; $xml_text .= "</hash_" . $hash["data_query"] . ">"; return $xml_text; }
function data_query_item_edit() { global $colors; require_once(CACTI_BASE_PATH . "/lib/data_query/data_query_info.php"); /* ================= input validation ================= */ input_validate_input_number(get_request_var("id")); input_validate_input_number(get_request_var("snmp_query_id")); /* ==================================================== */ if (!empty($_GET["id"])) { $snmp_query_item = db_fetch_row("select * from snmp_query_graph where id=" . $_GET["id"]); } if (!empty($_GET["snmp_query_id"])) { $snmp_query = db_fetch_row("select name,xml_path from snmp_query where id=" . get_request_var("snmp_query_id")); $header_label = __("[edit: ") . $snmp_query["name"] . "]"; }else{ $header_label = __("[new]"); } print "<form method='post' action='" . basename($_SERVER["PHP_SELF"]) . "' name='data_query_item_edit'>\n"; html_start_box("<strong>" . __("Associated Graph/Data Source Templates") . "</strong> $header_label", "100", $colors["header"], 0, "center", ""); $header_items = array(__("Field"), __("Value")); print "<tr><td>"; html_header($header_items, 1, false, 'assoc_templates', 'left wp100'); draw_edit_form(array( "config" => array(), "fields" => inject_form_variables(data_query_item_form_list(), (isset($snmp_query_item) ? $snmp_query_item : array()), $_GET) )); print "</table></td></tr>"; /* end of html_header */ html_end_box(true); if (!empty($snmp_query_item["id"])) { html_start_box("<strong>" . __("Associated Data Source Templates") . "</strong>", "100", $colors["header"], "0", "center", "", false, "assoc_data_templates"); $header_items = array(__("Data Source Name"), __("Associated XML Field"), __("Use this Field")); print "<tr><td>"; html_header($header_items, 1, true, 'data_templates', 'left wp100'); $data_templates = db_fetch_assoc("select data_template.id, data_template.name from (data_template, data_template_rrd, graph_templates_item) where graph_templates_item.task_item_id=data_template_rrd.id and data_template_rrd.data_template_id=data_template.id and data_template_rrd.local_data_id=0 and graph_templates_item.local_graph_id=0 and graph_templates_item.graph_template_id=" . $snmp_query_item["graph_template_id"] . " group by data_template.id order by data_template.name"); $i = 0; if (sizeof($data_templates) > 0) { foreach ($data_templates as $data_template) { print " <tr class='rowHeader'> <td><span>Data Source Template - " . $data_template["name"] . "</span></td> <td></td> <td></td> </tr>"; $data_template_rrds = db_fetch_assoc("select data_template_rrd.id, data_template_rrd.data_source_name, snmp_query_graph_rrd.snmp_field_name, snmp_query_graph_rrd.snmp_query_graph_id from data_template_rrd left join snmp_query_graph_rrd on (snmp_query_graph_rrd.data_template_rrd_id=data_template_rrd.id and snmp_query_graph_rrd.snmp_query_graph_id=" . $_GET["id"] . " and snmp_query_graph_rrd.data_template_id=" . $data_template["id"] . ") where data_template_rrd.data_template_id=" . $data_template["id"] . " and data_template_rrd.local_data_id=0 order by data_template_rrd.data_source_name"); if (sizeof($data_template_rrds) > 0) { foreach ($data_template_rrds as $data_template_rrd) { if (empty($data_template_rrd["snmp_query_graph_id"])) { $old_value = ""; }else{ $old_value = CHECKED; } form_alternate_row_color("data_template_rrd" . $data_template_rrd["id"]); print "<td>\n"; print $data_template_rrd["data_source_name"]; print "</td>\n<td>"; $snmp_queries = get_data_query_array($_GET["snmp_query_id"]); $xml_outputs = array(); while (list($field_name, $field_array) = each($snmp_queries["fields"])) { if ($field_array["direction"] == "output") { $xml_outputs[$field_name] = $field_name . " (" . $field_array["name"] . ")";; } } form_dropdown("dsdt_" . $data_template["id"] . "_" . $data_template_rrd["id"] . "_snmp_field_output",$xml_outputs,"","",$data_template_rrd["snmp_field_name"],"",""); print "</td>\n<td align='right'>"; form_checkbox("dsdt_" . $data_template["id"] . "_" . $data_template_rrd["id"] . "_check", $old_value, "", "", "", get_request_var("id")); print "<br>"; print "</td>\n"; form_end_row(); } } } } print "</table></td></tr>"; /* end of html_header */ html_end_box(); html_start_box("<strong>" . __("Suggested Values: Data Source Templates") . "</strong>", "100", $colors["header"], 0, "center", ""); reset($data_templates); /* suggested values for data templates */ if (sizeof($data_templates) > 0) { foreach ($data_templates as $data_template) { $header_items = array(__("Data Source Template") . " - " . $data_template["name"], " "); print "<tr><td>"; html_header($header_items, 2, true, 'data_template_suggested_values_' . $data_template["id"], 'left wp100'); $suggested_values = db_fetch_assoc("select text, field_name, id from snmp_query_graph_rrd_sv where snmp_query_graph_id=" . $_GET["id"] . " and data_template_id=" . $data_template["id"] . " order by field_name,sequence"); if (sizeof($suggested_values) > 0) { foreach ($suggested_values as $suggested_value) { form_alternate_row_color($suggested_value["id"], true); ?> <td> <strong><?php print $suggested_value["field_name"];?></strong> </td> <td> <?php print $suggested_value["text"];?> </td> <td align="right"> <a href="<?php print htmlspecialchars("data_queries.php?action=item_remove_dssv&snmp_query_graph_id=" . $_GET["id"] . "&id=" . $suggested_value["id"] . "&snmp_query_id=" . $_GET["snmp_query_id"]. "&data_template_id=" . $data_template["id"]);?>"> <img class="buttonSmall" src="images/delete_icon.gif" alt="<?php print __("Delete");?>" align='right'> </a> </td> <?php form_end_row(); } } form_alternate_row_color("nodrag" . $data_template["id"], false, "nodrag nodrop"); ?> <td> <input type="text" name="svds_<?php print $data_template["id"];?>_field" size="15"> </td> <td> <input type="text" name="svds_<?php print $data_template["id"];?>_text" size="30"> </td> <td align="right"> <input type="submit" value="<?php print __("Add");?>" name="svds_<?php print $data_template["id"];?>_x"> </td> <?php form_end_row(); print "</table></td></tr>"; /* end of html_header */ } } html_end_box(false); /* we need a new javascript for each table */ if (sizeof($data_templates) > 0) { foreach ($data_templates as $data_template) { print(" <script type='text/javascript'> $('#data_template_suggested_values_" . $data_template["id"] . "').tableDnD({ onDrop: function(table, row) { $('#AjaxResult').load(\"lib/ajax/jquery.tablednd/data_query_dt_sv.ajax.php?dt_id=" . $data_template["id"] . ">_id=" . $_GET["id"] . "&\"+$.tableDnD.serialize()); } }); </script>\n"); } } /* suggested values for graphs templates */ $suggested_values = db_fetch_assoc("select text, field_name, id from snmp_query_graph_sv where snmp_query_graph_id=" . $_GET["id"] . " order by field_name,sequence"); html_start_box("<strong>" . __("Suggested Values: Graph Templates") . "</strong>", "100", $colors["header"], 0, "center", ""); $header_items = array(__("Graph Template") . " - " . db_fetch_cell("select name from graph_templates where id=" . $snmp_query_item["graph_template_id"]), " "); print "<tr><td>"; html_header($header_items, 2, true, 'graph_template_suggested_values_' . get_request_var("id"), 'left wp100'); if (sizeof($suggested_values) > 0) { foreach ($suggested_values as $suggested_value) { form_alternate_row_color($suggested_value["id"], true); ?> <td> <strong><?php print $suggested_value["field_name"];?></strong> </td> <td> <?php print $suggested_value["text"];?> </td> <td align="right"> <a href="<?php print htmlspecialchars("data_queries.php?action=item_remove_gsv&snmp_query_graph_id=" . $_GET["id"] . "&id=" . $suggested_value["id"] . "&snmp_query_id=" . $_GET["snmp_query_id"]);?>"> <img class="buttonSmall" src="images/delete_icon.gif" alt="<?php print __("Delete");?>" align='right'> </a> </td> <?php form_end_row(); } } form_alternate_row_color("nodrag", false, "nodrag nodrop"); ?> <td> <input type="text" name="svg_field" size="15"> </td> <td> <input type="text" name="svg_text" size="30"> </td> <td align="right"> <input type="submit" value="<?php print __("Add");?>" name="svg_x"> </td> <?php form_end_row(); print "</table></td></tr>"; html_end_box(); } ?> <script type="text/javascript"> $('#graph_template_suggested_values_<?php print get_request_var("id");?>').tableDnD({ onDrop: function(table, row) { alert("lib/ajax/jquery.tablednd/data_query_gt_sv.ajax.php?gt_id=<?php print $_GET["id"];?>&"+$.tableDnD.serialize()); $('#AjaxResult').load("lib/ajax/jquery.tablednd/data_query_gt_sv.ajax.php?gt_id=<?php print $_GET["id"];?>&"+$.tableDnD.serialize()); } }); </script> <?php form_save_button_alt("path!data_queries.php|action!edit|id!" . get_request_var("snmp_query_id")); }