aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/questionnaire
diff options
context:
space:
mode:
authorNils Adermann <naderman@naderman.de>2009-06-27 20:56:49 +0000
committerNils Adermann <naderman@naderman.de>2009-06-27 20:56:49 +0000
commit6273718dc5a7812b980ca45b20d123e5e0908026 (patch)
tree1be269bf21e689f2c02a27d97ddb03a9a03a46ab /phpBB/includes/questionnaire
parent4bef644a94f6865a948951c0e946a93b93d55b21 (diff)
downloadforums-6273718dc5a7812b980ca45b20d123e5e0908026.tar
forums-6273718dc5a7812b980ca45b20d123e5e0908026.tar.gz
forums-6273718dc5a7812b980ca45b20d123e5e0908026.tar.bz2
forums-6273718dc5a7812b980ca45b20d123e5e0908026.tar.xz
forums-6273718dc5a7812b980ca45b20d123e5e0908026.zip
acp module for submitting statistical information to phpBB
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@9698 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/includes/questionnaire')
-rw-r--r--phpBB/includes/questionnaire/questionnaire.php152
-rw-r--r--phpBB/includes/questionnaire/questionnaire_phpbb.php122
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