Issues (193)

src/Gateways/Manager.php (1 issue)

Labels
Severity
1
<?php
2
3
namespace ByTIC\Payments\Gateways;
4
5
use ByTIC\Payments\Gateways\Providers\AbstractGateway\Traits\DetectFromHttpRequestTrait;
6
use ByTIC\Payments\Gateways\Providers\AbstractGateway\Traits\GatewayTrait;
7
use ByTIC\Payments\Legacy\Gateways\Manager\Traits\StaticCallsTrait;
8
use Nip\Records\AbstractModels\RecordManager;
9
use Omnipay\Common\Message\AbstractRequest;
10
use Omnipay\Common\Message\AbstractResponse;
11
use Symfony\Component\HttpFoundation\Request as HttpRequest;
12
13
/**
14
 * Class Manager
15
 * @package ByTIC\Payments\Gateways
16
 */
17
class Manager
18
{
19
    use Manager\Traits\HasFactoryTrait;
20
    use Manager\Traits\HasGatewaysCollectionTrait;
21
//    use StaticCallsTrait;
22
23
24
    /**
25
     * @param null|Manager $newInstance
26
     * @return Manager
27
     */
28
    public static function instance($newInstance = null): Manager
29
    {
30
        static $instance;
31
        if ($newInstance instanceof self) {
32
            $instance = $newInstance;
33
            return $instance;
34
        }
35
        if (!($instance instanceof self)) {
36
            $instance = new self();
37
        }
38 8
        return $instance;
39
    }
40 8
41 8
    /**
42
     * @param RecordManager $modelManager
43
     * @param string $callback
44
     * @param null|HttpRequest $httpRequest
45 8
     * @return bool|\Omnipay\Common\Message\ResponseInterface
46 8
     */
47
    public static function detectItemFromHttpRequest($modelManager, $callback = null, $httpRequest = null)
48
    {
49 8
        /** @noinspection PhpUnhandledExceptionInspection */
50
        $request = self::getRequestFromHttpRequest($modelManager, $callback, $httpRequest);
51
        if (!is_subclass_of($request, AbstractRequest::class)) {
52
            return false;
53
        }
54
55
        $response = $request->send();
56
        if (!is_subclass_of($response, AbstractResponse::class)) {
57
            return false;
58
        }
59
        return $response;
60 13
    }
61
62
63 13
    /**
64
     * @param RecordManager $modelManager
65 13
     * @param string $callback
66 13
     * @param null|HttpRequest $httpRequest
67 13
     * @return bool|\Omnipay\Common\Message\ResponseInterface
68 13
     * @throws \Exception
69
     */
70
    public static function getRequestFromHttpRequest($modelManager, $callback = null, $httpRequest = null)
71
    {
72
        /** @var DetectFromHttpRequestTrait[] $items */
73
        $items = self::getAll();
74
75
        foreach ($items as $item) {
76
            $request = $item->detectFromHttpRequestTrait($modelManager, $callback, $httpRequest);
0 ignored issues
show
It seems like $callback can also be of type string; however, parameter $callback of ByTIC\Payments\Gateways\...tFromHttpRequestTrait() does only seem to accept null, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

76
            $request = $item->detectFromHttpRequestTrait($modelManager, /** @scrutinizer ignore-type */ $callback, $httpRequest);
Loading history...
77
            if (is_subclass_of($request, AbstractRequest::class)) {
78 13
                return $request;
79
            }
80 13
        }
81
82
        return false;
83
    }
84
85
    /**
86
     * @param $type
87
     * @param array $params
88
     * @param bool $language
89
     * @return string
90 29
     */
91
    public function getLabel($type, $params = [], $language = false)
92 29
    {
93 1
        return translator()->trans('payment-gateways.labels.' . $type, $params, $language);
94 1
    }
95
96
    /**
97 29
     * @param $name
98
     * @param array $params
99
     * @param bool $language
100 1
     * @return string
101
     */
102 1
    public function getMessage($name, $params = [], $language = false)
103 1
    {
104 1
        return translator()->trans('payment-gateways.messages.' . $name, $params, $language);
105 1
    }
106
}
107