mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-29 06:38:52 +00:00
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
This commit is contained in:
parent
4bef644a94
commit
6273718dc5
7 changed files with 476 additions and 1 deletions
63
phpBB/adm/style/acp_send_statistics.html
Normal file
63
phpBB/adm/style/acp_send_statistics.html
Normal file
|
@ -0,0 +1,63 @@
|
|||
<!-- INCLUDE overall_header.html -->
|
||||
|
||||
<a name="maincontent"></a>
|
||||
|
||||
<h1>{L_SEND_STATISTICS}</h1>
|
||||
|
||||
<p>{L_EXPLAIN_SEND_STATISTICS}</p>
|
||||
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
var iframect = 0;
|
||||
|
||||
function iframeUpdated()
|
||||
{
|
||||
if (iframect++ == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//dE('questionnaireForm', -1);
|
||||
//dE('questionnaireThanks', 1);
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
|
||||
<iframe onload="iframeUpdated();" name="questionaireResult" style="display:none"></iframe>
|
||||
<form action="{U_COLLECT_STATS}" method="post" target="questionaireResult" id="questionnaireForm">
|
||||
|
||||
<p id="show_button"><input type="button" class="button2" onclick="dE('configlist', 1);dE('show_button', -1);" value="{L_SHOW_STATISTICS}"/></p>
|
||||
|
||||
<div id="configlist">
|
||||
<input type="button" class="button2" onclick="dE('show_button', 1);dE('configlist', -1);" value="{L_HIDE_STATISTICS}"/>
|
||||
<p class="submit-buttons">
|
||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SEND_STATISTICS}" />
|
||||
</p>
|
||||
<!-- BEGIN providers -->
|
||||
<fieldset>
|
||||
<legend>{providers.NAME}</legend>
|
||||
<!-- BEGIN values -->
|
||||
<dl>
|
||||
<dt>{providers.values.KEY}</dt>
|
||||
<dd>{providers.values.VALUE}</dd>
|
||||
</dl>
|
||||
<!-- END values -->
|
||||
</fieldset>
|
||||
<!-- END providers -->
|
||||
</div>
|
||||
<p class="submit-buttons">
|
||||
<input type="hidden" name="systemdata" value="{RAW_DATA}" />
|
||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SEND_STATISTICS}" />
|
||||
</p>
|
||||
</form>
|
||||
<div id="questionnaireThanks">
|
||||
<p><strong>{L_THANKS_SEND_STATISTICS}</strong></p>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
dE('configlist', false);
|
||||
dE('questionnaireThanks', false);
|
||||
//]]>
|
||||
</script>
|
||||
<!-- INCLUDE overall_footer.html -->
|
|
@ -39,7 +39,7 @@ class acp_ranks
|
|||
$this->tpl_name = 'acp_ranks';
|
||||
$this->page_title = 'ACP_MANAGE_RANKS';
|
||||
|
||||
$form_name = 'acp_prune';
|
||||
$form_name = 'acp_ranks';
|
||||
add_form_key($form_name);
|
||||
|
||||
switch ($action)
|
||||
|
|
93
phpBB/includes/acp/acp_send_statistics.php
Normal file
93
phpBB/includes/acp/acp_send_statistics.php
Normal file
|
@ -0,0 +1,93 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* @package acp
|
||||
* @version $Id: acp_ranks.php 8479 2008-03-29 00:22:48Z naderman $
|
||||
* @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_phpbb.' . $phpEx);
|
||||
|
||||
|
||||
/**
|
||||
* @package acp
|
||||
*/
|
||||
class acp_send_statistics
|
||||
{
|
||||
var $u_action;
|
||||
|
||||
function main($id, $mode)
|
||||
{
|
||||
global $config, $template;
|
||||
|
||||
$collect_url = "http://www.phpbb.com/stats/getstatdata.php";
|
||||
|
||||
$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));
|
||||
|
||||
$template->assign_vars(array(
|
||||
'U_COLLECT_STATS' => $collect_url,
|
||||
'RAW_DATA' => $c->getDataForForm(),
|
||||
));
|
||||
|
||||
$raw = $c->getDataRaw();
|
||||
|
||||
foreach ($raw as $provider => $data)
|
||||
{
|
||||
$template->assign_block_vars('providers', array(
|
||||
'NAME' => htmlentities($provider),
|
||||
));
|
||||
|
||||
foreach ($data as $key => $value)
|
||||
{
|
||||
if (is_array($value))
|
||||
{
|
||||
$value = utf8_wordwrap(serialize($value), 75, "\n", true);
|
||||
}
|
||||
|
||||
$template->assign_block_vars('providers.values', array(
|
||||
'KEY' => htmlentities($key),
|
||||
'VALUE' => htmlentities($value),
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Output the data as an HTML Definition List.
|
||||
*
|
||||
* @param mixed
|
||||
* @param string
|
||||
* @param string
|
||||
* @return void
|
||||
*/
|
||||
function data_printer($value, $key)
|
||||
{
|
||||
echo '<dt>', htmlentities($key), '</dt>', $ident, "\t", '<dd>';
|
||||
if (is_array($value))
|
||||
{
|
||||
$value = htmlentities(serialize($value));
|
||||
echo '<dl>';
|
||||
echo '</dl>';
|
||||
} else {
|
||||
echo htmlentities($value);
|
||||
}
|
||||
echo '</dd>';
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
37
phpBB/includes/acp/info/acp_send_statistics.php
Normal file
37
phpBB/includes/acp/info/acp_send_statistics.php
Normal file
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* @package acp
|
||||
* @version $Id$
|
||||
* @copyright (c) 2005 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @package module_install
|
||||
*/
|
||||
class acp_send_statistics_info
|
||||
{
|
||||
function module()
|
||||
{
|
||||
return array(
|
||||
'filename' => 'acp_send_statistics',
|
||||
'title' => 'ACP_SEND_STATISTICS',
|
||||
'version' => '1.0.0',
|
||||
'modes' => array(
|
||||
'questionnaire' => array('title' => 'ACP_SEND_STATISTICS', 'auth' => 'acl_a_server', 'cat' => array('ACP_SERVER_CONFIGURATION')),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
function install()
|
||||
{
|
||||
}
|
||||
|
||||
function uninstall()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
152
phpBB/includes/questionnaire/questionnaire.php
Normal file
152
phpBB/includes/questionnaire/questionnaire.php
Normal file
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
122
phpBB/includes/questionnaire/questionnaire_phpbb.php
Normal file
122
phpBB/includes/questionnaire/questionnaire_phpbb.php
Normal file
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -393,6 +393,14 @@ $lang = array_merge($lang, array(
|
|||
'USER_IS_INACTIVE' => 'User is inactive',
|
||||
));
|
||||
|
||||
// Send statistics page
|
||||
$lang = array_merge($lang, array(
|
||||
'EXPLAIN_SEND_STATISTICS' => 'Please send some statistical information about your server and forum configuration to phpBB. All information that could identify you has been removed - the data is entirely anonymous. We will base decisions about future phpBB versions on this information. Below you can display all variables that will be transmitted.',
|
||||
'HIDE_STATISTICS' => 'Hide details',
|
||||
'SEND_STATISTICS' => 'Send statistical information',
|
||||
'SHOW_STATISTICS' => 'Show details',
|
||||
));
|
||||
|
||||
// Log Entries
|
||||
$lang = array_merge($lang, array(
|
||||
'LOG_ACL_ADD_USER_GLOBAL_U_' => '<strong>Added or edited users’ user permissions</strong><br />» %s',
|
||||
|
|
Loading…
Add table
Reference in a new issue