Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
26.67% covered (danger)
26.67%
4 / 15
23.08% covered (danger)
23.08%
3 / 13
CRAP
0.00% covered (danger)
0.00%
0 / 1
DerivativeRequest
28.57% covered (danger)
28.57%
4 / 14
23.08% covered (danger)
23.08%
3 / 13
85.43
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getCookie
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getHeader
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getAllHeaders
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getSession
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getSessionData
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 setSessionData
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getAcceptLang
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getIP
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
2
 setIP
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getProtocol
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getUpload
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getElapsedTime
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2/**
3 * Deal with importing all those nasty globals and things
4 *
5 * Copyright © 2003 Brooke Vibber <bvibber@wikimedia.org>
6 * https://www.mediawiki.org/
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License along
19 * with this program; if not, write to the Free Software Foundation, Inc.,
20 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 * http://www.gnu.org/copyleft/gpl.html
22 *
23 * @file
24 */
25
26namespace MediaWiki\Request;
27
28use MediaWiki\Session\Session;
29
30/**
31 * Similar to MediaWiki\Request\FauxRequest, but only fakes URL parameters and method
32 * (POST or GET) and use the base request for the remaining stuff
33 * (cookies, session and headers).
34 *
35 * @newable
36 *
37 * @ingroup HTTP
38 * @since 1.19
39 */
40class DerivativeRequest extends FauxRequest {
41    private WebRequest $base;
42    /** @var string|null */
43    private $ip;
44
45    /**
46     * @stable to call
47     *
48     * @param WebRequest $base
49     * @param array $data Array of *non*-urlencoded key => value pairs, the
50     *   fake GET/POST values
51     * @param bool $wasPosted Whether to treat the data as POST
52     */
53    public function __construct( WebRequest $base, $data, $wasPosted = false ) {
54        $this->base = $base;
55        parent::__construct( $data, $wasPosted );
56    }
57
58    public function getCookie( $key, $prefix = null, $default = null ) {
59        return $this->base->getCookie( $key, $prefix, $default );
60    }
61
62    public function getHeader( $name, $flags = 0 ) {
63        return $this->base->getHeader( $name, $flags );
64    }
65
66    public function getAllHeaders() {
67        return $this->base->getAllHeaders();
68    }
69
70    public function getSession(): Session {
71        return $this->base->getSession();
72    }
73
74    public function getSessionData( $key ) {
75        return $this->base->getSessionData( $key );
76    }
77
78    public function setSessionData( $key, $data ) {
79        $this->base->setSessionData( $key, $data );
80    }
81
82    public function getAcceptLang() {
83        return $this->base->getAcceptLang();
84    }
85
86    public function getIP(): string {
87        return $this->ip ?: $this->base->getIP();
88    }
89
90    public function setIP( $ip ) {
91        $this->ip = $ip;
92    }
93
94    public function getProtocol() {
95        return $this->base->getProtocol();
96    }
97
98    public function getUpload( $key ) {
99        // @phan-suppress-next-line PhanTypeMismatchReturnSuperType
100        return $this->base->getUpload( $key );
101    }
102
103    public function getElapsedTime() {
104        return $this->base->getElapsedTime();
105    }
106}
107
108/** @deprecated class alias since 1.40 */
109class_alias( DerivativeRequest::class, 'DerivativeRequest' );