Verzeichnisstruktur phpBB-3.1.0
- Veröffentlicht
- 27.10.2014
So funktioniert es
|
Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück |
Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
questionnaire.php
001 <?php
002 /**
003 *
004 * This file is part of the phpBB Forum Software package.
005 *
006 * @copyright (c) phpBB Limited <https://www.phpbb.com>
007 * @license GNU General Public License, version 2 (GPL-2.0)
008 *
009 * For full copyright and license information, please see
010 * the docs/CREDITS.txt file.
011 *
012 */
013
014 /**
015 * @ignore
016 */
017 if (!defined('IN_PHPBB'))
018 {
019 exit;
020 }
021
022 /**
023 * This class collects data which is used to create some usage statistics.
024 *
025 * The collected data is - after authorization of the administrator - submitted
026 * to a central server. For privacy reasons we try to collect only data which aren't private
027 * or don't give any information which might help to identify the user.
028 *
029 * @author Johannes Schlueter <johannes@php.net>
030 * @copyright (c) 2007-2008 Johannes Schlueter
031 */
032 class phpbb_questionnaire_data_collector
033 {
034 var $providers;
035 var $data = null;
036 var $install_id = '';
037
038 /**
039 * Constructor.
040 *
041 * @param string
042 */
043 function phpbb_questionnaire_data_collector($install_id)
044 {
045 $this->install_id = $install_id;
046 $this->providers = array();
047 }
048
049 function add_data_provider(&$provider)
050 {
051 $this->providers[] = &$provider;
052 }
053
054 /**
055 * Get data as an array.
056 *
057 * @return array All Data
058 */
059 function get_data_raw()
060 {
061 if (!$this->data)
062 {
063 $this->collect();
064 }
065
066 return $this->data;
067 }
068
069 function get_data_for_form()
070 {
071 return base64_encode(serialize($this->get_data_raw()));
072 }
073
074 /**
075 * Collect info into the data property.
076 *
077 * @return null
078 */
079 function collect()
080 {
081 foreach (array_keys($this->providers) as $key)
082 {
083 $provider = &$this->providers[$key];
084 $this->data[$provider->get_identifier()] = $provider->get_data();
085 }
086 $this->data['install_id'] = $this->install_id;
087 }
088 }
089
090 /** interface: get_indentifier(), get_data() */
091
092 /**
093 * Questionnaire PHP data provider
094 */
095 class phpbb_questionnaire_php_data_provider
096 {
097 function get_identifier()
098 {
099 return 'PHP';
100 }
101
102 /**
103 * Get data about the PHP runtime setup.
104 *
105 * @return array
106 */
107 function get_data()
108 {
109 return array(
110 'version' => PHP_VERSION,
111 'sapi' => PHP_SAPI,
112 'int_size' => defined('PHP_INT_SIZE') ? PHP_INT_SIZE : '',
113 'safe_mode' => (int) @ini_get('safe_mode'),
114 'open_basedir' => (int) @ini_get('open_basedir'),
115 'memory_limit' => @ini_get('memory_limit'),
116 'allow_url_fopen' => (int) @ini_get('allow_url_fopen'),
117 'allow_url_include' => (int) @ini_get('allow_url_include'),
118 'file_uploads' => (int) @ini_get('file_uploads'),
119 'upload_max_filesize' => @ini_get('upload_max_filesize'),
120 'post_max_size' => @ini_get('post_max_size'),
121 'disable_functions' => @ini_get('disable_functions'),
122 'disable_classes' => @ini_get('disable_classes'),
123 'enable_dl' => (int) @ini_get('enable_dl'),
124 'magic_quotes_gpc' => (int) @ini_get('magic_quotes_gpc'),
125 'register_globals' => (int) @ini_get('register_globals'),
126 'filter.default' => @ini_get('filter.default'),
127 'zend.ze1_compatibility_mode' => (int) @ini_get('zend.ze1_compatibility_mode'),
128 'unicode.semantics' => (int) @ini_get('unicode.semantics'),
129 'zend_thread_safty' => (int) function_exists('zend_thread_id'),
130 'extensions' => get_loaded_extensions(),
131 );
132 }
133 }
134
135 /**
136 * Questionnaire System data provider
137 */
138 class phpbb_questionnaire_system_data_provider
139 {
140 function get_identifier()
141 {
142 return 'System';
143 }
144
145 /**
146 * Get data about the general system information, like OS or IP (shortened).
147 *
148 * @return array
149 */
150 function get_data()
151 {
152 global $request;
153
154 // Start discovering the IPV4 server address, if available
155 // Try apache, IIS, fall back to 0.0.0.0
156 $server_address = htmlspecialchars_decode($request->server('SERVER_ADDR', $request->server('LOCAL_ADDR', '0.0.0.0')));
157
158 return array(
159 'os' => PHP_OS,
160 'httpd' => htmlspecialchars_decode($request->server('SERVER_SOFTWARE')),
161 // we don't want the real IP address (for privacy policy reasons) but only
162 // a network address to see whether your installation is running on a private or public network.
163 'private_ip' => $this->is_private_ip($server_address),
164 'ipv6' => strpos($server_address, ':') !== false,
165 );
166 }
167
168 /**
169 * Checks whether the given IP is in a private network.
170 *
171 * @param string $ip IP in v4 dot-decimal or v6 hex format
172 * @return bool true if the IP is from a private network, else false
173 */
174 function is_private_ip($ip)
175 {
176 // IPv4
177 if (strpos($ip, ':') === false)
178 {
179 $ip_address_ary = explode('.', $ip);
180
181 // build ip
182 if (!isset($ip_address_ary[0]) || !isset($ip_address_ary[1]))
183 {
184 $ip_address_ary = explode('.', '0.0.0.0');
185 }
186
187 // IANA reserved addresses for private networks (RFC 1918) are:
188 // - 10.0.0.0/8
189 // - 172.16.0.0/12
190 // - 192.168.0.0/16
191 if ($ip_address_ary[0] == '10' ||
192 ($ip_address_ary[0] == '172' && intval($ip_address_ary[1]) > 15 && intval($ip_address_ary[1]) < 32) ||
193 ($ip_address_ary[0] == '192' && $ip_address_ary[1] == '168') ||
194 ($ip_address_ary[0] == '192' && $ip_address_ary[1] == '168'))
195 {
196 return true;
197 }
198 }
199 // IPv6
200 else
201 {
202 // unique local unicast
203 $prefix = substr($ip, 0, 2);
204 if ($prefix == 'fc' || $prefix == 'fd')
205 {
206 return true;
207 }
208 }
209
210 return false;
211 }
212 }
213
214 /**
215 * Questionnaire phpBB data provider
216 */
217 class phpbb_questionnaire_phpbb_data_provider
218 {
219 var $config;
220 var $unique_id;
221
222 /**
223 * Constructor.
224 *
225 * @param array $config
226 */
227 function phpbb_questionnaire_phpbb_data_provider($config)
228 {
229 // generate a unique id if necessary
230 if (empty($config['questionnaire_unique_id']))
231 {
232 $this->unique_id = unique_id();
233 set_config('questionnaire_unique_id', $this->unique_id);
234 }
235 else
236 {
237 $this->unique_id = $config['questionnaire_unique_id'];
238 }
239
240 $this->config = $config;
241 }
242
243 /**
244 * Returns a string identifier for this data provider
245 *
246 * @return string "phpBB"
247 */
248 function get_identifier()
249 {
250 return 'phpBB';
251 }
252
253 /**
254 * Get data about this phpBB installation.
255 *
256 * @return array Relevant anonymous config options
257 */
258 function get_data()
259 {
260 global $phpbb_root_path, $phpEx, $phpbb_config_php_file;
261
262 extract($phpbb_config_php_file->get_all());
263 unset($dbhost, $dbport, $dbname, $dbuser, $dbpasswd); // Just a precaution
264
265 $dbms = $phpbb_config_php_file->convert_30_dbms_to_31($dbms);
266
267 // Only send certain config vars
268 $config_vars = array(
269 'active_sessions' => true,
270 'allow_attachments' => true,
271 'allow_autologin' => true,
272 'allow_avatar' => true,
273 'allow_avatar_local' => true,
274 'allow_avatar_remote' => true,
275 'allow_avatar_upload' => true,
276 'allow_bbcode' => true,
277 'allow_birthdays' => true,
278 'allow_bookmarks' => true,
279 'allow_emailreuse' => true,
280 'allow_forum_notify' => true,
281 'allow_mass_pm' => true,
282 'allow_name_chars' => true,
283 'allow_namechange' => true,
284 'allow_nocensors' => true,
285 'allow_pm_attach' => true,
286 'allow_pm_report' => true,
287 'allow_post_flash' => true,
288 'allow_post_links' => true,
289 'allow_privmsg' => true,
290 'allow_quick_reply' => true,
291 'allow_sig' => true,
292 'allow_sig_bbcode' => true,
293 'allow_sig_flash' => true,
294 'allow_sig_img' => true,
295 'allow_sig_links' => true,
296 'allow_sig_pm' => true,
297 'allow_sig_smilies' => true,
298 'allow_smilies' => true,
299 'allow_topic_notify' => true,
300 'attachment_quota' => true,
301 'auth_bbcode_pm' => true,
302 'auth_flash_pm' => true,
303 'auth_img_pm' => true,
304 'auth_method' => true,
305 'auth_smilies_pm' => true,
306 'avatar_filesize' => true,
307 'avatar_max_height' => true,
308 'avatar_max_width' => true,
309 'avatar_min_height' => true,
310 'avatar_min_width' => true,
311 'board_email_form' => true,
312 'board_hide_emails' => true,
313 'board_timezone' => true,
314 'browser_check' => true,
315 'bump_interval' => true,
316 'bump_type' => true,
317 'cache_gc' => true,
318 'captcha_plugin' => true,
319 'captcha_gd' => true,
320 'captcha_gd_foreground_noise' => true,
321 'captcha_gd_x_grid' => true,
322 'captcha_gd_y_grid' => true,
323 'captcha_gd_wave' => true,
324 'captcha_gd_3d_noise' => true,
325 'captcha_gd_fonts' => true,
326 'confirm_refresh' => true,
327 'check_attachment_content' => true,
328 'check_dnsbl' => true,
329 'chg_passforce' => true,
330 'cookie_secure' => true,
331 'coppa_enable' => true,
332 'database_gc' => true,
333 'dbms_version' => true,
334 'default_dateformat' => true,
335 'default_lang' => true,
336 'display_last_edited' => true,
337 'display_order' => true,
338 'edit_time' => true,
339 'email_check_mx' => true,
340 'email_enable' => true,
341 'email_function_name' => true,
342 'email_package_size' => true,
343 'enable_confirm' => true,
344 'enable_pm_icons' => true,
345 'enable_post_confirm' => true,
346 'feed_enable' => true,
347 'feed_http_auth' => true,
348 'feed_limit_post' => true,
349 'feed_limit_topic' => true,
350 'feed_overall' => true,
351 'feed_overall_forums' => true,
352 'feed_forum' => true,
353 'feed_topic' => true,
354 'feed_topics_new' => true,
355 'feed_topics_active' => true,
356 'feed_item_statistics' => true,
357 'flood_interval' => true,
358 'force_server_vars' => true,
359 'form_token_lifetime' => true,
360 'form_token_mintime' => true,
361 'form_token_sid_guests' => true,
362 'forward_pm' => true,
363 'forwarded_for_check' => true,
364 'full_folder_action' => true,
365 'fulltext_native_common_thres' => true,
366 'fulltext_native_load_upd' => true,
367 'fulltext_native_max_chars' => true,
368 'fulltext_native_min_chars' => true,
369 'gzip_compress' => true,
370 'hot_threshold' => true,
371 'img_create_thumbnail' => true,
372 'img_display_inlined' => true,
373 'img_imagick' => true,
374 'img_link_height' => true,
375 'img_link_width' => true,
376 'img_max_height' => true,
377 'img_max_thumb_width' => true,
378 'img_max_width' => true,
379 'img_min_thumb_filesize' => true,
380 'ip_check' => true,
381 'jab_enable' => true,
382 'jab_package_size' => true,
383 'jab_use_ssl' => true,
384 'limit_load' => true,
385 'limit_search_load' => true,
386 'load_anon_lastread' => true,
387 'load_birthdays' => true,
388 'load_cpf_memberlist' => true,
389 'load_cpf_viewprofile' => true,
390 'load_cpf_viewtopic' => true,
391 'load_db_lastread' => true,
392 'load_db_track' => true,
393 'load_jumpbox' => true,
394 'load_moderators' => true,
395 'load_online' => true,
396 'load_online_guests' => true,
397 'load_online_time' => true,
398 'load_onlinetrack' => true,
399 'load_search' => true,
400 'load_tplcompile' => true,
401 'load_user_activity' => true,
402 'max_attachments' => true,
403 'max_attachments_pm' => true,
404 'max_autologin_time' => true,
405 'max_filesize' => true,
406 'max_filesize_pm' => true,
407 'max_login_attempts' => true,
408 'max_name_chars' => true,
409 'max_num_search_keywords' => true,
410 'max_pass_chars' => true,
411 'max_poll_options' => true,
412 'max_post_chars' => true,
413 'max_post_font_size' => true,
414 'max_post_img_height' => true,
415 'max_post_img_width' => true,
416 'max_post_smilies' => true,
417 'max_post_urls' => true,
418 'max_quote_depth' => true,
419 'max_reg_attempts' => true,
420 'max_sig_chars' => true,
421 'max_sig_font_size' => true,
422 'max_sig_img_height' => true,
423 'max_sig_img_width' => true,
424 'max_sig_smilies' => true,
425 'max_sig_urls' => true,
426 'min_name_chars' => true,
427 'min_pass_chars' => true,
428 'min_post_chars' => true,
429 'min_search_author_chars' => true,
430 'mime_triggers' => true,
431 'new_member_post_limit' => true,
432 'new_member_group_default' => true,
433 'override_user_style' => true,
434 'pass_complex' => true,
435 'pm_edit_time' => true,
436 'pm_max_boxes' => true,
437 'pm_max_msgs' => true,
438 'pm_max_recipients' => true,
439 'posts_per_page' => true,
440 'print_pm' => true,
441 'queue_interval' => true,
442 'require_activation' => true,
443 'referer_validation' => true,
444 'search_block_size' => true,
445 'search_gc' => true,
446 'search_interval' => true,
447 'search_anonymous_interval' => true,
448 'search_type' => true,
449 'search_store_results' => true,
450 'secure_allow_deny' => true,
451 'secure_allow_empty_referer' => true,
452 'secure_downloads' => true,
453 'session_gc' => true,
454 'session_length' => true,
455 'smtp_auth_method' => true,
456 'smtp_delivery' => true,
457 'topics_per_page' => true,
458 'tpl_allow_php' => true,
459 'version' => true,
460 'warnings_expire_days' => true,
461 'warnings_gc' => true,
462
463 'num_files' => true,
464 'num_posts' => true,
465 'num_topics' => true,
466 'num_users' => true,
467 'record_online_users' => true,
468 );
469
470 $result = array();
471 foreach ($config_vars as $name => $void)
472 {
473 if (isset($this->config[$name]))
474 {
475 $result['config_' . $name] = $this->config[$name];
476 }
477 }
478
479 global $db, $request;
480
481 $result['dbms'] = $dbms;
482 $result['acm_type'] = $acm_type;
483 $result['user_agent'] = 'Unknown';
484 $result['dbms_version'] = $db->sql_server_info(true);
485
486 // Try to get user agent vendor and version
487 $match = array();
488 $user_agent = $request->header('User-Agent');
489 $agents = array('firefox', 'msie', 'opera', 'chrome', 'safari', 'mozilla', 'seamonkey', 'konqueror', 'netscape', 'gecko', 'navigator', 'mosaic', 'lynx', 'amaya', 'omniweb', 'avant', 'camino', 'flock', 'aol');
490
491 // We check here 1 by 1 because some strings occur after others (for example Mozilla [...] Firefox/)
492 foreach ($agents as $agent)
493 {
494 if (preg_match('#(' . $agent . ')[/ ]?([0-9.]*)#i', $user_agent, $match))
495 {
496 $result['user_agent'] = $match[1] . ' ' . $match[2];
497 break;
498 }
499 }
500
501 return $result;
502 }
503 }
504