本文整理汇总了PHP中update_graph_title_cache函数的典型用法代码示例。如果您正苦于以下问题:PHP update_graph_title_cache函数的具体用法?PHP update_graph_title_cache怎么用?PHP update_graph_title_cache使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了update_graph_title_cache函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: form_actions
function form_actions() {
global $colors, $graph_actions;
/* if we are to save this form, instead of display it */
if (isset($_POST["selected_items"])) {
$selected_items = unserialize(stripslashes($_POST["selected_items"]));
if ($_POST["drp_action"] == "1") { /* delete */
for ($i=0;($i<count($selected_items));$i++) {
/* ================= input validation ================= */
input_validate_input_number($selected_items[$i]);
/* ==================================================== */
if (!isset($_POST["delete_type"])) { $_POST["delete_type"] = 1; }
switch ($_POST["delete_type"]) {
case '2': /* delete all data sources referenced by this graph */
$data_sources = db_fetch_assoc("SELECT " .
"data_template_data.local_data_id " .
"FROM " .
"(data_template_rrd, " .
"data_template_data, " .
"graph_templates_item) " .
"WHERE " .
"graph_templates_item.task_item_id=data_template_rrd.id " .
"AND data_template_rrd.local_data_id=data_template_data.local_data_id " .
"AND graph_templates_item.local_graph_id=" . $selected_items[$i] . " " .
"AND data_template_data.local_data_id > 0");
if (sizeof($data_sources) > 0) {
foreach ($data_sources as $data_source) {
api_data_source_remove($data_source["local_data_id"]);
}
}
break;
}
api_graph_remove($selected_items[$i]);
}
}elseif ($_POST["drp_action"] == "2") { /* change graph template */
for ($i=0;($i<count($selected_items));$i++) {
/* ================= input validation ================= */
input_validate_input_number($selected_items[$i]);
input_validate_input_number(get_request_var_post("graph_template_id"));
/* ==================================================== */
change_graph_template($selected_items[$i], $_POST["graph_template_id"], true);
}
}elseif ($_POST["drp_action"] == "3") { /* duplicate */
for ($i=0;($i<count($selected_items));$i++) {
/* ================= input validation ================= */
input_validate_input_number($selected_items[$i]);
/* ==================================================== */
duplicate_graph($selected_items[$i], 0, $_POST["title_format"]);
}
}elseif ($_POST["drp_action"] == "4") { /* graph -> graph template */
for ($i=0;($i<count($selected_items));$i++) {
/* ================= input validation ================= */
input_validate_input_number($selected_items[$i]);
/* ==================================================== */
graph_to_graph_template($selected_items[$i], $_POST["title_format"]);
}
}elseif (ereg("^tr_([0-9]+)$", $_POST["drp_action"], $matches)) { /* place on tree */
for ($i=0;($i<count($selected_items));$i++) {
/* ================= input validation ================= */
input_validate_input_number($selected_items[$i]);
input_validate_input_number(get_request_var_post("tree_id"));
input_validate_input_number(get_request_var_post("tree_item_id"));
/* ==================================================== */
api_tree_item_save(0, $_POST["tree_id"], TREE_ITEM_TYPE_GRAPH, $_POST["tree_item_id"], "", $selected_items[$i], read_graph_config_option("default_rra_id"), 0, 0, 0, false);
}
}elseif ($_POST["drp_action"] == "5") { /* change host */
for ($i=0;($i<count($selected_items));$i++) {
/* ================= input validation ================= */
input_validate_input_number($selected_items[$i]);
input_validate_input_number(get_request_var_post("host_id"));
/* ==================================================== */
db_execute("update graph_local set host_id=" . $_POST["host_id"] . " where id=" . $selected_items[$i]);
update_graph_title_cache($selected_items[$i]);
}
}elseif ($_POST["drp_action"] == "6") { /* reapply suggested naming */
for ($i=0;($i<count($selected_items));$i++) {
/* ================= input validation ================= */
input_validate_input_number($selected_items[$i]);
/* ==================================================== */
api_reapply_suggested_graph_title($selected_items[$i]);
update_graph_title_cache($selected_items[$i]);
}
}elseif ($_POST["drp_action"] == "7") { /* resize graphs */
for ($i=0;($i<count($selected_items));$i++) {
/* ================= input validation ================= */
input_validate_input_number($selected_items[$i]);
/* ==================================================== */
api_resize_graphs($selected_items[$i], $_POST["graph_width"], $_POST["graph_height"]);
//.........这里部分代码省略.........
示例2: update_graph_title_cache_from_host
function update_graph_title_cache_from_host($host_id) {
$graphs = db_fetch_assoc("select id from graph_local where host_id=$host_id");
if (sizeof($graphs) > 0) {
foreach ($graphs as $item) {
update_graph_title_cache($item["id"]);
}
}
}
示例3: update_graph_data_query_cache
function update_graph_data_query_cache($local_graph_id) {
$host_id = db_fetch_cell("select host_id from graph_local where id=$local_graph_id");
$field = data_query_field_list(db_fetch_cell("select
data_template_data.id
from (graph_templates_item,data_template_rrd,data_template_data)
where graph_templates_item.task_item_id=data_template_rrd.id
and data_template_rrd.local_data_id=data_template_data.local_data_id
and graph_templates_item.local_graph_id=$local_graph_id
limit 0,1"));
if (empty($field)) { return; }
$data_query_id = db_fetch_cell("select snmp_query_id from snmp_query_graph where id='" . $field["output_type"] . "'");
$index = data_query_index($field["index_type"], $field["index_value"], $host_id, $data_query_id);
if (($data_query_id != "0") && ($index != "")) {
db_execute("update graph_local set snmp_query_id='$data_query_id',snmp_index='$index' where id=$local_graph_id");
/* update graph title cache */
update_graph_title_cache($local_graph_id);
}
}
示例4: form_actions
function form_actions()
{
/* modify for multi user start */
if ($_SESSION["permission"] < ACCESS_ADMINISTRATOR) {
$rows = db_fetch_assoc("\r\n SELECT graph_local.id FROM graph_local \r\n INNER JOIN host ON graph_local.host_id = host.id\r\n INNER JOIN user_auth_perms ON host.id = user_auth_perms.item_id AND user_auth_perms.user_id = '" . $_SESSION["sess_user_id"] . "' AND user_auth_perms.type = '3'");
foreach ($rows as $row) {
$graphs[] = $row["id"];
}
}
/* modify for multi user end */
global $colors, $graph_actions;
/* if we are to save this form, instead of display it */
if (isset($_POST["selected_items"])) {
$selected_items = unserialize(stripslashes($_POST["selected_items"]));
/* modify for multi user start */
if ($_SESSION["permission"] < ACCESS_ADMINISTRATOR) {
for ($i = 0; $i < count($selected_items); $i++) {
if (!in_array($selected_items[$i], $graphs)) {
access_denied();
}
}
}
/* modify for multi user end */
if ($_POST["drp_action"] == "1") {
/* delete */
if (!isset($_POST["delete_type"])) {
$_POST["delete_type"] = 1;
}
for ($i = 0; $i < count($selected_items); $i++) {
/* ================= input validation ================= */
input_validate_input_number($selected_items[$i]);
/* ==================================================== */
}
switch ($_POST["delete_type"]) {
case '2':
/* delete all data sources referenced by this graph */
$data_sources = array_rekey(db_fetch_assoc("SELECT data_template_data.local_data_id\r\n\t\t\t\t\t\tFROM (data_template_rrd, data_template_data, graph_templates_item)\r\n\t\t\t\t\t\tWHERE graph_templates_item.task_item_id=data_template_rrd.id\r\n\t\t\t\t\t\tAND data_template_rrd.local_data_id=data_template_data.local_data_id\r\n\t\t\t\t\t\tAND " . array_to_sql_or($selected_items, "graph_templates_item.local_graph_id") . "\r\n\t\t\t\t\t\tAND data_template_data.local_data_id > 0"), "local_data_id", "local_data_id");
if (sizeof($data_sources)) {
api_data_source_remove_multi($data_sources);
api_plugin_hook_function('data_source_remove', $data_sources);
}
break;
}
api_graph_remove_multi($selected_items);
api_plugin_hook_function('graphs_remove', $selected_items);
} elseif ($_POST["drp_action"] == "2") {
/* change graph template */
input_validate_input_number(get_request_var_post("graph_template_id"));
for ($i = 0; $i < count($selected_items); $i++) {
/* ================= input validation ================= */
input_validate_input_number($selected_items[$i]);
/* ==================================================== */
change_graph_template($selected_items[$i], $_POST["graph_template_id"], true);
}
} elseif ($_POST["drp_action"] == "3") {
/* duplicate */
for ($i = 0; $i < count($selected_items); $i++) {
/* ================= input validation ================= */
input_validate_input_number($selected_items[$i]);
/* ==================================================== */
duplicate_graph($selected_items[$i], 0, $_POST["title_format"]);
}
} elseif ($_POST["drp_action"] == "4") {
/* graph -> graph template */
for ($i = 0; $i < count($selected_items); $i++) {
/* ================= input validation ================= */
input_validate_input_number($selected_items[$i]);
/* ==================================================== */
graph_to_graph_template($selected_items[$i], $_POST["title_format"]);
}
} elseif (preg_match("/^tr_([0-9]+)\$/", $_POST["drp_action"], $matches)) {
/* place on tree */
input_validate_input_number(get_request_var_post("tree_id"));
input_validate_input_number(get_request_var_post("tree_item_id"));
for ($i = 0; $i < count($selected_items); $i++) {
/* ================= input validation ================= */
input_validate_input_number($selected_items[$i]);
/* ==================================================== */
api_tree_item_save(0, $_POST["tree_id"], TREE_ITEM_TYPE_GRAPH, $_POST["tree_item_id"], "", $selected_items[$i], read_graph_config_option("default_rra_id"), 0, 0, 0, false);
}
} elseif ($_POST["drp_action"] == "5") {
/* change host */
input_validate_input_number(get_request_var_post("host_id"));
for ($i = 0; $i < count($selected_items); $i++) {
/* ================= input validation ================= */
input_validate_input_number($selected_items[$i]);
/* ==================================================== */
db_execute("update graph_local set host_id=" . $_POST["host_id"] . " where id=" . $selected_items[$i]);
update_graph_title_cache($selected_items[$i]);
}
} elseif ($_POST["drp_action"] == "6") {
/* reapply suggested naming */
for ($i = 0; $i < count($selected_items); $i++) {
/* ================= input validation ================= */
input_validate_input_number($selected_items[$i]);
/* ==================================================== */
api_reapply_suggested_graph_title($selected_items[$i]);
update_graph_title_cache($selected_items[$i]);
}
} elseif ($_POST["drp_action"] == "7") {
//.........这里部分代码省略.........
示例5: duplicate_graph
//.........这里部分代码省略.........
$graph_template_graph = db_fetch_row("select * from graph_templates_graph where local_graph_id=$_local_graph_id");
$graph_template_items = db_fetch_assoc("select * from graph_templates_item where local_graph_id=$_local_graph_id");
/* create new entry: graph_local */
$save["id"] = 0;
$save["graph_template_id"] = $graph_local["graph_template_id"];
$save["device_id"] = $graph_local["device_id"];
$save["snmp_query_id"] = $graph_local["snmp_query_id"];
$save["snmp_index"] = $graph_local["snmp_index"];
$local_graph_id = sql_save($save, "graph_local");
$graph_template_graph["title"] = str_replace(__("<graph_title>"), $graph_template_graph["title"], $graph_title);
}elseif (!empty($_graph_template_id)) {
$graph_template = db_fetch_row("select * from graph_templates where id=$_graph_template_id");
$graph_template_graph = db_fetch_row("select * from graph_templates_graph where graph_template_id=$_graph_template_id and local_graph_id=0");
$graph_template_items = db_fetch_assoc("select * from graph_templates_item where graph_template_id=$_graph_template_id and local_graph_id=0");
$graph_template_inputs = db_fetch_assoc("select * from graph_template_input where graph_template_id=$_graph_template_id");
/* create new entry: graph_templates */
$save["id"] = 0;
$save["hash"] = get_hash_graph_template(0);
$save["name"] = str_replace(__("<template_title>"), $graph_template["name"], $graph_title);
$graph_template_id = sql_save($save, "graph_templates");
}
unset($save);
$struct_graph = graph_form_list();
reset($struct_graph);
/* create new entry: graph_templates_graph */
$save["id"] = 0;
$save["local_graph_id"] = (isset($local_graph_id) ? $local_graph_id : 0);
$save["local_graph_template_graph_id"] = (isset($graph_template_graph["local_graph_template_graph_id"]) ? $graph_template_graph["local_graph_template_graph_id"] : 0);
$save["graph_template_id"] = (!empty($_local_graph_id) ? $graph_template_graph["graph_template_id"] : $graph_template_id);
$save["title_cache"] = $graph_template_graph["title_cache"];
reset($struct_graph);
while (list($field, $array) = each($struct_graph)) {
$save{$field} = $graph_template_graph{$field};
$save{"t_" . $field} = $graph_template_graph{"t_" . $field};
}
$graph_templates_graph_id = sql_save($save, "graph_templates_graph");
/* create new entry(s): graph_templates_item */
if (sizeof($graph_template_items) > 0) {
$struct_graph_item = graph_item_form_list();
foreach ($graph_template_items as $graph_template_item) {
unset($save);
reset($struct_graph_item);
$save["id"] = 0;
/* save a hash only for graph_template copy operations */
$save["hash"] = (!empty($_graph_template_id) ? get_hash_graph_template(0, "graph_template_item") : 0);
$save["local_graph_id"] = (isset($local_graph_id) ? $local_graph_id : 0);
$save["graph_template_id"] = (!empty($_local_graph_id) ? $graph_template_item["graph_template_id"] : $graph_template_id);
$save["local_graph_template_item_id"] = (isset($graph_template_item["local_graph_template_item_id"]) ? $graph_template_item["local_graph_template_item_id"] : 0);
while (list($field, $array) = each($struct_graph_item)) {
$save{$field} = $graph_template_item{$field};
}
$graph_item_mappings{$graph_template_item["id"]} = sql_save($save, "graph_templates_item");
}
}
if (!empty($_graph_template_id)) {
/* create new entry(s): graph_template_input (graph template only) */
if (sizeof($graph_template_inputs) > 0) {
foreach ($graph_template_inputs as $graph_template_input) {
unset($save);
$save["id"] = 0;
$save["graph_template_id"] = $graph_template_id;
$save["name"] = $graph_template_input["name"];
$save["description"] = $graph_template_input["description"];
$save["column_name"] = $graph_template_input["column_name"];
$save["hash"] = get_hash_graph_template(0, "graph_template_input");
$graph_template_input_id = sql_save($save, "graph_template_input");
$graph_template_input_defs = db_fetch_assoc("select * from graph_template_input_defs where graph_template_input_id=" . $graph_template_input["id"]);
/* create new entry(s): graph_template_input_defs (graph template only) */
if (sizeof($graph_template_input_defs) > 0) {
foreach ($graph_template_input_defs as $graph_template_input_def) {
db_execute("insert into graph_template_input_defs (graph_template_input_id,graph_template_item_id)
values ($graph_template_input_id," . $graph_item_mappings{$graph_template_input_def["graph_template_item_id"]} . ")");
}
}
}
}
}
if (!empty($_local_graph_id)) {
update_graph_title_cache($local_graph_id);
}
}
示例6: graph_update
function graph_update ($id, $graphTitle) {
if ($graphTitle != "") {
db_execute("UPDATE graph_templates_graph
SET title=\"$graphTitle\"
WHERE local_graph_id=" . $id);
update_graph_title_cache($id);
echo __("Updated graph-id: (%d)", $id) . "\n";
}
}
示例7: update_graph_title_cache_from_host
function update_graph_title_cache_from_host($host_id)
{
$graphs = db_fetch_assoc_prepared('SELECT id FROM graph_local WHERE host_id = ?', array($host_id));
if (sizeof($graphs) > 0) {
foreach ($graphs as $item) {
update_graph_title_cache($item['id']);
}
}
}
示例8: create_complete_graph_from_template
function create_complete_graph_from_template($graph_template_id, $host_id, $snmp_query_array, &$suggested_values_array)
{
global $config;
include_once $config["library_path"] . "/data_query.php";
/* create the graph */
$save["id"] = 0;
$save["graph_template_id"] = $graph_template_id;
$save["host_id"] = $host_id;
$cache_array["local_graph_id"] = sql_save($save, "graph_local");
change_graph_template($cache_array["local_graph_id"], $graph_template_id, true);
if (is_array($snmp_query_array)) {
/* suggested values for snmp query code */
$suggested_values = db_fetch_assoc("select text,field_name from snmp_query_graph_sv where snmp_query_graph_id=" . $snmp_query_array["snmp_query_graph_id"] . " order by sequence");
if (sizeof($suggested_values) > 0) {
foreach ($suggested_values as $suggested_value) {
/* once we find a match; don't try to find more */
if (!isset($suggested_values_graph[$graph_template_id][$suggested_value["field_name"]])) {
$subs_string = substitute_snmp_query_data($suggested_value["text"], $host_id, $snmp_query_array["snmp_query_id"], $snmp_query_array["snmp_index"], read_config_option("max_data_query_field_length"));
/* if there are no '|' characters, all of the substitutions were successful */
if (!strstr($subs_string, "|query")) {
db_execute("update graph_templates_graph set " . $suggested_value["field_name"] . "='" . addslashes($suggested_value["text"]) . "' where local_graph_id=" . $cache_array["local_graph_id"]);
/* once we find a working value, stop */
$suggested_values_graph[$graph_template_id][$suggested_value["field_name"]] = true;
}
}
}
}
}
/* suggested values: graph */
if (isset($suggested_values_array[$graph_template_id]["graph_template"])) {
while (list($field_name, $field_value) = each($suggested_values_array[$graph_template_id]["graph_template"])) {
db_execute("update graph_templates_graph set {$field_name}='{$field_value}' where local_graph_id=" . $cache_array["local_graph_id"]);
}
}
/* suggested values: graph item */
if (isset($suggested_values_array[$graph_template_id]["graph_template_item"])) {
while (list($graph_template_item_id, $field_array) = each($suggested_values_array[$graph_template_id]["graph_template_item"])) {
while (list($field_name, $field_value) = each($field_array)) {
$graph_item_id = db_fetch_cell("select id from graph_templates_item where local_graph_template_item_id={$graph_template_item_id} and local_graph_id=" . $cache_array["local_graph_id"]);
db_execute("update graph_templates_item set {$field_name}='{$field_value}' where id={$graph_item_id}");
}
}
}
update_graph_title_cache($cache_array["local_graph_id"]);
/* create each data source */
$data_templates = db_fetch_assoc("select\n\t\tdata_template.id,\n\t\tdata_template.name,\n\t\tdata_template_rrd.data_source_name\n\t\tfrom (data_template, data_template_rrd, graph_templates_item)\n\t\twhere graph_templates_item.task_item_id=data_template_rrd.id\n\t\tand data_template_rrd.data_template_id=data_template.id\n\t\tand data_template_rrd.local_data_id=0\n\t\tand graph_templates_item.local_graph_id=0\n\t\tand graph_templates_item.graph_template_id=" . $graph_template_id . "\n\t\tgroup by data_template.id\n\t\torder by data_template.name");
if (sizeof($data_templates) > 0) {
foreach ($data_templates as $data_template) {
unset($save);
$save["id"] = 0;
$save["data_template_id"] = $data_template["id"];
$save["host_id"] = $host_id;
$cache_array["local_data_id"][$data_template["id"]] = sql_save($save, "data_local");
change_data_template($cache_array["local_data_id"][$data_template["id"]], $data_template["id"]);
$data_template_data_id = db_fetch_cell("select id from data_template_data where local_data_id=" . $cache_array["local_data_id"][$data_template["id"]]);
if (is_array($snmp_query_array)) {
/* suggested values for snmp query code */
$suggested_values = db_fetch_assoc("select text,field_name from snmp_query_graph_rrd_sv where snmp_query_graph_id=" . $snmp_query_array["snmp_query_graph_id"] . " and data_template_id=" . $data_template["id"] . " order by sequence");
if (sizeof($suggested_values) > 0) {
foreach ($suggested_values as $suggested_value) {
/* once we find a match; don't try to find more */
if (!isset($suggested_values_ds[$data_template["id"]][$suggested_value["field_name"]])) {
$subs_string = substitute_snmp_query_data($suggested_value["text"], $host_id, $snmp_query_array["snmp_query_id"], $snmp_query_array["snmp_index"], read_config_option("max_data_query_field_length"));
/* if there are no '|' characters, all of the substitutions were successful */
if (!strstr($subs_string, "|query")) {
if (sizeof(db_fetch_row("show columns from data_template_data like '" . $suggested_value["field_name"] . "'"))) {
db_execute("update data_template_data set " . $suggested_value["field_name"] . "='" . addslashes($suggested_value["text"]) . "' where local_data_id=" . $cache_array["local_data_id"][$data_template["id"]]);
}
/* once we find a working value, stop */
$suggested_values_ds[$data_template["id"]][$suggested_value["field_name"]] = true;
if (sizeof(db_fetch_row("show columns from data_template_rrd like '" . $suggested_value["field_name"] . "'")) && !substr_count($subs_string, "|")) {
db_execute("update data_template_rrd set " . $suggested_value["field_name"] . "='" . $subs_string . "' where local_data_id=" . $cache_array["local_data_id"][$data_template["id"]]);
}
}
}
}
}
}
if (is_array($snmp_query_array)) {
$data_input_field = array_rekey(db_fetch_assoc("select\n\t\t\t\tdata_input_fields.id,\n\t\t\t\tdata_input_fields.type_code\n\t\t\t\tfrom (snmp_query,data_input,data_input_fields)\n\t\t\t\twhere snmp_query.data_input_id=data_input.id\n\t\t\t\tand data_input.id=data_input_fields.data_input_id\n\t\t\t\tand (data_input_fields.type_code='index_type' or data_input_fields.type_code='index_value' or data_input_fields.type_code='output_type')\n\t\t\t\tand snmp_query.id=" . $snmp_query_array["snmp_query_id"]), "type_code", "id");
$snmp_cache_value = db_fetch_cell("select field_value from host_snmp_cache where host_id='{$host_id}' and snmp_query_id='" . $snmp_query_array["snmp_query_id"] . "' and field_name='" . $snmp_query_array["snmp_index_on"] . "' and snmp_index='" . $snmp_query_array["snmp_index"] . "'");
/* save the value to index on (ie. ifindex, ifip, etc) */
db_execute("replace into data_input_data (data_input_field_id,data_template_data_id,t_value,value) values (" . $data_input_field["index_type"] . ",{$data_template_data_id},'','" . $snmp_query_array["snmp_index_on"] . "')");
/* save the actual value (ie. 3, 192.168.1.101, etc) */
db_execute("replace into data_input_data (data_input_field_id,data_template_data_id,t_value,value) values (" . $data_input_field["index_value"] . ",{$data_template_data_id},'','" . addslashes($snmp_cache_value) . "')");
/* set the expected output type (ie. bytes, errors, packets) */
db_execute("replace into data_input_data (data_input_field_id,data_template_data_id,t_value,value) values (" . $data_input_field["output_type"] . ",{$data_template_data_id},'','" . $snmp_query_array["snmp_query_graph_id"] . "')");
/* now that we have put data into the 'data_input_data' table, update the snmp cache for ds's */
update_data_source_data_query_cache($cache_array["local_data_id"][$data_template["id"]]);
}
/* suggested values: data source */
if (isset($suggested_values_array[$graph_template_id]["data_template"][$data_template["id"]])) {
reset($suggested_values_array[$graph_template_id]["data_template"][$data_template["id"]]);
while (list($field_name, $field_value) = each($suggested_values_array[$graph_template_id]["data_template"][$data_template["id"]])) {
db_execute("update data_template_data set {$field_name}='{$field_value}' where local_data_id=" . $cache_array["local_data_id"][$data_template["id"]]);
}
}
/* suggested values: data source item */
if (isset($suggested_values_array[$graph_template_id]["data_template_item"])) {
reset($suggested_values_array[$graph_template_id]["data_template_item"]);
//.........这里部分代码省略.........
示例9: display_help
print "ERROR: You must specify either a host_id or 'All' to proceed.\n";
display_help();
exit;
}
$graph_list = db_fetch_assoc("SELECT\n\tgraph_templates_graph.id,\n\tgraph_templates_graph.local_graph_id,\n\tgraph_templates_graph.height,\n\tgraph_templates_graph.width,\n\tgraph_templates_graph.title_cache,\n\tgraph_templates.name,\n\tgraph_local.host_id\n\tFROM (graph_local,graph_templates_graph)\n\tLEFT JOIN graph_templates ON (graph_local.graph_template_id=graph_templates.id)\n\tWHERE graph_local.id=graph_templates_graph.local_graph_id\n\t{$sql_where}");
/* issue warnings and start message if applicable */
print "WARNING: Do not interrupt this script. Interrupting during rename can cause issues\n";
debug("There are '" . sizeof($graph_list) . "' Graphs to rename");
$i = 1;
foreach ($graph_list as $graph) {
if (!$debug) {
print ".";
}
debug("Graph Name '" . $graph["title_cache"] . "' starting");
api_reapply_suggested_graph_title($graph["local_graph_id"]);
update_graph_title_cache($graph["local_graph_id"]);
debug("Graph Rename Done for Graph '" . $graph["title_cache"] . "'");
$i++;
}
/* display_help - displays the usage of the function */
function display_help()
{
$version = db_fetch_cell('SELECT cacti FROM version');
echo "Reapply Graph Names Utility, Version {$version}, " . COPYRIGHT_YEARS . "\n\n";
echo "usage: poller_graphs_reapply_names.php -id=[host_id|All][host_id1|host_id2|...] [-s=[search_string] [-d] [-h] [--help] [-v] [--version]\n\n";
echo "-id=host_id - The host_id or 'All' or a pipe delimited list of host_id's\n";
echo "-s=search_str - A graph template name or graph title to search for\n";
echo "-d - Display verbose output during execution\n";
echo "-v --version - Display this help message\n";
echo "-h --help - Display this help message\n";
}
示例10: update_graph_data_query_cache
function update_graph_data_query_cache($local_graph_id)
{
$host_id = db_fetch_cell("SELECT host_id FROM graph_local WHERE id={$local_graph_id}");
$field = data_query_field_list(db_fetch_cell("select\n\t\tdata_template_data.id\n\t\tfrom (graph_templates_item,data_template_rrd,data_template_data)\n\t\twhere graph_templates_item.task_item_id=data_template_rrd.id\n\t\tand data_template_rrd.local_data_id=data_template_data.local_data_id\n\t\tand graph_templates_item.local_graph_id={$local_graph_id}\n\t\tlimit 0,1"));
if (empty($field)) {
return;
}
$data_query_id = db_fetch_cell("SELECT snmp_query_id FROM snmp_query_graph WHERE id='" . $field["output_type"] . "'");
$index = data_query_index($field["index_type"], $field["index_value"], $host_id, $data_query_id);
if ($data_query_id != "0" && $index != "") {
db_execute("UPDATE graph_local SET snmp_query_id='{$data_query_id}',snmp_index='{$index}' WHERE id={$local_graph_id}");
/* update graph title cache */
update_graph_title_cache($local_graph_id);
}
}
示例11: createDQGraph
function createDQGraph($snmp_query_array, $graphTitle, $force) {
/* is this data query already associated (independent of the reindex method) */
$exists_already = db_fetch_cell("SELECT COUNT(device_id) FROM device_snmp_query WHERE device_id=" . $snmp_query_array["device_id"] . " AND snmp_query_id=" . $snmp_query_array["snmp_query_id"]);
if ((isset($exists_already)) &&
($exists_already > 0)) {
/* yes: do nothing, everything's fine */
}else{
db_execute("REPLACE INTO device_snmp_query (device_id,snmp_query_id,reindex_method) " .
"VALUES (" .
$snmp_query_array["device_id"] . "," .
$snmp_query_array["snmp_query_id"] . "," .
$snmp_query_array["reindex_method"] .
")");
/* recache snmp data, this is time consuming,
* but should happen only once even if multiple graphs
* are added for the same data query
* because we checked above, if dq was already associated */
run_data_query($snmp_query_array["device_id"], $snmp_query_array["snmp_query_id"]);
}
$snmp_query_array["snmp_index_on"] = get_best_data_query_index_type($snmp_query_array["device_id"], $snmp_query_array["snmp_query_id"]);
$snmp_indexes = db_fetch_assoc("SELECT snmp_index " .
"FROM device_snmp_cache " .
"WHERE device_id=" . $snmp_query_array["device_id"] . " " .
"AND snmp_query_id=" . $snmp_query_array["snmp_query_id"] . " " .
"AND field_name='" . $snmp_query_array["snmp_field"] . "' " .
"AND field_value='" . $snmp_query_array["snmp_value"] . "'");
if (sizeof($snmp_indexes)) {
foreach ($snmp_indexes as $snmp_index) {
$snmp_query_array["snmp_index"] = $snmp_index["snmp_index"];
$existsAlready = db_fetch_cell("SELECT id " .
"FROM graph_local " .
"WHERE graph_template_id=" . $snmp_query_array["graph_template_id"] . " " .
"AND device_id=" . $snmp_query_array["device_id"] . " " .
"AND snmp_query_id=" . $snmp_query_array["snmp_query_id"] . " " .
"AND snmp_index='" . $snmp_query_array["snmp_index"] . "'");
if (isset($existsAlready) && $existsAlready > 0) {
$dataSourceId = db_fetch_cell("SELECT
data_template_rrd.local_data_id
FROM graph_templates_item, data_template_rrd
WHERE graph_templates_item.local_graph_id = " . $existsAlready . "
AND graph_templates_item.task_item_id = data_template_rrd.id
LIMIT 1");
echo __("NOTE: Not Adding Graph - this graph already exists - graph-id: (%d) - data-source-id: (%d)", $existsAlready, $dataSourceId) . "\n";
continue;
}
$empty = array(); /* Suggested Values are not been implemented */
$returnArray = create_complete_graph_from_template($snmp_query_array["graph_template_id"], $snmp_query_array["device_id"], $snmp_query_array, $empty);
if ($graphTitle != "") {
db_execute("UPDATE graph_templates_graph " .
"SET title='" . $graphTitle ."' " .
"WHERE local_graph_id=" . $returnArray["local_graph_id"]);
update_graph_title_cache($returnArray["local_graph_id"]);
}
$dataSourceId = db_fetch_cell("SELECT " .
"data_template_rrd.local_data_id " .
"FROM graph_templates_item, data_template_rrd " .
"WHERE graph_templates_item.local_graph_id = " . $returnArray["local_graph_id"] . " " .
"AND graph_templates_item.task_item_id = data_template_rrd.id " .
"LIMIT 1");
foreach($returnArray["local_data_id"] as $item) {
push_out_device($snmp_query_array["device_id"], $item);
$dataSourceId .= (strlen($dataSourceId) ? ", " : "") . $item;
}
echo __("Graph Added - graph-id: (%d) - data-source-ids: (%d)", $returnArray["local_graph_id"], $dataSourceId) . "\n";
}
}else{
echo __("ERROR: Could not find snmp-field %s (%d) for device-id %d (%s)", $snmp_query_array["snmp_field"], $snmp_query_array["snmp_value"], $snmp_query_array["device_id"], $devices[$snmp_query_array["device_id"]]["hostname"]) . "\n";
echo __("Try php -q graph_list.php --device-id=%s --list-snmp-fields", $snmp_query_array["device_id"]) . "\n";
exit(1);
}
}
示例12: create_complete_graph_from_template
function create_complete_graph_from_template($graph_template_id, $host_id, $snmp_query_array, &$suggested_values_array) {
global $config;
include_once($config["library_path"] . "/data_query.php");
/* create the graph */
$save["id"] = 0;
$save["graph_template_id"] = $graph_template_id;
$save["host_id"] = $host_id;
$cache_array["local_graph_id"] = sql_save($save, "graph_local");
change_graph_template($cache_array["local_graph_id"], $graph_template_id, true);
/* This next block is simply designed to find the best suggested template
* name for our new graph. The suggested values are held in
* snmp_query_graph_sv and the graph is updated in graph_templates_graph.
*/
if (is_array($snmp_query_array)) {
/* suggested values for snmp query code */
$suggested_values = db_fetch_assoc("select text,field_name from snmp_query_graph_sv where snmp_query_graph_id=" . $snmp_query_array["snmp_query_graph_id"] . " order by sequence");
if (sizeof($suggested_values) > 0) {
foreach ($suggested_values as $suggested_value) {
/* once we find a match; don't try to find more */
if (!isset($suggested_values_graph[$graph_template_id]{$suggested_value["field_name"]})) {
$subs_string = substitute_snmp_query_data($suggested_value["text"], $host_id, $snmp_query_array["snmp_query_id"], $snmp_query_array["snmp_index"], read_config_option("max_data_query_field_length"));
/* if there are no '|' characters, all of the substitutions were successful */
if (!strstr($subs_string, "|query")) {
db_execute("update graph_templates_graph set " . $suggested_value["field_name"] . "='" . addslashes($suggested_value["text"]) . "' where local_graph_id=" . $cache_array["local_graph_id"]);
/* once we find a working value, stop */
$suggested_values_graph[$graph_template_id]{$suggested_value["field_name"]} = true;
}
}
}
}
}
/* suggested values: graph */
if (isset($suggested_values_array[$graph_template_id]["graph_template"])) {
while (list($field_name, $field_value) = each($suggested_values_array[$graph_template_id]["graph_template"])) {
db_execute("update graph_templates_graph set $field_name='$field_value' where local_graph_id=" . $cache_array["local_graph_id"]);
}
}
/* suggested values: graph item */
if (isset($suggested_values_array[$graph_template_id]["graph_template_item"])) {
while (list($graph_template_item_id, $field_array) = each($suggested_values_array[$graph_template_id]["graph_template_item"])) {
while (list($field_name, $field_value) = each($field_array)) {
$graph_item_id = db_fetch_cell("select id from graph_templates_item where local_graph_template_item_id=$graph_template_item_id and local_graph_id=" . $cache_array["local_graph_id"]);
db_execute("update graph_templates_item set $field_name='$field_value' where id=$graph_item_id");
}
}
}
update_graph_title_cache($cache_array["local_graph_id"]);
/* create each data source */
/* FIXED: group by */
$data_templates = db_fetch_assoc("select
data_template.id,
data_template.name,
max(data_template_rrd.data_source_name) as data_source_name
from (data_template
cross join data_template_rrd
cross join 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=" . $graph_template_id . "
group by
data_template.id,
data_template.name
order by data_template.name");
if (sizeof($data_templates) > 0) {
foreach ($data_templates as $data_template) {
unset($save);
$save["id"] = 0;
$save["data_template_id"] = $data_template["id"];
$save["host_id"] = $host_id;
$cache_array["local_data_id"]{$data_template["id"]} = sql_save($save, "data_local");
change_data_template($cache_array["local_data_id"]{$data_template["id"]}, $data_template["id"]);
$data_template_data_id = db_fetch_cell("select id from data_template_data where local_data_id=" . $cache_array["local_data_id"]{$data_template["id"]});
if (is_array($snmp_query_array)) {
/* suggested values for snmp query code */
$suggested_values = db_fetch_assoc("select text,field_name from snmp_query_graph_rrd_sv where snmp_query_graph_id=" . $snmp_query_array["snmp_query_graph_id"] . " and data_template_id=" . $data_template["id"] . " order by sequence");
if (sizeof($suggested_values) > 0) {
foreach ($suggested_values as $suggested_value) {
/* once we find a match; don't try to find more */
if (!isset($suggested_values_ds{$data_template["id"]}{$suggested_value["field_name"]})) {
//.........这里部分代码省略.........
示例13: form_actions
function form_actions()
{
global $graph_actions;
/* ================= input validation ================= */
input_validate_input_regex(get_request_var_post('drp_action'), '^([a-zA-Z0-9_]+)$');
/* ==================================================== */
/* if we are to save this form, instead of display it */
if (isset($_POST['selected_items'])) {
$selected_items = unserialize(stripslashes($_POST['selected_items']));
if ($_POST['drp_action'] == '1') {
/* delete */
if (!isset($_POST['delete_type'])) {
$_POST['delete_type'] = 1;
}
for ($i = 0; $i < count($selected_items); $i++) {
/* ================= input validation ================= */
input_validate_input_number($selected_items[$i]);
/* ==================================================== */
}
switch ($_POST['delete_type']) {
case '2':
/* delete all data sources referenced by this graph */
$data_sources = array_rekey(db_fetch_assoc('SELECT data_template_data.local_data_id
FROM (data_template_rrd, data_template_data, graph_templates_item)
WHERE graph_templates_item.task_item_id=data_template_rrd.id
AND data_template_rrd.local_data_id=data_template_data.local_data_id
AND ' . array_to_sql_or($selected_items, 'graph_templates_item.local_graph_id') . '
AND data_template_data.local_data_id > 0'), 'local_data_id', 'local_data_id');
if (sizeof($data_sources)) {
api_data_source_remove_multi($data_sources);
api_plugin_hook_function('data_source_remove', $data_sources);
}
break;
}
api_graph_remove_multi($selected_items);
api_plugin_hook_function('graphs_remove', $selected_items);
} elseif ($_POST['drp_action'] == '2') {
/* change graph template */
input_validate_input_number(get_request_var_post('graph_template_id'));
for ($i = 0; $i < count($selected_items); $i++) {
/* ================= input validation ================= */
input_validate_input_number($selected_items[$i]);
/* ==================================================== */
change_graph_template($selected_items[$i], $_POST['graph_template_id'], true);
}
} elseif ($_POST['drp_action'] == '3') {
/* duplicate */
for ($i = 0; $i < count($selected_items); $i++) {
/* ================= input validation ================= */
input_validate_input_number($selected_items[$i]);
/* ==================================================== */
duplicate_graph($selected_items[$i], 0, $_POST['title_format']);
}
} elseif ($_POST['drp_action'] == '4') {
/* graph -> graph template */
for ($i = 0; $i < count($selected_items); $i++) {
/* ================= input validation ================= */
input_validate_input_number($selected_items[$i]);
/* ==================================================== */
graph_to_graph_template($selected_items[$i], $_POST['title_format']);
}
} elseif (preg_match('/^tr_([0-9]+)$/', $_POST['drp_action'], $matches)) {
/* place on tree */
input_validate_input_number(get_request_var_post('tree_id'));
input_validate_input_number(get_request_var_post('tree_item_id'));
for ($i = 0; $i < count($selected_items); $i++) {
/* ================= input validation ================= */
input_validate_input_number($selected_items[$i]);
/* ==================================================== */
api_tree_item_save(0, $_POST['tree_id'], TREE_ITEM_TYPE_GRAPH, $_POST['tree_item_id'], '', $selected_items[$i], read_graph_config_option('default_rra_id'), 0, 0, 0, false);
}
} elseif ($_POST['drp_action'] == '5') {
/* change host */
input_validate_input_number(get_request_var_post('host_id'));
for ($i = 0; $i < count($selected_items); $i++) {
/* ================= input validation ================= */
input_validate_input_number($selected_items[$i]);
/* ==================================================== */
db_execute_prepared('UPDATE graph_local SET host_id = ? WHERE id = ?', array($_POST['host_id'], $selected_items[$i]));
update_graph_title_cache($selected_items[$i]);
}
} elseif ($_POST['drp_action'] == '6') {
/* reapply suggested naming */
for ($i = 0; $i < count($selected_items); $i++) {
/* ================= input validation ================= */
input_validate_input_number($selected_items[$i]);
/* ==================================================== */
api_reapply_suggested_graph_title($selected_items[$i]);
update_graph_title_cache($selected_items[$i]);
}
} elseif ($_POST['drp_action'] == '7') {
/* resize graphs */
input_validate_input_number(get_request_var_post('graph_width'));
input_validate_input_number(get_request_var_post('graph_height'));
for ($i = 0; $i < count($selected_items); $i++) {
/* ================= input validation ================= */
input_validate_input_number($selected_items[$i]);
/* ==================================================== */
api_resize_graphs($selected_items[$i], $_POST['graph_width'], $_POST['graph_height']);
}
//.........这里部分代码省略.........
示例14: create_complete_graph_from_template
function create_complete_graph_from_template($graph_template_id, $host_id, $snmp_query_array, &$suggested_values_array)
{
global $config;
include_once $config["library_path"] . "/data_query.php";
/* create the graph */
$save["id"] = 0;
$save["graph_template_id"] = $graph_template_id;
$save["host_id"] = $host_id;
$cache_array["local_graph_id"] = sql_save($save, "graph_local");
change_graph_template($cache_array["local_graph_id"], $graph_template_id, true);
if (is_array($snmp_query_array)) {
/* suggested values for snmp query code */
$suggested_values = db_fetch_assoc("SELECT text,field_name FROM snmp_query_graph_sv WHERE snmp_query_graph_id=" . $snmp_query_array["snmp_query_graph_id"] . " ORDER BY sequence");
$suggested_values_graph = array();
if (sizeof($suggested_values) > 0) {
foreach ($suggested_values as $suggested_value) {
/* once we find a match; don't try to find more */
if (!isset($suggested_values_graph[$graph_template_id][$suggested_value["field_name"]])) {
$subs_string = substitute_snmp_query_data($suggested_value["text"], $host_id, $snmp_query_array["snmp_query_id"], $snmp_query_array["snmp_index"], read_config_option("max_data_query_field_length"));
/* if there are no '|' characters, all of the substitutions were successful */
if (!strstr($subs_string, "|query")) {
db_execute("UPDATE graph_templates_graph SET " . $suggested_value["field_name"] . "='" . $suggested_value["text"] . "' WHERE local_graph_id=" . $cache_array["local_graph_id"]);
/* once we find a working value, stop */
$suggested_values_graph[$graph_template_id][$suggested_value["field_name"]] = true;
}
}
}
}
}
/* suggested values: graph */
if (isset($suggested_values_array[$graph_template_id]["graph_template"])) {
while (list($field_name, $field_value) = each($suggested_values_array[$graph_template_id]["graph_template"])) {
db_execute("UPDATE graph_templates_graph SET {$field_name}='{$field_value}' WHERE local_graph_id=" . $cache_array["local_graph_id"]);
}
}
/* suggested values: graph item */
if (isset($suggested_values_array[$graph_template_id]["graph_template_item"])) {
while (list($graph_template_item_id, $field_array) = each($suggested_values_array[$graph_template_id]["graph_template_item"])) {
while (list($field_name, $field_value) = each($field_array)) {
$graph_item_id = db_fetch_cell("SELECT id FROM graph_templates_item WHERE local_graph_template_item_id={$graph_template_item_id} AND local_graph_id=" . $cache_array["local_graph_id"]);
db_execute("UPDATE graph_templates_item SET {$field_name}='{$field_value}' WHERE id={$graph_item_id}");
}
}
}
update_graph_title_cache($cache_array["local_graph_id"]);
/* create each data source */
$data_templates = db_fetch_assoc("SELECT\n\t\tdata_template.id,\n\t\tdata_template.name,\n\t\tdata_template_rrd.data_source_name\n\t\tFROM (data_template, data_template_rrd, graph_templates_item)\n\t\tWHERE graph_templates_item.task_item_id=data_template_rrd.id\n\t\tAND data_template_rrd.data_template_id=data_template.id\n\t\tAND data_template_rrd.local_data_id=0\n\t\tAND graph_templates_item.local_graph_id=0\n\t\tAND graph_templates_item.graph_template_id=" . $graph_template_id . "\n\t\tGROUP BY data_template.id\n\t\tORDER BY data_template.name");
if (sizeof($data_templates) > 0) {
foreach ($data_templates as $data_template) {
unset($save);
$save["id"] = 0;
$save["data_template_id"] = $data_template["id"];
$save["host_id"] = $host_id;
$cache_array["local_data_id"][$data_template["id"]] = sql_save($save, "data_local");
change_data_template($cache_array["local_data_id"][$data_template["id"]], $data_template["id"]);
$data_template_data_id = db_fetch_cell("SELECT id FROM data_template_data WHERE local_data_id=" . $cache_array["local_data_id"][$data_template["id"]]);
if (is_array($snmp_query_array)) {
/* suggested values for snmp query code */
$suggested_values = db_fetch_assoc("SELECT text,field_name FROM snmp_query_graph_rrd_sv WHERE snmp_query_graph_id=" . $snmp_query_array["snmp_query_graph_id"] . " AND data_template_id=" . $data_template["id"] . " ORDER BY sequence");
$suggested_values_ds = array();
if (sizeof($suggested_values) > 0) {
foreach ($suggested_values as $suggested_value) {
/* once we find a match; don't try to find more */
if (!isset($suggested_values_ds[$data_template["id"]][$suggested_value["field_name"]])) {
$subs_string = substitute_snmp_query_data($suggested_value["text"], $host_id, $snmp_query_array["snmp_query_id"], $snmp_query_array["snmp_index"], read_config_option("max_data_query_field_length"));
/* if there are no '|' characters, all of the substitutions were successful */
if (!strstr($subs_string, "|query")) {
if (sizeof(db_fetch_row("show columns FROM data_template_data LIKE '" . $suggested_value["field_name"] . "'"))) {
db_execute("UPDATE data_template_data SET " . $suggested_value["field_name"] . "='" . $suggested_value["text"] . "' WHERE local_data_id=" . $cache_array["local_data_id"][$data_template["id"]]);
}
/* once we find a working value, stop */
$suggested_values_ds[$data_template["id"]][$suggested_value["field_name"]] = true;
if (sizeof(db_fetch_row("show columns FROM data_template_rrd LIKE '" . $suggested_value["field_name"] . "'")) && !substr_count($subs_string, "|")) {
db_execute("UPDATE data_template_rrd SET " . $suggested_value["field_name"] . "='" . $suggested_value["text"] . "' WHERE local_data_id=" . $cache_array["local_data_id"][$data_template["id"]]);
}
}
}
}
}
}
if (is_array($snmp_query_array)) {
$data_input_field = array_rekey(db_fetch_assoc("SELECT\n\t\t\t\tdata_input_fields.id,\n\t\t\t\tdata_input_fields.type_code\n\t\t\t\tFROM (snmp_query,data_input,data_input_fields)\n\t\t\t\tWHERE snmp_query.data_input_id=data_input.id\n\t\t\t\tAND data_input.id=data_input_fields.data_input_id\n\t\t\t\tAND (data_input_fields.type_code='index_type'\n\t\t\t\t\tOR data_input_fields.type_code='index_value'\n\t\t\t\t\tOR data_input_fields.type_code='output_type')\n\t\t\t\tAND snmp_query.id=" . $snmp_query_array["snmp_query_id"]), "type_code", "id");
$snmp_cache_value = db_fetch_cell("SELECT field_value\n\t\t\t\tFROM host_snmp_cache\n\t\t\t\tWHERE host_id='{$host_id}'\n\t\t\t\tAND snmp_query_id='" . $snmp_query_array["snmp_query_id"] . "'\n\t\t\t\tAND field_name='" . $snmp_query_array["snmp_index_on"] . "'\n\t\t\t\tAND snmp_index='" . $snmp_query_array["snmp_index"] . "'");
/* save the value to index on (ie. ifindex, ifip, etc) */
db_execute("REPLACE INTO data_input_data\n\t\t\t\t(data_input_field_id, data_template_data_id, t_value, value)\n\t\t\t\tVALUES (" . $data_input_field["index_type"] . ", {$data_template_data_id}, '', '" . $snmp_query_array["snmp_index_on"] . "')");
/* save the actual value (ie. 3, 192.168.1.101, etc) */
db_execute("REPLACE INTO data_input_data\n\t\t\t\t(data_input_field_id,data_template_data_id,t_value,value)\n\t\t\t\tVALUES (" . $data_input_field["index_value"] . ",{$data_template_data_id},'','" . addslashes($snmp_cache_value) . "')");
/* set the expected output type (ie. bytes, errors, packets) */
db_execute("REPLACE INTO data_input_data\n\t\t\t\t(data_input_field_id,data_template_data_id,t_value,value)\n\t\t\t\tVALUES (" . $data_input_field["output_type"] . ",{$data_template_data_id},'','" . $snmp_query_array["snmp_query_graph_id"] . "')");
/* now that we have put data into the 'data_input_data' table, update the snmp cache for ds's */
update_data_source_data_query_cache($cache_array["local_data_id"][$data_template["id"]]);
}
/* suggested values: data source */
if (isset($suggested_values_array[$graph_template_id]["data_template"][$data_template["id"]])) {
reset($suggested_values_array[$graph_template_id]["data_template"][$data_template["id"]]);
while (list($field_name, $field_value) = each($suggested_values_array[$graph_template_id]["data_template"][$data_template["id"]])) {
db_execute("UPDATE data_template_data\n\t\t\t\t\tSET {$field_name}='{$field_value}'\n\t\t\t\t\tWHERE local_data_id=" . $cache_array["local_data_id"][$data_template["id"]]);
}
}
/* suggested values: data source item */
//.........这里部分代码省略.........
示例15: template
/** create_complete_graph_from_template - creates a graph and all necessary data sources based on a
graph template
@param int $graph_template_id - the id of the graph template that will be used to create the new graph
@param int $device_id - the id of the device to associate the new graph and data sources with
@param array $snmp_query_array - if the new data sources are to be based on a data query, specify the
necessary data query information here. it must contain the following information:
$snmp_query_array["snmp_query_id"]
$snmp_query_array["snmp_index_on"]
$snmp_query_array["snmp_query_graph_id"]
$snmp_query_array["snmp_index"]
@param array $suggested_values_array - any additional information to be included in the new graphs or
data sources must be included in the array. data is to be included in the following format:
$values["cg"][graph_template_id]["graph_template"][field_name] = $value // graph template
$values["cg"][graph_template_id]["graph_template_item"][graph_template_item_id][field_name] = $value // graph template item
$values["cg"][data_template_id]["data_template"][field_name] = $value // data template
$values["cg"][data_template_id]["data_template_item"][data_template_item_id][field_name] = $value // data template item
$values["sg"][data_query_id][graph_template_id]["graph_template"][field_name] = $value // graph template (w/ data query)
$values["sg"][data_query_id][graph_template_id]["graph_template_item"][graph_template_item_id][field_name] = $value // graph template item (w/ data query)
$values["sg"][data_query_id][data_template_id]["data_template"][field_name] = $value // data template (w/ data query)
$values["sg"][data_query_id][data_template_id]["data_template_item"][data_template_item_id][field_name] = $value // data template item (w/ data query) */
function create_complete_graph_from_template($graph_template_id, $device_id, $snmp_query_array, &$suggested_values_array) {
global $config;
include_once(CACTI_BASE_PATH . "/lib/data_query.php");
/* create the graph */
$save["id"] = 0;
$save["graph_template_id"] = $graph_template_id;
$save["device_id"] = $device_id;
$cache_array["local_graph_id"] = sql_save($save, "graph_local");
change_graph_template($cache_array["local_graph_id"], $graph_template_id, true);
if (is_array($snmp_query_array)) {
/* suggested values for snmp query code */
$suggested_values = db_fetch_assoc("select text,field_name from snmp_query_graph_sv where snmp_query_graph_id=" . $snmp_query_array["snmp_query_graph_id"] . " order by sequence");
if (sizeof($suggested_values) > 0) {
foreach ($suggested_values as $suggested_value) {
/* once we find a match; don't try to find more */
if (!isset($suggested_values_graph[$graph_template_id]{$suggested_value["field_name"]})) {
$subs_string = substitute_snmp_query_data($suggested_value["text"], $device_id, $snmp_query_array["snmp_query_id"], $snmp_query_array["snmp_index"], read_config_option("max_data_query_field_length"), false);
/* if there are no '|' characters, all of the substitutions were successful */
if (!strstr($subs_string, "|query")) {
db_execute("update graph_templates_graph set " . $suggested_value["field_name"] . "='" . addslashes($subs_string) . "' where local_graph_id=" . $cache_array["local_graph_id"]);
/* once we find a working value, stop */
$suggested_values_graph[$graph_template_id]{$suggested_value["field_name"]} = true;
}
}
}
}
}
/* suggested values: graph */
if (isset($suggested_values_array[$graph_template_id]["graph_template"])) {
while (list($field_name, $field_value) = each($suggested_values_array[$graph_template_id]["graph_template"])) {
db_execute("update graph_templates_graph set $field_name='$field_value' where local_graph_id=" . $cache_array["local_graph_id"]);
}
}
/* suggested values: graph item */
if (isset($suggested_values_array[$graph_template_id]["graph_template_item"])) {
while (list($graph_template_item_id, $field_array) = each($suggested_values_array[$graph_template_id]["graph_template_item"])) {
while (list($field_name, $field_value) = each($field_array)) {
$graph_item_id = db_fetch_cell("select id from graph_templates_item where local_graph_template_item_id=$graph_template_item_id and local_graph_id=" . $cache_array["local_graph_id"]);
db_execute("update graph_templates_item set $field_name='$field_value' where id=$graph_item_id");
}
}
}
update_graph_title_cache($cache_array["local_graph_id"]);
/* create each data source */
$data_templates = db_fetch_assoc("select
data_template.id,
data_template.name,
data_template_rrd.data_source_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=" . $graph_template_id . "
group by data_template.id
order by data_template.name");
if (sizeof($data_templates) > 0) {
foreach ($data_templates as $data_template) {
unset($save);
$save["id"] = 0;
$save["data_template_id"] = $data_template["id"];
$save["device_id"] = $device_id;
$cache_array["local_data_id"]{$data_template["id"]} = sql_save($save, "data_local");
change_data_template($cache_array["local_data_id"]{$data_template["id"]}, $data_template["id"]);
$data_template_data_id = db_fetch_cell("select id from data_template_data where local_data_id=" . $cache_array["local_data_id"]{$data_template["id"]});
//.........这里部分代码省略.........