1<?php
2/*
3 +-------------------------------------------------------------------------+
4 | Copyright (C) 2004-2021 The Cacti Group                                 |
5 |                                                                         |
6 | This program is free software; you can redistribute it and/or           |
7 | modify it under the terms of the GNU General Public License             |
8 | as published by the Free Software Foundation; either version 2          |
9 | of the License, or (at your option) any later version.                  |
10 |                                                                         |
11 | This program is distributed in the hope that it will be useful,         |
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of          |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           |
14 | GNU General Public License for more details.                            |
15 +-------------------------------------------------------------------------+
16 | Cacti: The Complete RRDtool-based Graphing Solution                     |
17 +-------------------------------------------------------------------------+
18 | This code is designed, written, and maintained by the Cacti Group. See  |
19 | about.php and/or the AUTHORS file for specific developer information.   |
20 +-------------------------------------------------------------------------+
21 | http://www.cacti.net/                                                   |
22 +-------------------------------------------------------------------------+
23*/
24
25global $menu, $menu_glyphs, $graph_sources;
26
27/* Array of Cacti versions and template hash codes
28   Remember to add every version here. */
29$cacti_version_codes = array(
30	'0.8'    => 'NaN',
31	'0.8.1'  => 'NaN',
32	'0.8.2'  => 'NaN',
33	'0.8.2a' => 'NaN',
34	'0.8.3'  => 'NaN',
35	'0.8.3a' => 'NaN',
36	'0.8.4'  => '0000',
37	'0.8.5'  => '0001',
38	'0.8.5a' => '0002',
39	'0.8.6'  => '0003',
40	'0.8.6a' => '0004',
41	'0.8.6b' => '0005',
42	'0.8.6c' => '0006',
43	'0.8.6d' => '0007',
44	'0.8.6e' => '0008',
45	'0.8.6f' => '0009',
46	'0.8.6g' => '0010',
47	'0.8.6h' => '0011',
48	'0.8.6i' => '0012',
49	'0.8.6j' => '0013',
50	'0.8.7'  => '0014',
51	'0.8.7a' => '0015',
52	'0.8.7b' => '0016',
53	'0.8.7c' => '0017',
54	'0.8.7d' => '0018',
55	'0.8.7e' => '0019',
56	'0.8.7f' => '0020',
57	'0.8.7g' => '0021',
58	'0.8.7h' => '0022',
59	'0.8.7i' => '0023',
60	'0.8.8'  => '0024',
61	'0.8.8a' => '0024',
62	'0.8.8b' => '0024',
63	'0.8.8c' => '0025',
64	'0.8.8d' => '0025',
65	'0.8.8e' => '0025',
66	'0.8.8f' => '0025',
67	'0.8.8g' => '0025',
68	'0.8.8h' => '0025',
69	'1.0.0'  => '0100',
70	'1.0.1'  => '0100',
71	'1.0.2'  => '0100',
72	'1.0.3'  => '0100',
73	'1.0.4'  => '0100',
74	'1.0.5'  => '0100',
75	'1.0.6'  => '0100',
76	'1.1.0'  => '0100',
77	'1.1.1'  => '0100',
78	'1.1.2'  => '0100',
79	'1.1.3'  => '0100',
80	'1.1.4'  => '0100',
81	'1.1.5'  => '0100',
82	'1.1.6'  => '0101',
83	'1.1.7'  => '0101',
84	'1.1.8'  => '0101',
85	'1.1.9'  => '0101',
86	'1.1.10' => '0101',
87	'1.1.11' => '0101',
88	'1.1.12' => '0101',
89	'1.1.13' => '0101',
90	'1.1.14' => '0101',
91	'1.1.15' => '0101',
92	'1.1.16' => '0101',
93	'1.1.17' => '0101',
94	'1.1.18' => '0101',
95	'1.1.19' => '0101',
96	'1.1.20' => '0101',
97	'1.1.21' => '0101',
98	'1.1.22' => '0101',
99	'1.1.23' => '0101',
100	'1.1.24' => '0101',
101	'1.1.25' => '0101',
102	'1.1.26' => '0101',
103	'1.1.27' => '0101',
104	'1.1.28' => '0101',
105	'1.1.29' => '0101',
106	'1.1.30' => '0101',
107	'1.1.31' => '0101',
108	'1.1.32' => '0101',
109	'1.1.33' => '0101',
110	'1.1.34' => '0101',
111	'1.1.35' => '0101',
112	'1.1.36' => '0101',
113	'1.1.37' => '0101',
114	'1.1.38' => '0101',
115	'1.2.0'  => '0101',
116	'1.2.1'  => '0101',
117	'1.2.2'  => '0101',
118	'1.2.3'  => '0102',
119	'1.2.4'  => '0102',
120	'1.2.5'  => '0102',
121	'1.2.6'  => '0102',
122	'1.2.7'  => '0102',
123	'1.2.8'  => '0102',
124	'1.2.9'  => '0102',
125	'1.2.10'  => '0102',
126	'1.2.11'  => '0102',
127	'1.2.12'  => '0102',
128	'1.2.13'  => '0102',
129	'1.2.14'  => '0102',
130	'1.2.15'  => '0102',
131	'1.2.16'  => '0102',
132	'1.2.17'  => '0102',
133	'1.2.18'  => '0102',
134	'1.2.19'  => '0103',
135);
136
137$messages = array(
138	1  => array(
139		'message' => __('Save Successful.'),
140		'level' => MESSAGE_LEVEL_INFO),
141	2  => array(
142		'message' => __('Save Failed.'),
143		'level' => MESSAGE_LEVEL_ERROR),
144	3  => array(
145		'message' => __('Save Failed due to field input errors (Check red fields).'),
146		'level' => MESSAGE_LEVEL_ERROR),
147	4  => array(
148		'message' => __('Passwords do not match, please retype.'),
149		'level' => MESSAGE_LEVEL_ERROR),
150	5  => array(
151		'message' => __('You must select at least one field.'),
152		'level' => MESSAGE_LEVEL_ERROR),
153	6  => array(
154		'message' => __('You must have built in user authentication turned on to use this feature.'),
155		'level' => MESSAGE_LEVEL_ERROR),
156	7  => array(
157		'message' => __('XML parse error.'),
158		'level' => MESSAGE_LEVEL_ERROR),
159	8  => array(
160		'message' => __('The directory highlighted does not exist.  Please enter a valid directory.'),
161		'level' => MESSAGE_LEVEL_ERROR),
162	9  => array(
163		'message' => __('The Cacti log file must have the extension \'.log\''),
164		'level' => MESSAGE_LEVEL_ERROR),
165	10  => array(
166		'message' => __('Data Input for method does not appear to be whitelisted.'),
167		'level' => MESSAGE_LEVEL_ERROR),
168	11  => array(
169		'message' => __('Data Source does not exist.'),
170		'level' => MESSAGE_LEVEL_ERROR),
171	12 => array(
172		'message' => __('Username already in use.'),
173		'level' => MESSAGE_LEVEL_ERROR),
174	13  => array(
175		'message' => __('The SNMP v3 Privacy Passphrases do not match'),
176		'level' => MESSAGE_LEVEL_ERROR),
177	14  => array(
178		'message' => __('The SNMP v3 Authentication Passphrases do not match'),
179		'level' => MESSAGE_LEVEL_ERROR),
180	15 => array(
181		'message' => __('XML: Cacti version does not exist.'),
182		'level' => MESSAGE_LEVEL_ERROR),
183	16 => array(
184		'message' => __('XML: Hash version does not exist.'),
185		'level' => MESSAGE_LEVEL_ERROR),
186	17 => array(
187		'message' => __('XML: Generated with a newer version of Cacti.'),
188		'level' => MESSAGE_LEVEL_ERROR),
189	18 => array(
190		'message' => __('XML: Cannot locate type code.'),
191		'level' => MESSAGE_LEVEL_ERROR),
192	19 => array(
193		'message' => __('Username already exists.'),
194		'level' => MESSAGE_LEVEL_ERROR),
195	20 => array(
196		'message' => __('Username change not permitted for designated template or guest user.'),
197		'level' => MESSAGE_LEVEL_ERROR),
198	21 => array(
199		'message' => __('User delete not permitted for designated template or guest user.'),
200		'level' => MESSAGE_LEVEL_ERROR),
201	22 => array(
202		'message' => __('User delete not permitted for designated graph export user.'),
203		'level' => MESSAGE_LEVEL_ERROR),
204	23 => array(
205		'message' => __('Data Template includes deleted Data Source Profile.  Please resave the Data Template with an existing Data Source Profile.'),
206		'level' => MESSAGE_LEVEL_ERROR),
207	24 => array(
208		'message' => __('Graph Template includes deleted GPrint Prefix.  Please run database repair script to identify and/or correct.'),
209		'level' => MESSAGE_LEVEL_ERROR),
210	25 => array(
211		'message' => __('Graph Template includes deleted CDEFs.  Please run database repair script to identify and/or correct.'),
212		'level' => MESSAGE_LEVEL_ERROR),
213	26 => array(
214		'message' => __('Graph Template includes deleted Data Input Method.  Please run database repair script to identify.'),
215		'level' => MESSAGE_LEVEL_ERROR),
216	27 => array(
217		'message' => __('Data Template not found during Export.  Please run database repair script to identify.'),
218		'level' => MESSAGE_LEVEL_ERROR),
219	28 => array(
220		'message' => __('Device Template not found during Export.  Please run database repair script to identify.'),
221		'level' => MESSAGE_LEVEL_ERROR),
222	29 => array(
223		'message' => __('Data Query not found during Export.  Please run database repair script to identify.'),
224		'level' => MESSAGE_LEVEL_ERROR),
225	30 => array(
226		'message' => __('Graph Template not found during Export.  Please run database repair script to identify.'),
227		'level' => MESSAGE_LEVEL_ERROR),
228	31 => array(
229		'message' => __('Graph not found.  Either it has been deleted or your database needs repair.'),
230		'level' => MESSAGE_LEVEL_ERROR),
231	32 => array(
232		'message' => __('SNMPv3 Auth Passphrases must be 8 characters or greater.'),
233		'level' => MESSAGE_LEVEL_ERROR),
234	33 => array(
235		'message' => __('Some Graphs not updated. Unable to change device for Data Query based Graphs.'),
236		'level' => MESSAGE_LEVEL_ERROR),
237	34 => array(
238		'message' => __('Unable to change device for Data Query based Graphs.'),
239		'level' => MESSAGE_LEVEL_ERROR),
240	35 => array(
241		'message' => __('Some settings not saved. Check messages below.  Check red fields for errors.'),
242		'level' => MESSAGE_LEVEL_ERROR),
243	36 => array(
244		'message' => __('The file highlighted does not exist.  Please enter a valid file name.'),
245		'level' => MESSAGE_LEVEL_ERROR),
246	37 => array(
247		'message' => __('All User Settings have been returned to their default values.'),
248		'level' => MESSAGE_LEVEL_INFO),
249	38 => array(
250		'message' => __('Suggested Field Name was not entered.  Please enter a field name and try again.'),
251		'level' => MESSAGE_LEVEL_ERROR),
252	39 => array(
253		'message' => __('Suggested Value was not entered.  Please enter a suggested value and try again.'),
254		'level' => MESSAGE_LEVEL_ERROR),
255	40 => array(
256		'message' => __('You must select at least one object from the list.'),
257		'level' => MESSAGE_LEVEL_ERROR),
258	41 => array(
259		'message' => __('Device Template updated.  Remember to Sync Devices to push all changes to Devices that use this Device Template.'),
260		'level' => MESSAGE_LEVEL_INFO),
261	42 => array(
262		'message' => __('Save Successful. Settings replicated to Remote Data Collectors.'),
263		'level' => MESSAGE_LEVEL_INFO),
264	43 => array(
265		'message' => __('Save Failed.  Minimum Values must be less than Maximum Value.'),
266		'level' => MESSAGE_LEVEL_ERROR),
267	44 => array(
268		'message' => __('Unable to change password.  User account not found.'),
269		'level' => MESSAGE_LEVEL_ERROR),
270	'input_save_wo_ds' => array(
271		'message' => __('Data Input Saved.  You must update the Data Templates referencing this Data Input Method before creating Graphs or Data Sources.'),
272		'level' => MESSAGE_LEVEL_INFO),
273	'input_save_w_ds' => array(
274		'message' => __('Data Input Saved.  You must update the Data Templates referencing this Data Input Method before the Data Collectors will start using any new or modified Data Input Input Fields.'),
275		'level' => MESSAGE_LEVEL_INFO),
276	'input_field_save_wo_ds' => array(
277		'message' => __('Data Input Field Saved.  You must update the Data Templates referencing this Data Input Method before creating Graphs or Data Sources.'),
278		'level' => MESSAGE_LEVEL_INFO),
279	'input_field_save_w_ds' => array(
280		'message' => __('Data Input Field Saved.  You must update the Data Templates referencing this Data Input Method before the Data Collectors will start using any new or modified Data Input Input Fields.'),
281		'level' => MESSAGE_LEVEL_INFO),
282	'clog_invalid' => array(
283		'message' => __('Log file specified is not a Cacti log or archive file.'),
284		'level' => MESSAGE_LEVEL_INFO),
285	'clog_remove' => array(
286		'message' => __('Log file specified was Cacti archive file and was removed.'),
287		'level' => MESSAGE_LEVEL_INFO),
288	'clog_purged' => array(
289		'message' => __('Cacti log purged successfully'),
290		'level' => MESSAGE_LEVEL_INFO),
291	'password_change' => array(
292		'message' => __('If you force a password change, you must also allow the user to change their password.'),
293		'level' => MESSAGE_LEVEL_ERROR),
294	'nopassword' => array(
295		'message' => __('You are not allowed to change your password.'),
296		'level' => MESSAGE_LEVEL_ERROR),
297	'nopasswordlen' => array(
298		'message' => __('Unable to determine size of password field, please check permissions of db user'),
299		'level' => MESSAGE_LEVEL_ERROR),
300	'nopasswordinc' => array(
301		'message' => __('Unable to increase size of password field, pleas check permission of db user'),
302		'level' => MESSAGE_LEVEL_ERROR),
303	'nodomainpassword' => array(
304		'message' => __('LDAP/AD based password change not supported.'),
305		'level' => MESSAGE_LEVEL_ERROR),
306	'password_success' => array(
307		'message' => __('Password successfully changed.'),
308		'level' => MESSAGE_LEVEL_INFO),
309	'clog_permissions' => array(
310		'message' => __('Unable to clear log, no write permissions'),
311		'level' => MESSAGE_LEVEL_ERROR),
312	'clog_missing' => array(
313		'message' => __('Unable to clear log, file does not exist'),
314		'level' => MESSAGE_LEVEL_ERROR),
315	'csrf_timeout' => array(
316		'message' => __('CSRF Timeout, refreshing page.'),
317		'level' => MESSAGE_LEVEL_CSRF),
318	'csrf_ptimeout' => array(
319		'message' => __('CSRF Timeout occurred due to inactivity, page refreshed.'),
320		'level' => MESSAGE_LEVEL_ERROR),
321	'mg_mailtime_invalid' => array(
322		'message' => __('Invalid timestamp. Select timestamp in the future.'),
323		'level' => MESSAGE_LEVEL_ERROR),
324	'poller_sync' => array(
325		'message' => __('Data Collector(s) synchronized for offline operation'),
326		'level' => MESSAGE_LEVEL_INFO),
327	'poller_notfound' => array(
328		'message' => __('Data Collector(s) not found when attempting synchronization'),
329		'level' => MESSAGE_LEVEL_ERROR),
330	'poller_noconnect' => array(
331		'message' => __('Unable to establish MySQL connection with Remote Data Collector.'),
332		'level' => MESSAGE_LEVEL_ERROR),
333	'poller_nosync' => array(
334		'message' => __('Data Collector synchronization must be initiated from the main Cacti server.'),
335		'level' => MESSAGE_LEVEL_ERROR),
336	'poller_nomain' => array(
337		'message' => __('Synchronization does not include the Central Cacti Database server.'),
338		'level' => MESSAGE_LEVEL_ERROR),
339	'poller_nodupe' => array(
340		'message' => __('When saving a Remote Data Collector, the Database Hostname must be unique from all others.'),
341		'level' => MESSAGE_LEVEL_ERROR),
342	'poller_dbhost' => array(
343		'message' => __('Your Remote Database Hostname must be something other than \'localhost\' for each Remote Data Collector.'),
344		'level' => MESSAGE_LEVEL_ERROR),
345	'poller_paths' => array(
346		'message' => __('Path variables on this page were only saved locally.'),
347		'level' => MESSAGE_LEVEL_INFO),
348	'reports_save' => array(
349		'message' => __('Report Saved'),
350		'level' => MESSAGE_LEVEL_INFO),
351	'reports_save_failed' => array(
352		'message' => __('Report Save Failed'),
353		'level' => MESSAGE_LEVEL_ERROR),
354	'reports_item_save' => array(
355		'message' => __('Report Item Saved'),
356		'level' => MESSAGE_LEVEL_INFO),
357	'reports_item_save_failed' => array(
358		'message' => __('Report Item Save Failed'),
359		'level' => MESSAGE_LEVEL_ERROR),
360	'reports_graph_not_found' => array(
361		'message' => __('Graph was not found attempting to Add to Report'),
362		'level' => MESSAGE_LEVEL_ERROR),
363	'reports_not_owner' => array(
364		'message' => __('Unable to Add Graphs.  Current user is not owner'),
365		'level' => MESSAGE_LEVEL_ERROR),
366	'reports_add_error' => array(
367		'message' => __('Unable to Add all Graphs.  See error message for details.'),
368		'level' => MESSAGE_LEVEL_ERROR),
369	'reports_no_graph' => array(
370		'message' => __('You must select at least one Graph to add to a Report.'),
371		'level' => MESSAGE_LEVEL_ERROR),
372	'reports_graphs_added' => array(
373		'message' => __('All Graphs have been added to the Report.  Duplicate Graphs with the same Timespan were skipped.'),
374		'level' => MESSAGE_LEVEL_INFO),
375	'resource_cache_rebuild' => array(
376		'message' => __('Poller Resource Cache cleared.  Main Data Collector will rebuild at the next poller start, and Remote Data Collectors will sync afterwards.'),
377		'level' => MESSAGE_LEVEL_INFO),
378	'permission_denied' => array(
379		'message' => __('Permission Denied.  You do not have permission to the requested action.'),
380		'level' => MESSAGE_LEVEL_ERROR),
381	'page_not_defined' => array(
382		'message' => __('Page is not defined.  Therefore, it can not be displayed.'),
383		'level' => MESSAGE_LEVEL_ERROR),
384	'custom_error' => array(
385		'message' => __('Unexpected error occurred'),
386		'level' => MESSAGE_LEVEL_ERROR)
387);
388
389$cdef_operators = array(1 =>
390	'+',
391	'-',
392	'*',
393	'/',
394	'%'
395);
396
397$cdef_functions = array(1 =>
398	'SIN',
399	'COS',
400	'LOG',
401	'EXP',
402	'FLOOR',
403	'CEIL',
404	'LT',
405	'LE',
406	'GT',
407	'GE',
408	'EQ',
409	'IF',
410	'MIN',
411	'MAX',
412	'LIMIT',
413	'DUP',
414	'EXC',
415	'POP',
416	'UN',
417	'UNKN',
418	'PREV',
419	'INF',
420	'NEGINF',
421	'NOW',
422	'TIME',
423	'LTIME'
424);
425
426if (cacti_version_compare(get_rrdtool_version(), '1.8.0', '>=')) {
427	$cdef_functions[] = 'ROUND';
428}
429
430$vdef_functions = array(1 =>
431	'MAXIMUM',
432	'MINIMUM',
433	'AVERAGE',
434	'STDEV',
435	'LAST',
436	'FIRST',
437	'TOTAL',
438	'PERCENT',
439	'PERCENTNAN',
440	'LSLSLOPE',
441	'LSLINT',
442	'LSLCORREL'
443);
444
445$vdef_item_types = array(
446	CVDEF_ITEM_TYPE_FUNCTION => __('Function'),
447	CVDEF_ITEM_TYPE_SPEC_DS  => __('Special Data Source'),
448	CVDEF_ITEM_TYPE_STRING   => __('Custom String'),
449);
450
451$custom_vdef_data_source_types = array( // this may change as soon as RRDtool supports math in VDEF, until then only reference to CDEF may help
452	'CURRENT_DATA_SOURCE' => __('Current Graph Item Data Source'),
453);
454
455$input_types = array(
456	DATA_INPUT_TYPE_SNMP                => __('SNMP Get'), // Action 0:
457	DATA_INPUT_TYPE_SNMP_QUERY          => __('SNMP Query'),
458	DATA_INPUT_TYPE_SCRIPT              => __('Script/Command'),  // Action 1:
459	DATA_INPUT_TYPE_SCRIPT_QUERY        => __('Script Query'), // Action 1:
460	DATA_INPUT_TYPE_PHP_SCRIPT_SERVER   => __('Script Server'),
461	DATA_INPUT_TYPE_QUERY_SCRIPT_SERVER => __('Script Server Query')
462);
463
464$input_types_script = array(
465	DATA_INPUT_TYPE_SCRIPT              => __('Script/Command'),  // Action 1:
466	DATA_INPUT_TYPE_PHP_SCRIPT_SERVER   => __('Script Server'),
467);
468
469$reindex_types = array(
470	DATA_QUERY_AUTOINDEX_NONE               => __('None'),
471	DATA_QUERY_AUTOINDEX_BACKWARDS_UPTIME   => __('Uptime'),
472	DATA_QUERY_AUTOINDEX_INDEX_NUM_CHANGE   => __('Index Count'),
473	DATA_QUERY_AUTOINDEX_FIELD_VERIFICATION => __('Verify All')
474);
475
476$reindex_types_tips = array(
477	DATA_QUERY_AUTOINDEX_NONE               => __('All Re-Indexing will be manual or managed through scripts or Device Automation.'),
478	DATA_QUERY_AUTOINDEX_BACKWARDS_UPTIME   => __('When the Devices SNMP uptime goes backward, a Re-Index will be performed.'),
479	DATA_QUERY_AUTOINDEX_INDEX_NUM_CHANGE   => __('When the Data Query index count changes, a Re-Index will be performed.'),
480	DATA_QUERY_AUTOINDEX_FIELD_VERIFICATION => __('Every polling cycle, a Re-Index will be performed.  Very expensive.')
481);
482
483$snmp_query_field_actions = array(1 =>
484	__('SNMP Field Name (Dropdown)'),
485	__('SNMP Field Value (From User)'),
486	__('SNMP Output Type (Dropdown)')
487);
488
489$consolidation_functions = array(1 =>
490	'AVERAGE',
491	'MIN',
492	'MAX',
493	'LAST'
494);
495
496$data_source_types = array(
497	1 => 'GAUGE',
498	2 => 'COUNTER',
499	3 => 'DERIVE',
500	4 => 'ABSOLUTE',
501	5 => 'COMPUTE'
502);
503
504if (cacti_version_compare(get_rrdtool_version(), '1.5', '>=')) {
505	$data_source_types[6] = 'DCOUNTER';
506	$data_source_types[7] = 'DDERIVE';
507}
508
509$rrd_font_render_modes = array(
510	RRD_FONT_RENDER_NORMAL  => __('Normal'),
511	RRD_FONT_RENDER_LIGHT   => __('Light'),
512	RRD_FONT_RENDER_MONO    => __('Mono'),
513);
514
515$rrd_graph_render_modes = array(
516	RRD_GRAPH_RENDER_NORMAL => __('Normal'),
517	RRD_GRAPH_RENDER_MONO   => __('Mono'),
518);
519
520$rrd_legend_position = array(
521	RRD_LEGEND_POS_NORTH    => __('North'),
522	RRD_LEGEND_POS_SOUTH    => __('South'),
523	RRD_LEGEND_POS_WEST     => __('West'),
524	RRD_LEGEND_POS_EAST     => __('East'),
525);
526
527$rrd_textalign = array(
528	RRD_ALIGN_NONE          => __('None'),
529	RRD_ALIGN_LEFT          => __('Left'),
530	RRD_ALIGN_RIGHT         => __('Right'),
531	RRD_ALIGN_JUSTIFIED     => __('Justified'),
532	RRD_ALIGN_CENTER        => __('Center'),
533);
534
535$rrd_legend_direction = array(
536	RRD_LEGEND_DIR_TOPDOWN  => __('Top -> Down'),
537	RRD_LEGEND_DIR_BOTTOMUP => __('Bottom -> Up'),
538);
539
540$rrd_axis_formatters = array(
541	'numeric'   => __('Numeric'),
542	'timestamp' => __('Timestamp'),
543	'duration'  => __('Duration')
544);
545
546$graph_item_types = array(
547	GRAPH_ITEM_TYPE_COMMENT         => 'COMMENT',
548	GRAPH_ITEM_TYPE_HRULE           => 'HRULE',
549	GRAPH_ITEM_TYPE_VRULE           => 'VRULE',
550	GRAPH_ITEM_TYPE_LINE1           => 'LINE1',
551	GRAPH_ITEM_TYPE_LINE2           => 'LINE2',
552	GRAPH_ITEM_TYPE_LINE3           => 'LINE3',
553	GRAPH_ITEM_TYPE_AREA            => 'AREA',
554	GRAPH_ITEM_TYPE_STACK           => 'AREA:STACK',
555	GRAPH_ITEM_TYPE_GPRINT          => 'GPRINT',
556	GRAPH_ITEM_TYPE_GPRINT_AVERAGE  => 'GPRINT:AVERAGE',
557	GRAPH_ITEM_TYPE_GPRINT_LAST     => 'GPRINT:LAST',
558	GRAPH_ITEM_TYPE_GPRINT_MAX      => 'GPRINT:MAX',
559	GRAPH_ITEM_TYPE_GPRINT_MIN      => 'GPRINT:MIN',
560	GRAPH_ITEM_TYPE_LEGEND          => 'LEGEND',
561	GRAPH_ITEM_TYPE_LEGEND_CAMM     => 'LEGEND_CAMM',
562	GRAPH_ITEM_TYPE_LINESTACK       => 'LINE:STACK',
563	GRAPH_ITEM_TYPE_TIC             => 'TICK',
564	GRAPH_ITEM_TYPE_TEXTALIGN       => 'TEXTALIGN',
565);
566
567asort($graph_item_types);
568
569$image_types = array(
570	1 => 'PNG',
571	3 => 'SVG'
572);
573
574$snmp_security_levels = array(
575	'noAuthNoPriv' => 'noAuthNoPriv',
576	'authNoPriv' => 'authNoPriv',
577	'authPriv' => 'authPriv'
578);
579
580$snmp_versions = array(0 =>
581	__('Not In Use'),
582	__('Version %d', 1),
583	__('Version %d', 2),
584	__('Version %d', 3)
585);
586
587$snmp_auth_protocols = array(
588	'[None]' => __('[None]'),
589	'MD5'    => __('MD5'),
590	'SHA'    => __('SHA'),
591	'SHA224' => __('SHA-224'),
592	'SHA256' => __('SHA-256'),
593	'SHA392' => __('SHA-392'),
594	'SHA512' => __('SHA-512'),
595);
596
597$snmp_priv_protocols = array(
598	'[None]' => __('[None]'),
599	'DES'    => __('DES'),
600	'AES128' => __('AES-128'),
601	'AES192' => __('AES-192'),
602	'AES256' => __('AES-256')
603);
604
605$banned_snmp_strings = array(
606	'End of MIB',
607	'No Such'
608);
609
610$logfile_options = array(1 =>
611	__('Logfile Only'),
612	__('Logfile and Syslog/Eventlog'),
613	__('Syslog/Eventlog Only')
614);
615
616$availability_options = array(
617	AVAIL_NONE             => __('None'),
618	AVAIL_SNMP_AND_PING    => __('Ping and SNMP Uptime'),
619	AVAIL_SNMP_OR_PING     => __('Ping or SNMP Uptime'),
620	AVAIL_SNMP             => __('SNMP Uptime'),
621	AVAIL_SNMP_GET_SYSDESC => __('SNMP Desc'),
622	AVAIL_SNMP_GET_NEXT    => __('SNMP getNext'),
623	AVAIL_PING             => __('Ping')
624);
625
626$ping_methods = array(
627	PING_ICMP => __('ICMP Ping'),
628	PING_TCP  => __('TCP Ping'),
629	PING_UDP  => __('UDP Ping')
630);
631
632$logfile_verbosity = array(
633	POLLER_VERBOSITY_NONE   => __('NONE - Syslog Only if Selected'),
634	POLLER_VERBOSITY_LOW    => __('LOW - Statistics and Errors'),
635	POLLER_VERBOSITY_MEDIUM => __('MEDIUM - Statistics, Errors and Results'),
636	POLLER_VERBOSITY_HIGH   => __('HIGH - Statistics, Errors, Results and Major I/O Events'),
637	POLLER_VERBOSITY_DEBUG  => __('DEBUG - Statistics, Errors, Results, I/O and Program Flow'),
638	POLLER_VERBOSITY_DEVDBG => __('DEVEL - Developer DEBUG Level')
639);
640
641$poller_options = array(
642	1 => 'cmd.php',
643	2 => 'spine'
644);
645
646if (!file_exists(read_config_option('path_spine')) || !is_executable(read_config_option('path_spine'))) {
647	unset($poller_options[2]);
648}
649
650$aggregation_levels = array(
651	1       => __('Selected Poller Interval'),
652	30      => __('%d Seconds', 30),
653	60      => __('1 Minute'),
654	300     => __('%d Minutes', 5),
655	600     => __('%d Minutes', 10),
656	900     => __('%d Minutes', 15),
657	1800    => __('%d Minutes', 30),
658	3600    => __('1 Hour'),
659	7200    => __('%d Hours', 2),
660	10800   => __('%d Hours', 3),
661	14400   => __('%d Hours', 4),
662	21600   => __('%d Hours', 6),
663	43200   => __('%d Hours', 12),
664	86400   => __('%d Day', 1),
665	604800  => __('%d Week', 1)
666);
667
668$sampling_intervals = array(
669	10    => __('Every %d Seconds', 10),
670	15    => __('Every %d Seconds', 15),
671	20    => __('Every %d Seconds', 20),
672	30    => __('Every %d Seconds', 30),
673	60    => __('Every Minute'),
674	300   => __('Every %d Minutes', 5),
675	600   => __('Every %d Minutes', 10),
676	900   => __('Every %d Minutes', 15),
677	1200  => __('Every %d Minutes', 20),
678	1800  => __('Every %d Minutes', 30),
679	3600  => __('Every Hour'),
680	7200  => __('Every %d Hours', 2),
681	14400 => __('Every %d Hours', 4),
682	28800 => __('Every %d Hours', 8),
683	43200 => __('Every %d Hours', 12),
684	86400 => __('Every %d Day', 1)
685);
686
687$heartbeats = array(
688	20     => __('%d Seconds', 20),
689	30     => __('%d Seconds', 30),
690	40     => __('%d Seconds', 40),
691	60     => __('%d Minute',  1),
692	120    => __('%d Minutes', 2),
693	300    => __('%d Minutes', 5),
694	600    => __('%d Minutes', 10),
695	1200   => __('%d Minutes', 20),
696	1800   => __('%d Minutes', 30),
697	2400   => __('%d Minutes', 40),
698	3600   => __('%d Hour', 1),
699	7200   => __('%d Hours', 2),
700	14400  => __('%d Hours', 4),
701	28800  => __('%d Hours', 8),
702	57600  => __('%d Hours', 16),
703	86400  => __('%d Day', 1),
704	172800 => __('%d Days', 2)
705);
706
707$timespans = array(
708	3600      => __('%d Hour', 1),
709	7200      => __('%d Hours', 2),
710	14400     => __('%d Hours', 4),
711	21600     => __('%d Hours', 6),
712	43200     => __('%d Hours', 12),
713	86400     => __('%d Day', 1),
714	172800    => __('%d Days', 2),
715	345600    => __('%d Days', 4),
716	604800    => __('%d Week', 1),
717	1209600   => __('%d Weeks', 2),
718	1814400   => __('%d Weeks', 3),
719	2618784   => __('%d Month', 1),
720	5237568   => __('%d Months', 2),
721	7856352   => __('%d Months', 3),
722	10475136  => __('%d Months', 4),
723	15712704  => __('%d Months', 6),
724	31536000  => __('%d Year', 1),
725	63072000  => __('%d Years', 2),
726	94608000  => __('%d Years', 3),
727	126144000 => __('%d Years', 4),
728	157680000 => __('%d Years', 5),
729	189216000 => __('%d Years', 6),
730	220752000 => __('%d Years', 7),
731	252288000 => __('%d Years', 8),
732	283824000 => __('%d Years', 9),
733	315360000 => __('%d Years', 10)
734);
735
736$poller_intervals = array(
737	10  => __('Every %d Seconds', 10),
738	15  => __('Every %d Seconds', 15),
739	20  => __('Every %d Seconds', 20),
740	30  => __('Every %d Seconds', 30),
741	60  => __('Every Minute'),
742	300 => __('Every %d Minutes', 5)
743);
744
745$poller_sync_intervals = array(
746	0     => __('Disabled/Manual'),
747	1800  => __('Every %d Minutes', 30),
748	3600  => __('Every Hour'),
749	7200  => __('Every %d Hours', 2),
750	14400 => __('Every %d Hours', 4),
751	28800 => __('Every %d Hours', 8),
752	57600 => __('Every %d Hours', 16),
753	86400 => __('Every day'),
754);
755
756$device_threads = array(
757	1 => __('1 Thread (default)'),
758	2 => __('%d Threads', 2),
759	3 => __('%d Threads', 3),
760	4 => __('%d Threads', 4),
761	5 => __('%d Threads', 5),
762	6 => __('%d Threads', 6),
763	7 => __('%d Threads', 7),
764	8 => __('%d Threads', 8),
765	9 => __('%d Threads', 9),
766	10 => __('%d Threads', 10)
767);
768
769$cron_intervals = array(
770	60  => __('Every Minute'),
771	300 => __('Every %d Minutes', 5)
772);
773
774$registered_cacti_names = array(
775	'path_cacti'
776);
777
778$graph_views = array(1 =>
779	__('Tree View'),
780	__('List View'),
781	__('Preview View')
782);
783
784$auth_methods = array(
785	1 => __('Builtin Authentication'),
786	2 => __('Web Basic Authentication')
787);
788
789if (function_exists('ldap_connect')) {
790	$auth_methods[3] = __('LDAP Authentication');
791	$auth_methods[4] = __('Multiple LDAP/AD Domains');
792}
793
794$domain_types = array(
795	'1' => __('LDAP'),
796	'2' => __('Active Directory')
797);
798
799$auth_realms = get_auth_realms();
800
801$ldap_versions = array(
802	2 => __('Version %d', 2),
803	3 => __('Version %d', 3)
804);
805
806$ldap_encryption = array(
807	0 => __('None'),
808	1 => __('LDAPS'),
809	2 => __('LDAP + TLS')
810);
811
812$ldap_tls_cert_req = array(
813	LDAP_OPT_X_TLS_NEVER  => __('Never'),
814	LDAP_OPT_X_TLS_HARD   => __('Hard'),
815	LDAP_OPT_X_TLS_DEMAND => __('Demand'),
816	LDAP_OPT_X_TLS_ALLOW  => __('Allow'),
817	LDAP_OPT_X_TLS_TRY    => __('Try')
818);
819
820$ldap_modes = array(
821	0 => __('No Searching'),
822	1 => __('Anonymous Searching'),
823	2 => __('Specific Searching')
824);
825
826$rrdtool_versions = array(
827	'1.3.0' => 'RRDtool 1.3+',
828	'1.4.0' => 'RRDtool 1.4+',
829	'1.5.0' => 'RRDtool 1.5+',
830	'1.6.0' => 'RRDtool 1.6+',
831	'1.7.0' => 'RRDtool 1.7+',
832	'1.7.1' => 'RRDtool 1.7.1+',
833	'1.7.2' => 'RRDtool 1.7.2+',
834	'1.8.0' => 'RRDtool 1.8+'
835);
836
837$i18n_modes = array(
838    0 => __('Disabled'),
839    1 => __('Enabled'),
840    2 => __('Enabled (strict mode)'),
841);
842
843$cdef_item_types = array(
844	CVDEF_ITEM_TYPE_FUNCTION => __('Function'),
845	CVDEF_ITEM_TYPE_OPERATOR => __('Operator'),
846	CVDEF_ITEM_TYPE_SPEC_DS  => __('Special Data Source'),
847	CVDEF_ITEM_TYPE_CDEF     => __('Another CDEF'),
848	CVDEF_ITEM_TYPE_STRING   => __('Custom String')
849);
850
851$graph_color_alpha = array(
852	'00' => '  0%',
853	'19' => ' 10%',
854	'33' => ' 20%',
855	'4C' => ' 30%',
856	'66' => ' 40%',
857	'7F' => ' 50%',
858	'99' => ' 60%',
859	'B2' => ' 70%',
860	'CC' => ' 80%',
861	'E5' => ' 90%',
862	'FF' => '100%'
863);
864
865$tree_sort_types = array(
866	TREE_ORDERING_INHERIT    => __('Inherit Parent Sorting'),
867	TREE_ORDERING_NONE       => __('Manual Ordering (No Sorting)'),
868	TREE_ORDERING_ALPHABETIC => __('Alphabetic Ordering'),
869	TREE_ORDERING_NATURAL    => __('Natural Ordering'),
870	TREE_ORDERING_NUMERIC    => __('Numeric Ordering')
871);
872
873$tree_item_types = array(
874	TREE_ITEM_TYPE_HEADER => __('Header'),
875	TREE_ITEM_TYPE_GRAPH  => __('Graph'),
876	TREE_ITEM_TYPE_HOST   => __('Device')
877);
878
879$host_group_types = array(
880	HOST_GROUPING_GRAPH_TEMPLATE   => __('Graph Template'),
881	HOST_GROUPING_DATA_QUERY_INDEX => __('Data Query Index')
882);
883
884$custom_data_source_types = array(
885	'CURRENT_DATA_SOURCE'            => __('Current Graph Item Data Source'),
886	'CURRENT_DATA_SOURCE_PI'         => __('Current Graph Item Polling Interval'),
887	'ALL_DATA_SOURCES_NODUPS'        => __('All Data Sources (Do not Include Duplicates)'),
888	'ALL_DATA_SOURCES_DUPS'          => __('All Data Sources (Include Duplicates)'),
889	'SIMILAR_DATA_SOURCES_NODUPS'    => __('All Similar Data Sources (Do not Include Duplicates)'),
890	'SIMILAR_DATA_SOURCES_NODUPS_PI' => __('All Similar Data Sources (Do not Include Duplicates) Polling Interval'),
891	'SIMILAR_DATA_SOURCES_DUPS'      => __('All Similar Data Sources (Include Duplicates)'),
892	'CURRENT_DS_MINIMUM_VALUE'       => __('Current Data Source Item: Minimum Value'),
893	'CURRENT_DS_MAXIMUM_VALUE'       => __('Current Data Source Item: Maximum Value'),
894	'CURRENT_GRAPH_MINIMUM_VALUE'    => __('Graph: Lower Limit'),
895	'CURRENT_GRAPH_MAXIMUM_VALUE'    => __('Graph: Upper Limit'),
896	'COUNT_ALL_DS_NODUPS'            => __('Count of All Data Sources (Do not Include Duplicates)'),
897	'COUNT_ALL_DS_DUPS'              => __('Count of All Data Sources (Include Duplicates)'),
898	'COUNT_SIMILAR_DS_NODUPS'        => __('Count of All Similar Data Sources (Do not Include Duplicates)'),
899	'COUNT_SIMILAR_DS_DUPS'	         => __('Count of All Similar Data Sources (Include Duplicates)')
900);
901
902if ($config['poller_id'] == 1 || $config['connection'] == 'online') {
903	$menu = array(
904		__('Main Console') => array(
905			'index.php' => __('Console Page')
906			),
907		__('Create') => array(
908			'graphs_new.php' => __('New Graphs'),
909			'host.php?action=edit&create=true' => __('New Device')
910			),
911		__('Management') => array(
912			'host.php'             => __('Devices'),
913			'sites.php'            => __('Sites'),
914			'tree.php'             => __('Trees'),
915			'graphs.php'           => __('Graphs'),
916			'data_sources.php'     => __('Data Sources'),
917			'aggregate_graphs.php' => __('Aggregates'),
918			),
919		__('Data Collection') => array(
920			'pollers.php' => __('Data Collectors'),
921			'data_queries.php' => __('Data Queries'),
922			'data_input.php'   => __('Data Input Methods')
923			),
924		__('Templates') => array(
925			'host_templates.php'      => __('Device'),
926			'graph_templates.php'     => __('Graph'),
927			'data_templates.php'      => __('Data Source'),
928			'aggregate_templates.php' => __('Aggregate'),
929			'color_templates.php'     => __('Color')
930			),
931		__('Automation') => array(
932			'automation_networks.php'    => __('Networks'),
933			'automation_devices.php'     => __('Discovered Devices'),
934			'automation_templates.php'   => __('Device Rules'),
935			'automation_graph_rules.php' => __('Graph Rules'),
936			'automation_tree_rules.php'  => __('Tree Rules'),
937			'automation_snmp.php'        => __('SNMP Options'),
938			),
939		__('Presets') => array(
940			'data_source_profiles.php' => __('Data Profiles'),
941			'cdef.php'                 => __('CDEFs'),
942			'vdef.php'                 => __('VDEFs'),
943			'color.php'                => __('Colors'),
944			'gprint_presets.php'       => __('GPRINTs')
945			),
946		__('Import/Export') => array(
947			'templates_import.php' => __('Import Templates'),
948			'templates_export.php' => __('Export Templates')
949			),
950		__('Configuration')  => array(
951			'settings.php'         => __('Settings'),
952			'user_admin.php'       => __('Users'),
953			'user_group_admin.php' => __('User Groups'),
954			'user_domains.php'     => __('User Domains')
955			),
956		__('Utilities') => array(
957			'utilities.php'  => __('System Utilities'),
958			'links.php'      => __('External Links'),
959			),
960		__('Troubleshooting') => array(
961			'data_debug.php' => __('Data Sources'),
962		)
963	);
964} else {
965	$menu = array(
966		__('Management') => array(
967			'host.php' => __('Devices')
968			),
969		__('Data Collection') => array(
970			'pollers.php' => __('Data Collectors')
971			),
972		__('Configuration')  => array(
973			'settings.php' => __('Settings')
974			),
975		__('Utilities') => array(
976			'utilities.php' => __('System Utilities')
977			)
978	);
979}
980
981$menu_glyphs = array(
982	__('Main Console') => 'fa fa-map',
983	__('Create') => 'fa fa-chart-area',
984	__('Management') => 'fa fa-home',
985	__('Data Collection') => 'fa fa-database',
986	__('Templates') => 'fa fa-clone',
987	__('Automation') => 'fab fa-superpowers',
988	__('Presets') => 'fa fa-archive',
989	__('Import/Export') => 'fa fa-exchange-alt',
990	__('Configuration')  => 'fa fa-sliders-h',
991	__('Utilities') => 'fa fa-cogs',
992	__('External Links') => 'fa fa-external-link-alt',
993	__('Support') => 'fa fa-question-circle',
994	__('Troubleshooting') => 'fa fa-bug'
995);
996
997if ((isset($_SESSION['sess_user_id']))) {
998	if (db_table_exists('external_links')) {
999		$consoles = db_fetch_assoc('SELECT id, title, extendedstyle
1000			FROM external_links
1001			WHERE style="CONSOLE"
1002			AND enabled="on"
1003			ORDER BY extendedstyle, sortorder, id');
1004
1005		if (cacti_sizeof($consoles)) {
1006			foreach ($consoles as $page) {
1007				if (is_realm_allowed($page['id']+10000)) {
1008					$menuname = (isset($page['extendedstyle']) && $page['extendedstyle'] != '' ? $page['extendedstyle'] : __('External Links'));
1009					$menu[$menuname]['link.php?id=' . $page['id']] = $page['title'];
1010				}
1011			}
1012		}
1013	}
1014}
1015
1016$log_tail_lines = array(
1017	-1    => __('All Lines'),
1018	10    => __('%d Lines', 10),
1019	15    => __('%d Lines', 15),
1020	20    => __('%d Lines', 20),
1021	50    => __('%d Lines', 50),
1022	100   => __('%d Lines', 100),
1023	200   => __('%d Lines', 200),
1024	500   => __('%d Lines', 500),
1025	1000  => __('%d Lines', 1000),
1026	2000  => __('%d Lines', 2000),
1027	3000  => __('%d Lines', 3000),
1028	5000  => __('%d Lines', 5000),
1029	10000 => __('%d Lines', 10000)
1030);
1031
1032$item_rows = array(
1033	10    => '10',
1034	15    => '15',
1035	16    => '16',
1036	17    => '17',
1037	18    => '18',
1038	19    => '19',
1039	20    => '20',
1040	21    => '21',
1041	22    => '22',
1042	23    => '23',
1043	24    => '24',
1044	25    => '25',
1045	26    => '26',
1046	27    => '27',
1047	30    => '30',
1048	40    => '40',
1049	44    => '44',
1050	45    => '45',
1051	50    => '50',
1052	100   => '100',
1053	250   => '250',
1054	500   => '500',
1055	750   => '750',
1056	1000  => '1000',
1057	2000  => '2000',
1058	3000  => '3000',
1059	4000  => '4000',
1060	5000  => '5000',
1061);
1062
1063// Adjust the number of items rows based upon max_input_vars
1064$max_size = ini_get('max_input_vars') - 20;
1065foreach($item_rows as $index => $row) {
1066	if ($index > $max_size) {
1067		unset($item_rows[$index]);
1068	}
1069}
1070
1071$graphs_per_page = array(
1072	4   => '4',
1073	6   => '6',
1074	8   => '8',
1075	9   => '9',
1076	10  => '10',
1077	12  => '12',
1078	14  => '14',
1079	15  => '15',
1080	16  => '16',
1081	18  => '18',
1082	20  => '20',
1083	24  => '24',
1084	25  => '25',
1085	27  => '27',
1086	28  => '28',
1087	30  => '30',
1088	32  => '32',
1089	35  => '35',
1090	40  => '40',
1091	50  => '50',
1092	100 => '100'
1093);
1094
1095$page_refresh_interval = array(
1096	5       => __('%d Seconds', 5),
1097	10      => __('%d Seconds', 10),
1098	20      => __('%d Seconds', 20),
1099	30      => __('%d Seconds', 30),
1100	60      => __('1 Minute'),
1101	300     => __('%d Minutes', 5),
1102	600     => __('%d Minutes', 10),
1103	9999999 => __('Never')
1104);
1105
1106$user_auth_realms = array(
1107	8    => __('Console Access'),
1108	7    => __('View Graphs'),
1109	25   => __('Realtime Graphs'),
1110	20   => __('Update Profile'),
1111	24   => __('External Links'),
1112
1113	1    => __('Users/Groups'),
1114	15   => __('Settings/Utilities'),
1115	23   => __('Automation'),
1116	26   => __('Installation/Upgrades'),
1117
1118	2    => __('Data Input Methods'),
1119	13   => __('Data Queries'),
1120
1121	3    => __('Sites/Devices/Data'),
1122	5    => __('Graphs'),
1123	4    => __('Trees'),
1124	1043 => __('Spike Handling'),
1125
1126	9    => __('Data Source Profiles'),
1127	14   => __('Presets'),
1128
1129	10   => __('Graph Templates'),
1130	11   => __('Data Templates'),
1131	12   => __('Device Templates'),
1132
1133	16   => __('Export Templates'),
1134	17   => __('Import Templates'),
1135
1136	18   => __('Log Administration'),
1137	19   => __('Log Viewing'),
1138
1139	21   => __('Reports Administration'),
1140	22   => __('Reports Creation'),
1141	27   => __('Show Graph Action Icons'),
1142	28   => __('Show User Help Links'),
1143	101  => __('Plugin Administration')
1144);
1145
1146$user_auth_roles = array(
1147	__('Normal User')            => array(7, 19, 20, 22, 24, 25, 27, 28),
1148	__('Template Editor')        => array(8, 2, 9, 10, 11, 12, 13, 14, 16, 17),
1149	__('General Administration') => array(8, 3, 4, 5, 23, 1043),
1150	__('System Administration')  => array(8, 15, 26, 1, 18, 21, 101)
1151);
1152
1153$user_auth_realm_filenames = array(
1154	'about.php' => 8,
1155	'cdef.php' => 14,
1156	'clog.php' => 18,
1157	'clog_user.php' => 19,
1158	'color.php' => 5,
1159	'data_debug.php' => 15,
1160	'data_input.php' => 2,
1161	'data_sources.php' => 3,
1162	'data_source_profiles.php' => 9,
1163	'data_templates.php' => 11,
1164	'gprint_presets.php' => 5,
1165	'graph.php' => 7,
1166	'graph_image.php' => 7,
1167	'graph_json.php' => 7,
1168	'graph_xport.php' => 7,
1169	'graph_templates.php' => 10,
1170	'graph_templates_inputs.php' => 10,
1171	'graph_templates_items.php' => 10,
1172	'graph_view.php' => 7,
1173	'graph_realtime.php' => 25,
1174	'graphs.php' => 5,
1175	'graphs_items.php' => 5,
1176	'graphs_new.php' => 5,
1177	'sites.php' => 3,
1178	'pollers.php' => 3,
1179	'host.php' => 3,
1180	'host_templates.php' => 12,
1181	'index.php' => 8,
1182	'install.php' => 26,
1183	'step_json.php' => 26,
1184	'managers.php' => 15,
1185	'rrdcleaner.php' => 15,
1186	'settings.php' => 15,
1187	'links.php' => 15,
1188	'data_queries.php' => 13,
1189	'templates_export.php' => 16,
1190	'templates_import.php' => 17,
1191	'tree.php' => 4,
1192	'user_admin.php' => 1,
1193	'user_domains.php' => 1,
1194	'user_group_admin.php' => 1,
1195	'utilities.php' => 15,
1196	'vdef.php' => 14,
1197	'smtp_servers.php' => 8,
1198	'email_templates.php' => 8,
1199	'event_queue.php' => 8,
1200	'smtp_queue.php' => 8,
1201	'logout.php' => -1,
1202	'auth_profile.php' => 20,
1203	'auth_changepassword.php' => -1,
1204	'reports_user.php' => 21,
1205	'reports_admin.php' => 22,
1206	'automation_graph_rules.php' => 23,
1207	'automation_tree_rules.php' => 23,
1208	'automation_templates.php' => 23,
1209	'automation_networks.php' => 23,
1210	'automation_devices.php' => 23,
1211	'automation_snmp.php' => 23,
1212	'color_templates.php' => 5,
1213	'color_templates_items.php' => 5,
1214	'aggregate_templates.php' => 5,
1215	'aggregate_graphs.php' => 5,
1216	'aggregate_items.php' => 5,
1217	'spikekill.php' => 1043,
1218	'permission_denied.php' => -1
1219);
1220
1221$hash_type_codes = array(
1222	'round_robin_archive' => '15',
1223	'cdef' => '05',
1224	'cdef_item' => '14',
1225	'gprint_preset' => '06',
1226	'data_input_method' => '03',
1227	'data_input_field' => '07',
1228	'data_template' => '01',
1229	'data_template_item' => '08',
1230	'graph_template' => '00',
1231	'graph_template_item' => '10',
1232	'graph_template_input' => '09',
1233	'data_query' => '04',
1234	'data_query_graph' => '11',
1235	'data_query_sv_graph' => '12',
1236	'data_query_sv_data_source' => '13',
1237	'host_template' => '02',
1238	'vdef' => '18',
1239	'vdef_item' => '19',
1240	'data_source_profile' => '20'
1241);
1242
1243$hash_type_names = array(
1244	'cdef'                 => __('CDEF'),
1245	'cdef_item'            => __('CDEF Item'),
1246	'gprint_preset'        => __('GPRINT Preset'),
1247	'data_template'        => __('Data Template'),
1248	'data_input_method'    => __('Data Input Method'),
1249	'data_input_field'     => __('Data Input Field'),
1250	'data_source_profile'  => __('Data Source Profile'),
1251	'data_template_item'   => __('Data Template Item'),
1252	'graph_template'       => __('Graph Template'),
1253	'graph_template_item'  => __('Graph Template Item'),
1254	'graph_template_input' => __('Graph Template Input'),
1255	'data_query'           => __('Data Query'),
1256	'host_template'        => __('Device Template'),
1257	'vdef'                 => __('VDEF'),
1258	'vdef_item'            => __('VDEF Item')
1259);
1260
1261$hash_system_data_inputs = array(
1262	'3eb92bb845b9660a7445cf9740726522', // Get SNMP Data
1263	'bf566c869ac6443b0c75d1c32b5a350e', // Get SNMP Data (Indexed)
1264	'80e9e4c4191a5da189ae26d0e237f015', // Get Script Data (Indexed)
1265	'332111d8b54ac8ce939af87a7eac0c06'  // Get Script Server Data (Indexed)
1266);
1267
1268$host_struc = array(
1269	'host_template_id',
1270	'description',
1271	'hostname',
1272	'site_id',
1273	'poller_id',
1274	'notes',
1275	'snmp_community',
1276	'snmp_version',
1277	'snmp_username',
1278	'snmp_password',
1279	'snmp_auth_protocol',
1280	'snmp_priv_passphrase',
1281	'snmp_priv_protocol',
1282	'snmp_context',
1283	'snmp_engine_id',
1284	'snmp_port',
1285	'snmp_timeout',
1286	'max_oids',
1287	'bulk_walk_size',
1288	'device_threads',
1289	'availability_method',
1290	'location',
1291	'external_id',
1292	'ping_method',
1293	'ping_port',
1294	'ping_timeout',
1295	'ping_retries',
1296	'disabled',
1297	'status',
1298	'status_event_count',
1299	'status_fail_date',
1300	'status_rec_date',
1301	'status_last_error',
1302	'min_time',
1303	'max_time',
1304	'cur_time',
1305	'avg_time',
1306	'total_polls',
1307	'failed_polls',
1308	'availability'
1309);
1310
1311$graph_timespans = array(
1312	GT_LAST_HALF_HOUR => __('Last Half Hour'),
1313	GT_LAST_HOUR      => __('Last Hour'),
1314	GT_LAST_2_HOURS   => __('Last %d Hours', 2),
1315	GT_LAST_4_HOURS   => __('Last %d Hours', 4),
1316	GT_LAST_6_HOURS   => __('Last %d Hours', 6),
1317	GT_LAST_12_HOURS  => __('Last %d Hours', 12),
1318	GT_LAST_DAY       => __('Last Day'),
1319	GT_LAST_2_DAYS    => __('Last %d Days', 2),
1320	GT_LAST_3_DAYS    => __('Last %d Days', 3),
1321	GT_LAST_4_DAYS    => __('Last %d Days', 4),
1322	GT_LAST_WEEK      => __('Last Week'),
1323	GT_LAST_2_WEEKS   => __('Last %d Weeks', 2),
1324	GT_LAST_MONTH     => __('Last Month'),
1325	GT_LAST_2_MONTHS  => __('Last %d Months', 2),
1326	GT_LAST_3_MONTHS  => __('Last %d Months', 3),
1327	GT_LAST_4_MONTHS  => __('Last %d Months', 4),
1328	GT_LAST_6_MONTHS  => __('Last %d Months', 6),
1329	GT_LAST_YEAR      => __('Last Year'),
1330	GT_LAST_2_YEARS   => __('Last %d Years', 2),
1331	GT_DAY_SHIFT      => __('Day Shift'),
1332	GT_THIS_DAY       => __('This Day'),
1333	GT_THIS_WEEK      => __('This Week'),
1334	GT_THIS_MONTH     => __('This Month'),
1335	GT_THIS_YEAR      => __('This Year'),
1336	GT_PREV_DAY       => __('Previous Day'),
1337	GT_PREV_WEEK      => __('Previous Week'),
1338	GT_PREV_MONTH     => __('Previous Month'),
1339	GT_PREV_YEAR      => __('Previous Year')
1340);
1341
1342// ***** MUST BE KEPT IN SYNC WITH graph_timeshifts_vals *********
1343$graph_timeshifts = array(
1344	GTS_HALF_HOUR => __('%d Min', 30),
1345	GTS_1_HOUR    => __('%d Hour', 1),
1346	GTS_2_HOURS   => __('%d Hours', 2),
1347	GTS_4_HOURS   => __('%d Hours', 4),
1348	GTS_6_HOURS   => __('%d Hours', 6),
1349	GTS_12_HOURS  => __('%d Hours', 12),
1350	GTS_1_DAY     => __('%d Day', 1),
1351	GTS_2_DAYS    => __('%d Days', 2),
1352	GTS_3_DAYS    => __('%d Days', 3),
1353	GTS_4_DAYS    => __('%d Days', 4),
1354	GTS_1_WEEK    => __('%d Week', 1),
1355	GTS_2_WEEKS   => __('%d Weeks', 2),
1356	GTS_1_MONTH   => __('%d Month', 1),
1357	GTS_2_MONTHS  => __('%d Months', 2),
1358	GTS_3_MONTHS  => __('%d Months', 3),
1359	GTS_4_MONTHS  => __('%d Months', 4),
1360	GTS_6_MONTHS  => __('%d Months', 6),
1361	GTS_1_YEAR    => __('%d Year', 1),
1362	GTS_2_YEARS   => __('%d Years', 2)
1363);
1364
1365// ***** MUST BE KEPT IN SYNC WITH graph_timeshifts *********
1366$graph_timeshifts_vals = array(
1367	GTS_HALF_HOUR => sprintf('%d Min', 30),
1368	GTS_1_HOUR    => sprintf('%d Hour', 1),
1369	GTS_2_HOURS   => sprintf('%d Hours', 2),
1370	GTS_4_HOURS   => sprintf('%d Hours', 4),
1371	GTS_6_HOURS   => sprintf('%d Hours', 6),
1372	GTS_12_HOURS  => sprintf('%d Hours', 12),
1373	GTS_1_DAY     => sprintf('%d Day', 1),
1374	GTS_2_DAYS    => sprintf('%d Days', 2),
1375	GTS_3_DAYS    => sprintf('%d Days', 3),
1376	GTS_4_DAYS    => sprintf('%d Days', 4),
1377	GTS_1_WEEK    => sprintf('%d Week', 1),
1378	GTS_2_WEEKS   => sprintf('%d Weeks', 2),
1379	GTS_1_MONTH   => sprintf('%d Month', 1),
1380	GTS_2_MONTHS  => sprintf('%d Months', 2),
1381	GTS_3_MONTHS  => sprintf('%d Months', 3),
1382	GTS_4_MONTHS  => sprintf('%d Months', 4),
1383	GTS_6_MONTHS  => sprintf('%d Months', 6),
1384	GTS_1_YEAR    => sprintf('%d Year', 1),
1385	GTS_2_YEARS   => sprintf('%d Years', 2)
1386);
1387
1388$graph_weekdays = array(
1389	WD_SUNDAY    => date('l', strtotime('Sunday')),
1390	WD_MONDAY    => date('l', strtotime('Monday')),
1391	WD_TUESDAY   => date('l', strtotime('Tuesday')),
1392	WD_WEDNESDAY => date('l', strtotime('Wednesday')),
1393	WD_THURSDAY  => date('l', strtotime('Thursday')),
1394	WD_FRIDAY    => date('l', strtotime('Friday')),
1395	WD_SATURDAY  => date('l', strtotime('Saturday'))
1396);
1397
1398$dateformats = array(
1399	GD_MO_D_Y => __('Month Number, Day, Year'),
1400	GD_MN_D_Y => __('Month Name, Day, Year'),
1401	GD_D_MO_Y => __('Day, Month Number, Year'),
1402	GD_D_MN_Y => __('Day, Month Name, Year'),
1403	GD_Y_MO_D => __('Year, Month Number, Day'),
1404	GD_Y_MN_D => __('Year, Month Name, Day')
1405);
1406
1407$datechar = array(
1408	GDC_HYPHEN => '-',
1409	GDC_SLASH  => '/',
1410	GDC_DOT    => '.'
1411);
1412
1413$dsstats_refresh_interval = array(
1414	'boost' => __('After Boost'),
1415	'60'    => __('1 Hour'),
1416	'120'   => __('%d Hours', 2),
1417	'180'   => __('%d Hours', 3),
1418	'240'   => __('%d Hours', 4),
1419	'300'   => __('%d Hours', 5),
1420	'360'   => __('%d Hours', 6)
1421);
1422
1423$dsstats_max_memory = array(
1424	'32'   => __('%d MBytes', 32),
1425	'64'   => __('%d MBytes', 64),
1426	'128'  => __('%d MBytes', 128),
1427	'256'  => __('%d MBytes', 256),
1428	'512'  => __('%d MBytes', 512),
1429	'1024' => __('1 GByte'),
1430	'1536' => __('%s GBytes', '1.5'),
1431	'2048' => __('%d GBytes', 2),
1432	'3072' => __('%d GBytes', 3)
1433);
1434
1435$dsstats_hourly_avg = array(
1436	'60'  => __('1 Hour'),
1437	'120' => __('%d Hours', 2),
1438	'180' => __('%d Hours', 3),
1439	'240' => __('%d Hours', 4),
1440	'300' => __('%d Hours', 5),
1441	'360' => __('%d Hours', 6)
1442);
1443
1444$boost_max_rows_per_select = array(
1445	'2000'   => __('2,000 Data Source Items'),
1446	'5000'   => __('5,000 Data Source Items'),
1447	'10000'  => __('10,000 Data Source Items'),
1448	'15000'  => __('15,000 Data Source Items'),
1449	'25000'  => __('25,000 Data Source Items'),
1450	'50000'  => __('50,000 Data Source Items (Default)'),
1451	'100000' => __('100,000 Data Source Items'),
1452	'200000' => __('200,000 Data Source Items'),
1453	'400000' => __('400,000 Data Source Items')
1454);
1455
1456$boost_utilities_interval = array(
1457	'999999' => __('Disabled'),
1458	'5'      => __('%d Seconds', 5),
1459	'10'     => __('%d Seconds', 10),
1460	'15'     => __('%d Seconds', 15),
1461	'20'     => __('%d Seconds', 20),
1462	'30'     => __('%d Seconds', 30),
1463	'60'     => __('1 Minute'),
1464	'300'    => __('%d Minutes', 5)
1465);
1466
1467$boost_refresh_interval = array(
1468	'30'  => __('%d Minutes', 30),
1469	'60'  => __('1 Hour'),
1470	'120' => __('2 Hours', 2),
1471	'240' => __('4 Hours', 4),
1472	'360' => __('6 Hours', 6)
1473);
1474
1475$boost_max_runtime = array(
1476	'1200' => __('%d Minutes', 20),
1477	'2400' => __('%d Minutes', 40),
1478	'3600' => __('1 Hour'),
1479	'4800' => __('%s Hours', '1.5')
1480);
1481
1482$boost_max_memory = array(
1483	'256'  => __('%d MBytes', 256),
1484	'512'  => __('%d MBytes', 512),
1485	'1024' => __('%d GByte', 1),
1486	'1536' => __('%s GBytes', '1.5'),
1487	'2048' => __('%d GBytes', 2),
1488	'3072' => __('%d GBytes', 3),
1489	'4096' => __('%d GBytes', 4),
1490	'5120' => __('%d GBytes', 5),
1491	'6144' => __('%d GBytes', 6),
1492	'8192' => __('%d GBytes', 8),
1493	'-1' => __('Infinity')
1494);
1495
1496$realtime_window = array(
1497	30   => __('%d Seconds', 30),
1498	45   => __('%d Seconds', 45),
1499	60   => __('1 Minute'),
1500	90   => __('%s Minutes', '1.5'),
1501	120  => __('%d Minutes', 2),
1502	300  => __('%d Minutes', 5),
1503	600  => __('%d Minutes', 10),
1504	1200 => __('%d Minutes', 20),
1505	1800 => __('%d Minutes', 30),
1506	3600 => __('1 Hour')
1507);
1508
1509$realtime_refresh = array(
1510	1   => __('%d Seconds', 1),
1511	2   => __('%d Seconds', 2),
1512	5   => __('%d Seconds', 5),
1513	10  => __('%d Seconds', 10),
1514	15  => __('%d Seconds', 15),
1515	20  => __('%d Seconds', 20),
1516	30  => __('%d Seconds', 30),
1517	60  => __('1 Minute'),
1518	120 => __('%d Minutes', 2)
1519);
1520
1521$attachment_sizes = array(
1522	1048576   => __('1 Megabyte'),
1523	2097152   => __('%d Megabytes', 2),
1524	4194304   => __('%d Megabytes', 4),
1525	10485760  => __('%d Megabytes', 10),
1526	20971520  => __('%d Megabytes', 20),
1527	52428800  => __('%d Megabytes', 50),
1528	104857600 => __('%d Megabytes', 100),
1529);
1530
1531$reports_actions = array(
1532	REPORTS_SEND_NOW  => __('Send Now'),
1533	REPORTS_DUPLICATE => __('Duplicate'),
1534	REPORTS_ENABLE    => __('Enable'),
1535	REPORTS_DISABLE   => __('Disable'),
1536	REPORTS_DELETE    => __('Delete'),
1537);
1538
1539if (is_realm_allowed(22)) {
1540	$reports_actions[REPORTS_OWN] = __('Take Ownership');
1541}
1542
1543$attach_types = array(
1544	REPORTS_TYPE_INLINE_PNG => __('Inline PNG Image'),
1545	#REPORTS_TYPE_INLINE_JPG => 'Inline JPEG Image'
1546);
1547
1548if (extension_loaded(REPORTS_EXTENSION_GD)) {
1549	$attach_types[REPORTS_TYPE_INLINE_JPG] = __('Inline JPEG Image');
1550	$attach_types[REPORTS_TYPE_INLINE_GIF] = __('Inline GIF Image');
1551}
1552
1553$attach_types[REPORTS_TYPE_ATTACH_PNG] = __('Attached PNG Image');
1554
1555if (extension_loaded(REPORTS_EXTENSION_GD)) {
1556	$attach_types[REPORTS_TYPE_ATTACH_JPG] = __('Attached JPEG Image');
1557	$attach_types[REPORTS_TYPE_ATTACH_GIF] = __('Attached GIF Image');
1558}
1559
1560if (read_config_option('reports_allow_ln') != '') {
1561	$attach_types[REPORTS_TYPE_INLINE_PNG_LN] = __('Inline PNG Image, LN Style');
1562	if (extension_loaded(REPORTS_EXTENSION_GD)) {
1563		$attach_types[REPORTS_TYPE_INLINE_JPG_LN] = __('Inline JPEG Image, LN Style');
1564		$attach_types[REPORTS_TYPE_INLINE_GIF_LN] = __('Inline GIF Image, LN Style');
1565	}
1566}
1567
1568$item_types = array(
1569	REPORTS_ITEM_TEXT  => __('Text'),
1570	REPORTS_ITEM_TREE  => __('Tree'),
1571	REPORTS_ITEM_GRAPH => __('Graph'),
1572	REPORTS_ITEM_HR    => __('Horizontal Rule')
1573);
1574
1575$alignment = array(
1576	REPORTS_ALIGN_LEFT   => __('left'),
1577	REPORTS_ALIGN_CENTER => __('center'),
1578	REPORTS_ALIGN_RIGHT  => __('right')
1579);
1580
1581$reports_interval = array(
1582	REPORTS_SCHED_INTVL_MINUTE        => __('Minute(s)'),
1583	REPORTS_SCHED_INTVL_HOUR          => __('Hour(s)'),
1584	REPORTS_SCHED_INTVL_DAY           => __('Day(s)'),
1585	REPORTS_SCHED_INTVL_WEEK          => __('Week(s)'),
1586	REPORTS_SCHED_INTVL_MONTH_DAY     => __('Month(s), Day of Month'),
1587	REPORTS_SCHED_INTVL_MONTH_WEEKDAY => __('Month(s), Day of Week'),
1588	REPORTS_SCHED_INTVL_YEAR          => __('Year(s)'),
1589);
1590
1591$agg_graph_types = array(
1592	AGGREGATE_GRAPH_TYPE_KEEP         => __('Keep Graph Types'),
1593	AGGREGATE_GRAPH_TYPE_KEEP_STACKED => __('Keep Type and STACK'),
1594	GRAPH_ITEM_TYPE_STACK             => __('Convert to AREA/STACK Graph'),
1595	GRAPH_ITEM_TYPE_LINE1             => __('Convert to LINE1 Graph'),
1596	GRAPH_ITEM_TYPE_LINE2             => __('Convert to LINE2 Graph'),
1597	GRAPH_ITEM_TYPE_LINE3             => __('Convert to LINE3 Graph'),
1598	AGGREGATE_GRAPH_TYPE_LINE1_STACK  => __('Convert to LINE1/STACK Graph'),
1599	AGGREGATE_GRAPH_TYPE_LINE2_STACK  => __('Convert to LINE2/STACK Graph'),
1600	AGGREGATE_GRAPH_TYPE_LINE3_STACK  => __('Convert to LINE3/STACK Graph'),
1601);
1602
1603$agg_totals = array(
1604	AGGREGATE_TOTAL_NONE => __('No Totals'),
1605	AGGREGATE_TOTAL_ALL  => __('Print All Legend Items'),
1606	AGGREGATE_TOTAL_ONLY => __('Print Totaling Legend Items Only'),
1607);
1608
1609$agg_totals_type = array(
1610	AGGREGATE_TOTAL_TYPE_SIMILAR => __('Total Similar Data Sources'),
1611	AGGREGATE_TOTAL_TYPE_ALL     => __('Total All Data Sources'),
1612);
1613
1614$agg_order_types = array(
1615	AGGREGATE_ORDER_NONE       => __('No Reordering'),
1616	AGGREGATE_ORDER_DS_GRAPH   => __('Data Source, Graph'),
1617	AGGREGATE_ORDER_GRAPH_DS   => __('Graph, Data Source'),
1618	AGGREGATE_ORDER_BASE_GRAPH => __('Base Graph Order')
1619);
1620
1621# operators for use with SQL/pattern matching
1622$automation_op_array = array(
1623	'display' => array(
1624		AUTOMATION_OP_NONE         => __('None'),
1625		AUTOMATION_OP_CONTAINS     => __('contains'),
1626		AUTOMATION_OP_CONTAINS_NOT => __('does not contain'),
1627		AUTOMATION_OP_BEGINS       => __('begins with'),
1628		AUTOMATION_OP_BEGINS_NOT   => __('does not begin with'),
1629		AUTOMATION_OP_ENDS         => __('ends with'),
1630		AUTOMATION_OP_ENDS_NOT     => __('does not end with'),
1631		AUTOMATION_OP_MATCHES      => __('matches'),
1632		AUTOMATION_OP_MATCHES_NOT  => __('is not equal to'),
1633		AUTOMATION_OP_LT           => __('is less than'),
1634		AUTOMATION_OP_LE           => __('is less than or equal'),
1635		AUTOMATION_OP_GT           => __('is greater than'),
1636		AUTOMATION_OP_GE           => __('is greater than or equal'),
1637		AUTOMATION_OP_UNKNOWN      => __('is unknown'),
1638		AUTOMATION_OP_NOT_UNKNOWN  => __('is not unknown'),
1639		AUTOMATION_OP_EMPTY        => __('is empty'),
1640		AUTOMATION_OP_NOT_EMPTY    => __('is not empty'),
1641		AUTOMATION_OP_REGEXP       => __('matches regular expression'),
1642		AUTOMATION_OP_NOT_REGEXP   => __('does not match regular expression'),
1643	),
1644	'op' => array(
1645		AUTOMATION_OP_NONE          => '',
1646		AUTOMATION_OP_CONTAINS      => 'LIKE',
1647		AUTOMATION_OP_CONTAINS_NOT  => 'NOT LIKE',
1648		AUTOMATION_OP_BEGINS        => 'LIKE',
1649		AUTOMATION_OP_BEGINS_NOT    => 'NOT LIKE',
1650		AUTOMATION_OP_ENDS          => 'LIKE',
1651		AUTOMATION_OP_ENDS_NOT      => 'NOT LIKE',
1652		AUTOMATION_OP_MATCHES       => '<=>',
1653		AUTOMATION_OP_MATCHES_NOT   => '<>',
1654		AUTOMATION_OP_LT            => '<',
1655		AUTOMATION_OP_LE            => '<=',
1656		AUTOMATION_OP_GT            => '>',
1657		AUTOMATION_OP_GE            => '>=',
1658		AUTOMATION_OP_UNKNOWN       => 'IS NULL',
1659		AUTOMATION_OP_NOT_UNKNOWN   => 'IS NOT NULL',
1660		AUTOMATION_OP_EMPTY         => "LIKE ''",
1661		AUTOMATION_OP_NOT_EMPTY     => "NOT LIKE ''",
1662		AUTOMATION_OP_REGEXP        => 'REGEXP',
1663		AUTOMATION_OP_NOT_REGEXP    => 'NOT REGEXP',
1664	),
1665	'binary' => array(
1666		AUTOMATION_OP_NONE          => false,
1667		AUTOMATION_OP_CONTAINS      => true,
1668		AUTOMATION_OP_CONTAINS_NOT  => true,
1669		AUTOMATION_OP_BEGINS        => true,
1670		AUTOMATION_OP_BEGINS_NOT    => true,
1671		AUTOMATION_OP_ENDS          => true,
1672		AUTOMATION_OP_ENDS_NOT      => true,
1673		AUTOMATION_OP_MATCHES       => true,
1674		AUTOMATION_OP_MATCHES_NOT   => true,
1675		AUTOMATION_OP_LT            => true,
1676		AUTOMATION_OP_LE            => true,
1677		AUTOMATION_OP_GT            => true,
1678		AUTOMATION_OP_GE            => true,
1679		AUTOMATION_OP_UNKNOWN       => false,
1680		AUTOMATION_OP_NOT_UNKNOWN   => false,
1681		AUTOMATION_OP_EMPTY         => false,
1682		AUTOMATION_OP_NOT_EMPTY     => false,
1683		AUTOMATION_OP_REGEXP        => true,
1684		AUTOMATION_OP_NOT_REGEXP    => true,
1685	),
1686	'pre' => array(
1687		AUTOMATION_OP_NONE          => '',
1688		AUTOMATION_OP_CONTAINS      => '%',
1689		AUTOMATION_OP_CONTAINS_NOT  => '%',
1690		AUTOMATION_OP_BEGINS        => '',
1691		AUTOMATION_OP_BEGINS_NOT    => '',
1692		AUTOMATION_OP_ENDS          => '%',
1693		AUTOMATION_OP_ENDS_NOT      => '%',
1694		AUTOMATION_OP_MATCHES       => '',
1695		AUTOMATION_OP_MATCHES_NOT   => '',
1696		AUTOMATION_OP_LT            => '',
1697		AUTOMATION_OP_LE            => '',
1698		AUTOMATION_OP_GT            => '',
1699		AUTOMATION_OP_GE            => '',
1700		AUTOMATION_OP_UNKNOWN       => '',
1701		AUTOMATION_OP_NOT_UNKNOWN   => '',
1702		AUTOMATION_OP_EMPTY         => '',
1703		AUTOMATION_OP_NOT_EMPTY     => '',
1704		AUTOMATION_OP_REGEXP        => '',
1705		AUTOMATION_OP_NOT_REGEXP    => '',
1706	),
1707	'post' => array(
1708		AUTOMATION_OP_NONE          => '',
1709		AUTOMATION_OP_CONTAINS      => '%',
1710		AUTOMATION_OP_CONTAINS_NOT  => '%',
1711		AUTOMATION_OP_BEGINS        => '%',
1712		AUTOMATION_OP_BEGINS_NOT    => '%',
1713		AUTOMATION_OP_ENDS          => '',
1714		AUTOMATION_OP_ENDS_NOT      => '',
1715		AUTOMATION_OP_MATCHES       => '',
1716		AUTOMATION_OP_MATCHES_NOT   => '',
1717		AUTOMATION_OP_LT            => '',
1718		AUTOMATION_OP_LE            => '',
1719		AUTOMATION_OP_GT            => '',
1720		AUTOMATION_OP_GE            => '',
1721		AUTOMATION_OP_UNKNOWN       => '',
1722		AUTOMATION_OP_NOT_UNKNOWN   => '',
1723		AUTOMATION_OP_EMPTY         => '',
1724		AUTOMATION_OP_NOT_EMPTY     => '',
1725		AUTOMATION_OP_REGEXP        => '',
1726		AUTOMATION_OP_NOT_REGEXP    => '',
1727	)
1728);
1729
1730$automation_oper = array(
1731	AUTOMATION_OPER_NULL            => '',
1732	AUTOMATION_OPER_AND             => 'AND',
1733	AUTOMATION_OPER_OR              => 'OR',
1734	AUTOMATION_OPER_LEFT_BRACKET    => '(',
1735	AUTOMATION_OPER_RIGHT_BRACKET   => ')',
1736);
1737
1738$automation_tree_item_types  = array(
1739	TREE_ITEM_TYPE_GRAPH => __('Graph'),
1740	TREE_ITEM_TYPE_HOST  => __('Device')
1741);
1742
1743$automation_tree_header_types  = array(
1744	AUTOMATION_TREE_ITEM_TYPE_STRING => __('Fixed String'),
1745);
1746
1747$automation_frequencies = array(
1748	'disabled' => __('Disabled'),
1749	'60'       => __('Every 1 Hour'),
1750	'120'      => __('Every %d Hours', 2),
1751	'240'      => __('Every %d Hours', 4),
1752	'360'      => __('Every %d Hours', 6),
1753	'480'      => __('Every %d Hours', 8),
1754	'720'      => __('Every %d Hours', 12),
1755	'1440'     => __('Every Day'),
1756	'10080'    => __('Every Week'),
1757	'20160'    => __('Every %d Weeks', 2),
1758	'40320'    => __('Every %d Weeks', 4)
1759);
1760
1761$logrotate_frequency = array(
1762	'1'  => __('Daily'),
1763	'7'  => __('Weekly'),
1764	'30' => __('Monthly')
1765);
1766
1767$no_session_write = array(
1768	'graph_xport.php',
1769	'graph_image.php',
1770	'graph_json.php'
1771);
1772
1773$i18n_months = array(
1774	'January'	=> __('January'),
1775	'February'	=> __('February'),
1776	'March'		=> __('March'),
1777	'Arpil'		=> __('April'),
1778	'May'		=> __('May'),
1779	'June'		=> __('June'),
1780	'July'		=> __('July'),
1781	'August'	=> __('August'),
1782	'September'	=> __('September'),
1783	'October'	=> __('October'),
1784	'November'	=> __('November'),
1785	'December'	=> __('December'),
1786);
1787
1788$i18n_months_short = array(
1789	'Jan'	=> __x('A short textual representation of a month, three letters', 'Jan'),
1790	'Feb'	=> __x('A short textual representation of a month, three letters', 'Feb'),
1791	'Mar'	=> __x('A short textual representation of a month, three letters', 'Mar'),
1792	'Arp'	=> __x('A short textual representation of a month, three letters', 'Apr'),
1793	'May'	=> __x('A short textual representation of a month, three letters', 'May'),
1794	'Jun'	=> __x('A short textual representation of a month, three letters', 'Jun'),
1795	'Jul'	=> __x('A short textual representation of a month, three letters', 'Jul'),
1796	'Aug'	=> __x('A short textual representation of a month, three letters', 'Aug'),
1797	'Sep'	=> __x('A short textual representation of a month, three letters', 'Sep'),
1798	'Oct'	=> __x('A short textual representation of a month, three letters', 'Oct'),
1799	'Nov'	=> __x('A short textual representation of a month, three letters', 'Nov'),
1800	'Dec'	=> __x('A short textual representation of a month, three letters', 'Dec'),
1801);
1802
1803$i18n_weekdays = array(
1804	'Sunday'	=> __('Sunday'),
1805	'Monday'	=> __('Monday'),
1806	'Tuesday'	=> __('Tuesday'),
1807	'Wednesday'	=> __('Wednesday'),
1808	'Thursday'	=> __('Thursday'),
1809	'Friday'	=> __('Friday'),
1810	'Saturday'	=> __('Saturday')
1811);
1812
1813$i18n_weekdays_short = array(
1814	'Sun'	=> __x('A textual representation of a day, three letters', 'Sun'),
1815	'Mon'	=> __x('A textual representation of a day, three letters', 'Mon'),
1816	'Tue'	=> __x('A textual representation of a day, three letters', 'Tue'),
1817	'Wed'	=> __x('A textual representation of a day, three letters', 'Wed'),
1818	'Thu'	=> __x('A textual representation of a day, three letters', 'Thu'),
1819	'Fri'	=> __x('A textual representation of a day, three letters', 'Fri'),
1820	'Sat'	=> __x('A textual representation of a day, three letters', 'Sat')
1821);
1822
1823$i18n_languages = array(
1824	__('Arabic'),
1825	__('Bulgarian'),
1826	__('Chinese (China)'),
1827	__('Chinese (Taiwan)'),
1828	__('Dutch'),
1829	__('English'),
1830	__('French'),
1831	__('German'),
1832	__('Greek'),
1833	__('Hebrew'),
1834	__('Hindi'),
1835	__('Italian'),
1836	__('Japanese'),
1837	__('Korean'),
1838	__('Polish'),
1839	__('Portuguese'),
1840	__('Portuguese (Brazil)'),
1841	__('Russian'),
1842	__('Spanish'),
1843	__('Swedish'),
1844	__('Turkish'),
1845	__('Vietnamese')
1846);
1847
1848$i18n_themes = array(
1849	__('Classic'),
1850	__('Modern'),
1851	__('Dark'),
1852	__('Paper-plane'),
1853	__('Paw'),
1854	__('Sunrise'),
1855);
1856
1857$database_statuses = array(
1858	0 => __('[Fail]'),
1859	1 => __('[Warning]'),
1860	2 => __('[Success]'),
1861	3 => __('[Skipped]'),
1862);
1863
1864$phperrors = array (
1865	E_ERROR => 'ERROR',
1866	E_WARNING => 'WARNING',
1867	E_PARSE => 'PARSE',
1868	E_NOTICE => 'NOTICE',
1869	E_CORE_ERROR => 'CORE_ERROR',
1870	E_CORE_WARNING => 'CORE_WARNING',
1871	E_COMPILE_ERROR  => 'COMPILE_ERROR',
1872	E_COMPILE_WARNING => 'COMPILE_WARNING',
1873	E_USER_ERROR => 'USER_ERROR',
1874	E_USER_WARNING => 'USER_WARNING',
1875	E_USER_NOTICE  => 'USER_NOTICE',
1876	E_STRICT => 'STRICT',
1877	E_RECOVERABLE_ERROR  => 'RECOVERABLE_ERROR',
1878	E_DEPRECATED => 'DEPRECATED',
1879	E_USER_DEPRECATED  => 'USER_DEPRECATED',
1880	E_ALL => 'ALL'
1881);
1882
1883$navigation = array(
1884	'auth_profile.php:' => array(
1885		'title' => __('User Profile (Edit)'),
1886		'mapping' => '',
1887		'url' => '',
1888		'level' => '0'
1889	),
1890	'auth_profile.php:edit' => array(
1891		'title' => __('User Profile (Edit)'),
1892		'mapping' => '',
1893		'url' => '',
1894		'level' => '0'
1895	),
1896	'graph_view.php:' => array(
1897		'title' => __('Graphs'),
1898		'mapping' => '',
1899		'url' => 'graph_view.php',
1900		'level' => '0'
1901	),
1902	'graph_view.php:tree' => array(
1903		'title' => __('Tree Mode'),
1904		'mapping' => 'graph_view.php:',
1905		'url' => 'graph_view.php?action=tree',
1906		'level' => '0'
1907	),
1908	'graph_view.php:tree_content' => array(
1909		'title' => __('Tree Mode'),
1910		'mapping' => 'graph_view.php:',
1911		'url' => 'graph_view.php?action=tree',
1912		'level' => '0'
1913	),
1914	'graph_view.php:list' => array(
1915		'title' => __('List Mode'),
1916		'mapping' => '',
1917		'url' => 'graph_view.php?action=list',
1918		'level' => '0'
1919	),
1920	'graph_view.php:preview' => array(
1921		'title' => __('Preview Mode'),
1922		'mapping' => '',
1923		'url' => 'graph_view.php?action=preview',
1924		'level' => '0'
1925	),
1926	'graph.php:' => array(
1927		'title' => '|current_graph_title|',
1928		'mapping' => 'graph_view.php:',
1929		'level' => '1'
1930	),
1931	'graph.php:view' => array(
1932		'title' => '|current_graph_title|',
1933		'mapping' => 'graph_view.php:',
1934		'level' => '1'
1935	),
1936	'graph.php:zoom' => array(
1937		'title' => '|current_graph_title|',
1938		'mapping' => 'graph_view.php:',
1939		'level' => '1'
1940	),
1941	'graph.php:update_timespan' => array(
1942		'title' => '|current_graph_title|',
1943		'mapping' => 'graph_view.php:',
1944		'level' => '1'
1945	),
1946	'index.php:' => array(
1947		'title' => __('Console'),
1948		'mapping' => '',
1949		'url' => $config['url_path'] . 'index.php',
1950		'level' => '0'
1951	),
1952	'index.php:login' => array(
1953		'title' => __('Console'),
1954		'mapping' => '',
1955		'url' => $config['url_path'] . 'index.php',
1956		'level' => '0'
1957	),
1958	'graphs.php:' => array(
1959		'title' => __('Graph Management'),
1960		'mapping' => 'index.php:',
1961		'url' => 'graphs.php',
1962		'level' => '1'
1963	),
1964	'graphs.php:graph_edit' => array(
1965		'title' => __('(Edit)'),
1966		'mapping' => 'index.php:,graphs.php:',
1967		'url' => '',
1968		'level' => '2'
1969	),
1970	'graphs.php:graph_diff' => array(
1971		'title' => __('Change Graph Template'),
1972		'mapping' => 'index.php:,graphs.php:,graphs.php:graph_edit',
1973		'url' => '',
1974		'level' => '3'
1975	),
1976	'graphs.php:actions' => array(
1977		'title' => __('Actions'),
1978		'mapping' => 'index.php:,graphs.php:',
1979		'url' => '',
1980		'level' => '2'
1981	),
1982	'graphs_items.php:item_edit' => array(
1983		'title' => __('Graph Items'),
1984		'mapping' => 'index.php:,graphs.php:,graphs.php:graph_edit',
1985		'url' => '',
1986		'level' => '3'
1987	),
1988	'graphs_new.php:' => array(
1989		'title' => __('Create New Graphs'),
1990		'mapping' => 'index.php:',
1991		'url' => 'graphs_new.php',
1992		'level' => '1'
1993	),
1994	'graphs_new.php:save' => array(
1995		'title' => __('Create Graphs from Data Query'),
1996		'mapping' => 'index.php:,graphs_new.php:',
1997		'url' => '',
1998		'level' => '2'
1999	),
2000	'gprint_presets.php:' => array(
2001		'title' => __('GPRINT Presets'),
2002		'mapping' => 'index.php:',
2003		'url' => 'gprint_presets.php',
2004		'level' => '1'
2005	),
2006	'gprint_presets.php:edit' => array(
2007		'title' => __('(Edit)'),
2008		'mapping' => 'index.php:,gprint_presets.php:',
2009		'url' => '',
2010		'level' => '2'
2011	),
2012	'gprint_presets.php:remove' => array(
2013		'title' => __('(Remove)'),
2014		'mapping' => 'index.php:,gprint_presets.php:',
2015		'url' => '',
2016		'level' => '2'
2017	),
2018	'cdef.php:' => array(
2019		'title' => __('CDEFs'),
2020		'mapping' => 'index.php:',
2021		'url' => 'cdef.php',
2022		'level' => '1'
2023	),
2024	'cdef.php:edit' => array(
2025		'title' => __('(Edit)'),
2026		'mapping' => 'index.php:,cdef.php:',
2027		'url' => '',
2028		'level' => '2'
2029	),
2030	'cdef.php:remove' => array(
2031		'title' => __('(Remove)'),
2032		'mapping' => 'index.php:,cdef.php:',
2033		'url' => '',
2034		'level' => '2'
2035	),
2036	'cdef.php:item_edit' => array(
2037		'title' => __('CDEF Items'),
2038		'mapping' => 'index.php:,cdef.php:,cdef.php:edit',
2039		'url' => '',
2040		'level' => '3'
2041	),
2042	'cdef.php:actions' => array(
2043		'title' => __('Actions'),
2044		'mapping' => 'index.php:,cdef.php:',
2045		'url' => '',
2046		'level' => '2'
2047	),
2048	'clog.php:' => array(
2049		'title' => __('View Log'),
2050		'mapping' => '',
2051		'url' => 'clog.php',
2052		'level' => '0'
2053	),
2054	'clog.php:preview' => array(
2055		'title' => __('View Log'),
2056		'mapping' => '',
2057		'url' => 'clog.php',
2058		'level' => '0'
2059	),
2060	'clog_user.php:' => array(
2061		'title' => __('View Log'),
2062		'mapping' => '',
2063		'url' => 'clog_user.php',
2064		'level' => '0'
2065	),
2066	'clog_user.php:preview' => array(
2067		'title' => __('View Log'),
2068		'mapping' => '',
2069		'url' => 'clog_user.php',
2070		'level' => '0'
2071	),
2072	'tree.php:' => array(
2073		'title' => __('Graph Trees'),
2074		'mapping' => 'index.php:',
2075		'url' => 'tree.php',
2076		'level' => '1'
2077	),
2078	'tree.php:edit' => array(
2079		'title' => __('(Edit)'),
2080		'mapping' => 'index.php:,tree.php:',
2081		'url' => '',
2082		'level' => '2'
2083	),
2084	'color.php:' => array(
2085		'title' => __('Colors'),
2086		'mapping' => 'index.php:',
2087		'url' => 'color.php',
2088		'level' => '1'
2089	),
2090	'color.php:edit' => array(
2091		'title' => __('(Edit)'),
2092		'mapping' => 'index.php:,color.php:',
2093		'url' => '',
2094		'level' => '2'
2095	),
2096	'graph_templates.php:' => array(
2097		'title' => __('Graph Templates'),
2098		'mapping' => 'index.php:',
2099		'url' => 'graph_templates.php',
2100		'level' => '1'
2101	),
2102	'graph_templates.php:template_edit' => array(
2103		'title' => __('(Edit)'),
2104		'mapping' => 'index.php:,graph_templates.php:',
2105		'url' => '',
2106		'level' => '2'
2107	),
2108	'graph_templates.php:actions' => array(
2109		'title' => __('Actions'),
2110		'mapping' => 'index.php:,graph_templates.php:',
2111		'url' => '',
2112		'level' => '2'
2113	),
2114	'graph_templates_items.php:item_edit' => array(
2115		'title' => __('Graph Template Items'),
2116		'mapping' => 'index.php:,graph_templates.php:,graph_templates.php:template_edit',
2117		'url' => '',
2118		'level' => '3'
2119	),
2120	'graph_templates_inputs.php:input_edit' => array(
2121		'title' => __('Graph Item Inputs'),
2122		'mapping' => 'index.php:,graph_templates.php:,graph_templates.php:template_edit',
2123		'url' => '',
2124		'level' => '3'
2125	),
2126	'graph_templates_inputs.php:input_remove' => array(
2127		'title' => __('(Remove)'),
2128		'mapping' => 'index.php:,graph_templates.php:,graph_templates.php:template_edit',
2129		'url' => '',
2130		'level' => '3'
2131	),
2132	'host_templates.php:' => array(
2133		'title' => __('Device Templates'),
2134		'mapping' => 'index.php:',
2135		'url' => 'host_templates.php',
2136		'level' => '1'
2137	),
2138	'host_templates.php:edit' => array(
2139		'title' => __('(Edit)'),
2140		'mapping' => 'index.php:,host_templates.php:',
2141		'url' => '',
2142		'level' => '2'
2143	),
2144	'host_templates.php:actions' => array(
2145		'title' => __('Actions'),
2146		'mapping' => 'index.php:,host_templates.php:',
2147		'url' => '',
2148		'level' => '2'
2149	),
2150	'data_templates.php:' => array(
2151		'title' => __('Data Templates'),
2152		'mapping' => 'index.php:',
2153		'url' => 'data_templates.php',
2154		'level' => '1'
2155	),
2156	'data_templates.php:template_edit' => array(
2157		'title' => __('(Edit)'),
2158		'mapping' => 'index.php:,data_templates.php:',
2159		'url' => '',
2160		'level' => '2'
2161	),
2162	'data_templates.php:actions' => array(
2163		'title' => __('Actions'),
2164		'mapping' => 'index.php:,data_templates.php:',
2165		'url' => '',
2166		'level' => '2'
2167	),
2168	'data_sources.php:' => array(
2169		'title' => __('Data Sources'),
2170		'mapping' => 'index.php:',
2171		'url' => 'data_sources.php',
2172		'level' => '1'
2173	),
2174	'data_sources.php:ds_edit' => array(
2175		'title' => __('(Edit)'),
2176		'mapping' => 'index.php:,data_sources.php:',
2177		'url' => '',
2178		'level' => '2'
2179	),
2180	'data_sources.php:actions' => array(
2181		'title' => __('Actions'),
2182		'mapping' => 'index.php:,data_sources.php:',
2183		'url' => '',
2184		'level' => '2'
2185	),
2186	'host.php:' => array(
2187		'title' => __('Devices'),
2188		'mapping' => 'index.php:',
2189		'url' => 'host.php',
2190		'level' => '1'
2191	),
2192	'host.php:edit' => array(
2193		'title' => __('(Edit)'),
2194		'mapping' => 'index.php:,host.php:',
2195		'url' => '',
2196		'level' => '2'
2197	),
2198	'host.php:actions' => array(
2199		'title' => __('Actions'),
2200		'mapping' => 'index.php:,host.php:',
2201		'url' => '',
2202		'level' => '2'
2203	),
2204	'rra.php:' => array(
2205		'title' => __('Round Robin Archives'),
2206		'mapping' => 'index.php:',
2207		'url' => 'rra.php',
2208		'level' => '1'
2209	),
2210	'rra.php:edit' => array(
2211		'title' => __('(Edit)'),
2212		'mapping' => 'index.php:,rra.php:',
2213		'url' => '',
2214		'level' => '2'
2215	),
2216	'rra.php:remove' => array(
2217		'title' => __('(Remove)'),
2218		'mapping' => 'index.php:,rra.php:',
2219		'url' => '',
2220		'level' => '2'
2221	),
2222	'data_input.php:' => array(
2223		'title' => __('Data Input Methods'),
2224		'mapping' => 'index.php:',
2225		'url' => 'data_input.php',
2226		'level' => '1'
2227	),
2228	'data_input.php:actions' => array(
2229		'title' => __('Actions'),
2230		'mapping' => 'index.php:,data_input.php:',
2231		'url' => '',
2232		'level' => '2'
2233	),
2234	'data_input.php:edit' => array(
2235		'title' => __('(Edit)'),
2236		'mapping' => 'index.php:,data_input.php:',
2237		'url' => '',
2238		'level' => '2'
2239	),
2240	'data_input.php:remove' => array(
2241		'title' => __('(Remove)'),
2242		'mapping' => 'index.php:,data_input.php:',
2243		'url' => '',
2244		'level' => '2'
2245	),
2246	'data_input.php:field_edit' => array(
2247		'title' => __('Data Input Fields'),
2248		'mapping' => 'index.php:,data_input.php:,data_input.php:edit',
2249		'url' => '',
2250		'level' => '3'
2251	),
2252	'data_input.php:field_remove' => array(
2253		'title' => __('(Remove Item)'),
2254		'mapping' => 'index.php:,data_input.php:,data_input.php:edit',
2255		'url' => '',
2256		'level' => '3'
2257	),
2258	'data_queries.php:' => array(
2259		'title' => __('Data Queries'),
2260		'mapping' => 'index.php:',
2261		'url' => 'data_queries.php',
2262		'level' => '1'
2263	),
2264	'data_queries.php:actions' => array(
2265		'title' => __('Actions'),
2266		'mapping' => 'index.php:,data_queries.php:',
2267		'url' => '',
2268		'level' => '2'
2269	),
2270	'data_queries.php:edit' => array(
2271		'title' => __('(Edit)'),
2272		'mapping' => 'index.php:,data_queries.php:',
2273		'url' => '',
2274		'level' => '2'
2275	),
2276	'data_queries.php:item_edit' => array(
2277		'title' => __('Associated Graph Templates'),
2278		'mapping' => 'index.php:,data_queries.php:,data_queries.php:edit',
2279		'url' => '',
2280		'level' => '3'
2281	),
2282	'data_queries.php:item_remove' => array(
2283		'title' => __('(Remove Item)'),
2284		'mapping' => 'index.php:,data_queries.php:,data_queries.php:edit',
2285		'url' => '',
2286		'level' => '3'
2287	),
2288	'rrdcleaner.php:' => array(
2289		'title' => __('RRD Cleaner'),
2290		'mapping' => 'index.php:,utilities.php:',
2291		'url' => 'rrdcleaner.php',
2292		'level' => '2'
2293	),
2294	'rrdcleaner.php:actions' => array(
2295		'title' => __('Actions'),
2296		'mapping' => 'index.php:,rrdcleaner.php:',
2297		'url' => 'rrdcleaner.php?action=actions',
2298		'level' => '2'
2299	),
2300	'rrdcleaner.php:restart' => array(
2301		'title' => __('List unused Files'),
2302		'mapping' => 'rrdcleaner.php:',
2303		'url' => 'rrdcleaner.php?action=restart',
2304		'level' => '2'
2305	),
2306	'utilities.php:' => array(
2307		'title' => __('Utilities'),
2308		'mapping' => 'index.php:',
2309		'url' => 'utilities.php',
2310		'level' => '1'
2311	),
2312	'utilities.php:view_poller_cache' => array(
2313		'title' => __('View Poller Cache'),
2314		'mapping' => 'index.php:,utilities.php:',
2315		'url' => 'utilities.php',
2316		'level' => '2'
2317	),
2318	'utilities.php:view_snmp_cache' => array(
2319		'title' => __('View Data Query Cache'),
2320		'mapping' => 'index.php:,utilities.php:',
2321		'url' => 'utilities.php',
2322		'level' => '2'
2323	),
2324	'utilities.php:clear_poller_cache' => array(
2325		'title' => __('View Poller Cache'),
2326		'mapping' => 'index.php:,utilities.php:',
2327		'url' => 'utilities.php',
2328		'level' => '2'
2329	),
2330	'utilities.php:view_logfile' => array(
2331		'title' => __('View Log'),
2332		'mapping' => 'index.php:,utilities.php:',
2333		'url' => 'utilities.php',
2334		'level' => '2'
2335	),
2336	'utilities.php:clear_logfile' => array(
2337		'title' => __('Clear Log'),
2338		'mapping' => 'index.php:,utilities.php:',
2339		'url' => 'utilities.php',
2340		'level' => '2'
2341	),
2342	'utilities.php:view_user_log' => array(
2343		'title' => __('View User Log'),
2344		'mapping' => 'index.php:,utilities.php:',
2345		'url' => 'utilities.php',
2346		'level' => '2'
2347	),
2348	'utilities.php:clear_user_log' => array(
2349		'title' => __('Clear User Log'),
2350		'mapping' => 'index.php:,utilities.php:',
2351		'url' => 'utilities.php',
2352		'level' => '2'
2353	),
2354	'utilities.php:view_tech' => array(
2355		'title' => __('Technical Support'),
2356		'mapping' => 'index.php:,utilities.php:',
2357		'url' => 'utilities.php',
2358		'level' => '2'
2359	),
2360	'utilities.php:view_boost_status' => array(
2361		'title' => __('Boost Status'),
2362		'mapping' => 'index.php:,utilities.php:',
2363		'url' => 'utilities.php',
2364		'level' => '2'
2365	),
2366	'utilities.php:view_snmpagent_cache' => array(
2367		'title' => __('View SNMP Agent Cache'),
2368		'mapping' => 'index.php:,utilities.php:',
2369		'url' => 'utilities.php',
2370		'level' => '2'
2371	),
2372	'utilities.php:view_snmpagent_events' => array(
2373		'title' => __('View SNMP Agent Notification Log'),
2374		'mapping' => 'index.php:,utilities.php:',
2375		'url' => 'utilities.php',
2376		'level' => '2'
2377	),
2378	'vdef.php:' => array(
2379		'title' => __('VDEFs'),
2380		'mapping' => 'index.php:',
2381		'url' => 'vdef.php',
2382		'level' => '1'
2383	),
2384	'vdef.php:actions' => array(
2385		'title' => __('Actions'),
2386		'mapping' => 'index.php:,vdef.php:',
2387		'url' => 'vdef.php',
2388		'level' => '2'
2389	),
2390	'vdef.php:edit' => array(
2391		'title' => __('(Edit)'),
2392		'mapping' => 'index.php:,vdef.php:',
2393		'url' => 'vdef.php',
2394		'level' => '2'
2395	),
2396	'vdef.php:remove' => array(
2397		'title' => __('(Remove)'),
2398		'mapping' => 'index.php:,vdef.php:',
2399		'url' => 'vdef.php',
2400		'level' => '2'
2401	),
2402	'vdef.php:item_edit' => array(
2403		'title' => __('VDEF Items'),
2404		'mapping' => 'index.php:,vdef.php:,vdef.php:edit',
2405		'url' => '',
2406		'level' => '3'
2407	),
2408	'managers.php:' => array(
2409		'title' => __('View SNMP Notification Receivers'),
2410		'mapping' => 'index.php:,utilities.php:',
2411		'url' => 'managers.php',
2412		'level' => '2'
2413	),
2414	'managers.php:edit' => array(
2415		'title' => __('(Edit)'),
2416		'mapping' => 'index.php:,utilities.php:,managers.php:',
2417		'url' => '',
2418		'level' => '3'
2419	),
2420	'settings.php:' => array(
2421		'title' => __('Cacti Settings'),
2422		'mapping' => 'index.php:',
2423		'url' => 'settings.php',
2424		'level' => '1'
2425	),
2426	'link.php:' => array(
2427		'title' => __('External Link'),
2428		'mapping' => 'index.php:',
2429		'url' => 'link.php',
2430		'level' => '1'
2431	),
2432	'user_admin.php:' => array(
2433		'title' => __('Users'),
2434		'mapping' => 'index.php:',
2435		'url' => 'user_admin.php',
2436		'level' => '1'
2437	),
2438	'user_admin.php:user_edit' => array(
2439		'title' => __('(Edit)'),
2440		'mapping' => 'index.php:,user_admin.php:',
2441		'url' => '',
2442		'level' => '2'
2443	),
2444	'user_admin.php:actions' => array(
2445		'title' => __('(Action)'),
2446		'mapping' => 'index.php:,user_admin.php:',
2447		'url' => '',
2448		'level' => '2'
2449	),
2450	'user_domains.php:' => array(
2451		'title' => __('User Domains'),
2452		'mapping' => 'index.php:',
2453		'url' => 'user_domains.php',
2454		'level' => '1'
2455	),
2456	'user_domains.php:edit' => array(
2457		'title' => __('(Edit)'),
2458		'mapping' => 'user_domains.php:,index.php:',
2459		'url' => 'user_domains.php:edit',
2460		'level' => '2'
2461	),
2462	'user_group_admin.php:' => array(
2463		'title' => __('User Groups'),
2464		'mapping' => 'index.php:',
2465		'url' => 'user_group_admin.php',
2466		'level' => '1'
2467	),
2468	'user_group_admin.php:edit' => array(
2469		'title' => __('(Edit)'),
2470		'mapping' => 'index.php:,user_group_admin.php:',
2471		'url' => '',
2472		'level' => '2'
2473	),
2474	'user_group_admin.php:actions' => array(
2475		'title' => __('(Action)'),
2476		'mapping' => 'index.php:,user_group_admin.php:',
2477		'url' => '',
2478		'level' => '2'
2479	),
2480	'about.php:' => array(
2481		'title' => __('About Cacti'),
2482		'mapping' => 'index.php:',
2483		'url' => 'about.php',
2484		'level' => '1'
2485	),
2486	'templates_export.php:' => array(
2487		'title' => __('Export Templates'),
2488		'mapping' => 'index.php:',
2489		'url' => 'templates_export.php',
2490		'level' => '1'
2491	),
2492	'templates_export.php:save' => array(
2493		'title' => __('Export Results'),
2494		'mapping' => 'index.php:,templates_export.php:',
2495		'url' => 'templates_export.php',
2496		'level' => '2'
2497	),
2498	'templates_import.php:' => array(
2499		'title' => __('Import Templates'),
2500		'mapping' => 'index.php:',
2501		'url' => 'templates_import.php',
2502		'level' => '1'
2503	),
2504	'reports_admin.php:' => array(
2505		'title' => __('Reporting'),
2506		'mapping' => '',
2507		'url' => 'reports_admin.php',
2508		'level' => '0'
2509	),
2510	'reports_admin.php:actions' => array(
2511		'title' => __('Report Add'),
2512		'mapping' => 'reports_admin.php:',
2513		'url' => 'reports_admin.php',
2514		'level' => '1'
2515	),
2516	'reports_admin.php:delete' => array(
2517		'title' => __('Report Delete'),
2518		'mapping' => 'reports_admin.php:',
2519		'url' => 'reports_admin.php',
2520		'level' => '1'
2521	),
2522	'reports_admin.php:edit' => array(
2523		'title' => __('Report Edit'),
2524		'mapping' => 'reports_admin.php:',
2525		'url' => 'reports_admin.php?action=edit',
2526		'level' => '1'
2527	),
2528	'reports_admin.php:item_edit' => array(
2529		'title' => __('Report Edit Item'),
2530		'mapping' => 'reports_admin.php:,reports_admin.php:edit',
2531		'url' => '',
2532		'level' => '2'
2533	),
2534	'reports_user.php:' => array(
2535		'title' => __('Reporting'),
2536		'mapping' => '',
2537		'url' => 'reports_user.php',
2538		'level' => '0'
2539	),
2540	'reports_user.php:actions' => array(
2541		'title' => __('Report Add'),
2542		'mapping' => 'reports_user.php:',
2543		'url' => 'reports_user.php',
2544		'level' => '1'
2545	),
2546	'reports_user.php:delete' => array(
2547		'title' => __('Report Delete'),
2548		'mapping' => 'reports_user.php:',
2549		'url' => 'reports_user.php',
2550		'level' => '1'
2551	),
2552	'reports_user.php:edit' => array(
2553		'title' => __('Report Edit'),
2554		'mapping' => 'reports_user.php:',
2555		'url' => 'reports_user.php?action=edit',
2556		'level' => '1'
2557	),
2558	'reports_user.php:item_edit' => array(
2559		'title' => __('Report Edit Item'),
2560		'mapping' => 'reports_user.php:,reports_user.php:edit',
2561		'url' => '',
2562		'level' => '2'
2563	),
2564	'color_templates.php:' => array(
2565		'title' => __('Color Templates'),
2566		'mapping' => 'index.php:',
2567		'url' => 'color_templates.php',
2568		'level' => '1'
2569	),
2570	'color_templates.php:template_edit' => array(
2571		'title' => __('(Edit)'),
2572		'mapping' => 'index.php:,color_templates.php:',
2573		'url' => '',
2574		'level' => '2'
2575	),
2576	'color_templates.php:actions' => array(
2577		'title' => __('Actions'),
2578		'mapping' => 'index.php:,color_templates.php:',
2579		'url' => '',
2580		'level' => '2'
2581	),
2582	'color_templates_items.php:item_edit' => array(
2583		'title' => __('Color Template Items'),
2584		'mapping' => 'index.php:,color_templates.php:,color_templates.php:template_edit',
2585		'url' => '',
2586		'level' => '3'
2587	),
2588	'aggregate_templates.php:' => array(
2589		'title' => __('Aggregate Templates'),
2590		'mapping' => 'index.php:',
2591		'url' => 'aggregate_templates.php',
2592		'level' => '1'
2593	),
2594	'aggregate_templates.php:edit' => array(
2595		'title' => __('(Edit)'),
2596		'mapping' => 'index.php:,aggregate_templates.php:',
2597		'url' => '',
2598		'level' => '2'
2599	),
2600	'aggregate_templates.php:actions'=> array(
2601		'title' => __('Actions'),
2602		'mapping' => 'index.php:,aggregate_templates.php:',
2603		'url' => '',
2604		'level' => '2'
2605	),
2606	'aggregate_graphs.php:' => array(
2607		'title' => __('Aggregate Graphs'),
2608		'mapping' => 'index.php:',
2609		'url' => 'aggregate_graphs.php',
2610		'level' => '1'
2611	),
2612	'aggregate_graphs.php:edit' => array(
2613		'title' => __('(Edit)'),
2614		'mapping' => 'index.php:,aggregate_graphs.php:',
2615		'url' => '',
2616		'level' => '2'
2617	),
2618	'aggregate_graphs.php:actions' => array(
2619		'title' => __('Actions'),
2620		'mapping' => 'index.php:,aggregate_graphs.php:',
2621		'url' => '',
2622		'level' => '2'
2623	),
2624	'aggregate_items.php:' => array(
2625		'title' => __('Aggregate Items'),
2626		'mapping' => 'index.php:',
2627		'url' => 'aggregate_items.php',
2628		'level' => '1'
2629	),
2630	'aggregate_items.php:item_edit' => array(
2631		'title' => __('(Edit)'),
2632		'mapping' => 'index.php:,aggregate_graphs.php:,aggregate_items.php:',
2633		'url' => '',
2634		'level' => '2'
2635	),
2636	'aggregate_items.php:actions' => array(
2637		'title' => __('Actions'),
2638		'mapping' => 'index.php:,aggregate_items.php:',
2639		'url' => '',
2640		'level' => '2'
2641	),
2642	'automation_graph_rules.php:' => array(
2643		'title' => __('Graph Rules'),
2644		'mapping' => 'index.php:',
2645		'url' => 'automation_graph_rules.php',
2646		'level' => '1'
2647	),
2648	'automation_graph_rules.php:edit' => array(
2649		'title' => __('(Edit)'),
2650		'mapping' => 'index.php:,automation_graph_rules.php:',
2651		'url' => '',
2652		'level' => '2'
2653	),
2654	'automation_graph_rules.php:actions' => array(
2655		'title' => __('Actions'),
2656		'mapping' => 'index.php:,automation_graph_rules.php:',
2657		'url' => '',
2658		'level' => '2'
2659	),
2660	'automation_graph_rules.php:item_edit' => array(
2661		'title' => __('Graph Rule Items'),
2662		'mapping' => 'index.php:,automation_graph_rules.php:,automation_graph_rules.php:edit',
2663		'url' => '',
2664		'level' => '3'
2665	),
2666	'automation_tree_rules.php:' => array(
2667		'title' => __('Tree Rules'),
2668		'mapping' => 'index.php:',
2669		'url' => 'automation_tree_rules.php',
2670		'level' => '1'
2671	),
2672	'automation_tree_rules.php:edit' => array(
2673		'title' => __('(Edit)'),
2674		'mapping' => 'index.php:,automation_tree_rules.php:',
2675		'url' => '',
2676		'level' => '2'
2677	),
2678	'automation_tree_rules.php:actions' => array(
2679		'title' => __('Actions'),
2680		'mapping' => 'index.php:,automation_tree_rules.php:',
2681		'url' => '',
2682		'level' => '2'
2683	),
2684	'automation_tree_rules.php:item_edit' => array(
2685		'title' => __('Tree Rule Items'),
2686		'mapping' => 'index.php:,automation_tree_rules.php:,automation_tree_rules.php:edit',
2687		'url' => '',
2688		'level' => '3'
2689	)
2690);
2691
2692$snmpagent_event_severity = array(
2693	SNMPAGENT_EVENT_SEVERITY_LOW      => 'low',
2694	SNMPAGENT_EVENT_SEVERITY_MEDIUM   => 'medium',
2695	SNMPAGENT_EVENT_SEVERITY_HIGH     => 'high',
2696	SNMPAGENT_EVENT_SEVERITY_CRITICAL => 'critical'
2697);
2698
2699$days_from_time_settings = array(
2700	'mods' => array(
2701		'd' => 86400,
2702		'h' => 3600,
2703		'm' => '60',
2704		's' => 0,
2705	),
2706	'text' => array(
2707		DAYS_FORMAT_SHORT => array(
2708			'd' => 'd',
2709		        'h' => 'h',
2710		        'm' => 'm',
2711			's' => 's',
2712			'suffix' => ':',
2713			'prefix' => '',
2714		),
2715		DAYS_FORMAT_MEDIUM => array(
2716			'd' => __('days'),
2717			'h' => __('hrs'),
2718			'm' => __('mins'),
2719			's' => __('secs'),
2720			'suffix' => ', ',
2721			'prefix' => ' ',
2722		),
2723		DAYS_FORMAT_MEDIUM_LOG => array(
2724			'd' => 'days',
2725			'h' => 'hrs',
2726			'm' => 'mins',
2727			's' => 'secs',
2728			'suffix' => ', ',
2729			'prefix' => ' ',
2730		),
2731		DAYS_FORMAT_LONG => array(
2732			'd' => __('days'),
2733			'h' => __('hours'),
2734			'm' => __('minutes'),
2735			's' => __('seconds'),
2736			'suffix' => ', ',
2737			'prefix' => ' ',
2738		),
2739		DAYS_FORMAT_LONG_LOG => array(
2740			'd' => 'days',
2741			'h' => 'hours',
2742			'm' => 'minutes',
2743			's' => 'seconds',
2744			'suffix' => ', ',
2745			'prefix' => ' ',
2746		),
2747	),
2748);
2749
2750$graph_sources = array(
2751	0 => __('Not Templated'),
2752	1 => __('Data Query'),
2753	2 => __('Template'),
2754	3 => __('Aggregate'),
2755);
2756
2757api_plugin_hook('config_arrays');
2758