Passed
Push — 1.11.x ( 080d0e...e78a37 )
by Angel Fernando Quiroz
10:16
created

LtiProvider::create()   A

Complexity

Conditions 2
Paths 1

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 2
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 5
rs 10
1
<?php
2
/* For licensing terms, see /license.txt */
3
4
use Packback\Lti1p3;
5
use Packback\Lti1p3\LtiMessageLaunch;
6
use Packback\Lti1p3\LtiOidcLogin;
7
8
require_once __DIR__.'/../db/lti13_cookie.php';
9
require_once __DIR__.'/../db/lti13_cache.php';
10
require_once __DIR__.'/../db/lti13_database.php';
11
12
/**
13
 * Class LtiProvider.
14
 */
15
class LtiProvider
16
{
17
    /**
18
     * Get the class instance.
19
     *
20
     * @staticvar LtiProvider $result
21
     *
22
     * @return LtiProvider
23
     */
24
    public static function create()
25
    {
26
        static $result = null;
27
28
        return $result ?: $result = new self();
29
    }
30
31
    /**
32
     * Oidc login and register.
33
     *
34
     * @throws Lti1p3\OidcException
35
     */
36
    public function login($request = null)
37
    {
38
        LtiOidcLogin::new(new Lti13Database(), new Lti13Cache(), new Lti13Cookie())
39
            ->doOidcLoginRedirect(api_get_path(WEB_PLUGIN_PATH)."lti_provider/web/game.php", $request)
40
            ->doRedirect();
41
    }
42
43
    /**
44
     * Lti Message Launch.
45
     */
46
    public function launch(bool $fromCache = false, ?int $launchId = null): LtiMessageLaunch
47
    {
48
        if ($fromCache) {
49
            $launch = LtiMessageLaunch::fromCache($launchId, new Lti13Database(), new Lti13Cache());
50
        } else {
51
            $launch = LtiMessageLaunch::new(new Lti13Database(), new Lti13Cache(), new Lti13Cookie())->validate();
52
        }
53
54
        return $launch;
55
    }
56
}
57