diff options
Diffstat (limited to 'frontends/php/include')
-rw-r--r-- | frontends/php/include/config.inc.php | 5 | ||||
-rw-r--r-- | frontends/php/include/db.inc.php | 2 | ||||
-rw-r--r-- | frontends/php/include/hosts.inc.php | 20 | ||||
-rw-r--r-- | frontends/php/include/profiles.inc.php | 94 |
4 files changed, 52 insertions, 69 deletions
diff --git a/frontends/php/include/config.inc.php b/frontends/php/include/config.inc.php index 2f8c9c91..f031b854 100644 --- a/frontends/php/include/config.inc.php +++ b/frontends/php/include/config.inc.php @@ -1271,8 +1271,9 @@ function TODO($msg) { echo "TODO: ".$msg.SBR; } // DEBUG INFO!!! } function zbx_empty($var){ - if(is_null($var)) return true; - if($var === '') return true; + if(is_null($var)) return true; + if(is_array($var) && empty($var)) return true; + if(is_string($var) && ($var === '')) return true; return false; } diff --git a/frontends/php/include/db.inc.php b/frontends/php/include/db.inc.php index 31f018c3..1136adcc 100644 --- a/frontends/php/include/db.inc.php +++ b/frontends/php/include/db.inc.php @@ -645,7 +645,7 @@ else { if(empty($nodes)) $nodes = 0; - if(is_numeric($nodes)){ + if(ctype_digit($nodes)){ $nodes = array($nodes); } else if(is_string($nodes)){ diff --git a/frontends/php/include/hosts.inc.php b/frontends/php/include/hosts.inc.php index bfabd80a..0923fc2b 100644 --- a/frontends/php/include/hosts.inc.php +++ b/frontends/php/include/hosts.inc.php @@ -847,11 +847,11 @@ require_once "include/httptest.inc.php"; if(is_null($group_var)) $group_var = "web.latest.groupid"; if(is_null($host_var)) $host_var = "web.latest.hostid"; - $_REQUEST["groupid"] = get_request("groupid", -1 ); - $_REQUEST["hostid"] = get_request("hostid", get_profile($host_var,0)); + $_REQUEST["groupid"] = get_request("groupid", -1); + $_REQUEST["hostid"] = get_request("hostid", get_profile($host_var, 0, PROFILE_TYPE_ID)); if(-1 == $_REQUEST["groupid"]){ - $_REQUEST["groupid"] = get_profile($group_var,0); + $_REQUEST["groupid"] = get_profile($group_var, 0, PROFILE_TYPE_ID); if(!in_node($_REQUEST["groupid"])) $_REQUEST["groupid"] = 0; @@ -868,8 +868,8 @@ require_once "include/httptest.inc.php"; $_REQUEST["groupid"] = $result["groupid"]; $_REQUEST["hostid"] = $result["hostid"]; - update_profile($host_var,$_REQUEST["hostid"]); - update_profile($group_var,$_REQUEST["groupid"]); + update_profile($host_var,$_REQUEST["hostid"], PROFILE_TYPE_ID); + update_profile($group_var,$_REQUEST["groupid"], PROFILE_TYPE_ID); } /* @@ -885,18 +885,18 @@ require_once "include/httptest.inc.php"; * Modified: by Aly */ function validate_group($perm, $options = array(),$group_var=null){ - if(is_null($group_var)) $group_var = "web.latest.groupid"; - $_REQUEST["groupid"] = get_request("groupid",get_profile($group_var,0)); + if(is_null($group_var)) $group_var = 'web.latest.groupid'; + $_REQUEST["groupid"] = get_request('groupid',get_profile($group_var, 0, PROFILE_TYPE_ID)); - if(!in_node($_REQUEST["groupid"])) $_REQUEST["groupid"] = 0; + if(!in_node($_REQUEST['groupid'])) $_REQUEST['groupid'] = 0; if(str_in_array('always_select_first_group',$options) && ($_REQUEST['groupid'] == 0)) $_REQUEST['groupid'] = -1; $result = get_correct_group_and_host($_REQUEST['groupid'],null,$perm,$options); - $_REQUEST["groupid"] = $result["groupid"]; + $_REQUEST['groupid'] = $result['groupid']; - update_profile($group_var,$_REQUEST["groupid"]); + update_profile($group_var, $_REQUEST['groupid'], PROFILE_TYPE_ID); } /* APPLICATIONS */ diff --git a/frontends/php/include/profiles.inc.php b/frontends/php/include/profiles.inc.php index 929b8527..5790c356 100644 --- a/frontends/php/include/profiles.inc.php +++ b/frontends/php/include/profiles.inc.php @@ -30,8 +30,9 @@ function get_profile($idx,$default_value=null,$type=PROFILE_TYPE_UNKNOWN,$idx2=n if($USER_DETAILS["alias"]!=ZBX_GUEST_USER){ $sql_cond = ''; - if(ctype_digit($idx2)) $sql_cond = ' AND idx2='.$idx2.' AND '.DBin_node('idx2'); - if(!is_null($source)) $sql_cond.= ' AND source='.zbx_dbstr($source); + if(profile_type($type,'id')) $sql_cond.= ' AND '.DBin_node('value_id'); + if(ctype_digit($idx2)) $sql_cond.= ' AND idx2='.$idx2.' AND '.DBin_node('idx2'); + if(!is_null($source)) $sql_cond.= ' AND source='.zbx_dbstr($source); $sql = 'SELECT value_id, value_int, value_str, type '. ' FROM profiles '. @@ -43,10 +44,10 @@ function get_profile($idx,$default_value=null,$type=PROFILE_TYPE_UNKNOWN,$idx2=n if($profile=DBfetch($db_profiles)){ - if(PROFILE_TYPE_UNKNOWN == $type) $type = $profile['type']; + if(profile_type($type,'unknown')) $type = $profile['type']; $value_type = profile_field_by_type($type); - if(profile_type_array($type)){ + if(profile_type($type,'array')){ $result[] = $profile[$value_type]; while($profile=DBfetch($db_profiles)){ $result[] = $profile[$value_type]; @@ -70,8 +71,9 @@ function get_source_profile($idx,$default_value=array(),$type=PROFILE_TYPE_UNKNO if($USER_DETAILS["alias"]!=ZBX_GUEST_USER){ $sql_cond = ''; - if(ctype_digit($idx2)) $sql_cond.= ' AND idx2='.$idx2.' AND '.DBin_node('idx2'); - if(!is_null($source)) $sql_cond.= ' AND source='.zbx_dbstr($source); + if(profile_type($type,'id')) $sql_cond.= ' AND '.DBin_node('value_id'); + if(ctype_digit($idx2)) $sql_cond.= ' AND idx2='.$idx2.' AND '.DBin_node('idx2'); + if(!is_null($source)) $sql_cond.= ' AND source='.zbx_dbstr($source); $sql = 'SELECT value_id,value_int,value_str,source,type '. ' FROM profiles '. @@ -82,10 +84,10 @@ function get_source_profile($idx,$default_value=array(),$type=PROFILE_TYPE_UNKNO $db_profiles = DBselect($sql); if($profile=DBfetch($db_profiles)){ - if(PROFILE_TYPE_UNKNOWN == $type) $type = $profile['type']; + if(profile_type($type,'unknown')) $type = $profile['type']; $value_type = profile_field_by_type($type); - if(profile_type_array($type)){ + if(profile_type($type,'array')){ $result[] = array('value'=>$profile[$value_type], 'source'=>$profile['source']); while($profile=DBfetch($db_profiles)){ @@ -103,17 +105,12 @@ function get_source_profile($idx,$default_value=array(),$type=PROFILE_TYPE_UNKNO return $result; } -function get_node_profile($idx,$default_value=null,$nodeid=null){ - $profile = profiles_in_node(get_profile($idx,$default_value),$nodeid); -return (zbx_empty($profile))?$default_value:$profile; -} - //----------- ADD/EDIT USERPROFILE ------------- function update_profile($idx,$value,$type=PROFILE_TYPE_UNKNOWN,$idx2=null,$source=null){ global $USER_DETAILS; if($USER_DETAILS["alias"]==ZBX_GUEST_USER) return false; - if(PROFILE_TYPE_UNKNOWN == $type) $type = profile_type_by_value($value); + if(profile_type($type,'unknown')) $type = profile_type_by_value($value); else $value = profile_value_by_type($value,$type); if($value === false) return false; @@ -122,7 +119,7 @@ function update_profile($idx,$value,$type=PROFILE_TYPE_UNKNOWN,$idx2=null,$sourc if(ctype_digit($idx2)) $sql_cond = ' AND idx2='.$idx2.' AND '.DBin_node('idx2'); DBstart(); - if(profile_type_array($type)){ + if(profile_type($type,'array')){ $sql='DELETE FROM profiles '. ' WHERE userid='.$USER_DETAILS["userid"]. @@ -225,8 +222,28 @@ return $result; } // ----------- MISC PROFILE FUNCTIONS ----------- -function profile_type_array($type){ - return uint_in_array($type,array(PROFILE_TYPE_ARRAY_ID,PROFILE_TYPE_ARRAY_INT,PROFILE_TYPE_ARRAY_STR)); +function profile_type($type,$profile_type){ + $profile_type = strtolower($profile_type); + switch($profile_type){ + case 'array': + $result = uint_in_array($type,array(PROFILE_TYPE_ARRAY_ID,PROFILE_TYPE_ARRAY_INT,PROFILE_TYPE_ARRAY_STR)); + break; + case 'id': + $result = uint_in_array($type,array(PROFILE_TYPE_ID,PROFILE_TYPE_ARRAY_ID)); + break; + case 'int': + $result = uint_in_array($type,array(PROFILE_TYPE_INT,PROFILE_TYPE_ARRAY_INT)); + break; + case 'str': + $result = uint_in_array($type,array(PROFILE_TYPE_STR,PROFILE_TYPE_ARRAY_STR)); + break; + case 'unknown': + $result = ($type == PROFILE_TYPE_UNKNOWN); + break; + default: + $result = false; + } +return $result; } function profile_field_by_type($type){ @@ -269,7 +286,7 @@ return $type; function profile_value_by_type(&$value,$type){ - if(profile_type_array($type)){ + if(profile_type($type,'array')){ $result = is_array($value)?$value:array($value); } else if(is_array($value)){ @@ -309,8 +326,7 @@ function profile_value_by_type(&$value,$type){ return $result; } -/***********************************/ - +/********** END MISC ***********/ /************ HISTORY **************/ @@ -404,20 +420,10 @@ return $result; /********** USER FAVORITES ***********/ // Author: Aly function get_favorites($favobj,$nodeid=null){ - $fav = get_source_profile($favobj); - - if(is_null($nodeid)) - $nodeid = get_current_nodeid(); - - if(!is_array($nodeid)) - $nodeid = array($nodeid); - - foreach($fav as $key => $favorite){ - if(!uint_in_array(id2nodeid($favorite['value']),$nodeid)) unset($fav[$key]); - } - + $fav = get_source_profile($favobj,array(),PROFILE_TYPE_ARRAY_ID); return $fav; } + // Author: Aly function add2favorites($favobj,$favid,$source=null){ $favorites = get_favorites($favobj,get_current_nodeid(true)); @@ -464,28 +470,4 @@ function infavorites($favobj,$favid,$source=null){ return false; } /********** END USER FAVORITES ***********/ - -/********** MISC ***********/ - -function profiles_in_node($profile, $nodeid=null){ - if(is_null($nodeid)) - $nodeid = get_current_nodeid(); - - if(!is_array($nodeid)) - $nodeid = array($nodeid); - - if(is_array($profile)){ - foreach($profile as $key => $value){ - $value = profiles_in_node($value,$nodeid); - if(!zbx_empty($value)) $profile[$key] = $value; - else unset($profile[$key]); - } - } - else if(is_numeric($profile)){ - if(!uint_in_array(id2nodeid($profile),$nodeid)) $profile = null;; - } - -return $profile; -} -/********** END MISC ***********/ ?>
\ No newline at end of file |