diff options
Diffstat (limited to 'phpBB/includes/questionnaire')
-rw-r--r-- | phpBB/includes/questionnaire/questionnaire.php | 152 | ||||
-rw-r--r-- | phpBB/includes/questionnaire/questionnaire_phpbb.php | 122 |
2 files changed, 274 insertions, 0 deletions
diff --git a/phpBB/includes/questionnaire/questionnaire.php b/phpBB/includes/questionnaire/questionnaire.php new file mode 100644 index 0000000000..7eeb4e4113 --- /dev/null +++ b/phpBB/includes/questionnaire/questionnaire.php @@ -0,0 +1,152 @@ +<?php + +/*interface Questionnaire_Data_Provider +{ + public function getIdentifier(); + public function getData(); +}*/ + +class Questionnaire_PHP_Data_Provider +{ + function getIdentifier() + { + return 'PHP'; + } + + /** + * Get data about the PHP runtime setup. + * + * @return array + */ + function getData() + { + 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() + ); + } +} + + +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' + ); + } +} + +/** + * 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 <johannes@php.net> + * @copyright (c) 2007-2008 Johannes Schlueter + */ + +class Questionnaire_Data_Collector +{ + var $providers; + var $data = null; + + /** + * Constructor. + * + * @param array + * @param string + */ + function __construct() + { + $this->providers = array(); + } + + function addDataProvider(&$provider) + { + $this->providers[] = &$provider; + } + + /** + * Get data as an array. + * + * @return array All Data + */ + function getDataRaw() + { + if (!$this->data) { + $this->collect(); + } + + return $this->data; + } + + function getDataForForm() + { + return base64_encode(serialize($this->getDataRaw())); + } + + /** + * 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(); + } + } +} diff --git a/phpBB/includes/questionnaire/questionnaire_phpbb.php b/phpBB/includes/questionnaire/questionnaire_phpbb.php new file mode 100644 index 0000000000..7c2ce4c292 --- /dev/null +++ b/phpBB/includes/questionnaire/questionnaire_phpbb.php @@ -0,0 +1,122 @@ +<?php +/** +* +* @package phpBB3 +* @version $Id$ +* @copyright (c) 2005 phpBB Group +* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* +*/ + +/** +* @ignore +*/ +if (!defined('IN_PHPBB')) +{ + exit; +} + +include($phpbb_root_path . 'includes/questionnaire/questionnaire.' . $phpEx); + +class questionnaire_phpbb_data_provider +{ + var $config; + var $unique_id; + + /** + * Constructor. + * + * @param array $config + * @param string $oldversion + */ + function __construct($config) + { + // generate a unique id if necessary + if (!isset($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 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 |