diff options
author | Renato Botelho <renato.botelho@bluepex.com> | 2010-06-02 08:30:29 -0300 |
---|---|---|
committer | Renato Botelho <renato.botelho@bluepex.com> | 2010-06-02 08:30:29 -0300 |
commit | 3ffa8318886303cc73944e7d55d47d9b61265433 (patch) | |
tree | d8ce447a954090a3c3adc72e90c6edda827351cd /etc/inc/rrd.inc | |
parent | e8d50a4a0eab841da43148b47bf96f01c01ccd64 (diff) | |
download | pfsense-3ffa8318886303cc73944e7d55d47d9b61265433.zip pfsense-3ffa8318886303cc73944e7d55d47d9b61265433.tar.gz |
First steps for 3g serviceproviders support
o Move xml2array from rrd.inc to pfsense-utils.inc because it'll be used
on non-rrd related places
o Add necessary require_once() calls to pfsense-utils.inc on places that
are calling xml2array()
o Add serviceproviders.xml, obtained from [1]
o Add ISO xml with country codes and names, obtained from [2]
[1] http://git.gnome.org/browse/mobile-broadband-provider-info/
[2] http://www.iso.org/iso/country_codes/iso_3166_code_lists.htm
Diffstat (limited to 'etc/inc/rrd.inc')
-rw-r--r-- | etc/inc/rrd.inc | 135 |
1 files changed, 0 insertions, 135 deletions
diff --git a/etc/inc/rrd.inc b/etc/inc/rrd.inc index fa2920e..85221e6 100644 --- a/etc/inc/rrd.inc +++ b/etc/inc/rrd.inc @@ -637,139 +637,4 @@ function kill_traffic_collector() { mwexec("/bin/pkill -f updaterrd.sh"); } -/* This xml 2 array function is courtesy of the php.net comment section on xml_parse. - * it is roughly 4 times faster then our existing pfSense parser but due to the large - * size of the RRD xml dumps this is required. - * The reason we do not use it for pfSense is that it does not know about array fields - * which causes it to fail on array fields with single items. Possible Todo? - */ -function xml2array($contents, $get_attributes = 1, $priority = 'tag') -{ - if (!function_exists('xml_parser_create')) - { - return array (); - } - $parser = xml_parser_create(''); - xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, "UTF-8"); - xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); - xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1); - xml_parse_into_struct($parser, trim($contents), $xml_values); - xml_parser_free($parser); - if (!$xml_values) - return; //Hmm... - $xml_array = array (); - $parents = array (); - $opened_tags = array (); - $arr = array (); - $current = & $xml_array; - $repeated_tag_index = array (); - foreach ($xml_values as $data) - { - unset ($attributes, $value); - extract($data); - $result = array (); - $attributes_data = array (); - if (isset ($value)) - { - if ($priority == 'tag') - $result = $value; - else - $result['value'] = $value; - } - if (isset ($attributes) and $get_attributes) - { - foreach ($attributes as $attr => $val) - { - if ($priority == 'tag') - $attributes_data[$attr] = $val; - else - $result['attr'][$attr] = $val; //Set all the attributes in a array called 'attr' - } - } - if ($type == "open") - { - $parent[$level -1] = & $current; - if (!is_array($current) or (!in_array($tag, array_keys($current)))) - { - $current[$tag] = $result; - if ($attributes_data) - $current[$tag . '_attr'] = $attributes_data; - $repeated_tag_index[$tag . '_' . $level] = 1; - $current = & $current[$tag]; - } - else - { - if (isset ($current[$tag][0])) - { - $current[$tag][$repeated_tag_index[$tag . '_' . $level]] = $result; - $repeated_tag_index[$tag . '_' . $level]++; - } - else - { - $current[$tag] = array ( - $current[$tag], - $result - ); - $repeated_tag_index[$tag . '_' . $level] = 2; - if (isset ($current[$tag . '_attr'])) - { - $current[$tag]['0_attr'] = $current[$tag . '_attr']; - unset ($current[$tag . '_attr']); - } - } - $last_item_index = $repeated_tag_index[$tag . '_' . $level] - 1; - $current = & $current[$tag][$last_item_index]; - } - } - elseif ($type == "complete") - { - if (!isset ($current[$tag])) - { - $current[$tag] = $result; - $repeated_tag_index[$tag . '_' . $level] = 1; - if ($priority == 'tag' and $attributes_data) - $current[$tag . '_attr'] = $attributes_data; - } - else - { - if (isset ($current[$tag][0]) and is_array($current[$tag])) - { - $current[$tag][$repeated_tag_index[$tag . '_' . $level]] = $result; - if ($priority == 'tag' and $get_attributes and $attributes_data) - { - $current[$tag][$repeated_tag_index[$tag . '_' . $level] . '_attr'] = $attributes_data; - } - $repeated_tag_index[$tag . '_' . $level]++; - } - else - { - $current[$tag] = array ( - $current[$tag], - $result - ); - $repeated_tag_index[$tag . '_' . $level] = 1; - if ($priority == 'tag' and $get_attributes) - { - if (isset ($current[$tag . '_attr'])) - { - $current[$tag]['0_attr'] = $current[$tag . '_attr']; - unset ($current[$tag . '_attr']); - } - if ($attributes_data) - { - $current[$tag][$repeated_tag_index[$tag . '_' . $level] . '_attr'] = $attributes_data; - } - } - $repeated_tag_index[$tag . '_' . $level]++; //0 and 1 index is already taken - } - } - } - elseif ($type == 'close') - { - $current = & $parent[$level -1]; - } - } - return ($xml_array); -} - ?> |