function get_image_by_imageid($imageid) { $sql = 'SELECT * FROM images WHERE imageid=' . $imageid; $result = DBselect($sql); if ($row = DBfetch($result)) { $row['image'] = zbx_unescape_image($row['image']); } return $row; }
/** * Get image data from db, cache is used * @param $imageid * @return array image data from db */ function get_image_by_imageid($imageid) { static $images = array(); if (!isset($images[$imageid])) { $row = DBfetch(DBselect('SELECT i.* FROM images i WHERE i.imageid=' . zbx_dbstr($imageid))); $row['image'] = zbx_unescape_image($row['image']); $images[$imageid] = $row; } return $images[$imageid]; }
/** * Get images data * * @param array $options * @param array $options['itemids'] * @param array $options['hostids'] * @param array $options['groupids'] * @param array $options['triggerids'] * @param array $options['imageids'] * @param boolean $options['status'] * @param boolean $options['editable'] * @param boolean $options['count'] * @param string $options['pattern'] * @param int $options['limit'] * @param string $options['order'] * @return array|boolean image data as array or false if error */ public function get($options = array()) { $result = array(); $sqlParts = array('select' => array('images' => 'i.imageid'), 'from' => array('images' => 'images i'), 'where' => array(), 'order' => array(), 'limit' => null); $defOptions = array('imageids' => null, 'sysmapids' => null, 'filter' => null, 'search' => null, 'searchByAny' => null, 'startSearch' => null, 'excludeSearch' => null, 'searchWildcardsEnabled' => null, 'output' => API_OUTPUT_EXTEND, 'select_image' => null, 'editable' => null, 'countOutput' => null, 'preservekeys' => null, 'sortfield' => '', 'sortorder' => '', 'limit' => null); $options = zbx_array_merge($defOptions, $options); // editable + PERMISSION CHECK if (!is_null($options['editable']) && self::$userData['type'] < USER_TYPE_ZABBIX_ADMIN) { return $result; } // imageids if (!is_null($options['imageids'])) { zbx_value2array($options['imageids']); $sqlParts['where']['imageid'] = dbConditionInt('i.imageid', $options['imageids']); } // sysmapids if (!is_null($options['sysmapids'])) { zbx_value2array($options['sysmapids']); $sqlParts['from']['sysmaps'] = 'sysmaps sm'; $sqlParts['from']['sysmaps_elements'] = 'sysmaps_elements se'; $sqlParts['where']['sm'] = dbConditionInt('sm.sysmapid', $options['sysmapids']); $sqlParts['where']['smse_or_bg'] = '(' . 'sm.backgroundid=i.imageid' . ' OR (' . 'sm.sysmapid=se.sysmapid' . ' AND (' . 'se.iconid_off=i.imageid' . ' OR se.iconid_on=i.imageid' . ' OR se.iconid_disabled=i.imageid' . ' OR se.iconid_maintenance=i.imageid' . ')' . ')' . ')'; } // filter if (is_array($options['filter'])) { $this->dbFilter('images i', $options, $sqlParts); } // search if (is_array($options['search'])) { zbx_db_search('images i', $options, $sqlParts); } // limit if (zbx_ctype_digit($options['limit']) && $options['limit']) { $sqlParts['limit'] = $options['limit']; } $imageids = array(); $sqlParts = $this->applyQueryOutputOptions($this->tableName(), $this->tableAlias(), $options, $sqlParts); $sqlParts = $this->applyQuerySortOptions($this->tableName(), $this->tableAlias(), $options, $sqlParts); $res = DBselect($this->createSelectQueryFromParts($sqlParts), $sqlParts['limit']); while ($image = DBfetch($res)) { if ($options['countOutput']) { return $image['rowscount']; } else { $imageids[$image['imageid']] = $image['imageid']; $result[$image['imageid']] = $image; } } // adding objects if (!is_null($options['select_image'])) { $dbImg = DBselect('SELECT i.imageid,i.image FROM images i WHERE ' . dbConditionInt('i.imageid', $imageids)); while ($img = DBfetch($dbImg)) { // PostgreSQL and SQLite images are stored escaped in the DB $img['image'] = zbx_unescape_image($img['image']); $result[$img['imageid']]['image'] = base64_encode($img['image']); } } if (is_null($options['preservekeys'])) { $result = zbx_cleanHashes($result); } return $result; }
/** * Get images data * * @param array $options * @param array $options['itemids'] * @param array $options['hostids'] * @param array $options['groupids'] * @param array $options['triggerids'] * @param array $options['imageids'] * @param boolean $options['status'] * @param boolean $options['editable'] * @param boolean $options['count'] * @param string $options['pattern'] * @param int $options['limit'] * @param string $options['order'] * @return array|boolean image data as array or false if error */ public function get($options = array()) { $result = array(); // allowed columns for sorting $sortColumns = array('imageid', 'name'); $sqlParts = array('select' => array('images' => 'i.imageid'), 'from' => array('images' => 'images i'), 'where' => array(), 'order' => array(), 'limit' => null); $defOptions = array('nodeids' => null, 'imageids' => null, 'sysmapids' => null, 'filter' => null, 'search' => null, 'searchByAny' => null, 'startSearch' => null, 'excludeSearch' => null, 'searchWildcardsEnabled' => null, 'output' => API_OUTPUT_REFER, 'select_image' => null, 'editable' => null, 'countOutput' => null, 'preservekeys' => null, 'sortfield' => '', 'sortorder' => '', 'limit' => null); $options = zbx_array_merge($defOptions, $options); // editable + PERMISSION CHECK if (!is_null($options['editable']) && self::$userData['type'] < USER_TYPE_ZABBIX_ADMIN) { return $result; } // nodeids $nodeids = !is_null($options['nodeids']) ? $options['nodeids'] : get_current_nodeid(); // imageids if (!is_null($options['imageids'])) { zbx_value2array($options['imageids']); $sqlParts['where']['imageid'] = dbConditionInt('i.imageid', $options['imageids']); } // sysmapids if (!is_null($options['sysmapids'])) { zbx_value2array($options['sysmapids']); $sqlParts['select']['sm'] = 'sm.sysmapid'; $sqlParts['from']['sysmaps'] = 'sysmaps sm'; $sqlParts['from']['sysmaps_elements'] = 'sysmaps_elements se'; $sqlParts['where']['sm'] = dbConditionInt('sm.sysmapid', $options['sysmapids']); $sqlParts['where']['smse'] = 'sm.sysmapid=se.sysmapid '; $sqlParts['where']['se'] = '(' . 'se.iconid_off=i.imageid' . ' OR se.iconid_on=i.imageid' . ' OR se.iconid_disabled=i.imageid' . ' OR se.iconid_maintenance=i.imageid' . ' OR sm.backgroundid=i.imageid)'; } // output if ($options['output'] == API_OUTPUT_EXTEND) { $sqlParts['select']['images'] = 'i.imageid, i.imagetype, i.name'; } // count if (!is_null($options['countOutput'])) { $options['sortfield'] = ''; $sqlParts['select'] = array('count(DISTINCT i.imageid) as rowscount'); } // filter if (is_array($options['filter'])) { $this->dbFilter('images i', $options, $sqlParts); } // search if (is_array($options['search'])) { zbx_db_search('images i', $options, $sqlParts); } // sorting zbx_db_sorting($sqlParts, $options, $sortColumns, 'i'); // limit if (zbx_ctype_digit($options['limit']) && $options['limit']) { $sqlParts['limit'] = $options['limit']; } $imageids = array(); $sqlParts['select'] = array_unique($sqlParts['select']); $sqlParts['from'] = array_unique($sqlParts['from']); $sqlParts['where'] = array_unique($sqlParts['where']); $sqlParts['order'] = array_unique($sqlParts['order']); $sqlSelect = ''; $sqlFrom = ''; $sqlWhere = ''; $sqlOrder = ''; if (!empty($sqlParts['select'])) { $sqlSelect .= implode(',', $sqlParts['select']); } if (!empty($sqlParts['from'])) { $sqlFrom .= implode(',', $sqlParts['from']); } if (!empty($sqlParts['where'])) { $sqlWhere .= ' AND ' . implode(' AND ', $sqlParts['where']); } if (!empty($sqlParts['order'])) { $sqlOrder .= ' ORDER BY ' . implode(',', $sqlParts['order']); } $sql = 'SELECT ' . zbx_db_distinct($sqlParts) . ' ' . $sqlSelect . ' FROM ' . $sqlFrom . ' WHERE ' . DBin_node('i.imageid', $nodeids) . $sqlWhere . $sqlOrder; $res = DBselect($sql, $sqlParts['limit']); while ($image = DBfetch($res)) { if ($options['countOutput']) { return $image['rowscount']; } else { $imageids[$image['imageid']] = $image['imageid']; if ($options['output'] == API_OUTPUT_SHORTEN) { $result[$image['imageid']] = array('imageid' => $image['imageid']); } else { if (!isset($result[$image['imageid']])) { $result[$image['imageid']] = array(); } // sysmapds if (isset($image['sysmapid'])) { if (!isset($result[$image['imageid']]['sysmaps'])) { $result[$image['imageid']]['sysmaps'] = array(); } $result[$image['imageid']]['sysmaps'][] = array('sysmapid' => $image['sysmapid']); } $result[$image['imageid']] += $image; } } } // adding objects if (!is_null($options['select_image'])) { $dbImg = DBselect('SELECT i.imageid,i.image FROM images i WHERE ' . dbConditionInt('i.imageid', $imageids)); while ($img = DBfetch($dbImg)) { // PostgreSQL and SQLite images are stored escaped in the DB $img['image'] = zbx_unescape_image($img['image']); $result[$img['imageid']]['image'] = base64_encode($img['image']); } } if (is_null($options['preservekeys'])) { $result = zbx_cleanHashes($result); } return $result; }
<?php /* * Objetivo: Gerar dinamicamente o logotipo do zabbix permitindo customizacao por usuario * Adail Horst - http://spinola.net.br/blog * Parte integrante do zabbix-extras * Nao e permitida qualquer alteracao que renomeie ou complique a identificacao do produto */ require_once dirname(__FILE__) . '/include/config.inc.php'; require_once dirname(__FILE__) . '/include/zbxe_visual_imp.php'; header("Content-type: image/png"); $query = "SELECT image FROM images WHERE name = '" . $ZBXE_VAR['logo_company'] . "'"; echo zbx_unescape_image(zbxeFieldValue($query, 'image'));
define('ZBX_PAGE_NO_AUTHERIZATION', 1); require_once 'include/config.inc.php'; require_once 'include/maps.inc.php'; $page['file'] = 'imgstore.php'; $page['type'] = detect_page_type(PAGE_TYPE_IMAGE); include_once 'include/page_header.php'; // VAR TYPE OPTIONAL FLAGS VALIDATION EXCEPTION $fields = array('css' => array(T_ZBX_INT, O_OPT, P_SYS, null, null), 'imageid' => array(T_ZBX_STR, O_OPT, P_SYS, null, null), 'iconid' => array(T_ZBX_INT, O_OPT, P_SYS, DB_ID, null)); check_fields($fields); if (isset($_REQUEST['css'])) { $css = 'div.sysmap_iconid_0{' . ' height: 50px; ' . ' width: 50px; ' . ' background-image: url("images/general/no_icon.png"); }' . "\n"; $options = array('filter' => array('imagetype' => IMAGE_TYPE_ICON), 'output' => API_OUTPUT_EXTEND, 'select_image' => 1); $images = CImage::get($options); foreach ($images as $inum => $image) { //SDI($image['image']); $image['image'] = zbx_unescape_image(base64_decode($image['image'])); $ico = imagecreatefromstring($image['image']); $w = imagesx($ico); $h = imagesy($ico); $css .= 'div.sysmap_iconid_' . $image['imageid'] . '{' . ' height: ' . $h . 'px; ' . ' width: ' . $w . 'px; ' . ' background-image: url("imgstore.php?iconid=' . $image['imageid'] . '");' . ' background-repeat:no-repeat; }' . "\n"; } print $css; } else { if (isset($_REQUEST['iconid'])) { $iconid = get_request('iconid', 0); if ($iconid > 0) { $image = get_image_by_imageid($iconid); print $image['image']; } else { $image = get_default_image(true); ImageOut($image);