Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
78.38% covered (warning)
78.38%
29 / 37
68.42% covered (warning)
68.42%
13 / 19
CRAP
0.00% covered (danger)
0.00%
0 / 1
phpbb_mock_request
78.38% covered (warning)
78.38%
29 / 37
68.42% covered (warning)
68.42%
13 / 19
28.35
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
1 / 1
2
 overwrite
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 raw_variable
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 variable
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 server
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 header
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 file
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
6
 is_set_post
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 is_set
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 is_ajax
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 is_secure
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 variable_names
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 get_super_global
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 super_globals_disabled
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 disable_super_globals
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 enable_super_globals
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 set_header
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 merge
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 escape
100.00% covered (success)
100.00%
9 / 9
100.00% covered (success)
100.00%
1 / 1
3
1<?php
2/**
3*
4* This file is part of the phpBB Forum Software package.
5*
6* @copyright (c) phpBB Limited <https://www.phpbb.com>
7* @license GNU General Public License, version 2 (GPL-2.0)
8*
9* For full copyright and license information, please see
10* the docs/CREDITS.txt file.
11*
12*/
13
14class phpbb_mock_request extends \phpbb\request\request
15{
16    protected $data;
17
18    protected $super_globals_disabled = false;
19
20    public function __construct($get = array(), $post = array(), $cookie = array(), $server = array(), $request = false, $files = array())
21    {
22        $this->data[\phpbb\request\request_interface::GET] = $get;
23        $this->data[\phpbb\request\request_interface::POST] = $post;
24        $this->data[\phpbb\request\request_interface::COOKIE] = $cookie;
25        $this->data[\phpbb\request\request_interface::REQUEST] = ($request === false) ? $post + $get : $request;
26        $this->data[\phpbb\request\request_interface::SERVER] = $server;
27        $this->data[\phpbb\request\request_interface::FILES] = $files;
28
29        $this->disable_super_globals();
30    }
31
32    public function overwrite($var_name, $value, $super_global = \phpbb\request\request_interface::REQUEST)
33    {
34        $this->data[$super_global][$var_name] = $value;
35    }
36
37    public function raw_variable($var_name, $default, $super_global = \phpbb\request\request_interface::REQUEST)
38    {
39        return $this->variable($var_name, $default, true, $super_global);
40    }
41
42    public function variable($var_name, $default, $multibyte = false, $super_global = \phpbb\request\request_interface::REQUEST)
43    {
44        return $this->data[$super_global][$var_name] ?? $default;
45    }
46
47    public function server($var_name, $default = '')
48    {
49        $super_global = \phpbb\request\request_interface::SERVER;
50        return $this->data[$super_global][$var_name] ?? $default;
51    }
52
53    public function header($header_name, $default = '')
54    {
55        $var_name = 'HTTP_' . str_replace('-', '_', strtoupper($header_name));
56        return $this->server($var_name, $default);
57    }
58
59    public function file($form_name)
60    {
61        $super_global = \phpbb\request\request_interface::FILES;
62        return isset($this->data[$super_global][$form_name]) ? $this->data[$super_global][$form_name] : array();
63    }
64
65    public function is_set_post($name)
66    {
67        return $this->is_set($name, \phpbb\request\request_interface::POST);
68    }
69
70    public function is_set($var, $super_global = \phpbb\request\request_interface::REQUEST)
71    {
72        return isset($this->data[$super_global][$var]);
73    }
74
75    public function is_ajax()
76    {
77        return false;
78    }
79
80    public function is_secure()
81    {
82        return false;
83    }
84
85    public function variable_names($super_global = \phpbb\request\request_interface::REQUEST)
86    {
87        return array_keys($this->data[$super_global]);
88    }
89
90    public function get_super_global($super_global = \phpbb\request\request_interface::REQUEST)
91    {
92        return $this->data[$super_global];
93    }
94
95    public function super_globals_disabled()
96    {
97        return $this->super_globals_disabled;
98    }
99
100    public function disable_super_globals()
101    {
102        $this->super_globals_disabled = true;
103    }
104
105    public function enable_super_globals()
106    {
107        $this->super_globals_disabled = false;
108    }
109
110    /* custom methods */
111
112    public function set_header($header_name, $value)
113    {
114        $var_name = 'HTTP_' . str_replace('-', '_', strtoupper($header_name));
115        $this->data[\phpbb\request\request_interface::SERVER][$var_name] = $value;
116    }
117
118    public function merge($values, $super_global = \phpbb\request\request_interface::REQUEST): void
119    {
120        $this->data[$super_global] = array_merge($this->data[$super_global], $values);
121    }
122
123    public function escape($var, $multibyte)
124    {
125        $type_cast_helper = new \phpbb\request\type_cast_helper();
126        if (is_array($var))
127        {
128            $result = array();
129            foreach ($var as $key => $value)
130            {
131                $type_cast_helper->set_var($key, $key, gettype($key), $multibyte);
132                $result[$key] = $this->escape($value, $multibyte);
133            }
134            $var = $result;
135        }
136        else
137        {
138            $type_cast_helper->set_var($var, $var, 'string', $multibyte);
139        }
140
141        return $var;
142    }
143}