Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 2 |
CRAP | |
0.00% |
0 / 49 |
delete_cookies | |
0.00% |
0 / 1 |
|
0.00% |
0 / 2 |
56.00 | |
0.00% |
0 / 49 |
__construct | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 9 |
|||
handle | |
0.00% |
0 / 1 |
42.00 | |
0.00% |
0 / 40 |
<?php | |
/** | |
* | |
* This file is part of the phpBB Forum Software package. | |
* | |
* @copyright (c) phpBB Limited <https://www.phpbb.com> | |
* @license GNU General Public License, version 2 (GPL-2.0) | |
* | |
* For full copyright and license information, please see | |
* the docs/CREDITS.txt file. | |
* | |
*/ | |
namespace phpbb\ucp\controller; | |
use phpbb\config\config; | |
use phpbb\event\dispatcher_interface; | |
use phpbb\language\language; | |
use phpbb\request\request_interface; | |
use phpbb\user; | |
class delete_cookies | |
{ | |
/** @var config */ | |
private $config; | |
/** @var dispatcher_interface */ | |
private $dispatcher; | |
/** @var language */ | |
private $language; | |
/** @var request_interface */ | |
private $request; | |
/** @var user */ | |
private $user; | |
/** @var string phpBB root path */ | |
private $phpbb_root_path; | |
/** @var string PHP extension */ | |
private $php_ext; | |
/** | |
* Constructor for delete_cookies controller | |
* | |
* @param config $config | |
* @param dispatcher_interface $dispatcher | |
* @param language $language | |
* @param request_interface $request | |
* @param user $user | |
*/ | |
public function __construct(config $config, dispatcher_interface $dispatcher, language $language, request_interface $request, user $user, string $phpbb_root_path, string $php_ext) | |
{ | |
$this->config = $config; | |
$this->dispatcher = $dispatcher; | |
$this->language = $language; | |
$this->request = $request; | |
$this->user = $user; | |
$this->phpbb_root_path = $phpbb_root_path; | |
$this->php_ext = $php_ext; | |
} | |
/** | |
* Handle delete cookies requests | |
* | |
* @return void | |
*/ | |
public function handle() | |
{ | |
$this->language->add_lang(['ucp']); | |
// Delete Cookies with dynamic names (do NOT delete poll cookies) | |
if (confirm_box(true)) | |
{ | |
$set_time = time() - 31536000; | |
foreach ($this->request->variable_names(request_interface::COOKIE) as $cookie_name) | |
{ | |
// Only delete board cookies | |
if (strpos($cookie_name, $this->config['cookie_name'] . '_') !== 0) | |
{ | |
continue; | |
} | |
$cookie_name = str_replace($this->config['cookie_name'] . '_', '', $cookie_name); | |
/** | |
* Event to save custom cookies from deletion | |
* | |
* @event core.ucp_delete_cookies | |
* @var string cookie_name Cookie name to checking | |
* @var bool retain_cookie Do we retain our cookie or not, true if retain | |
* @since 3.1.3-RC1 | |
* @changed 3.3.13-RC1 Moved to new delete_cookies controller | |
*/ | |
$retain_cookie = false; | |
$vars = ['cookie_name', 'retain_cookie']; | |
extract($this->dispatcher->trigger_event('core.ucp_delete_cookies', compact($vars))); | |
if ($retain_cookie) | |
{ | |
continue; | |
} | |
// Polls are stored as {cookie_name}_poll_{topic_id}, cookie_name_ got removed, therefore checking for poll_ | |
if (strpos($cookie_name, 'poll_') !== 0) | |
{ | |
$this->user->set_cookie($cookie_name, '', $set_time); | |
} | |
} | |
$this->user->set_cookie('track', '', $set_time); | |
$this->user->set_cookie('u', '', $set_time); | |
$this->user->set_cookie('k', '', $set_time); | |
$this->user->set_cookie('sid', '', $set_time); | |
// We destroy the session here, the user will be logged out nevertheless | |
$this->user->session_kill(); | |
$this->user->session_begin(); | |
meta_refresh(3, append_sid("{$this->phpbb_root_path}index.$this->php_ext")); | |
$message = $this->language->lang('COOKIES_DELETED') . '<br><br>' . $this->language->lang('RETURN_INDEX', '<a href="' . append_sid("{$this->phpbb_root_path}index.$this->php_ext") . '">', '</a>'); | |
trigger_error($message); | |
} | |
else | |
{ | |
confirm_box(false, 'DELETE_COOKIES', ''); | |
} | |
redirect(append_sid("{$this->phpbb_root_path}index.$this->php_ext")); | |
} | |
} |