17
17
** along with this program; if not, write to the Free Software
18
18
** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21
require_once "include/events.inc.php";
22
require_once "include/actions.inc.php";
25
function screen_accessiable($screenid,$perm)
31
if(DBselect("select screenid from screens where screenid=".$screenid.
32
" and ".DBid2nodeid('screenid')." in (".get_accessible_nodes_by_user($USER_DETAILS,$perm).")"))
36
$denyed_hosts = get_accessible_hosts_by_user($USER_DETAILS,PERM_READ_ONLY, PERM_MODE_LT);
37
$denyed_groups = get_accessible_groups_by_user($USER_DETAILS,PERM_READ_ONLY, PERM_MODE_LT);
39
$db_result = DBselect("select * from screens_items where screenid=".$screenid);
40
while(($ac_data = DBfetch($db_result)) && $result)
42
switch($ac_data['resourcetype'])
44
case SCREEN_RESOURCE_GRAPH:
47
$db_gitems = DBselect("select distinct itemid from graphs_items ".
48
" where graphid=".$ac_data['resourceid']);
50
while($gitem_data = DBfetch($db_gitems)) array_push($itemid, $gitem_data['itemid']);
52
if(count($itemid) == 0) $itemid = array(-1);
53
// break; /* use same processing as items */
54
case SCREEN_RESOURCE_SIMPLE_GRAPH:
55
// break; /* use same processing as items */
56
case SCREEN_RESOURCE_PLAIN_TEXT:
58
$itemid = array($ac_data['resourceid']);
60
if(DBfetch(DBselect("select itemid from items where itemid in (".implode(',',$itemid).") ".
61
" and hostid in (".$denyed_hosts.")")))
68
case SCREEN_RESOURCE_MAP:
69
$result &= sysmap_accessiable($ac_data['resourceid'], PERM_READ_ONLY);
71
case SCREEN_RESOURCE_SCREEN:
72
$result &= screen_accessiable($ac_data['resourceid'],PERM_READ_ONLY);
74
case SCREEN_RESOURCE_SERVER_INFO:
75
case SCREEN_RESOURCE_HOSTS_INFO:
76
case SCREEN_RESOURCE_TRIGGERS_INFO:
77
case SCREEN_RESOURCE_TRIGGERS_OVERVIEW:
78
case SCREEN_RESOURCE_DATA_OVERVIEW:
79
case SCREEN_RESOURCE_CLOCK:
80
case SCREEN_RESOURCE_URL:
81
case SCREEN_RESOURCE_ACTIONS:
82
case SCREEN_RESOURCE_EVENTS:
22
91
function add_screen($name,$hsize,$vsize)
24
if(!check_right("Screen","A",0))
26
error("Insufficient permissions");
30
$sql="insert into screens (name,hsize,vsize) values (".zbx_dbstr($name).",$hsize,$vsize)";
31
return DBexecute($sql);
93
$screenid=get_dbid("screens","screenid");
94
$sql="insert into screens (screenid,name,hsize,vsize) values ($screenid,".zbx_dbstr($name).",$hsize,$vsize)";
95
$result=DBexecute($sql);
34
103
function update_screen($screenid,$name,$hsize,$vsize)
36
if(!check_right("Screen","U",0))
38
error("Insufficient permissions");
42
105
$sql="update screens set name=".zbx_dbstr($name).",hsize=$hsize,vsize=$vsize where screenid=$screenid";
43
106
return DBexecute($sql);
62
125
$sql="delete from screens_items where screenid=$screenid and x=$x and y=$y";
64
$sql="insert into screens_items (resourcetype,screenid,x,y,resourceid,width,height,colspan,rowspan,elements,valign,halign,style,url)".
65
" values ($resourcetype,$screenid,$x,$y,$resourceid,$width,$height,$colspan,$rowspan,$elements,$valign,$halign,$style,".
67
return DBexecute($sql);
127
$screenitemid=get_dbid("screens_items","screenitemid");
128
$result=DBexecute("insert into screens_items (screenitemid,resourcetype,screenid,x,y,resourceid,width,height,".
129
" colspan,rowspan,elements,valign,halign,style,url) ".
130
" values ($screenitemid,$resourcetype,$screenid,$x,$y,$resourceid,".
131
" $width,$height,$colspan,$rowspan,$elements,$valign,$halign,$style,".
132
zbx_dbstr($url).")");
137
return $screenitemid;
70
140
function update_screen_item($screenitemid,$resourcetype,$resourceid,$width,$height,$colspan,$rowspan,$elements,$valign,$halign,$style,$url)
72
$sql="update screens_items set resourcetype=$resourcetype,resourceid=$resourceid,width=$width,height=$height,colspan=$colspan,rowspan=$rowspan,elements=$elements,valign=$valign,halign=$halign,style=$style,url=".zbx_dbstr($url)." where screenitemid=$screenitemid";
73
return DBexecute($sql);
142
return DBexecute("update screens_items set resourcetype=$resourcetype,resourceid=$resourceid,".
143
"width=$width,height=$height,colspan=$colspan,rowspan=$rowspan,elements=$elements,valign=$valign,".
144
"halign=$halign,style=$style,url=".zbx_dbstr($url)." where screenitemid=$screenitemid");
76
147
function delete_screen_item($screenitemid)
181
function get_slideshow($slideshowid, $step, $effectiveperiod=NULL)
183
$slide_data = DBfetch(DBselect('select min(step) as min_step, max(step) as max_step from slides '.
184
' where slideshowid='.$slideshowid));
186
if(!$slide_data || is_null($slide_data['min_step']))
188
return new CTableInfo(S_NO_SLIDES_DEFINED);
191
if(!isset($step) || $step < $slide_data['min_step'] || $step > $slide_data['max_step'])
193
$curr_step = $slide_data['min_step'];
202
return new CIFrame('screens.php?config=1&fullscreen=2&elementid='.$slideshowid.'&step='.$curr_step.
203
'&period='.$effectiveperiod.url_param('stime').url_param('from'));
206
$slide_data = DBfetch(DBselect('select sl.screenid,sl.delay,ss.delay as ss_delay from slides sl,slideshows ss '.
207
' where ss.slideshowid='.$slideshowid.' and ss.slideshowid=sl.slideshowid and sl.step='.$curr_step));
209
if( $slide_data['delay'] <= 0 )
211
$slide_data['delay'] = $slide_data['ss_delay'];
214
Redirect('screens.php?config=1&fullscreen=2&elementid='.$slideshowid.'&step='.($curr_step + 1).
215
'&period='.$effectiveperiod.url_param('stime').url_param('from'),
216
$slide_data['delay']);
218
return get_screen($slide_data['screenid'],2,$effectiveperiod);
111
221
// editmode: 0 - view with actions, 1 - edit mode, 2 - view without any actions
112
222
function get_screen($screenid, $editmode, $effectiveperiod=NULL)
224
if(!screen_accessiable($screenid, $editmode ? PERM_READ_WRITE : PERM_READ_ONLY))
114
227
if(is_null($effectiveperiod))
115
228
$effectiveperiod = 3600;
117
230
$result=DBselect("select name,hsize,vsize from screens where screenid=$screenid");
118
231
$row=DBfetch($result);
119
if(!$row) return new CSpan("Screen missing".BR);
232
if(!$row) return new CTableInfo(S_NO_SCREENS_DEFINED);
121
234
for($r=0;$r<$row["vsize"];$r++)
279
392
elseif( ($screenitemid!=0) && ($resourcetype==SCREEN_RESOURCE_TRIGGERS_OVERVIEW) )
281
$item = array(get_triggers_overview($resourceid));
394
global $ZBX_CURNODEID;
395
$item = array(get_triggers_overview($resourceid, $ZBX_CURNODEID));
282
396
if($editmode == 1) array_push($item,new CLink(S_CHANGE,$action));
284
398
elseif( ($screenitemid!=0) && ($resourcetype==SCREEN_RESOURCE_DATA_OVERVIEW) )
286
$item = array(get_items_data_overview($resourceid));
400
global $ZBX_CURNODEID;
401
$item = array(get_items_data_overview($resourceid, $ZBX_CURNODEID));
287
402
if($editmode == 1) array_push($item,new CLink(S_CHANGE,$action));
289
404
elseif( ($screenitemid!=0) && ($resourcetype==SCREEN_RESOURCE_URL) )
447
function slideshow_accessiable($slideshowid, $perm)
449
global $USER_DETAILS;
453
if(DBselect("select slideshowid from slideshows where slideshowid=".$slideshowid.
454
" and ".DBid2nodeid('slideshowid')." in (".get_accessible_nodes_by_user($USER_DETAILS,$perm).")"))
457
$db_slides = DBselect('select distinct screenid from slides where slideshowid='.$slideshowid);
458
while($slide_data = DBfetch($db_slides))
460
if( !($result = screen_accessiable($slide_data["screenid"], PERM_READ_ONLY)) ) break;
466
function get_slideshow_by_slideshowid($slideshowid)
468
return DBfetch(DBselect('select * from slideshows where slideshowid='.$slideshowid));
471
function validate_slide($slide)
473
if(!screen_accessiable($slide["screenid"], PERM_READ_ONLY)) return false;
475
if( !is_numeric($slide['delay']) ) return false;
480
function add_slideshow($name, $delay, $slides)
482
foreach($slides as $slide)
484
if( !validate_slide($slide) )
488
$slideshowid = get_dbid('slideshows','slideshowid');
489
$result = DBexecute('insert into slideshows (slideshowid,name,delay) '.
490
' values ('.$slideshowid.','.zbx_dbstr($name).','.$delay.')');
493
foreach($slides as $slide)
495
$slideid = get_dbid('slides','slideid');
496
if( !($result = DBexecute('insert into slides (slideid,slideshowid,screenid,step,delay) '.
497
' values ('.$slideid.','.$slideshowid.','.$slide['screenid'].','.($i++).','.$slide['delay'].')')) )
505
delete_slideshow($slideshowid);
511
function update_slideshow($slideshowid, $name, $delay, $slides)
513
foreach($slides as $slide)
515
if( !validate_slide($slide) )
519
if( !($result = DBexecute('update slideshows set name='.zbx_dbstr($name).',delay='.$delay.' where slideshowid='.$slideshowid)) )
522
DBexecute('delete from slides where slideshowid='.$slideshowid);
525
foreach($slides as $slide)
527
$slideid = get_dbid('slides','slideid');
528
if( !($result = DBexecute('insert into slides (slideid,slideshowid,screenid,step,delay) '.
529
' values ('.$slideid.','.$slideshowid.','.$slide['screenid'].','.($i++).','.$slide['delay'].')')) )
538
function delete_slideshow($slideshowid)
541
DBexecute('delete from slideshows where slideshowid='.$slideshowid) &&
542
DBexecute('delete from slides where slideshowid='.$slideshowid)