示例#1
0
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;
}
示例#2
0
    $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';
示例#3
0
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;
}
示例#4
0
    $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);
 }
示例#6
0
$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
示例#7
0
/**
 * 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];
}
示例#8
0
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');
示例#9
0
                     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"]);
                         }
                     }
                 }
             }
         }
     }
 }
示例#10
0
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;
}
示例#11
0
 $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();
示例#12
0
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;
}