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")); | |
| } | |
| } |