/** change_data_template - changes the data template for a particular data source to $data_template_id @param int $local_data_id - the id of the data source to change the data template for @param int $data_template_id - id the of the data template to change to. specify '0' for no data template */ function change_data_template($local_data_id, $data_template_id) { require_once(CACTI_BASE_PATH . "/lib/data_source/data_source_info.php"); /* always update tables to new data template (or no data template) */ db_execute("UPDATE data_local SET data_template_id=$data_template_id WHERE id=$local_data_id"); /* get data about the template and the data source */ $data = db_fetch_row("SELECT * FROM data_template_data WHERE local_data_id=$local_data_id"); $template_data = (($data_template_id == "0") ? $data : db_fetch_row("select * from data_template_data where local_data_id=0 and data_template_id=$data_template_id")); /* determine if we are here for the first time, or coming back */ if ((db_fetch_cell("select local_data_template_data_id from data_template_data where local_data_id=$local_data_id") == "0") || (db_fetch_cell("select local_data_template_data_id from data_template_data where local_data_id=$local_data_id") == "")) { $new_save = true; }else{ $new_save = false; } /* some basic field values that ALL data sources should have */ $save["id"] = $data["id"]; $save["local_data_template_data_id"] = $template_data["id"]; $save["local_data_id"] = $local_data_id; $save["data_template_id"] = $data_template_id; /* loop through the "templated field names" to find to the rest... */ $struct_data_source = data_source_form_list(); reset($struct_data_source); while (list($field_name, $field_array) = each($struct_data_source)) { if ((isset($data[$field_name])) || (isset($template_data[$field_name]))) { if ((!empty($template_data{"t_" . $field_name})) && ($new_save == false)) { $save[$field_name] = $data[$field_name]; }else{ $save[$field_name] = $template_data[$field_name]; } } } /* these fields should never be overwritten by the template */ $save["data_source_path"] = $data["data_source_path"]; $data_template_data_id = sql_save($save, "data_template_data"); $data_rrds_list = db_fetch_assoc("SELECT * FROM data_template_rrd WHERE local_data_id=$local_data_id"); $template_rrds_list = (($data_template_id == "0") ? $data_rrds_list : db_fetch_assoc("SELECT * FROM data_template_rrd WHERE local_data_id=0 AND data_template_id=$data_template_id")); if (sizeof($data_rrds_list) > 0) { /* this data source already has "child" items */ }else{ /* this data source does NOT have "child" items; loop through each item in the template * and write it exactly to each item */ if (sizeof($template_rrds_list) > 0) { $struct_data_source_item = data_source_item_form_list(); foreach ($template_rrds_list as $template_rrd) { unset($save); reset($struct_data_source_item); $save["id"] = 0; $save["local_data_template_rrd_id"] = $template_rrd["id"]; $save["local_data_id"] = $local_data_id; $save["data_template_id"] = $template_rrd["data_template_id"]; while (list($field_name, $field_array) = each($struct_data_source_item)) { $save[$field_name] = $template_rrd[$field_name]; } sql_save($save, "data_template_rrd"); } } } /* make sure to copy down script data (data_input_data) as well */ $data_input_data = db_fetch_assoc("SELECT data_input_field_id, t_value, value FROM data_input_data WHERE data_template_data_id=" . $template_data["id"]); /* this section is before most everthing else so we can determine if this is a new save, by checking the status of the 'local_data_template_data_id' column */ if (sizeof($data_input_data) > 0) { foreach ($data_input_data as $item) { /* always propagate on a new save, only propagate templated fields thereafter */ if (($new_save == true) || (empty($item["t_value"]))) { db_execute("REPLACE INTO data_input_data (data_input_field_id,data_template_data_id,t_value,value) VALUES (" . $item["data_input_field_id"] . ", $data_template_data_id, '" . $item["t_value"] . "', '" . $item["value"] . "')"); } } } /* make sure to update the 'data_template_data_rra' table for each data source */ $data_rra = db_fetch_assoc("SELECT rra_id FROM data_template_data_rra WHERE data_template_data_id=" . $template_data["id"]); db_execute("DELETE FROM data_template_data_rra WHERE data_template_data_id=$data_template_data_id"); if (sizeof($data_rra) > 0) { foreach ($data_rra as $rra) { db_execute("INSERT INTO data_template_data_rra (data_template_data_id,rra_id) VALUES ($data_template_data_id," . $rra["rra_id"] . ")"); } } }
function duplicate_data_source($_local_data_id, $_data_template_id, $data_source_title) { require_once(CACTI_BASE_PATH . "/lib/data_source/data_source_info.php"); if (!empty($_local_data_id)) { $data_local = db_fetch_row("select * from data_local where id=$_local_data_id"); $data_template_data = db_fetch_row("select * from data_template_data where local_data_id=$_local_data_id"); $data_template_rrds = db_fetch_assoc("select * from data_template_rrd where local_data_id=$_local_data_id"); $data_input_datas = db_fetch_assoc("select * from data_input_data where data_template_data_id=" . $data_template_data["id"]); $data_template_data_rras = db_fetch_assoc("select * from data_template_data_rra where data_template_data_id=" . $data_template_data["id"]); /* create new entry: data_local */ $save["id"] = 0; $save["data_template_id"] = $data_local["data_template_id"]; $save["device_id"] = $data_local["device_id"]; $save["snmp_query_id"] = $data_local["snmp_query_id"]; $save["snmp_index"] = $data_local["snmp_index"]; $local_data_id = sql_save($save, "data_local"); $data_template_data["name"] = str_replace(__("<ds_title>"), $data_template_data["name"], $data_source_title); }elseif (!empty($_data_template_id)) { $data_template = db_fetch_row("select * from data_template where id=$_data_template_id"); $data_template_data = db_fetch_row("select * from data_template_data where data_template_id=$_data_template_id and local_data_id=0"); $data_template_rrds = db_fetch_assoc("select * from data_template_rrd where data_template_id=$_data_template_id and local_data_id=0"); $data_input_datas = db_fetch_assoc("select * from data_input_data where data_template_data_id=" . $data_template_data["id"]); $data_template_data_rras = db_fetch_assoc("select * from data_template_data_rra where data_template_data_id=" . $data_template_data["id"]); /* create new entry: data_template */ $save["id"] = 0; $save["hash"] = get_hash_data_template(0); $save["name"] = str_replace(__("<template_title>"), $data_template["name"], $data_source_title); $data_template_id = sql_save($save, "data_template"); } unset($save); $struct_data_source = data_source_form_list(); unset($struct_data_source["rra_id"]); unset($struct_data_source["data_source_path"]); reset($struct_data_source); /* create new entry: data_template_data */ $save["id"] = 0; $save["local_data_id"] = (isset($local_data_id) ? $local_data_id : 0); $save["local_data_template_data_id"] = (isset($data_template_data["local_data_template_data_id"]) ? $data_template_data["local_data_template_data_id"] : 0); $save["data_template_id"] = (!empty($_local_data_id) ? $data_template_data["data_template_id"] : $data_template_id); $save["name_cache"] = $data_template_data["name_cache"]; while (list($field, $array) = each($struct_data_source)) { $save{$field} = $data_template_data{$field}; if ($array["flags"] != "ALWAYSTEMPLATE") { $save{"t_" . $field} = $data_template_data{"t_" . $field}; } } $data_template_data_id = sql_save($save, "data_template_data"); /* create new entry(s): data_template_rrd */ if (sizeof($data_template_rrds) > 0) { $struct_data_source_item = data_source_item_form_list(); foreach ($data_template_rrds as $data_template_rrd) { unset($save); reset($struct_data_source_item); $save["id"] = 0; $save["local_data_id"] = (isset($local_data_id) ? $local_data_id : 0); $save["local_data_template_rrd_id"] = (isset($data_template_rrd["local_data_template_rrd_id"]) ? $data_template_rrd["local_data_template_rrd_id"] : 0); $save["data_template_id"] = (!empty($_local_data_id) ? $data_template_rrd["data_template_id"] : $data_template_id); if ($save["local_data_id"] == 0) { $save["hash"] = get_hash_data_template($data_template_rrd["local_data_template_rrd_id"], "data_template_item"); } else { $save["hash"] = ''; } while (list($field, $array) = each($struct_data_source_item)) { $save{$field} = $data_template_rrd{$field}; } $data_template_rrd_id = sql_save($save, "data_template_rrd"); } } /* create new entry(s): data_input_data */ if (sizeof($data_input_datas) > 0) { foreach ($data_input_datas as $data_input_data) { db_execute("insert into data_input_data (data_input_field_id,data_template_data_id,t_value,value) values (" . $data_input_data["data_input_field_id"] . ",$data_template_data_id,'" . $data_input_data["t_value"] . "','" . $data_input_data["value"] . "')"); } } /* create new entry(s): data_template_data_rra */ if (sizeof($data_template_data_rras) > 0) { foreach ($data_template_data_rras as $data_template_data_rra) { db_execute("insert into data_template_data_rra (data_template_data_id,rra_id) values ($data_template_data_id, " . $data_template_data_rra["rra_id"] . ")"); } } if (!empty($_local_data_id)) { update_data_source_title_cache($local_data_id); } }
function data_source_edit() { global $colors; require_once(CACTI_BASE_PATH . "/lib/data_source/data_source_info.php"); /* ================= input validation ================= */ input_validate_input_number(get_request_var("id")); /* ==================================================== */ $use_data_template = true; $device_id = 0; if (!empty($_GET["id"])) { $data_local = db_fetch_row("select device_id,data_template_id from data_local where id='" . $_GET["id"] . "'"); $data = db_fetch_row("select * from data_template_data where local_data_id='" . $_GET["id"] . "'"); $data_source_items = db_fetch_assoc("select * from data_template_rrd where local_data_id=" . $_GET["id"] . " order by data_source_name"); if (isset($data_local["data_template_id"]) && $data_local["data_template_id"] >= 0) { $data_template = db_fetch_row("select id,name from data_template where id='" . $data_local["data_template_id"] . "'"); $data_template_data = db_fetch_row("select * from data_template_data where data_template_id='" . $data_local["data_template_id"] . "' and local_data_id=0"); } else { $_SESSION["sess_messages"] = 'Data Source "' . $_GET["id"] . '" does not exist.'; header ("Location: data_sources.php"); exit; } $header_label = __("[edit: ") . get_data_source_title($_GET["id"]) . "]"; if (empty($data_local["data_template_id"])) { $use_data_template = false; } }else{ $header_label = __("[new]"); $use_data_template = false; } /* handle debug mode */ if (isset($_GET["debug"])) { if (get_request_var("debug") == "0") { kill_session_var("ds_debug_mode"); }elseif (get_request_var("debug") == "1") { $_SESSION["ds_debug_mode"] = true; } } /* handle info mode */ if (isset($_GET["info"])) { if (get_request_var("info") == "0") { kill_session_var("ds_info_mode"); }elseif (get_request_var("info") == "1") { $_SESSION["ds_info_mode"] = true; } } include_once(CACTI_BASE_PATH . "/include/top_header.php"); $tip_text = ""; if (isset($data)) { $tip_text .= "<tr><td align=\\'right\\'><a class=\\'popup_item\\' id=\\'changeDSState\\' onClick=\\'changeDSState()\\' href=\\'#\\'>Unlock/Lock</a></td></tr>"; $tip_text .= "<tr><td align=\\'right\\'><a class=\\'popup_item\\' href=\\'" . htmlspecialchars('data_sources.php?action=data_source_toggle_status&id=' . (isset($_GET["id"]) ? $_GET["id"] : 0) . '&newstate=' . (($data["active"] == CHECKED) ? "0" : "1")) . "\\'>" . (($data["active"] == CHECKED) ? __("Disable") : __("Enable")) . "</a></td></tr>"; $tip_text .= "<tr><td align=\\'right\\'><a class=\\'popup_item\\' href=\\'" . htmlspecialchars('data_sources.php?action=data_source_edit&id=' . (isset($_GET["id"]) ? $_GET["id"] : 0) . '&debug=' . (isset($_SESSION["ds_debug_mode"]) ? "0" : "1")) . "\\'>" . __("Turn") . " <strong>" . (isset($_SESSION["ds_debug_mode"]) ? __("Off") : __(CHECKED)) . "</strong> " . __("Debug Mode") . "</a></td></tr>"; $tip_text .= "<tr><td align=\\'right\\'><a class=\\'popup_item\\' href=\\'" . htmlspecialchars('data_sources.php?action=data_source_edit&id=' . (isset($_GET["id"]) ? $_GET["id"] : 0) . '&info=' . (isset($_SESSION["ds_info_mode"]) ? "0" : "1")) . "\\'>" . __("Turn") . " <strong>" . (isset($_SESSION["ds_info_mode"]) ? __("Off") : __(CHECKED)) . "</strong> " . __("RRD Info Mode") . "</a><td></tr>"; } if (!empty($data_template["id"])) { $tip_text .= "<tr><td align=\\'right\\'><a class=\\'popup_item\\' href=\\'" . htmlspecialchars('data_templates.php?action=template_edit&id=' . (isset($data_template["id"]) ? $data_template["id"] : "0")) . "\\'>" . __("Edit Data Source Template") . "<br></a></td></td>"; } if (!empty($_GET["device_id"]) || !empty($data_local["device_id"])) { $tip_text .= "<tr><td align=\\'right\\'><a class=\\'popup_item\\' href=\\'" . htmlspecialchars('devices.php?action=edit&id=' . (isset($_GET["device_id"]) ? $_GET["device_id"] : $data_local["device_id"])) . "\\'>" . __("Edit Host") . "</a></td></tr>"; } if (!empty($_GET["id"])) { ?> <script type="text/javascript"> <!-- var disabled = true; $().ready(function() { $("input").attr("disabled","disabled") $("select").attr("disabled","disabled") $("#cancel").removeAttr("disabled"); }); function changeDSState() { if (disabled) { $("input").removeAttr("disabled"); $("select").removeAttr("disabled"); $("#cancel").removeAttr("disabled"); disabled = false; }else{ $("input").attr("disabled","disabled") $("select").attr("disabled","disabled") disabled = true; } } --> </script> <table width="100%" align="center"> <tr> <td class="textInfo" colspan="2" valign="top"> <?php print get_data_source_title(get_request_var("id"));?> </td> <td style="white-space:nowrap;" align="right" class="w1"><a id='tooltip' class='popup_anchor' href='#' onMouseOver="Tip('<?php print $tip_text;?>', BGCOLOR, '#EEEEEE', FIX, ['tooltip', -20, 0], STICKY, true, SHADOW, true, CLICKCLOSE, true, FADEOUT, 400, TEXTALIGN, 'right', BORDERCOLOR, '#F5F5F5')" onMouseOut="UnTip()">Data Source Options</a></td> </tr> </table> <?php } print "<form method='post' action='" . basename($_SERVER["PHP_SELF"]) . "' name='data_source_edit'>\n"; html_start_box("<strong>" . __("Data Source Template Selection") . "</strong> $header_label", "100", $colors["header"], 0, "center", ""); $header_items = array(__("Field"), __("Value")); print "<tr><td>"; html_header($header_items, 1, true, 'template'); $form_array = fields_data_source_form_list(); $form_array["data_template_id"]["id"] = (isset($data_template["id"]) ? $data_template["id"] : "0"); $form_array["data_template_id"]["name"] = db_fetch_cell("SELECT name FROM data_template WHERE id=" . $form_array["data_template_id"]["id"]); $form_array["device_id"]["id"] = (isset($_GET["device_id"]) ? $_GET["device_id"] : $data_local["device_id"]); $form_array["device_id"]["name"] = db_fetch_cell("SELECT CONCAT_WS('',description,' (',hostname,')') FROM device WHERE id=" . $form_array["device_id"]["id"]); draw_edit_form( array( "config" => array(), "fields" => $form_array ) ); print "</table></td></tr>"; /* end of html_header */ html_end_box(); form_hidden_box("hidden_data_template_id", (isset($data_template["id"]) ? $data_template["id"] : "0"), ""); form_hidden_box("hidden_device_id", (empty($data_local["device_id"]) ? (isset($_GET["device_id"]) ? $_GET["device_id"] : "0") : $data_local["device_id"]), ""); form_hidden_box("hidden_data_input_id", (isset($data["data_input_id"]) ? $data["data_input_id"] : "0"), ""); form_hidden_box("data_template_data_id", (isset($data) ? $data["id"] : "0"), ""); form_hidden_box("local_data_template_data_id", (isset($data) ? $data["local_data_template_data_id"] : "0"), ""); form_hidden_box("local_data_id", (isset($data) ? $data["local_data_id"] : "0"), ""); /* only display the "inputs" area if we are using a data template for this data source */ if (!empty($data["data_template_id"])) { html_start_box("<strong>" . __("Supplemental Data Source Template Data") . "</strong>", "100", $colors["header"], 0, "center", ""); draw_nontemplated_fields_data_source($data["data_template_id"], $data["local_data_id"], $data, "|field|", "<strong>" . __("Data Source Fields") . "</strong>", true, true, 0); draw_nontemplated_fields_data_source_item($data["data_template_id"], $data_source_items, "|field|_|id|", "<strong>" . __("Data Source Item Fields") . "</strong>", true, true, true, 0); draw_nontemplated_fields_custom_data($data["id"], "value_|id|", "<strong>" . __("Custom Data") . "</strong>", true, true, 0); html_end_box(); form_hidden_box("save_component_data","1",""); } if (((isset($_GET["id"])) || (isset($_GET["new"]))) && (empty($data["data_template_id"]))) { html_start_box("<strong>" . __("Data Source") . "</strong>", "100", $colors["header"], "3", "center", ""); $form_array = array(); $struct_data_source = data_source_form_list(); while (list($field_name, $field_array) = each($struct_data_source)) { $form_array += array($field_name => $struct_data_source[$field_name]); $form_array[$field_name]["value"] = (isset($data[$field_name]) ? $data[$field_name] : ""); $form_array[$field_name]["form_id"] = (empty($data["id"]) ? "0" : $data["id"]); if (!(($use_data_template == false) || (!empty($data_template_data{"t_" . $field_name})) || ($field_array["flags"] == "NOTEMPLATE"))) { $form_array[$field_name]["method"] = "template_" . $form_array[$field_name]["method"]; } } draw_edit_form( array( "config" => array("no_form_tag" => true), "fields" => inject_form_variables($form_array, (isset($data) ? $data : array())) ) ); html_end_box(); if (!empty($_GET["id"])) { html_start_box("<strong>" . __("Data Source Items") . "</strong>", "100", $colors["header"], "0", "center", "data_sources_items.php?action=item_edit&local_data_id=" . $_GET["id"], true); draw_data_template_items_list($data_source_items, "data_sources_items.php", "local_data_id=" . $_GET["id"], $use_data_template); html_end_box(false); } /* data source data goes here */ data_source_data_edit(); } /* display the debug mode box if the user wants it */ if ((isset($_SESSION["ds_debug_mode"])) && (isset($_GET["id"]))) { ?> <table width="100%" align="center"> <tr> <td> <span class="textInfo"><?php print __("Data Source Debug");?></span><br> <pre><?php print rrdtool_function_create(get_request_var("id"), true, array());?></pre> </td> </tr> </table> <?php } if ((isset($_SESSION["ds_info_mode"])) && (isset($_GET["id"]))) { $rrd_info = rrdtool_function_info($_GET["id"]); if (sizeof($rrd_info["rra"])) { $diff = rrdtool_cacti_compare($_GET["id"], $rrd_info); rrdtool_info2html($rrd_info, $diff); rrdtool_tune($rrd_info["filename"], $diff, true); } } if ((isset($_GET["id"])) || (isset($_GET["new"]))) { form_hidden_box("save_component_data_source","1",""); }else{ form_hidden_box("save_component_data_source_new","1",""); } form_save_button_alt(); include_once(CACTI_BASE_PATH . "/access/js/data_source_item.js"); include_once(CACTI_BASE_PATH . "/include/bottom_footer.php"); }
/** draw_nontemplated_fields_data_source - draws a form that consists of all non-templated data source fields associated with a particular data template @param int $data_template_id - the id of the data template to base the form after @param int $local_data_id - specify the id of the associated data source if it exists @param array $values_array - any values that should be included by default on the form @param string $field_name_format - all fields on the form will be named using the following format, the following variables can be used: |field| - the current field name @param string $header_title - the title to use on the header for this form @param bool $alternate_colors - whether to alternate colors for each row on the form or not @param bool $include_hidden_fields - should elements that are not to be displayed be represented as hidden html input elements or omitted altogether? @param int $snmp_query_graph_id - if this data template is part of a data query, specify the graph id here. this will be used to determine if a given field is using suggested values */ function draw_nontemplated_fields_data_source($data_template_id, $local_data_id, &$values_array, $field_name_format = "|field|", $header_title = "", $alternate_colors = true, $include_hidden_fields = true, $snmp_query_graph_id = 0) { global $colors; require_once(CACTI_BASE_PATH . "/lib/data_source/data_source_info.php"); $form_array = array(); $draw_any_items = false; /* fetch information about the data template */ $data_template = db_fetch_row("select * from data_template_data where data_template_id=$data_template_id and local_data_id=0"); $struct_data_source = data_source_form_list(); reset($struct_data_source); while (list($field_name, $field_array) = each($struct_data_source)) { /* find our field name */ $form_field_name = str_replace("|field|", $field_name, $field_name_format); $form_array += array($form_field_name => $struct_data_source[$field_name]); /* modifications to the default form array */ $form_array[$form_field_name]["value"] = (isset($values_array[$field_name]) ? $values_array[$field_name] : ""); $form_array[$form_field_name]["form_id"] = (isset($values_array["id"]) ? $values_array["id"] : "0"); unset($form_array[$form_field_name]["default"]); $current_flag = (isset($field_array["flags"]) ? $field_array["flags"] : ""); $current_template_flag = (isset($data_template{"t_" . $field_name}) ? $data_template{"t_" . $field_name} : CHECKED); if (($current_template_flag != CHECKED) || ($current_flag == "ALWAYSTEMPLATE")) { if ($include_hidden_fields == true) { $form_array[$form_field_name]["method"] = "hidden"; }else{ unset($form_array[$form_field_name]); } }elseif ((!empty($snmp_query_graph_id)) && (sizeof(db_fetch_assoc("select id from snmp_query_graph_rrd_sv where snmp_query_graph_id=$snmp_query_graph_id and data_template_id=$data_template_id and field_name='$field_name'")) > 0)) { if ($include_hidden_fields == true) { $form_array[$form_field_name]["method"] = "hidden"; }else{ unset($form_array[$form_field_name]); } }elseif ((empty($local_data_id)) && ($field_name == "data_source_path")) { if ($include_hidden_fields == true) { $form_array[$form_field_name]["method"] = "hidden"; }else{ unset($form_array[$form_field_name]); } }else{ if (($draw_any_items == false) && ($header_title != "")) { $header_items = array($header_title, ""); print "<tr><td>"; html_header($header_items, 1, true, 'template_data_source'); } $draw_any_items = true; } } /* setup form options */ if ($alternate_colors == true) { $form_config_array = array("no_form_tag" => true); }else{ $form_config_array = array("no_form_tag" => true, "force_row_color" => $colors["form_alternate1"]); } draw_edit_form( array( "config" => $form_config_array, "fields" => $form_array ) ); if ($draw_any_items) print "</table></td></tr>"; /* end of html_header */ return (isset($form_array) ? sizeof($form_array) : 0); }
function data_source_template_display_general($data_template, $header_label) { global $colors; require_once(CACTI_BASE_PATH . "/lib/data_source/data_source_info.php"); require_once(CACTI_BASE_PATH . "/lib/data_template/data_template_info.php"); # fetch all settings for this graph template if (isset($data_template["id"])) { $template_data = db_fetch_row("SELECT * FROM data_template_data WHERE data_template_id=" . $data_template["id"] . " AND local_data_id=0"); }else { $template_data = array(); } print "<form method='post' action='" . basename($_SERVER["PHP_SELF"]) . "' name='data_data_source_template_edit'>\n"; # the template header html_start_box("<strong>" . __("Data Source Template") . "</strong> $header_label", "100", $colors["header"], 0, "center", "", true); $header_items = array(__("Field"), __("Value")); print "<tr><td>"; html_header($header_items, 2, true, 'header_data_template'); draw_edit_form(array( "config" => array("no_form_tag" => true), "fields" => inject_form_variables(data_template_form_list(), (isset($data_template) ? $data_template : array()), (isset($template_data) ? $template_data : array())) )); print "</table></td></tr>"; /* end of html_header */ html_end_box(false); form_hidden_box("data_template_id", $template_data["data_template_id"], "0"); form_hidden_box("data_template_data_id", $template_data["id"], "0"); form_hidden_box("current_rrd", (isset($_GET["current_rrd"]) ? $_GET["current_rrd"] : "0"), "0"); form_hidden_box("save_component_template", 1, ""); html_start_box("<strong>" . __("Data Source") . "</strong>", "100", $colors["header"], 0, "center", "", true); draw_template_edit_form('header_data_source', data_source_form_list(), $template_data, false); html_end_box(); $i = 0; if (!empty($_GET["id"])) { /* get each INPUT field for this data input source */ $fields = db_fetch_assoc("SELECT * FROM data_input_fields WHERE data_input_id=" . $template_data["data_input_id"] . " AND input_output='in' ORDER BY sequence"); html_start_box("<strong>" . __("Custom Data") . "</strong> [data input: " . db_fetch_cell("SELECT name FROM data_input WHERE id=" . $template_data["data_input_id"]) . "]", "100", $colors["header"], 0, "center", "", true); $header_items = array(__("Field"), __("Value")); print "<tr><td>"; html_header($header_items, 2, true, 'data_source_custom_data'); /* loop through each field found */ if (sizeof($fields) > 0) { foreach ($fields as $field) { $data_input_data = db_fetch_row("SELECT t_value,value FROM data_input_data WHERE data_template_data_id=" . $template_data["id"] . " AND data_input_field_id=" . $field["id"]); if (sizeof($data_input_data) > 0) { $old_value = $data_input_data["value"]; }else{ $old_value = ""; } form_alternate_row_color("custom_data" . $field["id"]); ?> <td class='template_checkbox'> <strong><?php print $field["name"];?></strong><br> <?php form_checkbox("t_value_" . $field["data_name"], $data_input_data["t_value"], "<em>Use Per-Data Source Value (Ignore this Value)</em>", "", "", get_request_var("id"));?> </td> <td> <?php form_text_box("value_" . $field["data_name"],$old_value,"","");?> <?php if ((preg_match('/^' . VALID_HOST_FIELDS . '$/i', $field["type_code"])) && ($data_input_data["t_value"] == "")) { print "<br><em>Value will be derived from the device if this field is left empty.</em>\n"; } ?> </td> <?php form_end_row(); } }else{ print "<tr><td><em>" . __("No Input Fields for the Selected Data Input Source") . "</em></td></tr>"; } print "</table></td></tr>"; /* end of html_header */ html_end_box(false); } form_save_button_alt("url!data_templates.php"); }
function data_template_to_xml($data_template_id) { require_once(CACTI_BASE_PATH . "/lib/data_source/data_source_info.php"); $hash["data_template"] = get_hash_version("data_template") . get_hash_data_template($data_template_id); $xml_text = ""; $data_template = db_fetch_row("select id,name,description from data_template where id=$data_template_id"); $data_template_data = db_fetch_row("select * from data_template_data where data_template_id=$data_template_id and local_data_id=0"); $data_template_rrd = db_fetch_assoc("select * from data_template_rrd where data_template_id=$data_template_id and local_data_id=0"); $data_template_data_rra = db_fetch_assoc("select * from data_template_data_rra where data_template_data_id=" . $data_template_data["id"]); $data_input_data = db_fetch_assoc("select * from data_input_data where data_template_data_id=" . $data_template_data["id"]); if ((empty($data_template["id"])) || (empty($data_template_data["id"]))) { $err_msg = "Invalid data template."; return $err_msg; } $xml_text .= "<hash_" . $hash["data_template"] . ">\n"; $xml_text .= "\t<name>" . xml_character_encode($data_template["name"]) . "</name>\n"; $xml_text .= "\t<description>" . xml_character_encode($data_template["description"]) . "</description>\n\t<ds>\n"; /* XML Branch: <ds> */ $struct_data_source = data_source_form_list(); reset($struct_data_source); while (list($field_name, $field_array) = each($struct_data_source)) { if (isset($data_template_data{"t_" . $field_name})) { $xml_text .= "\t\t<t_$field_name>" . xml_character_encode($data_template_data{"t_" . $field_name}) . "</t_$field_name>\n"; } if (($field_name == "data_input_id") && (!empty($data_template_data{$field_name}))) { $xml_text .= "\t\t<$field_name>hash_" . get_hash_version("data_input_method") . get_hash_data_input($data_template_data{$field_name}) . "</$field_name>\n"; }else{ if (isset($data_template_data{$field_name})) { $xml_text .= "\t\t<$field_name>" . xml_character_encode($data_template_data{$field_name}) . "</$field_name>\n"; } } } $xml_text .= "\t\t<rra_items>"; $i = 0; if (sizeof($data_template_data_rra) > 0) { foreach ($data_template_data_rra as $item) { $xml_text .= "hash_" . get_hash_version("round_robin_archive") . get_hash_round_robin_archive($item["rra_id"]); if (($i+1) < sizeof($data_template_data_rra)) { $xml_text .= "|"; } $i++; } } $xml_text .= "</rra_items>\n"; $xml_text .= "\t</ds>\n"; /* XML Branch: <items> */ $xml_text .= "\t<items>\n"; $i = 0; if (sizeof($data_template_rrd) > 0) { foreach ($data_template_rrd as $item) { $hash["data_template_item"] = get_hash_version("data_template_item") . get_hash_data_template($item["id"], "data_template_item"); $xml_text .= "\t\t<hash_" . $hash["data_template_item"] . ">\n"; $struct_data_source_item = data_source_item_form_list(); reset($struct_data_source_item); while (list($field_name, $field_array) = each($struct_data_source_item)) { if (isset($item{"t_" . $field_name})) { $xml_text .= "\t\t\t<t_$field_name>" . xml_character_encode($item{"t_" . $field_name}) . "</t_$field_name>\n"; } if (($field_name == "data_input_field_id") && (!empty($item{$field_name}))) { $xml_text .= "\t\t\t<$field_name>hash_" . get_hash_version("data_input_field") . get_hash_data_input($item{$field_name}, "data_input_field") . "</$field_name>\n"; }else{ if (isset($item{$field_name})) { $xml_text .= "\t\t\t<$field_name>" . xml_character_encode($item{$field_name}) . "</$field_name>\n"; } } } $xml_text .= "\t\t</hash_" . $hash["data_template_item"] . ">\n"; $i++; } } $xml_text .= "\t</items>\n"; /* XML Branch: <data> */ $xml_text .= "\t<data>\n"; $i = 0; if (sizeof($data_input_data) > 0) { foreach ($data_input_data as $item) { $xml_text .= "\t\t<item_" . str_pad(strval($i), 3, "0", STR_PAD_LEFT) . ">\n"; $xml_text .= "\t\t\t<data_input_field_id>hash_" . get_hash_version("data_input_field") . get_hash_data_input($item{"data_input_field_id"}, "data_input_field") . "</data_input_field_id>\n"; $xml_text .= "\t\t\t<t_value>" . xml_character_encode($item{"t_value"}) . "</t_value>\n"; $xml_text .= "\t\t\t<value>" . xml_character_encode($item{"value"}) . "</value>\n"; $xml_text .= "\t\t</item_" . str_pad(strval($i), 3, "0", STR_PAD_LEFT) . ">\n"; $i++; } } $xml_text .= "\t</data>\n"; $xml_text .= "</hash_" . $hash["data_template"] . ">"; return $xml_text; }