aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/questionnaire/questionnaire.php
diff options
context:
space:
mode:
authorMeik Sievertsen <acydburn@phpbb.com>2009-07-07 09:29:00 +0000
committerMeik Sievertsen <acydburn@phpbb.com>2009-07-07 09:29:00 +0000
commit59a5278c69250adf1b8459df45b7873613240a09 (patch)
tree70573564582dd8c0f9079e4a0b0c6c07d7a3928f /phpBB/includes/questionnaire/questionnaire.php
parentfa84400d288374f9c702757cc619db815a65fefb (diff)
downloadforums-59a5278c69250adf1b8459df45b7873613240a09.tar
forums-59a5278c69250adf1b8459df45b7873613240a09.tar.gz
forums-59a5278c69250adf1b8459df45b7873613240a09.tar.bz2
forums-59a5278c69250adf1b8459df45b7873613240a09.tar.xz
forums-59a5278c69250adf1b8459df45b7873613240a09.zip
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
Diffstat (limited to 'phpBB/includes/questionnaire/questionnaire.php')
-rw-r--r--phpBB/includes/questionnaire/questionnaire.php416
1 files changed, 278 insertions, 138 deletions
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
+/**
+*
+* @package phpBB3
+* @version $Id$
+* @copyright (c) 2005 phpBB Group
+* @license http://opensource.org/licenses/gpl-license.php GNU Public License
+*
+*/
-/*interface Questionnaire_Data_Provider
+/**
+* @ignore
+*/
+if (!defined('IN_PHPBB'))
{
- public function getIdentifier();
- public function getData();
-}*/
+ exit;
+}
-class Questionnaire_PHP_Data_Provider
+/**
+* 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 phpbb_questionnaire_data_collector
{
- 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()
- );
- }
+ var $providers;
+ var $data = null;
+
+ /**
+ * Constructor.
+ *
+ * @param array
+ * @param string
+ */
+ function phpbb_questionnaire_data_collector()
+ {
+ $this->providers = array();
+ }
+
+ function add_data_provider(&$provider)
+ {
+ $this->providers[] = &$provider;
+ }
+
+ /**
+ * Get data as an array.
+ *
+ * @return array All Data
+ */
+ function get_data_raw()
+ {
+ if (!$this->data)
+ {
+ $this->collect();
+ }
+
+ return $this->data;
+ }
+
+ 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)
+ {
+ $provider = &$this->providers[$key];
+ $this->data[$provider->get_identifier()] = $provider->get_data();
+ }
+ }
}
+/** interface: get_indentifier(), get_data() */
-class Questionnaire_System_Data_Provider
+/**
+* Questionnaire PHP data provider
+* @package phpBB3
+*/
+class phpbb_questionnaire_php_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'
- );
- }
+ 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(),
+ );
+ }
}
/**
- * 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
+* Questionnaire System data provider
+* @package phpBB3
+*/
+class phpbb_questionnaire_system_data_provider
{
- var $providers;
- var $data = null;
-
- /**
- * Constructor.
- *
- * @param array
- * @param string
- */
- function Questionnaire_Data_Collector()
- {
- $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();
- }
- }
+ 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