<?php $output = get_input('output'); $forward_url = get_input('forward_url'); $forward_reason = (int) get_input('forward_reason', ELGG_HTTP_OK); $system_message = get_input('system_message'); $error_message = get_input('error_message'); if ($forward_url == '-1') { $forward_url = REFERRER; } if ($forward_reason == ELGG_HTTP_OK && !$error_message) { return elgg_ok_response($output, $system_message, $forward_url, $forward_reason); } else { if ($forward_reason == ELGG_HTTP_BAD_REQUEST || $error_message) { return elgg_error_response($error_message, $forward_url, $forward_reason); } else { if ($forward_reason == ELGG_HTTP_FOUND) { return elgg_redirect_response($forward_url); } } }
public function testCanRespondToAjax2RequestFromRedirectResponseBuilder() { $this->request = $this->prepareHttpRequest('foo/bar/baz', 'GET', [], 2); $this->createService(); elgg_register_page_handler('foo', function ($segments, $identifier) { $this->assertEquals(['bar', 'baz'], $segments); $this->assertEquals('foo', $identifier); return elgg_redirect_response('foo2/bar2/baz2'); }); $this->assertTrue($this->route()); $response = _elgg_services()->responseFactory->getSentResponse(); $this->assertInstanceOf(Response::class, $response); $this->assertEquals(ELGG_HTTP_OK, $response->getStatusCode()); $this->assertContains('application/json', $response->headers->get('Content-Type')); $output = json_encode(['value' => '', '_elgg_msgs' => (object) [], '_elgg_deps' => []], ELGG_JSON_ENCODING); $this->assertEquals($output, $response->getContent()); // compensate for fact that ResponseFactory::redirect closes a buffer it didn't open ob_start(); }