예제 #1
0
function export() {
	global $config;

	/* count how many graphs are created */
	$total_graphs_created = 0;

	if (!file_exists(read_config_option("path_html_export"))) {
		export_fatal("Export path '" . read_config_option("path_html_export") . "' does not exist!  Export can not continue.");
	}

	export_log("Running graph export");

	$cacti_root_path = $config["base_path"];
	$cacti_export_path = read_config_option("path_html_export");

	if (substr_count($cacti_root_path, $cacti_export_path) ||
		(substr_count($cacti_export_path, $cacti_root_path))) {
		export_fatal("Export path '" . read_config_option("path_html_export") . "' is to closely related to the Cacti web root.  You must be out of your mind.");
	}

	/* delete all files and directories in the cacti_export_path */
	del_directory($cacti_export_path, false);

	/* test how will the export will be made */
	if (read_config_option('export_presentation') == 'tree') {
		export_log("Running graph export with tree organization");
		$total_graphs_created = tree_export();
	}else {
		/* copy the css/images on the first time */
		if (file_exists("$cacti_export_path/main.css") == false) {
			copy("$cacti_root_path/include/main.css", "$cacti_export_path/main.css");
			copy("$cacti_root_path/images/tab_cacti.gif", "$cacti_export_path/tab_cacti.gif");
			copy("$cacti_root_path/images/cacti_backdrop.gif", "$cacti_export_path/cacti_backdrop.gif");
			copy("$cacti_root_path/images/transparent_line.gif", "$cacti_export_path/transparent_line.gif");
			copy("$cacti_root_path/images/shadow.gif", "$cacti_export_path/shadow.gif");
		}

		/* if the index file already exists, delete it */
		check_remove($cacti_export_path . "/index.html");

		/* open pointer to the new index file */
		$fp_index = fopen($cacti_export_path . "/index.html", "w");

		/* get a list of all graphs that need exported */
		$graphs = db_fetch_assoc("select
			graph_templates_graph.id,
			graph_templates_graph.local_graph_id,
			graph_templates_graph.height,
			graph_templates_graph.width,
			graph_templates_graph.title_cache,
			graph_templates.name,
			graph_local.host_id
			from graph_templates_graph
			left join graph_templates on (graph_templates_graph.graph_template_id=graph_templates.id)
			left join graph_local on (graph_templates_graph.local_graph_id=graph_local.id)
			where graph_templates_graph.local_graph_id!=0 and graph_templates_graph.export='on'
			order by graph_templates_graph.title_cache");

		$rras = db_fetch_assoc("select
			rra.id,
			rra.name
			from rra
			order by steps");

		/* write the html header data to the index file */
		fwrite($fp_index, HTML_HEADER);
		fwrite($fp_index, HTML_GRAPH_HEADER_ONE);
		fwrite($fp_index, "<strong>Displaying " . sizeof($graphs) . " Exported Graph" . ((sizeof($graphs) > 1) ? "s" : "") . "</strong>");
		fwrite($fp_index, HTML_GRAPH_HEADER_TWO);

		/* open a pipe to rrdtool for writing */
		$rrdtool_pipe = rrd_init();

		/* for each graph... */
		$i = 0; $k = 0;
		if ((sizeof($graphs) > 0) && (sizeof($rras) > 0)) {
		foreach ($graphs as $graph) {
			check_remove($cacti_export_path . "/thumb_" . $graph["local_graph_id"] . ".png");
			check_remove($cacti_export_path . "/graph_" . $graph["local_graph_id"] . ".html");

			/* settings for preview graphs */
			$graph_data_array["graph_height"] = "100";
			$graph_data_array["graph_width"] = "300";
			$graph_data_array["graph_nolegend"] = true;
			$graph_data_array["export"] = true;
			$graph_data_array["export_filename"] = "thumb_" . $graph["local_graph_id"] . ".png";
			rrdtool_function_graph($graph["local_graph_id"], 0, $graph_data_array, $rrdtool_pipe);
			$total_graphs_created++;

			/* generate html files for each graph */
			$fp_graph_index = fopen($cacti_export_path . "/graph_" . $graph["local_graph_id"] . ".html", "w");

			fwrite($fp_graph_index, HTML_HEADER);
			fwrite($fp_graph_index, HTML_GRAPH_HEADER_ONE);
			fwrite($fp_graph_index, "<strong>Graph - " . $graph["title_cache"] . "</strong>");
			fwrite($fp_graph_index, HTML_GRAPH_HEADER_TWO);
			fwrite($fp_graph_index, "<td>");

			/* reset vars for actual graph image creation */
			reset($rras);
			unset($graph_data_array);

			/* generate graphs for each rra */
			foreach ($rras as $rra) {
				$graph_data_array["export"] = true;
				$graph_data_array["export_filename"] = "graph_" . $graph["local_graph_id"] . "_" . $rra["id"] . ".png";

				rrdtool_function_graph($graph["local_graph_id"], $rra["id"], $graph_data_array, $rrdtool_pipe);
				$total_graphs_created++;

				/* write image related html */
				fwrite($fp_graph_index, "<div align=center><img src='graph_" . $graph["local_graph_id"] . "_" . $rra["id"] . ".png' border=0></div>\n
					<div align=center><strong>" . $rra["name"] . "</strong></div><br>");
			}

			fwrite($fp_graph_index, "</td>");
			fwrite($fp_graph_index, HTML_GRAPH_FOOTER);
			fwrite($fp_graph_index, HTML_FOOTER);
			fclose($fp_graph_index);

			/* main graph page html */
			fwrite($fp_index, "<td align='center' width='" . (98 / 2) . "%'><a href='graph_" . $graph["local_graph_id"] . ".html'><img src='thumb_" . $graph["local_graph_id"] . ".png' border='0' alt='" . $graph["title_cache"] . "'></a></td>\n");

			$i++;
			$k++;

			if (($i == 2) && ($k < count($graphs))) {
				$i = 0;
				fwrite($fp_index, "</tr><tr>");
			}

		}
		}else{ fwrite($fp_index, "<td><em>No Graphs Found.</em></td>");
		}

		/* close the rrdtool pipe */
		rrd_close($rrdtool_pipe);

		fwrite($fp_index, HTML_GRAPH_FOOTER);
		fwrite($fp_index, HTML_FOOTER);
		fclose($fp_index);
	}

	return $total_graphs_created;
}
예제 #2
0
function classical_export($cacti_root_path, $cacti_export_path)
{
    global $config;
    $total_graphs_created = 0;
    /* copy the css/images on the first time */
    if (file_exists("{$cacti_export_path}/main.css") == false) {
        copy("{$cacti_root_path}/include/main.css", "{$cacti_export_path}/main.css");
        copy("{$cacti_root_path}/images/tab_cacti.gif", "{$cacti_export_path}/tab_cacti.gif");
        copy("{$cacti_root_path}/images/cacti_backdrop.gif", "{$cacti_export_path}/cacti_backdrop.gif");
        copy("{$cacti_root_path}/images/transparent_line.gif", "{$cacti_export_path}/transparent_line.gif");
        copy("{$cacti_root_path}/images/shadow.gif", "{$cacti_export_path}/shadow.gif");
    }
    /* create the base directory */
    if (!mkdir("{$cacti_export_path}/graphs", 0755)) {
        export_fatal("Create directory '{$cacti_export_path}/graphs' failed.  Can not continue");
    }
    /* if the index file already exists, delete it */
    check_remove($cacti_export_path . "/index.html");
    /* open pointer to the new index file */
    $fp_index = fopen($cacti_export_path . "/index.html", "w");
    /* get a list of all graphs that need exported */
    $graphs = db_fetch_assoc("SELECT\n\t\tgraph_templates_graph.id,\n\t\tgraph_templates_graph.local_graph_id,\n\t\tgraph_templates_graph.height,\n\t\tgraph_templates_graph.width,\n\t\tgraph_templates_graph.title_cache,\n\t\tgraph_templates.name,\n\t\tgraph_local.host_id\n\t\tFROM graph_templates_graph\n\t\tLEFT JOIN graph_templates\n\t\tON (graph_templates_graph.graph_template_id=graph_templates.id)\n\t\tLEFT JOIN graph_local\n\t\tON (graph_templates_graph.local_graph_id=graph_local.id)\n\t\tWHERE graph_templates_graph.local_graph_id!=0\n\t\tAND graph_templates_graph.export='on'\n\t\tORDER BY graph_templates_graph.title_cache");
    $rras = db_fetch_assoc("SELECT\n\t\trra.id,\n\t\trra.name\n\t\tFROM rra\n\t\tORDER BY steps");
    /* write the html header data to the index file */
    fwrite($fp_index, HTML_HEADER_CLASSIC);
    fwrite($fp_index, HTML_GRAPH_HEADER_ONE_CLASSIC);
    fwrite($fp_index, "<strong>Displaying " . sizeof($graphs) . " Exported Graph" . (sizeof($graphs) > 1 ? "s" : "") . "</strong>");
    fwrite($fp_index, HTML_GRAPH_HEADER_TWO_CLASSIC);
    /* open a pipe to rrdtool for writing */
    $rrdtool_pipe = rrd_init();
    /* for each graph... */
    $i = 0;
    $k = 0;
    if (sizeof($graphs) > 0 && sizeof($rras) > 0) {
        foreach ($graphs as $graph) {
            check_remove($cacti_export_path . "graphs/thumb_" . $graph["local_graph_id"] . ".png");
            check_remove($cacti_export_path . "graph_" . $graph["local_graph_id"] . ".html");
            /* settings for preview graphs */
            $graph_data_array["graph_height"] = read_config_option("export_default_height");
            $graph_data_array["graph_width"] = read_config_option("export_default_width");
            $graph_data_array["graph_nolegend"] = true;
            $graph_data_array["export"] = true;
            $graph_data_array["export_filename"] = "graphs/thumb_" . $graph["local_graph_id"] . ".png";
            rrdtool_function_graph($graph["local_graph_id"], 0, $graph_data_array, $rrdtool_pipe);
            $total_graphs_created++;
            /* generate html files for each graph */
            if (!file_exists($cacti_export_path . "/graph_" . $graph["local_graph_id"] . ".html")) {
                $fp_graph_index = fopen($cacti_export_path . "/graph_" . $graph["local_graph_id"] . ".html", "w");
                fwrite($fp_graph_index, HTML_HEADER_CLASSIC);
                fwrite($fp_graph_index, HTML_GRAPH_HEADER_ONE_CLASSIC);
                fwrite($fp_graph_index, "<strong>Graph - " . $graph["title_cache"] . "</strong>");
                fwrite($fp_graph_index, HTML_GRAPH_HEADER_TWO_CLASSIC);
                fwrite($fp_graph_index, "<td>");
            } else {
                $fp_graph_index = NULL;
            }
            /* reset vars for actual graph image creation */
            reset($rras);
            unset($graph_data_array);
            /* generate graphs for each rra */
            foreach ($rras as $rra) {
                $graph_data_array["export"] = true;
                $graph_data_array["export_filename"] = "graphs/graph_" . $graph["local_graph_id"] . "_" . $rra["id"] . ".png";
                rrdtool_function_graph($graph["local_graph_id"], $rra["id"], $graph_data_array, $rrdtool_pipe);
                $total_graphs_created++;
                /* write image related html */
                fwrite($fp_graph_index, "<div align=center><img src='graphs/graph_" . $graph["local_graph_id"] . "_" . $rra["id"] . ".png' border=0></div>\n\n\t\t\t\t\t<div align=center><strong>" . $rra["name"] . "</strong></div><br>");
            }
            fwrite($fp_graph_index, "</td></table>");
            fwrite($fp_graph_index, HTML_GRAPH_FOOTER_CLASSIC);
            fwrite($fp_graph_index, HTML_FOOTER_CLASSIC);
            fclose($fp_graph_index);
            /* main graph page html */
            fwrite($fp_index, "<tr><td align='center' width='42%'><a href='graph_" . $graph["local_graph_id"] . ".html'><img src='graphs/thumb_" . $graph["local_graph_id"] . ".png' border='0' alt='" . $graph["title_cache"] . "'></a></td>\n");
            $i++;
            $k++;
            if ($i == 2 && $k < count($graphs)) {
                $i = 0;
                fwrite($fp_index, "</tr><tr>");
            }
        }
    } else {
        fwrite($fp_index, "<td><em>No Graphs Found.</em></td>");
    }
    /* close the rrdtool pipe */
    rrd_close($rrdtool_pipe);
    fwrite($fp_index, HTML_GRAPH_FOOTER_CLASSIC);
    fwrite($fp_index, HTML_FOOTER_CLASSIC);
    fclose($fp_index);
    return $total_graphs_created;
}
예제 #3
0
function classical_export($cacti_root_path, $cacti_export_path)
{
    global $config;
    $total_graphs_created = 0;
    /* copy the css/images on the first time */
    if (file_exists("{$cacti_export_path}/main.css") == false) {
        copy("{$cacti_root_path}/include/main.css", "{$cacti_export_path}/main.css");
        copy("{$cacti_root_path}/images/tab_cacti.gif", "{$cacti_export_path}/tab_cacti.gif");
        copy("{$cacti_root_path}/images/cacti_backdrop.gif", "{$cacti_export_path}/cacti_backdrop.gif");
        copy("{$cacti_root_path}/images/transparent_line.gif", "{$cacti_export_path}/transparent_line.gif");
        copy("{$cacti_root_path}/images/shadow.gif", "{$cacti_export_path}/shadow.gif");
    }
    /* create the base directory */
    if (!is_dir("{$cacti_export_path}/graphs")) {
        if (!mkdir("{$cacti_export_path}/graphs", 0755)) {
            export_fatal("Create directory '{$cacti_export_path}/graphs' failed.  Can not continue");
        }
    }
    /* determine the number of columns to write */
    $classic_columns = read_config_option("export_num_columns");
    /* if the index file already exists, delete it */
    check_remove($cacti_export_path . "/index.html");
    export_log("Creating File  '" . $cacti_export_path . "/index.html'");
    /* open pointer to the new index file */
    $fp_index = fopen($cacti_export_path . "/index.html", "w");
    /* get a list of all graphs that need exported */
    $exportuser = read_config_option("export_user_id");
    $current_user = db_fetch_row("SELECT * FROM user_auth WHERE id=" . read_config_option("export_user_id"));
    $sql_where = "WHERE " . get_graph_permissions_sql($current_user["policy_graphs"], $current_user["policy_hosts"], $current_user["policy_graph_templates"]);
    $sql_join = "LEFT JOIN host ON (host.id=graph_local.host_id)\n\t\tLEFT JOIN graph_templates ON (graph_templates.id=graph_local.graph_template_id)\n\t\tLEFT JOIN user_auth_perms ON ((graph_templates_graph.local_graph_id=user_auth_perms.item_id AND user_auth_perms.type=1 AND user_auth_perms.user_id={$exportuser})\n\t\t OR (host.id=user_auth_perms.item_id AND user_auth_perms.type=3 AND user_auth_perms.user_id={$exportuser})\n\t\t OR (graph_templates.id=user_auth_perms.item_id AND user_auth_perms.type=4 AND user_auth_perms.user_id={$exportuser}))";
    $sql_base = "FROM (graph_templates_graph,graph_local)\n\t\t{$sql_join}\n\t\t{$sql_where}\n\t\t" . (empty($sql_where) ? "WHERE" : "AND") . " graph_templates_graph.local_graph_id > 0\n\t\tAND graph_templates_graph.export='on'\n\t\tAND graph_templates_graph.local_graph_id=graph_local.id";
    $graphs = db_fetch_assoc("SELECT\n\t\tgraph_templates_graph.local_graph_id,\n\t\tgraph_templates_graph.title_cache,\n\t\tgraph_templates_graph.height,\n\t\tgraph_templates_graph.width\n\t\t{$sql_base}\n\t\tGROUP BY graph_templates_graph.local_graph_id");
    $rras = db_fetch_assoc("SELECT\n\t\trra.id,\n\t\trra.name\n\t\tFROM rra\n\t\tORDER BY timespan");
    /* write the html header data to the index file */
    fwrite($fp_index, HTML_HEADER_CLASSIC);
    fwrite($fp_index, HTML_GRAPH_HEADER_ONE_CLASSIC);
    fwrite($fp_index, "<strong>Displaying " . sizeof($graphs) . " Exported Graph" . (sizeof($graphs) > 1 ? "s" : "") . "</strong>");
    fwrite($fp_index, HTML_GRAPH_HEADER_TWO_CLASSIC);
    /* open a pipe to rrdtool for writing */
    $rrdtool_pipe = rrd_init();
    /* for each graph... */
    $i = 0;
    $k = 0;
    if (sizeof($graphs) > 0 && sizeof($rras) > 0) {
        foreach ($graphs as $graph) {
            check_remove($cacti_export_path . "graphs/thumb_" . $graph["local_graph_id"] . ".png");
            check_remove($cacti_export_path . "graph_" . $graph["local_graph_id"] . ".html");
            /* settings for preview graphs */
            $graph_data_array["graph_height"] = read_config_option("export_default_height");
            $graph_data_array["graph_width"] = read_config_option("export_default_width");
            $graph_data_array["graph_nolegend"] = true;
            $graph_data_array["export"] = true;
            $graph_data_array["export_filename"] = "graphs/thumb_" . $graph["local_graph_id"] . ".png";
            export_log("Creating Graph '" . $cacti_export_path . $graph_data_array["export_filename"] . "'");
            rrdtool_function_graph($graph["local_graph_id"], 0, $graph_data_array, $rrdtool_pipe);
            $total_graphs_created++;
            /* generate html files for each graph */
            if (!file_exists($cacti_export_path . "/graph_" . $graph["local_graph_id"] . ".html")) {
                export_log("Creating File  '" . $cacti_export_path . "/graph_" . $graph["local_graph_id"] . ".html");
                $fp_graph_index = fopen($cacti_export_path . "/graph_" . $graph["local_graph_id"] . ".html", "w");
                fwrite($fp_graph_index, HTML_HEADER_CLASSIC);
                fwrite($fp_graph_index, HTML_GRAPH_HEADER_ONE_CLASSIC);
                fwrite($fp_graph_index, "<strong>Graph - " . $graph["title_cache"] . "</strong>");
                fwrite($fp_graph_index, HTML_GRAPH_HEADER_TWO_CLASSIC);
                fwrite($fp_graph_index, "<td>");
            } else {
                $fp_graph_index = NULL;
            }
            /* reset vars for actual graph image creation */
            reset($rras);
            unset($graph_data_array);
            /* generate graphs for each rra */
            foreach ($rras as $rra) {
                $graph_data_array["export"] = true;
                $graph_data_array["export_filename"] = "graphs/graph_" . $graph["local_graph_id"] . "_" . $rra["id"] . ".png";
                export_log("Creating Graph '" . $cacti_export_path . $graph_data_array["export_filename"] . "'");
                rrdtool_function_graph($graph["local_graph_id"], $rra["id"], $graph_data_array, $rrdtool_pipe);
                $total_graphs_created++;
                /* write image related html */
                fwrite($fp_graph_index, "<div align=center><img src='graphs/graph_" . $graph["local_graph_id"] . "_" . $rra["id"] . ".png' border=0></div>\n\n\t\t\t\t\t<div align=center><strong>" . $rra["name"] . "</strong></div><br>");
            }
            fwrite($fp_graph_index, "</td></table>");
            fwrite($fp_graph_index, HTML_GRAPH_FOOTER_CLASSIC);
            fwrite($fp_graph_index, HTML_FOOTER_CLASSIC);
            fclose($fp_graph_index);
            /* main graph page html */
            fwrite($fp_index, "<td align='center' width='" . round(100 / $classic_columns, 0) . "%'><a href='graph_" . $graph["local_graph_id"] . ".html'><img src='graphs/thumb_" . $graph["local_graph_id"] . ".png' border='0' alt='" . $graph["title_cache"] . "'></a></td>\n");
            $i++;
            $k++;
            if ($i % $classic_columns == 0 && $k < count($graphs)) {
                fwrite($fp_index, "</tr><tr>");
            }
        }
    } else {
        fwrite($fp_index, "<td><em>No Graphs Found.</em></td>");
    }
    /* close the rrdtool pipe */
    rrd_close($rrdtool_pipe);
    fwrite($fp_index, HTML_GRAPH_FOOTER_CLASSIC);
    fwrite($fp_index, HTML_FOOTER_CLASSIC);
    fclose($fp_index);
    return $total_graphs_created;
}
예제 #4
0
function export() {
	require_once(CACTI_BASE_PATH . "/lib/sys/rrd.php");

	/* count how many graphs are created */
	$total_graphs_created = 0;

	export_log(_("Running graph export"));

	$cacti_root_path = CACTI_BASE_PATH;
	$cacti_export_path = read_config_option("path_html_export");

	/* copy the css/images on the first time */
	if (file_exists("$cacti_export_path/main.css") == false) {
		copy("$cacti_root_path/" . html_get_theme_css(), "$cacti_export_path/main.css");
		copy("$cacti_root_path/themes" . read_config_option("current_theme") . "/images/tab_cacti.gif", "$cacti_export_path/tab_cacti.gif");
		copy("$cacti_root_path/themes" . read_config_option("current_theme") . "/images/cacti_backdrop.gif", "$cacti_export_path/cacti_backdrop.gif");
		copy("$cacti_root_path/themes" . read_config_option("current_theme") . "/images/transparent_line.gif", "$cacti_export_path/transparent_line.gif");
		copy("$cacti_root_path/themes" . read_config_option("current_theme") . "/images/shadow.gif", "$cacti_export_path/shadow.gif");
	}

	/* if the index file already exists, delete it */
	check_remove($cacti_export_path . "/index.html");

	/* open pointer to the new index file */
	$fp_index = fopen($cacti_export_path . "/index.html", "w");

	/* get a list of all graphs that need exported */
	$graphs = db_fetch_assoc("select
		graph_templates_graph.id,
		graph_templates_graph.local_graph_id,
		graph_templates_graph.height,
		graph_templates_graph.width,
		graph_templates_graph.title_cache,
		graph_templates.name,
		graph_local.host_id
		from graph_templates_graph left join graph_templates on (graph_templates_graph.graph_template_id=graph_templates.id)
		left join graph_local on (graph_templates_graph.local_graph_id=graph_local.id)
		where graph_templates_graph.local_graph_id!=0 and graph_templates_graph.export='on'
		order by graph_templates_graph.title_cache");
	$rras = db_fetch_assoc("select
		rra.id,
		rra.name
		from rra
		order by timespan");

	/* write the html header data to the index file */
	fwrite($fp_index, HTML_HEADER);
	fwrite($fp_index, HTML_GRAPH_HEADER_ONE);
	fwrite($fp_index, "<strong>" . sprintf(_("Displaying '%i' Exported Graph%s"), sizeof($graphs), ((sizeof($graphs) > 1) ? "s" : "")) . "</strong>");
	fwrite($fp_index, HTML_GRAPH_HEADER_TWO);

	/* open a pipe to rrdtool for writing */
	$rrdtool_pipe = rrd_init();

	/* for each graph... */
	$i = 0; $k = 0;
	if ((sizeof($graphs) > 0) && (sizeof($rras) > 0)) {
	foreach ($graphs as $graph) {
		check_remove($cacti_export_path . "/thumb_" . $graph["local_graph_id"] . ".png");
		check_remove($cacti_export_path . "/graph_" . $graph["local_graph_id"] . ".html");

		/* settings for preview graphs */
		$graph_data_array["graph_height"] = "100";
		$graph_data_array["graph_width"] = "300";
		$graph_data_array["graph_nolegend"] = true;
		$graph_data_array["export"] = true;
		$graph_data_array["export_filename"] = "thumb_" . $graph["local_graph_id"] . ".png";
		rrdtool_function_graph($graph["local_graph_id"], 0, $graph_data_array, $rrdtool_pipe);
		$total_graphs_created++;

		/* generate html files for each graph */
		$fp_graph_index = fopen($cacti_export_path . "/graph_" . $graph["local_graph_id"] . ".html", "w");

		fwrite($fp_graph_index, HTML_HEADER);
		fwrite($fp_graph_index, HTML_GRAPH_HEADER_ONE);
		fwrite($fp_graph_index, "<strong>" . _("Graph") . " - " . $graph["title_cache"] . "</strong>");
		fwrite($fp_graph_index, HTML_GRAPH_HEADER_TWO);
		fwrite($fp_graph_index, "<td>");

		/* reset vars for actual graph image creation */
		reset($rras);
		unset($graph_data_array);

		/* generate graphs for each rra */
		foreach ($rras as $rra) {
			$graph_data_array["export"] = true;
			$graph_data_array["export_filename"] = "graph_" . $graph["local_graph_id"] . "_" . $rra["id"] . ".png";

			rrdtool_function_graph($graph["local_graph_id"], $rra["id"], $graph_data_array, $rrdtool_pipe);
			$total_graphs_created++;

			/* write image related html */
			fwrite($fp_graph_index, "<div align=center><img src='graph_" . $graph["local_graph_id"] . "_" . $rra["id"] . ".png' border=0></div>\n
				<div align=center><strong>" . $rra["name"] . "</strong></div><br>");
		}

		fwrite($fp_graph_index, "</td>");
		fwrite($fp_graph_index, HTML_GRAPH_FOOTER);
		fwrite($fp_graph_index, HTML_FOOTER);
		fclose($fp_graph_index);

		/* main graph page html */
		fwrite($fp_index, "<td align='center' width='" . (98 / 2) . "%'><a href='graph_" . $graph["local_graph_id"] . ".html'><img src='thumb_" . $graph["local_graph_id"] . ".png' border='0' alt='" . $graph["title_cache"] . "'></a></td>\n");

		$i++;
		$k++;

		if (($i == 2) && ($k < count($graphs))) {
			$i = 0;
			fwrite($fp_index, "</tr><tr>");
		}

	}
	}else{ fwrite($fp_index, "<td><em>" . _("No Graphs Found.") . "</em></td>");
	}

	/* close the rrdtool pipe */
	rrd_close($rrdtool_pipe);

	fwrite($fp_index, HTML_GRAPH_FOOTER);
	fwrite($fp_index, HTML_FOOTER);
	fclose($fp_index);

	return $total_graphs_created;
}