Issues (2128)

plugin/ims_lti/nrps2.php (1 issue)

Labels
Severity
1
<?php
2
/* For licensing terms, see /license.txt */
3
4
use Symfony\Component\HttpFoundation\JsonResponse;
5
use Symfony\Component\HttpFoundation\Request;
0 ignored issues
show
This use statement conflicts with another class in this namespace, Request. Consider defining an alias.

Let?s assume that you have a directory layout like this:

.
|-- OtherDir
|   |-- Bar.php
|   `-- Foo.php
`-- SomeDir
    `-- Foo.php

and let?s assume the following content of Bar.php:

// Bar.php
namespace OtherDir;

use SomeDir\Foo; // This now conflicts the class OtherDir\Foo

If both files OtherDir/Foo.php and SomeDir/Foo.php are loaded in the same runtime, you will see a PHP error such as the following:

PHP Fatal error:  Cannot use SomeDir\Foo as Foo because the name is already in use in OtherDir/Foo.php

However, as OtherDir/Foo.php does not necessarily have to be loaded and the error is only triggered if it is loaded before OtherDir/Bar.php, this problem might go unnoticed for a while. In order to prevent this error from surfacing, you must import the namespace with a different alias:

// Bar.php
namespace OtherDir;

use SomeDir\Foo as SomeDirFoo; // There is no conflict anymore.
Loading history...
6
use Symfony\Component\HttpFoundation\Response;
7
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
8
use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
9
10
require_once __DIR__.'/../../main/inc/global.inc.php';
11
12
$request = Request::createFromGlobals();
13
14
$response = new JsonResponse(
15
    null,
16
    Response::HTTP_OK,
17
    ['content-type' => 'application/json']
18
);
19
20
try {
21
    $pathInfo = $request->getPathInfo();
22
23
    if (empty($pathInfo) || '/' === $pathInfo) {
24
        throw new BadRequestHttpException('Path info is missing.');
25
    }
26
27
    $resource = LtiNamesRoleProvisioningService::getResource($request, $response);
28
    $resource->validate();
29
    $resource->process();
30
} catch (HttpExceptionInterface $exception) {
31
    foreach ($exception->getHeaders() as $headerKey => $headerValue) {
32
        $response->headers->set($headerKey, $headerValue);
33
    }
34
35
    $response
36
        ->setStatusCode($exception->getStatusCode())
37
        ->setData(
38
            [
39
                'status' => $exception->getStatusCode(),
40
                'message' => $exception->getMessage(),
41
                'request' => [
42
                    'method' => $request->getMethod(),
43
                    'url' => $request->getRequestUri(),
44
                    'accept' => $request->headers->get('accept'),
45
                ],
46
            ]
47
        );
48
}
49
50
$response->prepare($request);
51
$response->send();
52