function copy_graph_template_to_graph($graph_template_id, $host_id = 0, $data_query_id = 0, $data_query_index = "") { require_once(CACTI_BASE_PATH . "/lib/sys/variable.php"); require_once(CACTI_BASE_PATH . "/lib/graph/graph_update.php"); require_once(CACTI_BASE_PATH . "/lib/graph/graph_info.php"); require_once(CACTI_BASE_PATH . "/lib/graph_template/graph_template_info.php"); /* sanity check for $graph_template_id */ if ((!is_numeric($graph_template_id)) || (empty($graph_template_id))) { return false; } /* sanity check for $host_id */ if (!is_numeric($host_id)) { return false; } /* fetch field lists */ $fields_graph = api_graph_form_list(); $fields_graph_item = api_graph_item_form_list(); $graph_template = api_graph_template_get($graph_template_id); if (sizeof($graph_template) > 0) { /* copy down per-graph only fields */ $_fields = array(); $_fields["id"] = "0"; $_fields["graph_template_id"] = $graph_template_id; $_fields["host_id"] = $host_id; /* evaluate suggested values: data query-based graphs */ if ((!empty($data_query_id)) && ($data_query_index != "")) { $_fields["title"] = evaluate_data_query_suggested_values($host_id, $data_query_id, $data_query_index, "graph_template_suggested_value", "graph_template_id = " . sql_sanitize($graph_template_id) . " and field_name = 'title'", 0); /* evaluate suggested values: non-data query-based graphs */ }else{ $_fields["title"] = db_fetch_cell("select value from graph_template_suggested_value where graph_template_id = " . sql_sanitize($graph_template_id) . " and field_name = 'title' order by sequence limit 1"); } /* copy down all visible fields */ foreach (array_keys($fields_graph) as $field_name) { if (isset($graph_template[$field_name])) { $_fields[$field_name] = $graph_template[$field_name]; } } if (api_graph_save(0, $_fields, true)) { $graph_id = db_fetch_insert_id(); log_save("Cloning graph [ID#$graph_id] from template [ID#$graph_template_id]", SEV_DEBUG); /* move onto the graph items */ $graph_template_items = api_graph_template_item_list($graph_template_id); if (sizeof($graph_template_items) > 0) { foreach ($graph_template_items as $graph_template_item) { /* copy down per-graph only fields */ $_fields = array(); $_fields["id"] = "0"; $_fields["graph_id"] = $graph_id; $_fields["graph_template_item_id"] = $graph_template_item["id"]; /* this allows us to connect the dots later */ foreach (array_keys($fields_graph_item) as $field_name) { if (isset($graph_template_item[$field_name])) { $_fields[$field_name] = $graph_template_item[$field_name]; } } if (!api_graph_item_save(0, $_fields)) { log_save("Save error in api_graph_item_save()", SEV_ERROR); } } } return $graph_id; }else{ log_save("Save error in api_graph_save()", SEV_ERROR); return false; } } return false; }
function copy_data_template_to_data_source($data_template_id, $host_id = 0, $data_query_id = 0, $data_query_index = "") { require_once(CACTI_BASE_PATH . "/lib/sys/variable.php"); require_once(CACTI_BASE_PATH . "/lib/data_source/data_source_update.php"); require_once(CACTI_BASE_PATH . "/lib/data_source/data_source_info.php"); require_once(CACTI_BASE_PATH . "/lib/data_template/data_template_info.php"); /* sanity check for $data_template_id */ if ((!is_numeric($data_template_id)) || (empty($data_template_id))) { return false; } /* sanity check for $host_id */ if (!is_numeric($host_id)) { return false; } /* fetch field lists */ $fields_data_source = api_data_source_form_list(); $fields_data_source_item = api_data_source_item_form_list(); /* fetch information from that data template */ $data_template = api_data_template_get($data_template_id); $_data_template_input_fields = api_data_template_input_field_list($data_template_id); if (sizeof($data_template) > 0) { /* copy down per-data source only fields */ $_fields = array(); $_fields["id"] = "0"; $_fields["data_template_id"] = $data_template_id; $_fields["host_id"] = $host_id; /* evaluate suggested values: data query-based graphs */ if ((!empty($data_query_id)) && ($data_query_index != "")) { $_fields["name"] = evaluate_data_query_suggested_values($host_id, $data_query_id, $data_query_index, "data_template_suggested_value", "data_template_id = " . sql_sanitize($data_template_id) . " and field_name = 'name'", 0); /* evaluate suggested values: non-data query-based graphs */ }else{ $_fields["name"] = db_fetch_cell("select value from data_template_suggested_value where data_template_id = " . sql_sanitize($data_template_id) . " and field_name = 'name' order by sequence limit 1"); } /* copy down all visible fields */ foreach (array_keys($fields_data_source) as $field_name) { if (isset($data_template[$field_name])) { $_fields[$field_name] = $data_template[$field_name]; } } $data_source_id = api_data_source_save(0, $_fields, true); if ($data_source_id) { log_save("Cloning data source [ID#$data_source_id] from template [ID#$data_template_id]", SEV_DEBUG); /* reformat the $_data_template_input_fields to be more compatible with api_data_source_save() */ $data_template_input_fields = array(); foreach (array_keys($_data_template_input_fields) as $field_name) { $data_template_input_fields[$field_name] = $_data_template_input_fields[$field_name]["value"]; } /* handle data source custom fields */ api_data_source_fields_save($data_source_id, $data_template_input_fields); /* handle associated rra items */ api_data_source_data_template_rra_item_copy($data_source_id, $data_template_id); /* move onto the data source items */ $data_template_items = api_data_template_item_list($data_template_id); if (sizeof($data_template_items) > 0) { foreach ($data_template_items as $data_template_item) { /* copy down per-data source only fields */ $_fields = array(); $_fields["id"] = "0"; $_fields["data_source_id"] = $data_source_id; $_fields["data_template_item_id"] = $data_template_item["id"]; $_fields["field_input_value"] = $data_template_item["field_input_value"]; /* copy down all visible fields */ foreach (array_keys($fields_data_source_item) as $field_name) { $_fields[$field_name] = $data_template_item[$field_name]; } if (!api_data_source_item_save(0, $_fields)) { log_save("Save error in api_data_source_item_save()", SEV_ERROR); } } } return $data_source_id; }else{ log_save("Save error in api_data_source_save()", SEV_ERROR, FACIL_WEBUI); return false; } } return false; }