return '127.0.0.1';
}
}
+
+/**
+ * Similar to FauxRequest, but only fakes URL parameters and method
+ * (POST or GET) and use the base request for the remaining stuff
+ * (cookies, session and headers).
+ *
+ * @ingroup HTTP
+ */
+class DerivativeRequest extends FauxRequest {
+ private $base;
+
+ public function __construct( WebRequest $base, $data, $wasPosted = false ) {
+ $this->base = $base;
+ parent::__construct( $data, $wasPosted );
+ }
+
+ public function getCookie( $key, $prefix = null, $default = null ) {
+ return $this->base->getCookie( $key, $prefix, $default );
+ }
+
+ public function checkSessionCookie() {
+ return $this->base->checkSessionCookie();
+ }
+
+ public function getHeader( $name ) {
+ return $this->base->getHeader( $name );
+ }
+
+ public function getAllHeaders() {
+ return $this->base->getAllHeaders();
+ }
+
+ public function getSessionData( $key ) {
+ return $this->base->getSessionData( $key );
+ }
+
+ public function setSessionData( $key, $data ) {
+ return $this->base->setSessionData( $key, $data );
+ }
+}
$reqArr['wpWatchthis'] = '';
}
- $req = new FauxRequest( $reqArr, true );
+ global $wgRequest;
+ $req = new DerivativeRequest( $wgRequest, $reqArr, true );
$ep->importFormData( $req );
// Run hooks
// Handle CAPTCHA parameters
- global $wgRequest;
if ( !is_null( $params['captchaid'] ) ) {
$wgRequest->setVal( 'wpCaptchaId', $params['captchaid'] );
}
$result = array();
- $req = new FauxRequest( array(
- 'wpName' => $params['name'],
- 'wpPassword' => $params['password'],
- 'wpDomain' => $params['domain'],
- 'wpLoginToken' => $params['token'],
- 'wpRemember' => ''
- ) );
-
// Init session if necessary
if ( session_id() == '' ) {
wfSetupSession();
}
$context = new DerivativeContext( $this->getContext() );
- $context->setRequest( $req );
- /*$context = $this->createContext();
- $context->setRequest( $req );*/
+ $context->setRequest( new DerivativeRequest(
+ $this->getContext()->getRequest(),
+ array(
+ 'wpName' => $params['name'],
+ 'wpPassword' => $params['password'],
+ 'wpDomain' => $params['domain'],
+ 'wpLoginToken' => $params['token'],
+ 'wpRemember' => ''
+ )
+ ) );
$loginForm = new LoginForm();
$loginForm->setContext( $context );