346 lines
11 KiB
PHP
346 lines
11 KiB
PHP
<?php
|
|
|
|
// Pandora FMS - http://pandorafms.com
|
|
// ==================================================
|
|
// Copyright (c) 2005-2010 Artica Soluciones Tecnologicas
|
|
// Please see http://pandorafms.org for full contribution list
|
|
|
|
// This program is free software; you can redistribute it and/or
|
|
// modify it under the terms of the GNU Lesser General Public License
|
|
// as published by the Free Software Foundation; version 2
|
|
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
|
|
/**
|
|
* @package Include
|
|
* @subpackage folder_Functions
|
|
*/
|
|
require_once ('include/functions_graph.php');
|
|
function folder_get_folders(){
|
|
$folders = io_safe_output(db_get_all_rows_filter (
|
|
'tcontainer',
|
|
array (
|
|
'id_group' => array_keys(users_get_groups()),
|
|
'order' => 'parent, name'
|
|
)
|
|
));
|
|
|
|
$ordered_folders = array();
|
|
foreach ($folders as $folder) {
|
|
$ordered_folders[$folder['id_container']] = $folder;
|
|
}
|
|
|
|
return $ordered_folders;
|
|
}
|
|
|
|
function folder_get_folders_tree_recursive($folders) {
|
|
$return = array();
|
|
|
|
$tree = $folders;
|
|
foreach($folders as $key => $folder) {
|
|
if ($folder['id_container'] == 0) {
|
|
continue;
|
|
}
|
|
|
|
if(!in_array($folder['parent'], array_keys($folders))) {
|
|
$folder['parent'] = 0;
|
|
}
|
|
|
|
$tree[$folder['parent']]['hash_branch'] = 1;
|
|
$tree[$folder['parent']]['branch'][$key] = &$tree[$key];
|
|
}
|
|
|
|
if (isset($folders[0])) {
|
|
$tree = array($tree[0]);
|
|
}
|
|
else {
|
|
$tree = $tree[0]['branch'];
|
|
}
|
|
|
|
return $tree;
|
|
|
|
}
|
|
|
|
function folder_flatten_tree_folders($tree, $deep) {
|
|
foreach ($tree as $key => $folder) {
|
|
$return[$key] = $folder;
|
|
unset($return[$key]['branch']);
|
|
$return[$key]['deep'] = $deep;
|
|
|
|
if (!empty($folder['branch'])) {
|
|
$return = $return +
|
|
folder_flatten_tree_folders($folder['branch'], $deep + 1);
|
|
}
|
|
}
|
|
|
|
return $return;
|
|
}
|
|
|
|
function folder_get_select($folders_tree){
|
|
|
|
$fields = array();
|
|
|
|
foreach ($folders_tree as $folder_tree) {
|
|
$folderName = ui_print_truncate_text($folder_tree['name'], GENERIC_SIZE_TEXT, false, true, false);
|
|
|
|
$fields[$folder_tree['id_container']] = str_repeat(" ", $folder_tree['deep']) . $folderName;
|
|
}
|
|
return $fields;
|
|
}
|
|
|
|
function folder_togge_tree_folders($tree) {
|
|
$return=array();
|
|
foreach ($tree as $key => $folder) {
|
|
|
|
$folderName = ui_print_truncate_text($folder['name'], GENERIC_SIZE_TEXT, false, true, false);
|
|
$table = '';
|
|
|
|
// style='background: #f2f2f2;border: 1px solid #e2e2e2;margin-bottom: 4px'
|
|
if (!empty($folder['branch'])) {
|
|
$togge = $table. folder_togge_tree_folders($folder['branch']);
|
|
if ($folder['parent']=== '0'){
|
|
$return[$key] .= "<div id='$folderName'>" . ui_toggle_container($togge,$folderName, '', true, true, $folder['id_group'], $folder['id_container'],$folder['parent']) . "</div>";
|
|
} else {
|
|
$return[$key] .= "<div id='$folderName' style='margin-left:23px'>" . ui_toggle_container($togge,$folderName, '', true, true, $folder['id_group'], $folder['id_container'],$folder['parent']) . "</div>";
|
|
}
|
|
} else {
|
|
if ($folder['parent'] === '0'){
|
|
$return[$key] = "<div id='$folderName'>";
|
|
} else {
|
|
$return[$key] = "<div id='$folderName' style='margin-left:23px'>";
|
|
}
|
|
$return[$key] .= ui_toggle_container($table,$folderName, '', true, true, $folder['id_group'], $folder['id_container'],$folder['parent']);
|
|
$return[$key] .= "</div>";
|
|
}
|
|
}
|
|
$retorno = implode("", $return);
|
|
return $retorno;
|
|
}
|
|
|
|
function folder_table ($graphs){
|
|
global $config;
|
|
$report_r = check_acl ($config['id_user'], 0, "RR");
|
|
$report_w = check_acl ($config['id_user'], 0, "RW");
|
|
$report_m = check_acl ($config['id_user'], 0, "RM");
|
|
$access = ($report_r == true) ? 'RR' : (($report_w == true) ? 'RW' : (($report_m == true) ? 'RM' : 'RR'));
|
|
|
|
$table = new stdClass();
|
|
$table->width = '100%';
|
|
$table->class = 'databox data';
|
|
$table->align = array ();
|
|
$table->head = array ();
|
|
$table->head[0] = __('Graph name');
|
|
$table->head[1] = __('Description');
|
|
$table->head[2] = __('Number of Graphs');
|
|
$table->head[3] = __('Group');
|
|
$table->size[0] = '30%';
|
|
$table->size[2] = '200px';
|
|
$table->size[3] = '200px';
|
|
$table->align[2] = 'left';
|
|
$table->align[3] = 'left';
|
|
if ($report_w || $report_m) {
|
|
$table->align[4] = 'left';
|
|
$table->head[4] = __('Op.') .
|
|
html_print_checkbox('all_delete', 0, false, true, false,
|
|
'check_all_checkboxes();');
|
|
$table->size[4] = '90px';
|
|
}
|
|
$table->data = array ();
|
|
|
|
// $result_graphs = array_slice($graphs, $offset, $config['block_size']);
|
|
|
|
foreach ($graphs as $graph) {
|
|
$data = array ();
|
|
|
|
$data[0] = '<a href="index.php?sec=reporting&sec2=operation/reporting/graph_viewer&view_graph=1&id='.
|
|
$graph['id_graph'].'">' . ui_print_truncate_text($graph['name'], 70) . '</a>';
|
|
|
|
$data[1] = ui_print_truncate_text($graph["description"], 70);
|
|
|
|
$data[2] = $graph["graphs_count"];
|
|
$data[3] = ui_print_group_icon($graph['id_group'],true);
|
|
|
|
if (($report_w || $report_m) && users_can_manage_group_all($access)) {
|
|
$data[4] = '<a href="index.php?sec=reporting&sec2=godmode/reporting/graph_builder&edit_graph=1&id='.
|
|
$graph['id_graph'].'">'.html_print_image("images/config.png", true).'</a>';
|
|
|
|
$data[4] .= ' ';
|
|
|
|
$data[4] .= '<a href="index.php?sec=reporting&sec2=godmode/reporting/graphs&delete_graph=1&id='
|
|
.$graph['id_graph'].'" onClick="if (!confirm(\''.__('Are you sure?').'\'))
|
|
return false;">' . html_print_image("images/cross.png", true, array('alt' => __('Delete'), 'title' => __('Delete'))) . '</a>' .
|
|
html_print_checkbox_extended ('delete_multiple[]', $graph['id_graph'], false, false, '', 'class="check_delete" style="margin-left:2px;"', true);
|
|
}
|
|
|
|
array_push ($table->data, $data);
|
|
}
|
|
return $table;
|
|
}
|
|
|
|
function folder_get_all_child_container($parent) {
|
|
|
|
$child_folders = db_get_all_rows_filter('tcontainer',
|
|
array('parent' => $parent));
|
|
|
|
return $child_folders;
|
|
}
|
|
|
|
/**
|
|
* Get parent id
|
|
*/
|
|
function folder_get_parent_id($child) {
|
|
|
|
$child_folders = db_get_all_rows_filter('tcontainer',
|
|
array('id_container' => $child));
|
|
|
|
return $child_folders[0]['parent'];
|
|
}
|
|
|
|
/**
|
|
* Get all si
|
|
*/
|
|
function folder_get_sibling($sibling) {
|
|
|
|
$parent_folders = db_get_all_rows_filter('tcontainer',
|
|
array('id_container' => $sibling));
|
|
|
|
$sibling_folders = db_get_all_rows_filter('tcontainer',
|
|
array('parent' => $parent_folders[0]['parent']));
|
|
|
|
return $sibling_folders;
|
|
}
|
|
|
|
function ui_toggle_container($code, $name, $title = '', $hidden_default = true, $return = false, $group , $id_container, $parent = false) {
|
|
|
|
global $config;
|
|
$report_r = check_acl ($config['id_user'], 0, "RR");
|
|
$report_w = check_acl ($config['id_user'], 0, "RW");
|
|
$report_m = check_acl ($config['id_user'], 0, "RM");
|
|
$access = ($report_r == true) ? 'RR' : (($report_w == true) ? 'RW' : (($report_m == true) ? 'RM' : 'RR'));
|
|
|
|
// Generate unique Id
|
|
$uniqid = uniqid('');
|
|
|
|
// Options
|
|
if ($hidden_default) {
|
|
$style = 'display:none';
|
|
$image_a = html_print_image("images/down.png", true, false, true);
|
|
$image_b = html_print_image("images/go.png", true, false, true);
|
|
$original = "images/go.png";
|
|
}
|
|
else {
|
|
$style = '';
|
|
$image_a = html_print_image("images/down.png", true, false, true);
|
|
$image_b = html_print_image("images/go.png", true, false, true);
|
|
$original = "images/down.png";
|
|
}
|
|
|
|
// Link to toggle
|
|
$table = new stdClass();
|
|
$table->id = 'container_table';
|
|
$table->width = '100%';
|
|
$table->cellspacing = 4;
|
|
$table->cellpadding = 4;
|
|
$table->class = 'dat';
|
|
|
|
|
|
if(!$parent){
|
|
$table->styleTable = 'font-weight: bold;background: #f2f2f2;border: 1px solid #e2e2e2;margin-bottom: 4px';
|
|
} else {
|
|
$table->styleTable = 'font-weight: bold;margin-bottom: 4px;border-bottom: 1px solid #dcdcdc;';
|
|
}
|
|
|
|
$table->style[0] = 'width: 30%';
|
|
$table->style[1] = 'width: 30%';
|
|
|
|
if(!$parent){
|
|
$table->style[0] = 'width: 30%';
|
|
$table->style[1] = 'width: 30%';
|
|
if ($id_container === '1'){
|
|
$table->style[2] = 'padding-right: 34px';
|
|
}
|
|
$table->align[1] = 'center';
|
|
$table->align[2] = 'center';
|
|
|
|
|
|
} else {
|
|
|
|
$id = folder_get_parent_id($id_container);
|
|
$i = 0;
|
|
while($id !== '0'){
|
|
$id = folder_get_parent_id($id);
|
|
$i++;
|
|
}
|
|
|
|
$padding_group = 28 * $i;
|
|
$padding_icon = 10 * $i;
|
|
|
|
$table->style[0] = 'width: 30%';
|
|
$table->style[1] = 'width: 30%;padding-right: '.$padding_group.'px';
|
|
$table->style[2] = 'padding-right: '.$padding_icon.'px';
|
|
$table->align[1] = 'center';
|
|
$table->align[2] = 'center';
|
|
}
|
|
|
|
$table->data = array();
|
|
|
|
$data = array();
|
|
$data[0] = '<a href="javascript:" id="tgl_ctrl_'.$uniqid.'">' . html_print_image ($original, true, array ("title" => $title, "id" => "image_".$uniqid)) . ' <b>'.$name.'</b></a>';
|
|
$data[1] = ui_print_group_icon($group,true);
|
|
if($report_r && $report_w){
|
|
$data[2] = '<a href="index.php?sec=reporting&sec2=godmode/reporting/create_container&edit_container=1&id='.
|
|
$id_container .'">'.html_print_image("images/config.png", true).'</a>';
|
|
}
|
|
if($report_r && $report_w && $report_m){
|
|
if ($id_container !== '1'){
|
|
$data[2] .= '  ' .'<a href="index.php?sec=reporting&sec2=godmode/reporting/graph_container&delete_container=1&id='
|
|
.$id_container.'" onClick="if (!confirm(\''.__('Are you sure?').'\'))
|
|
return false;">' . html_print_image("images/cross.png", true, array('alt' => __('Delete'), 'title' => __('Delete'))) . '</a>';
|
|
}
|
|
}
|
|
$table->data[] = $data;
|
|
$table->rowclass[] = '';
|
|
|
|
$output .= html_print_table($table, true);
|
|
|
|
// Code into a div
|
|
$output .= "<div id='tgl_div_".$uniqid."' style='".$style."'>\n";
|
|
$output .= html_print_input_hidden($uniqid, $id_container);
|
|
$output .= $code;
|
|
$output .= "</div>";
|
|
|
|
// JQuery Toggle
|
|
$output .= '<script type="text/javascript">' . "\n";
|
|
$output .= " var hide_tgl_ctrl_" . $uniqid . " = " . (int)$hidden_default . ";\n";
|
|
$output .= ' /* <![CDATA[ */' . "\n";
|
|
$output .= " $(document).ready (function () {\n";
|
|
$output .= " $('#tgl_ctrl_".$uniqid."').click(function() {\n";
|
|
$output .= " if (hide_tgl_ctrl_" . $uniqid . ") {\n";
|
|
$output .= " hide_tgl_ctrl_" . $uniqid . " = 0;\n";
|
|
$output .= " $('#tgl_div_".$uniqid."').toggle();\n";
|
|
$output .= " $('#image_".$uniqid."').attr({src: '".$image_a."'});\n";
|
|
$output .= " }\n";
|
|
$output .= " else {\n";
|
|
$output .= " hide_tgl_ctrl_" . $uniqid . " = 1;\n";
|
|
$output .= " $('#tgl_div_".$uniqid."').toggle();\n";
|
|
$output .= " $('#image_".$uniqid."').attr({src: '".$image_b."'});\n";
|
|
$output .= " }\n";
|
|
$output .= " });\n";
|
|
$output .= " });\n";
|
|
$output .= '/* ]]> */';
|
|
$output .= '</script>';
|
|
|
|
if (!$return) {
|
|
echo $output;
|
|
}
|
|
else {
|
|
return $output;
|
|
}
|
|
}
|
|
|
|
|
|
?>
|