1<?php
2
3// ******************************************
4// sensible defaults
5$mapdir='configs';
6$cacti_base = '../../';
7$cacti_url = '/';
8$ignore_cacti=FALSE;
9
10$config['base_url'] = $cacti_url;
11
12@include_once('editor-config.php');
13
14// check if the goalposts have moved
15if( is_dir($cacti_base) && file_exists($cacti_base."/include/global.php") )
16{
17	// include the cacti-config, so we know about the database
18	include_once($cacti_base."/include/global.php");
19	// $config['base_url'] = $cacti_url;
20	$config['base_url'] = (isset($config['url_path'])? $config['url_path'] : $cacti_url);
21	$cacti_found = TRUE;
22	// print "global";
23}
24elseif( is_dir($cacti_base) && file_exists($cacti_base."/include/config.php") )
25{
26	// include the cacti-config, so we know about the database
27	include_once($cacti_base."/include/config.php");
28
29	// $config['base_url'] = $cacti_url;
30	$config['base_url'] = (isset($config['url_path'])? $config['url_path'] : $cacti_url);
31	$cacti_found = TRUE;
32	// print "config";
33}
34else
35{
36	$cacti_found = FALSE;
37}
38
39// print $config['base_url'];
40
41// ******************************************
42
43function js_escape($str)
44{
45	$str = str_replace('\\', '\\\\', $str);
46	$str = str_replace("'", "\\\'", $str);
47
48	$str = "'".$str."'";
49
50	return($str);
51}
52
53if(isset($_REQUEST['command']) && $_REQUEST["command"]=='link_step2')
54{
55	$dataid = intval($_REQUEST['dataid']);
56
57	$SQL_graphid = "select graph_templates_item.local_graph_id, title_cache FROM graph_templates_item,graph_templates_graph,data_template_rrd where graph_templates_graph.local_graph_id = graph_templates_item.local_graph_id  and task_item_id=data_template_rrd.id and local_data_id=$dataid LIMIT 1;";
58
59	$link = mysql_connect($database_hostname,$database_username,$database_password)
60		or die('Could not connect: ' . mysql_error());
61	mysql_selectdb($database_default,$link) or die('Could not select database: '.mysql_error());
62
63	$result = mysql_query($SQL_graphid) or die('Query failed: ' . mysql_error());
64	$line = mysql_fetch_array($result, MYSQL_ASSOC);
65	$graphid = $line['local_graph_id'];
66
67?>
68<html>
69<head>
70	<script type="text/javascript">
71	function update_source_step2(graphid)
72	{
73		var graph_url, hover_url;
74
75		var base_url = '<?php echo isset($config['base_url'])?$config['base_url']:''; ?>';
76
77		if (typeof window.opener == "object") {
78
79			graph_url = base_url + 'graph_image.php?local_graph_id=' + graphid + '&rra_id=0&graph_nolegend=true&graph_height=100&graph_width=300';
80			info_url = base_url + 'graph.php?rra_id=all&local_graph_id=' + graphid;
81
82			opener.document.forms["frmMain"].link_infourl.value = info_url;
83			opener.document.forms["frmMain"].link_hover.value = graph_url;
84		}
85		self.close();
86	}
87
88	window.onload = update_source_step2(<?php echo $graphid ?>);
89
90	</script>
91</head>
92<body>
93This window should disappear in a moment.
94</body>
95</html>
96<?php
97	// end of link step 2
98}
99
100if(isset($_REQUEST['command']) && $_REQUEST["command"]=='link_step1')
101{
102?>
103<html>
104<head>
105	<script type="text/javascript" src="editor-resources/jquery-latest.min.js"></script>
106	<script type="text/javascript">
107
108	function filterlist(previous)
109	{
110		var filterstring = $('input#filterstring').val();
111
112		if(filterstring=='')
113		{
114			$('ul#dslist > li').show();
115			return;
116		}
117
118		if(filterstring!=previous)
119		{
120				$('ul#dslist > li').hide();
121				$("ul#dslist > li:contains('" + filterstring + "')").show();
122		}
123	}
124
125	$(document).ready( function() {
126		$('span.filter').keyup(function() {
127			var previous = $('input#filterstring').val();
128			setTimeout(function () {filterlist(previous)}, 500);
129		}).show();
130	});
131
132	function update_source_step1(dataid,datasource)
133	{
134		var newlocation;
135		var fullpath;
136
137		var rra_path = <?php echo js_escape($config['rra_path']); ?>;
138
139		if (typeof window.opener == "object") {
140			fullpath = datasource.replace(/<path_rra>/, rra_path);
141			if(document.forms['mini'].aggregate.checked)
142			{
143				opener.document.forms["frmMain"].link_target.value = opener.document.forms["frmMain"].link_target.value  + " " + fullpath;
144			}
145			else
146			{
147				opener.document.forms["frmMain"].link_target.value = fullpath;
148			}
149		}
150		if(document.forms['mini'].overlib.checked)
151		{
152			newlocation = 'cacti-pick.php?command=link_step2&dataid=' + dataid;
153			self.location = newlocation;
154		}
155		else
156		{
157			self.close();
158		}
159	}
160
161	function applyDSFilterChange(objForm) {
162                strURL = '?host_id=' + objForm.host_id.value;
163                strURL = strURL + '&command=link_step1';
164				if( objForm.overlib.checked)
165				{
166					strURL = strURL + "&overlib=1";
167				}
168				else
169				{
170					strURL = strURL + "&overlib=0";
171				}
172				// document.frmMain.link_bandwidth_out_cb.checked
173				if( objForm.aggregate.checked)
174				{
175					strURL = strURL + "&aggregate=1";
176				}
177				else
178				{
179					strURL = strURL + "&aggregate=0";
180				}
181                document.location = strURL;
182        }
183
184	</script>
185<style type="text/css">
186body { font-family: sans-serif; font-size: 10pt; }
187ul { list-style: none;  margin: 0; padding: 0; }
188ul { border: 1px solid black; }
189ul li.row0 { background: #ddd;}
190ul li.row1 { background: #ccc;}
191ul li { border-bottom: 1px solid #aaa; border-top: 1px solid #eee; padding: 2px;}
192ul li a { text-decoration: none; color: black; }
193</style>
194<title>Pick a data source</title>
195</head>
196<body>
197<?php
198
199	$SQL_picklist = "select data_local.host_id, data_template_data.local_data_id, data_template_data.name_cache, data_template_data.active, data_template_data.data_source_path from data_local,data_template_data,data_input,data_template where data_local.id=data_template_data.local_data_id and data_input.id=data_template_data.data_input_id and data_local.data_template_id=data_template.id ";
200
201	$host_id = -1;
202
203	$overlib = true;
204	$aggregate = false;
205
206	if(isset($_REQUEST['aggregate'])) $aggregate = ( $_REQUEST['aggregate']==0 ? false : true);
207	if(isset($_REQUEST['overlib'])) $overlib= ( $_REQUEST['overlib']==0 ? false : true);
208
209
210	if(isset($_REQUEST['host_id']))
211	{
212		$host_id = intval($_REQUEST['host_id']);
213		if($host_id>=0) $SQL_picklist .= " and data_local.host_id=$host_id ";
214	}
215
216	$SQL_picklist .= " order by name_cache;";
217
218	 $hosts = db_fetch_assoc("select id,CONCAT_WS('',description,' (',hostname,')') as name from host order by description,hostname");
219?>
220
221<h3>Pick a data source:</h3>
222
223<form name="mini">
224<?php
225if(sizeof($hosts) > 0) {
226	print 'Host: <select name="host_id"  onChange="applyDSFilterChange(document.mini)">';
227
228	print '<option '.($host_id==-1 ? 'SELECTED' : '' ).' value="-1">Any</option>';
229	print '<option '.($host_id==0 ? 'SELECTED' : '' ).' value="0">None</option>';
230	foreach ($hosts as $host)
231	{
232		print '<option ';
233		if($host_id==$host['id']) print " SELECTED ";
234		print 'value="'.$host['id'].'">'.$host['name'].'</option>';
235	}
236	print '</select><br />';
237}
238
239	print '<span class="filter" style="display: none;">Filter: <input id="filterstring" name="filterstring" size="20"> (case-sensitive)<br /></span>';
240	print '<input id="overlib" name="overlib" type="checkbox" value="yes" '.($overlib ? 'CHECKED' : '' ).'> <label for="overlib">Also set OVERLIBGRAPH and INFOURL.</label><br />';
241	print '<input id="aggregate" name="aggregate" type="checkbox" value="yes" '.($aggregate ? 'CHECKED' : '' ).'> <label for="aggregate">Append TARGET to existing one (Aggregate)</label>';
242
243	print '</form><div class="listcontainer"><ul id="dslist">';
244
245	$queryrows = db_fetch_assoc($SQL_picklist);
246
247	// print $SQL_picklist;
248
249	$i=0;
250	if( is_array($queryrows)  && sizeof($queryrows) > 0 )
251	{
252		foreach ($queryrows as $line) {
253			//while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
254			echo "<li class=\"row".($i%2)."\">";
255			$key = $line['local_data_id']."','".$line['data_source_path'];
256			echo "<a href=\"#\" onclick=\"update_source_step1('$key')\">". $line['name_cache'] . "</a>";
257			echo "</li>\n";
258
259			$i++;
260		}
261	}
262	else
263	{
264		print "<li>No results...</li>";
265	}
266
267	// Free resultset
268	//mysql_free_result($result);
269
270	// Closing connection
271	//mysql_close($link);
272
273?>
274</ul>
275</div>
276</body>
277</html>
278<?php
279} // end of link step 1
280
281if(isset($_REQUEST['command']) && $_REQUEST["command"]=='node_step1')
282{
283	$host_id = -1;
284	$SQL_picklist = "SELECT graph_templates_graph.id, graph_local.host_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_local,graph_templates_graph) LEFT JOIN graph_templates ON (graph_local.graph_template_id=graph_templates.id) WHERE graph_local.id=graph_templates_graph.local_graph_id ";
285
286	$overlib = true;
287	$aggregate = false;
288
289	if(isset($_REQUEST['aggregate'])) $aggregate = ( $_REQUEST['aggregate']==0 ? false : true);
290	if(isset($_REQUEST['overlib'])) $overlib= ( $_REQUEST['overlib']==0 ? false : true);
291
292
293	if(isset($_REQUEST['host_id']))
294	{
295		$host_id = intval($_REQUEST['host_id']);
296		if($host_id>=0) $SQL_picklist .= " and graph_local.host_id=$host_id ";
297	}
298	$SQL_picklist .= " order by title_cache";
299
300	 $hosts = db_fetch_assoc("select id,CONCAT_WS('',description,' (',hostname,')') as name from host order by description,hostname");
301
302?>
303<html>
304<head>
305<script type="text/javascript" src="editor-resources/jquery-latest.min.js"></script>
306<script type="text/javascript">
307
308	function filterlist(previous)
309	{
310		var filterstring = $('input#filterstring').val();
311
312		if(filterstring=='')
313		{
314			$('ul#dslist > li').show();
315			return;
316		}
317
318		if(filterstring!=previous)
319		{
320				$('ul#dslist > li').hide();
321				$('ul#dslist > li').contains(filterstring).show();
322		}
323	}
324
325	$(document).ready( function() {
326		$('span.filter').keyup(function() {
327			var previous = $('input#filterstring').val();
328			setTimeout(function () {filterlist(previous)}, 500);
329		}).show();
330	});
331
332	function applyDSFilterChange(objForm) {
333                strURL = '?host_id=' + objForm.host_id.value;
334                strURL = strURL + '&command=node_step1';
335				if( objForm.overlib.checked)
336				{
337					strURL = strURL + "&overlib=1";
338				}
339				else
340				{
341					strURL = strURL + "&overlib=0";
342				}
343
344				//if( objForm.aggregate.checked)
345				//{
346				//	strURL = strURL + "&aggregate=1";
347				//}
348				//else
349				//{
350				//	strURL = strURL + "&aggregate=0";
351				//}
352                document.location = strURL;
353        }
354
355	</script>
356	<script type="text/javascript">
357
358	function update_source_step1(graphid)
359	{
360		var graph_url, hover_url;
361
362		var base_url = '<?php echo isset($config['base_url'])?$config['base_url']:''; ?>';
363
364		if (typeof window.opener == "object") {
365
366			graph_url = base_url + 'graph_image.php?rra_id=0&graph_nolegend=true&graph_height=100&graph_width=300&local_graph_id=' + graphid;
367			info_url = base_url + 'graph.php?rra_id=all&local_graph_id=' + graphid;
368
369			// only set the overlib URL unless the box is checked
370			if( document.forms['mini'].overlib.checked)
371			{
372				opener.document.forms["frmMain"].node_infourl.value = info_url;
373			}
374			opener.document.forms["frmMain"].node_hover.value = graph_url;
375		}
376		self.close();
377	}
378	</script>
379<style type="text/css">
380body { font-family: sans-serif; font-size: 10pt; }
381ul { list-style: none;  margin: 0; padding: 0; }
382ul { border: 1px solid black; }
383ul li.row0 { background: #ddd;}
384ul li.row1 { background: #ccc;}
385ul li { border-bottom: 1px solid #aaa; border-top: 1px solid #eee; padding: 2px;}
386ul li a { text-decoration: none; color: black; }
387</style>
388<title>Pick a graph</title>
389</head>
390<body>
391
392<?php
393
394#	print "Cacti is ".$config["cacti_version"];
395
396#	$SQL_picklist = "select data_template_data.local_data_id, data_template_data.name_cache, data_template_data.active, data_template_data.data_source_path from data_local,data_template_data,data_input,data_template  left join data_input on data_input.id=data_template_data.data_input_id left join data_template on data_local.data_template_id=data_template.id where data_local.id=data_template_data.local_data_id order by name_cache;";
397#	$SQL_picklist = "select data_template_data.local_data_id, data_template_data.name_cache, data_template_data.active, data_template_data.data_source_path from data_local,data_template_data,data_input,data_template where data_local.id=data_template_data.local_data_id and data_input.id=data_template_data.data_input_id and data_local.data_template_id=data_template.id order by name_cache;";
398
399
400
401	#$link = mysql_connect($database_hostname,$database_username,$database_password)
402	#  or die('Could not connect: ' . mysql_error());
403	#  mysql_selectdb($database_default,$link) or die('Could not select database: '.mysql_error());
404
405	#$result = mysql_query($SQL_picklist) or die('Query failed: ' . mysql_error());
406?>
407
408<h3>Pick a graph:</h3>
409
410<form name="mini">
411<?php
412if(sizeof($hosts) > 0) {
413	print 'Host: <select name="host_id"  onChange="applyDSFilterChange(document.mini)">';
414
415	print '<option '.($host_id==-1 ? 'SELECTED' : '' ).' value="-1">Any</option>';
416	print '<option '.($host_id==0 ? 'SELECTED' : '' ).' value="0">None</option>';
417	foreach ($hosts as $host)
418	{
419		print '<option ';
420		if($host_id==$host['id']) print " SELECTED ";
421		print 'value="'.$host['id'].'">'.$host['name'].'</option>';
422	}
423	print '</select><br />';
424}
425
426	print '<span class="filter" style="display: none;">Filter: <input id="filterstring" name="filterstring" size="20"> (case-sensitive)<br /></span>';
427	print '<input id="overlib" name="overlib" type="checkbox" value="yes" '.($overlib ? 'CHECKED' : '' ).'> <label for="overlib">Set both OVERLIBGRAPH and INFOURL.</label><br />';
428	// print '<input id="aggregate" name="aggregate" type="checkbox" value="yes" '.($aggregate ? 'CHECKED' : '' ).'> <label for="aggregate">Append TARGET to existing one (Aggregate)</label>';
429
430	print '</form><div class="listcontainer"><ul id="dslist">';
431
432	$queryrows = db_fetch_assoc($SQL_picklist);
433
434	// print $SQL_picklist;
435
436	$i=0;
437	if( is_array($queryrows) && sizeof($queryrows) > 0)
438	{
439		foreach ($queryrows as $line) {
440			//while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
441			echo "<li class=\"row".($i%2)."\">";
442			$key = $line['local_graph_id'];
443			echo "<a href=\"#\" onclick=\"update_source_step1('$key')\">". $line['title_cache'] . "</a>";
444			echo "</li>\n";
445			$i++;
446		}
447	}
448	else
449	{
450		print "No results...";
451	}
452
453	// Free resultset
454	//mysql_free_result($result);
455
456	// Closing connection
457	//mysql_close($link);
458?>
459</ul>
460</body>
461</html>
462<?php
463} // end of node step 1
464
465// vim:ts=4:sw=4:
466?>
467