From 59a5278c69250adf1b8459df45b7873613240a09 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Tue, 7 Jul 2009 09:29:00 +0000 Subject: [PATCH] merged questioinnaire and questionnaire_phpbb and adjusted all files to our coding guidelines... if we want to allow dropping in other providers we could add provider files to the questionnaire directory (and grab them), if not it is best to remove the questionnaire directory and put the file under includes/ git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@9719 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/adm/style/acp_send_statistics.html | 34 +- phpBB/includes/acp/acp_send_statistics.php | 22 +- .../includes/questionnaire/questionnaire.php | 414 ++++++++++++------ .../questionnaire/questionnaire_phpbb.php | 121 ----- 4 files changed, 308 insertions(+), 283 deletions(-) delete mode 100644 phpBB/includes/questionnaire/questionnaire_phpbb.php diff --git a/phpBB/adm/style/acp_send_statistics.html b/phpBB/adm/style/acp_send_statistics.html index 573eee6fad..ce45705559 100644 --- a/phpBB/adm/style/acp_send_statistics.html +++ b/phpBB/adm/style/acp_send_statistics.html @@ -10,31 +10,33 @@ // - -
+ -

+ -
- +

+ +
+

+ -
+
{providers.NAME}
@@ -44,20 +46,22 @@ function iframeUpdated()
-
-

+

+

-
-

{L_THANKS_SEND_STATISTICS}

+ +
+

{L_THANKS_SEND_STATISTICS}

+ \ No newline at end of file diff --git a/phpBB/includes/acp/acp_send_statistics.php b/phpBB/includes/acp/acp_send_statistics.php index 1549157041..6c29b9fbb5 100644 --- a/phpBB/includes/acp/acp_send_statistics.php +++ b/phpBB/includes/acp/acp_send_statistics.php @@ -15,8 +15,8 @@ if (!defined('IN_PHPBB')) { exit; } -include($phpbb_root_path . 'includes/questionnaire/questionnaire_phpbb.' . $phpEx); +include($phpbb_root_path . 'includes/questionnaire/questionnaire.' . $phpEx); /** * @package acp @@ -34,22 +34,24 @@ class acp_send_statistics $this->tpl_name = 'acp_send_statistics'; $this->page_title = 'ACP_SEND_STATISTICS'; - $c = new Questionnaire_Data_Collector(); - $c->addDataProvider(new Questionnaire_PHP_Data_Provider()); - $c->addDataProvider(new Questionnaire_System_Data_Provider()); - $c->addDataProvider(new questionnaire_phpbb_data_provider($config)); + $collector = new phpbb_questionnaire_data_collector(); + + // Add data provider + $collector->add_data_provider(new phpbb_questionnaire_php_data_provider()); + $collector->add_data_provider(new phpbb_questionnaire_system_data_provider()); + $collector->add_data_provider(new phpbb_questionnaire_phpbb_data_provider($config)); $template->assign_vars(array( 'U_COLLECT_STATS' => $collect_url, - 'RAW_DATA' => $c->getDataForForm(), + 'RAW_DATA' => $collector->get_data_for_form(), )); - $raw = $c->getDataRaw(); + $raw = $collector->get_data_raw(); foreach ($raw as $provider => $data) { $template->assign_block_vars('providers', array( - 'NAME' => htmlentities($provider), + 'NAME' => htmlspecialchars($provider), )); foreach ($data as $key => $value) @@ -60,8 +62,8 @@ class acp_send_statistics } $template->assign_block_vars('providers.values', array( - 'KEY' => htmlentities($key), - 'VALUE' => htmlentities($value), + 'KEY' => utf8_htmlspecialchars($key), + 'VALUE' => utf8_htmlspecialchars($value), )); } } diff --git a/phpBB/includes/questionnaire/questionnaire.php b/phpBB/includes/questionnaire/questionnaire.php index 811b26cf20..42ac44d38a 100644 --- a/phpBB/includes/questionnaire/questionnaire.php +++ b/phpBB/includes/questionnaire/questionnaire.php @@ -1,152 +1,292 @@ PHP_VERSION, - 'sapi' => PHP_SAPI, - 'int_size' => defined('PHP_INT_SIZE') ? PHP_INT_SIZE : '', - 'safe_mode' => (int)ini_get('safe_mode'), - 'open_basedir' => (int)ini_get('open_basedir'), - 'memory_limit' => ini_get('memory_limit'), - 'allow_url_fopen' => (int)ini_get('allow_url_fopen'), - 'allow_url_include' => (int)ini_get('allow_url_include'), - 'file_uploads' => (int)ini_get('file_uploads'), - 'upload_max_filesize' => ini_get('upload_max_filesize'), - 'post_max_size' => ini_get('post_max_size'), - 'disable_functions' => ini_get('disable_functions'), - 'disable_classes' => ini_get('disable_classes'), - 'enable_dl' => (int)ini_get('enable_dl'), - 'magic_quotes_gpc' => (int)ini_get('magic_quotes_gpc'), - 'register_globals' => (int)ini_get('register_globals'), - 'filter.default' => ini_get('filter.default'), - 'zend.ze1_compatibility_mode' => (int)ini_get('zend.ze1_compatibility_mode'), - 'unicode.semantics' => (int)ini_get('unicode.semantics'), - 'zend_thread_safty' => (int)function_exists('zend_thread_id'), - 'extensions' => get_loaded_extensions() - ); - } -} - - -class Questionnaire_System_Data_Provider -{ - function getIdentifier() - { - return 'System'; - } - - /** - * Get data about the general system information, like OS or IP (shortened). - * - * @return array - */ - function getData() - { - // Start discovering the IPV4 server address, if available - $serverAddress = '0.0.0.0'; - if (isset($_SERVER['SERVER_ADDR'])) { - $serverAddress = $_SERVER['SERVER_ADDR']; - } - // Running on IIS? - if (isset($_SERVER['LOCAL_ADDR'])) { - $serverAddress = $_SERVER['LOCAL_ADDR']; - } - $aIPAddress = explode('.', $serverAddress); - - return array( - 'os' => PHP_OS, - 'httpd' => $_SERVER['SERVER_SOFTWARE'], - // we don't want the real IP address (for privacy policy reasons) but only - // a network address to see whether your installation is running on a private or public network. - // IANA reserved addresses for private networks (RFC 1918) are: - // - 10.0.0.0/8 - // - 172.16.0.0/12 - // - 192.168.0.0/16 - 'ip' => $aIPAddress[0].'.'.$aIPAddress[1].'.XXX.YYY' - ); - } + exit; } /** - * This class collects data which is used to create some usage statistics. - * - * The collected data is - after authorization of the administrator - submitted - * to a central server. For privacy reasons we try to collect only data which aren't private - * or don't give any information which might help to identify the user. - * - * @author Johannes Schlueter - * @copyright (c) 2007-2008 Johannes Schlueter - */ - -class Questionnaire_Data_Collector +* This class collects data which is used to create some usage statistics. +* +* The collected data is - after authorization of the administrator - submitted +* to a central server. For privacy reasons we try to collect only data which aren't private +* or don't give any information which might help to identify the user. +* +* @author Johannes Schlueter +* @copyright (c) 2007-2008 Johannes Schlueter +*/ +class phpbb_questionnaire_data_collector { - var $providers; - var $data = null; + var $providers; + var $data = null; - /** - * Constructor. - * - * @param array - * @param string - */ - function Questionnaire_Data_Collector() - { - $this->providers = array(); - } + /** + * Constructor. + * + * @param array + * @param string + */ + function phpbb_questionnaire_data_collector() + { + $this->providers = array(); + } - function addDataProvider(&$provider) - { - $this->providers[] = &$provider; - } + function add_data_provider(&$provider) + { + $this->providers[] = &$provider; + } - /** - * Get data as an array. - * - * @return array All Data - */ - function getDataRaw() - { - if (!$this->data) { - $this->collect(); - } + /** + * Get data as an array. + * + * @return array All Data + */ + function get_data_raw() + { + if (!$this->data) + { + $this->collect(); + } - return $this->data; - } + return $this->data; + } - function getDataForForm() - { - return base64_encode(serialize($this->getDataRaw())); - } + function get_data_for_form() + { + return base64_encode(serialize($this->get_data_raw())); + } - /** - * Collect info into the data property. - * - * @return void - */ - function collect() - { - foreach (array_keys($this->providers) as $key) { + /** + * Collect info into the data property. + * + * @return void + */ + function collect() + { + foreach (array_keys($this->providers) as $key) + { $provider = &$this->providers[$key]; - $this->data[$provider->getIdentifier()] = $provider->getData(); - } - } + $this->data[$provider->get_identifier()] = $provider->get_data(); + } + } } + +/** interface: get_indentifier(), get_data() */ + +/** +* Questionnaire PHP data provider +* @package phpBB3 +*/ +class phpbb_questionnaire_php_data_provider +{ + function get_identifier() + { + return 'PHP'; + } + + /** + * Get data about the PHP runtime setup. + * + * @return array + */ + function get_data() + { + return array( + 'version' => PHP_VERSION, + 'sapi' => PHP_SAPI, + 'int_size' => defined('PHP_INT_SIZE') ? PHP_INT_SIZE : '', + 'safe_mode' => (int) @ini_get('safe_mode'), + 'open_basedir' => (int) @ini_get('open_basedir'), + 'memory_limit' => @ini_get('memory_limit'), + 'allow_url_fopen' => (int) @ini_get('allow_url_fopen'), + 'allow_url_include' => (int) @ini_get('allow_url_include'), + 'file_uploads' => (int) @ini_get('file_uploads'), + 'upload_max_filesize' => @ini_get('upload_max_filesize'), + 'post_max_size' => @ini_get('post_max_size'), + 'disable_functions' => @ini_get('disable_functions'), + 'disable_classes' => @ini_get('disable_classes'), + 'enable_dl' => (int) @ini_get('enable_dl'), + 'magic_quotes_gpc' => (int) @ini_get('magic_quotes_gpc'), + 'register_globals' => (int) @ini_get('register_globals'), + 'filter.default' => @ini_get('filter.default'), + 'zend.ze1_compatibility_mode' => (int) @ini_get('zend.ze1_compatibility_mode'), + 'unicode.semantics' => (int) @ini_get('unicode.semantics'), + 'zend_thread_safty' => (int) function_exists('zend_thread_id'), + 'extensions' => get_loaded_extensions(), + ); + } +} + +/** +* Questionnaire System data provider +* @package phpBB3 +*/ +class phpbb_questionnaire_system_data_provider +{ + function get_identifier() + { + return 'System'; + } + + /** + * Get data about the general system information, like OS or IP (shortened). + * + * @return array + */ + function get_data() + { + // Start discovering the IPV4 server address, if available + $server_address = '0.0.0.0'; + + if (!empty($_SERVER['SERVER_ADDR'])) + { + $server_address = $_SERVER['SERVER_ADDR']; + } + + // Running on IIS? + if (!empty($_SERVER['LOCAL_ADDR'])) + { + $server_address = $_SERVER['LOCAL_ADDR']; + } + + $ip_address_ary = explode('.', $server_address); + + // build ip + if (!isset($ip_address_ary[0]) || !isset($ip_address_ary[1])) + { + $ip_address_ary = explode('.', '0.0.0.0'); + } + + return array( + 'os' => PHP_OS, + 'httpd' => $_SERVER['SERVER_SOFTWARE'], + // we don't want the real IP address (for privacy policy reasons) but only + // a network address to see whether your installation is running on a private or public network. + // IANA reserved addresses for private networks (RFC 1918) are: + // - 10.0.0.0/8 + // - 172.16.0.0/12 + // - 192.168.0.0/16 + 'ip' => $ip_address_ary[0] . '.' . $ip_address_ary[1] . '.XXX.YYY', + ); + } +} + +/** +* Questionnaire phpBB data provider +* @package phpBB3 +*/ +class phpbb_questionnaire_phpbb_data_provider +{ + var $config; + var $unique_id; + + /** + * Constructor. + * + * @param array $config + */ + function phpbb_questionnaire_phpbb_data_provider($config) + { + // generate a unique id if necessary + if (empty($config['questionnaire_unique_id'])) + { + $this->unique_id = unique_id(); + set_config('questionnaire_unique_id', $this->unique_id); + } + else + { + $this->unique_id = $config['questionnaire_unique_id']; + } + + $this->config = $config; + } + + /** + * Returns a string identifier for this data provider + * + * @return string "phpBB" + */ + function get_identifier() + { + return 'phpBB'; + } + + /** + * Get data about this phpBB installation. + * + * @return array Relevant anonymous config options + */ + function get_data() + { + // Exclude certain config vars + $exclude_config_vars = array( + 'avatar_gallery_path' => true, + 'avatar_path' => true, + 'avatar_salt' => true, + 'board_contact' => true, + 'board_disable_msg' => true, + 'board_email' => true, + 'board_email_sig' => true, + 'cookie_name' => true, + 'icons_path' => true, + 'icons_path' => true, + 'jab_host' => true, + 'jab_password' => true, + 'jab_port' => true, + 'jab_username' => true, + 'ldap_base_dn' => true, + 'ldap_email' => true, + 'ldap_password' => true, + 'ldap_port' => true, + 'ldap_server' => true, + 'ldap_uid' => true, + 'ldap_user' => true, + 'ldap_user_filter' => true, + 'ranks_path' => true, + 'script_path' => true, + 'server_name' => true, + 'server_port' => true, + 'server_protocol' => true, + 'site_desc' => true, + 'sitename' => true, + 'smilies_path' => true, + 'smtp_host' => true, + 'smtp_password' => true, + 'smtp_port' => true, + 'smtp_username' => true, + 'upload_icons_path' => true, + 'upload_path' => true, + 'newest_user_colour' => true, + 'newest_user_id' => true, + 'newest_username' => true, + 'rand_seed' => true, + ); + + $result = array(); + foreach ($this->config as $name => $value) + { + // Mods may add columns for storing passwords - we do not want to grab them + if (isset($exclude_config_vars[$name]) || strpos($name, 'password') !== false) + { + continue; + } + + $result['config.' . $name] = $value; + } + + return $result; + } +} + +?> \ No newline at end of file diff --git a/phpBB/includes/questionnaire/questionnaire_phpbb.php b/phpBB/includes/questionnaire/questionnaire_phpbb.php deleted file mode 100644 index 47bd931e68..0000000000 --- a/phpBB/includes/questionnaire/questionnaire_phpbb.php +++ /dev/null @@ -1,121 +0,0 @@ -unique_id = unique_id(); - set_config('questionnaire_unique_id', $this->unique_id); - } - else - { - $this->unique_id = $config['questionnaire_unique_id']; - } - - $this->config = $config; - } - - /** - * Returns a string identifier for this data provider - * - * @return string "phpBB" - */ - function getIdentifier() - { - return 'phpBB'; - } - - - /** - * Get data about this phpBB installation. - * - * @return array Relevant anonymous config options - */ - function getData() - { - - // Exclude certain config vars - $exclude_config_vars = array( - 'avatar_gallery_path' => true, - 'avatar_path' => true, - 'avatar_salt' => true, - 'board_contact' => true, - 'board_disable_msg' => true, - 'board_email' => true, - 'board_email_sig' => true, - 'cookie_name' => true, - 'icons_path' => true, - 'icons_path' => true, - 'jab_host' => true, - 'jab_password' => true, - 'jab_port' => true, - 'jab_username' => true, - 'ldap_base_dn' => true, - 'ldap_email' => true, - 'ldap_password' => true, - 'ldap_port' => true, - 'ldap_server' => true, - 'ldap_uid' => true, - 'ldap_user' => true, - 'ldap_user_filter' => true, - 'ranks_path' => true, - 'script_path' => true, - 'server_name' => true, - 'server_port' => true, - 'server_protocol' => true, - 'site_desc' => true, - 'sitename' => true, - 'smilies_path' => true, - 'smtp_host' => true, - 'smtp_password' => true, - 'smtp_port' => true, - 'smtp_username' => true, - 'upload_icons_path' => true, - 'upload_path' => true, - 'newest_user_colour' => true, - 'newest_user_id' => true, - 'newest_username' => true, - 'rand_seed' => true, - ); - - $result = array(); - foreach ($this->config as $name => $value) - { - if (!isset($exclude_config_vars[$name])) - { - $result['config.' . $name] = $value; - } - } - - return $result; - } -} \ No newline at end of file