function make_screen_submenu() { $favScreens = array(); $fav_screens = CFavorite::get('web.favorite.screenids'); if (!$fav_screens) { return $favScreens; } $screenids = array(); foreach ($fav_screens as $favorite) { if ('screenid' == $favorite['source']) { $screenids[$favorite['value']] = $favorite['value']; } } $options = array('screenids' => $screenids, 'output' => array('screenid', 'name')); $screens = API::Screen()->get($options); $screens = zbx_toHash($screens, 'screenid'); foreach ($fav_screens as $favorite) { $source = $favorite['source']; $sourceid = $favorite['value']; if ('slideshowid' == $source) { if (!slideshow_accessible($sourceid, PERM_READ)) { continue; } if (!($slide = get_slideshow_by_slideshowid($sourceid))) { continue; } $slide_added = true; $favScreens[] = array('name' => $slide['name'], 'favobj' => 'slideshowid', 'favid' => $slide['slideshowid'], 'favaction' => 'remove'); } else { if (!isset($screens[$sourceid])) { continue; } $screen = $screens[$sourceid]; $screen_added = true; $favScreens[] = array('name' => $screen['name'], 'favobj' => 'screenid', 'favid' => $screen['screenid'], 'favaction' => 'remove'); } } if (isset($screen_added)) { $favScreens[] = array('name' => _('Remove') . ' ' . _('All') . ' ' . _('Screens'), 'favobj' => 'screenid', 'favid' => 0, 'favaction' => 'remove'); } if (isset($slide_added)) { $favScreens[] = array('name' => _('Remove') . ' ' . _('All') . ' ' . _('Slides'), 'favobj' => 'slideshowid', 'favid' => 0, 'favaction' => 'remove'); } return $favScreens; }
$data['screen'] = get_slideshow_by_slideshowid($data['elementId'], PERM_READ); if (!$data['screen']) { // Redirect to slide show list. ob_end_clean(); redirect('slideconf.php'); } } $data['fullscreen'] = getRequest('fullscreen'); if ($data['screen']) { // get groups and hosts if (check_dynamic_items($data['elementId'], 1)) { $data['isDynamicItems'] = true; $data['pageFilter'] = new CPageFilter(['groups' => ['monitored_hosts' => true, 'with_items' => true], 'hosts' => ['monitored_hosts' => true, 'with_items' => true, 'DDFirstLabel' => _('not selected')], 'hostid' => getRequest('hostid'), 'groupid' => getRequest('groupid')]); $data['groupid'] = $data['pageFilter']->groupid; $data['hostid'] = $data['pageFilter']->hostid; } // get element $data['element'] = get_slideshow_by_slideshowid($data['elementId'], PERM_READ); $data['screen']['editable'] = (bool) get_slideshow_by_slideshowid($data['elementId'], PERM_READ_WRITE); if ($data['screen']['delay'] > 0) { $data['element']['delay'] = $data['screen']['delay']; } show_messages(); } // refresh $data['refreshMultiplier'] = CProfile::get('web.slides.rf_rate.' . WIDGET_SLIDESHOW, 1, $data['elementId']); // render view $slidesView = new CView('monitoring.slides', $data); $slidesView->render(); $slidesView->show(); require_once dirname(__FILE__) . '/include/page_footer.php';
function make_screen_submenu() { $screenids = array(); $fav_screens = get_favorites('web.favorite.screenids'); foreach ($fav_screens as $key => $favorite) { $source = $favorite['source']; $sourceid = $favorite['value']; if ('slideshowid' == $source) { if (!($slide = get_slideshow_by_slideshowid($sourceid))) { continue; } $slide_added = true; $screenids[] = array('name' => $slide['name'], 'favobj' => 'slideshowid', 'favid' => $sourceid, 'action' => 'remove'); } else { if (!($screen = get_screen_by_screenid($sourceid))) { continue; } $screen_added = true; $screenids[] = array('name' => $screen['name'], 'favobj' => 'screenid', 'favid' => $sourceid, 'action' => 'remove'); } } if (isset($screen_added)) { $screenids[] = array('name' => S_REMOVE . SPACE . S_ALL_S . SPACE . S_SCREENS, 'favobj' => 'screenid', 'favid' => 0, 'action' => 'remove'); } if (isset($slide_added)) { $screenids[] = array('name' => S_REMOVE . SPACE . S_ALL_S . SPACE . S_SLIDES, 'favobj' => 'slideshowid', 'favid' => 0, 'action' => 'remove'); } return $screenids; }
$available_hosts = $PAGE_HOSTS['hostids']; $cmbGroups = new CComboBox('groupid', $PAGE_GROUPS['selected'], 'javascript: submit();'); foreach ($PAGE_GROUPS['groups'] as $groupid => $name) { $cmbGroups->addItem($groupid, get_node_name_by_elid($groupid) . $name); } $form->addItem(array(SPACE . S_GROUP . SPACE, $cmbGroups)); $PAGE_HOSTS['hosts']['0'] = S_DEFAULT; $cmbHosts = new CComboBox('hostid', $PAGE_HOSTS['selected'], 'javascript: submit();'); foreach ($PAGE_HOSTS['hosts'] as $hostid => $name) { $cmbHosts->addItem($hostid, get_node_name_by_elid($hostid) . $name); } $form->addItem(array(SPACE . S_HOST . SPACE, $cmbHosts)); } $slide_name = S_SLIDESHOW; if (isset($elementid)) { if ($element = get_slideshow_by_slideshowid($elementid)) { $slide_name = $element['name']; } } $icon = null; $fs_icon = null; if (isset($elementid) && $element) { if (infavorites('web.favorite.screenids', $elementid, 'slideshowid')) { $icon = new CDiv(SPACE, 'iconminus'); $icon->setAttribute('title', S_REMOVE_FROM . ' ' . S_FAVOURITES); $icon->addAction('onclick', new CScript("javascript: rm4favorites('slideshowid','" . $elementid . "',0);")); } else { $icon = new CDiv(SPACE, 'iconplus'); $icon->setAttribute('title', S_ADD_TO . ' ' . S_FAVOURITES); $icon->addAction('onclick', new CScript("javascript: add2favorites('slideshowid','" . $elementid . "');")); }
/** * Prepare data for favourite screens menu popup. * * @return array */ public static function getFavouriteScreens() { $screens = $slideshows = array(); $favourites = CFavorite::get('web.favorite.screenids'); if ($favourites) { $screenIds = $slideshowIds = array(); foreach ($favourites as $favourite) { if ($favourite['source'] === 'screenid') { $screenIds[$favourite['value']] = $favourite['value']; } } $dbScreens = API::Screen()->get(array('output' => array('screenid', 'name'), 'screenids' => $screenIds, 'preservekeys' => true)); foreach ($favourites as $favourite) { $sourceId = $favourite['value']; if ($favourite['source'] === 'slideshowid') { if (slideshow_accessible($sourceId, PERM_READ)) { $dbSlideshow = get_slideshow_by_slideshowid($sourceId); if ($dbSlideshow) { $slideshows[] = array('id' => $dbSlideshow['slideshowid'], 'label' => $dbSlideshow['name']); } } } else { if (isset($dbScreens[$sourceId])) { $dbScreen = $dbScreens[$sourceId]; $screens[] = array('id' => $dbScreen['screenid'], 'label' => $dbScreen['name']); } } } } return array('type' => 'favouriteScreens', 'screens' => $screens, 'slideshows' => $slideshows); }
$data['elementid'] = get_request('elementid', CProfile::get('web.slides.elementid', null)); CProfile::update('web.slides.elementid', $data['elementid'], PROFILE_TYPE_ID); if (!isset($data['slideshows'][$data['elementid']])) { $slideshow = reset($data['slideshows']); $data['elementid'] = $slideshow['slideshowid']; } // get screen $data['screen'] = empty($data['elementid']) ? array() : get_slideshow($data['elementid'], 0); if (!empty($data['screen'])) { // get groups and hosts if (check_dynamic_items($data['elementid'], 1)) { $data['isDynamicItems'] = true; $data['pageFilter'] = new CPageFilter(array('groups' => array('monitored_hosts' => true, 'with_items' => true), 'hosts' => array('monitored_hosts' => true, 'with_items' => true, 'DDFirstLabel' => _('Default')), 'hostid' => get_request('hostid', null), 'groupid' => get_request('groupid', null))); } // get element $data['element'] = get_slideshow_by_slideshowid($data['elementid']); if ($data['screen']['delay'] > 0) { $data['element']['delay'] = $data['screen']['delay']; } show_messages(); // js menu $data['menu'] = array(); $data['submenu'] = array(); $data['refresh_multiplier'] = CProfile::get('web.slides.rf_rate.hat_slides', 1, $data['elementid']); if (empty($data['refresh_multiplier'])) { $data['refresh_multiplier'] = 1; CProfile::update('web.slides.rf_rate.hat_slides', $data['refresh_multiplier'], PROFILE_TYPE_STR, $data['elementid']); } make_refresh_menu('mainpage', 'hat_slides', $data['refresh_multiplier'], array('elementid' => $data['elementid']), $data['menu'], $data['submenu'], 2); } // render view
/** * Get favourite screens and slide shows data. * * @return array['screens'] * @return array['slideshows'] */ function getFavouriteScreensData() { $screens = $slideshows = []; $favourites = CFavorite::get('web.favorite.screenids'); if ($favourites) { $screenIds = $slideshowIds = []; foreach ($favourites as $favourite) { if ($favourite['source'] === 'screenid') { $screenIds[$favourite['value']] = $favourite['value']; } } $dbScreens = API::Screen()->get(['output' => ['screenid', 'name'], 'screenids' => $screenIds, 'preservekeys' => true]); foreach ($favourites as $favourite) { $sourceId = $favourite['value']; if ($favourite['source'] === 'slideshowid') { if (slideshow_accessible($sourceId, PERM_READ)) { $dbSlideshow = get_slideshow_by_slideshowid($sourceId, PERM_READ); if ($dbSlideshow) { $slideshows[] = ['id' => $dbSlideshow['slideshowid'], 'label' => $dbSlideshow['name']]; } } } else { if (isset($dbScreens[$sourceId])) { $dbScreen = $dbScreens[$sourceId]; $screens[] = ['id' => $dbScreen['screenid'], 'label' => $dbScreen['name']]; } } } } return ['screens' => $screens, 'slideshows' => $slideshows]; }
require_once dirname(__FILE__) . '/include/page_header.php'; // VAR TYPE OPTIONAL FLAGS VALIDATION EXCEPTION $fields = array('shows' => array(T_ZBX_INT, O_OPT, P_SYS, DB_ID, null), 'slideshowid' => array(T_ZBX_INT, O_NO, P_SYS, DB_ID, '(isset({form})&&({form}=="update"))'), 'name' => array(T_ZBX_STR, O_OPT, null, NOT_EMPTY, 'isset({save})', _('Name')), 'delay' => array(T_ZBX_INT, O_OPT, null, BETWEEN(1, SEC_PER_DAY), 'isset({save})', _('Default delay (in seconds)')), 'slides' => array(null, O_OPT, null, null, null), 'go' => array(T_ZBX_STR, O_OPT, P_SYS | P_ACT, null, null), 'clone' => array(T_ZBX_STR, O_OPT, P_SYS | P_ACT, null, null), 'save' => array(T_ZBX_STR, O_OPT, P_SYS | P_ACT, null, null), 'delete' => array(T_ZBX_STR, O_OPT, P_SYS | P_ACT, null, null), 'cancel' => array(T_ZBX_STR, O_OPT, P_SYS, null, null), 'form' => array(T_ZBX_STR, O_OPT, P_SYS, null, null), 'form_refresh' => array(T_ZBX_INT, O_OPT, null, null, null)); check_fields($fields); validate_sort_and_sortorder('name', ZBX_SORT_UP); if (!empty($_REQUEST['slides'])) { natksort($_REQUEST['slides']); } /* * Permissions */ if (isset($_REQUEST['slideshowid'])) { if (!slideshow_accessible($_REQUEST['slideshowid'], PERM_READ_WRITE)) { access_deny(); } $dbSlideshow = get_slideshow_by_slideshowid(get_request('slideshowid')); if (empty($dbSlideshow)) { access_deny(); } } if (isset($_REQUEST['go'])) { if (!isset($_REQUEST['shows']) || !is_array($_REQUEST['shows'])) { access_deny(); } else { $dbSlideshowChk = DBfetch(DBselect('SELECT COUNT(*) AS cnt FROM slideshows s WHERE ' . dbConditionInt('s.slideshowid', $_REQUEST['shows']))); if ($dbSlideshowChk['cnt'] != count($_REQUEST['shows'])) { access_deny(); } } } $_REQUEST['go'] = get_request('go', 'none');
if (isset($_REQUEST['steps'][$new_id])) { $tmp = $_REQUEST['steps'][$new_id]; $_REQUEST['steps'][$new_id] = $_REQUEST['steps'][$_REQUEST['move_up']]; $_REQUEST['steps'][$_REQUEST['move_up']] = $tmp; } } else { if (isset($_REQUEST['move_down']) && isset($_REQUEST['steps'][$_REQUEST['move_down']])) { $new_id = $_REQUEST['move_down'] + 1; if (isset($_REQUEST['steps'][$new_id])) { $tmp = $_REQUEST['steps'][$new_id]; $_REQUEST['steps'][$new_id] = $_REQUEST['steps'][$_REQUEST['move_down']]; $_REQUEST['steps'][$_REQUEST['move_down']] = $tmp; } } else { if (isset($_REQUEST['delete']) && isset($_REQUEST['slideshowid'])) { if ($slideshow = get_slideshow_by_slideshowid($_REQUEST['slideshowid'])) { DBstart(); delete_slideshow($_REQUEST['slideshowid']); $result = DBend(); show_messages($result, S_SLIDESHOW_DELETED, S_CANNOT_DELETE_SLIDESHOW); add_audit_if($result, AUDIT_ACTION_DELETE, AUDIT_RESOURCE_SLIDESHOW, " Name [" . $slideshow['name'] . "] "); } unset($_REQUEST['slideshowid']); unset($_REQUEST["form"]); } } } } } } }
function make_screen_submenu() { $fav_screens = get_favorites('web.favorite.screenids'); $screenids = array(); foreach ($fav_screens as $key => $favorite) { if ('screenid' == $favorite['source']) { $screenids[$favorite['value']] = $favorite['value']; } } $options = array('screenids' => $screenids, 'output' => API_OUTPUT_EXTEND); $screens = CScreen::get($options); $screens = zbx_toHash($screens, 'screenid'); $favScreens = array(); foreach ($fav_screens as $key => $favorite) { $source = $favorite['source']; $sourceid = $favorite['value']; if ('slideshowid' == $source) { if (!slideshow_accessible($sourceid, PERM_READ_ONLY)) { continue; } if (!($slide = get_slideshow_by_slideshowid($sourceid))) { continue; } $slide_added = true; $favScreens[] = array('name' => $slide['name'], 'favobj' => 'slideshowid', 'favid' => $slide['slideshowid'], 'action' => 'remove'); } else { if (!isset($screens[$sourceid])) { continue; } $screen = $screens[$sourceid]; $screen_added = true; $favScreens[] = array('name' => $screen['name'], 'favobj' => 'screenid', 'favid' => $screen['screenid'], 'action' => 'remove'); } } if (isset($screen_added)) { $favScreens[] = array('name' => S_REMOVE . SPACE . S_ALL_S . SPACE . S_SCREENS, 'favobj' => 'screenid', 'favid' => 0, 'action' => 'remove'); } if (isset($slide_added)) { $favScreens[] = array('name' => S_REMOVE . SPACE . S_ALL_S . SPACE . S_SLIDES, 'favobj' => 'slideshowid', 'favid' => 0, 'action' => 'remove'); } return $favScreens; }
$data = ['filter' => ['name' => CProfile::get('web.slideconf.filter_name', '')], 'sort' => $sortField, 'sortorder' => $sortOrder]; if ($data['filter']['name'] !== '') { // escaping parameter that is about to be used in LIKE statement $pattern = str_replace("!", "!!", $data['filter']['name']); $pattern = str_replace("%", "!%", $pattern); $pattern = str_replace("_", "!_", $pattern); $sql_where = ' WHERE UPPER(s.name) LIKE ' . zbx_dbstr('%' . mb_strtoupper($pattern) . '%') . " ESCAPE '!'"; } else { $sql_where = ''; } $data['slides'] = DBfetchArray(DBselect('SELECT s.slideshowid,s.name,s.delay,COUNT(sl.slideshowid) AS cnt' . ' FROM slideshows s' . ' LEFT JOIN slides sl ON sl.slideshowid=s.slideshowid' . $sql_where . ' GROUP BY s.slideshowid,s.name,s.delay' . ' ORDER BY ' . ($sortField === 'cnt' ? 'cnt' : 's.' . $sortField))); foreach ($data['slides'] as $key => &$slide) { if (!slideshow_accessible($slide['slideshowid'], PERM_READ)) { unset($data['slides'][$key]); } else { $slide['editable'] = (bool) get_slideshow_by_slideshowid($slide['slideshowid'], PERM_READ_WRITE); } } unset($slide); order_result($data['slides'], $sortField, $sortOrder); if ($sortOrder == ZBX_SORT_UP) { $data['slides'] = array_slice($data['slides'], 0, $limit); } else { $data['slides'] = array_slice($data['slides'], -$limit, $limit); } order_result($data['slides'], $sortField, $sortOrder); $data['paging'] = getPagingLine($data['slides'], $sortOrder, new CUrl('slideconf.php')); // render view $slideshowView = new CView('monitoring.slideconf.list', $data); $slideshowView->render(); $slideshowView->show();
function delete_slideshow($slideshowid) { $result = false; if (get_slideshow_by_slideshowid($slideshowid, PERM_READ_WRITE)) { $result = DBexecute('DELETE FROM slideshows where slideshowid=' . zbx_dbstr($slideshowid)); $result &= DBexecute('DELETE FROM slides where slideshowid=' . zbx_dbstr($slideshowid)); $result &= DBexecute('DELETE FROM profiles WHERE idx=\'web.favorite.screenids\' AND source=\'slideshowid\' AND value_id=' . zbx_dbstr($slideshowid)); } return (bool) $result; }