Proyectos de Subversion LeadersLinked - Services

Rev

Rev 188 | Rev 339 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
 
3
declare(strict_types=1);
4
 
5
namespace LeadersLinked\Plugin;
6
 
7
use Laminas\Mvc\Controller\Plugin\AbstractPlugin;
8
use Laminas\Db\Adapter\AdapterInterface;
9
use Laminas\Authentication\AuthenticationService;
10
use LeadersLinked\Model\Device;
11
use LeadersLinked\Mapper\DeviceMapper;
12
use LeadersLinked\Model\UserType;
13
use LeadersLinked\Mapper\NetworkMapper;
14
 
15
 
16
class CurrentNetworkPlugin extends AbstractPlugin
17
{
18
 
19
    /**
20
     *
283 www 21
     * @var \LeadersLinked\Plugin\CurrentNetworkPlugin
22
     */
23
    private static $_instance;
24
 
25
 
26
    /**
27
     *
1 efrain 28
     * @var boolean
29
     */
283 www 30
    private $hasNetwork;
1 efrain 31
 
32
 
33
 
34
    /**
35
     *
36
     * @return \LeadersLinked\Model\Network
37
     */
283 www 38
    private $network;
1 efrain 39
 
40
 
41
    /**
42
     *
43
     * @var string
44
     */
283 www 45
    private $hostname;
1 efrain 46
 
283 www 47
 
1 efrain 48
    /**
49
     *
50
     * @param AdapterInterface $adapter
283 www 51
     * @return \LeadersLinked\Plugin\CurrentNetworkPlugin
1 efrain 52
     */
283 www 53
    public static function getInstance($adapter)
1 efrain 54
    {
283 www 55
        if(self::$_instance == null) {
56
            self::$_instance = new CurrentNetworkPlugin($adapter);
57
        }
58
        return self::$_instance;
59
    }
164 efrain 60
 
283 www 61
 
62
 
63
    /**
64
     *
65
     * @param AdapterInterface $adapter
66
     */
67
    private function __construct($adapter)
68
    {
1 efrain 69
        $this->hasNetwork = false;
188 efrain 70
        $networkMapper = NetworkMapper::getInstance($adapter);
1 efrain 71
 
20 efrain 72
 
185 efrain 73
        $request_uri = empty($_SERVER['REQUEST_URI']) ? '' : $_SERVER['REQUEST_URI'];
187 efrain 74
        if($request_uri) {
75
 
76
            if(substr($request_uri, 0, 1) == '/') {
77
                $request_uri = substr($request_uri, 1);
78
            }
79
 
188 efrain 80
            $parts = explode('/', $request_uri);
81
            if($parts[0] == 'services') {
82
 
83
                $this->network = $networkMapper->fetchOneByDefault();
84
                if($this->network) {
85
                    $this->hostname = $this->network->main_hostname;
86
                    $this->hasNetwork = true;
87
                }
88
            }
164 efrain 89
 
187 efrain 90
 
188 efrain 91
 
186 efrain 92
 
187 efrain 93
        }
188 efrain 94
 
95
        if(!$this->hasNetwork) {
96
 
97
            $hostname = empty($_SERVER['HTTP_ORIGIN']) ? '' : $_SERVER['HTTP_ORIGIN'];
98
 
99
            if(empty($hostname)) {
100
 
101
                $hostname = empty($_SERVER['HTTP_REFERER']) ?  '' : $_SERVER['HTTP_REFERER'];
102
 
103
                if(empty($hostname)) {
104
                    $hostname = empty($_SERVER['HTTP_HOST']) ?  '' : $_SERVER['HTTP_HOST'];
185 efrain 105
 
188 efrain 106
                }
107
            }
154 efrain 108
 
188 efrain 109
            $hostname = trim(str_replace(['https://', 'http://'], '', $hostname));
110
 
111
 
112
            //echo $hostname; exit;
113
 
154 efrain 114
 
188 efrain 115
            $parts = explode('/', $hostname);
116
 
117
 
118
 
119
            $hostname = $parts > 1 ? $parts[0] : $hostname;
120
 
121
            $networkMapper = NetworkMapper::getInstance($adapter);
122
            $this->network = $networkMapper->fetchOneByHostnameForFrontend($hostname);
123
 
124
 
125
            if($this->network) {
126
 
127
                $this->hostname = $this->network->main_hostname == $hostname ?  $this->network->main_hostname : $this->network->alternative_hostname;
128
                $this->hasNetwork = true;
154 efrain 129
            }
18 efrain 130
        }
1 efrain 131
    }
132
 
133
    /**
134
     *
135
     * @return \LeadersLinked\Model\Network
136
     */
137
    public function getNetwork()
138
    {
139
        if($this->hasNetwork) {
140
            return $this->network;
141
        } else {
142
            return null;
143
        }
144
    }
145
 
146
    /**
147
     *
148
     * @return int
149
     */
150
    public function getNetworkId()
151
    {
152
        if($this->hasNetwork) {
153
           return $this->network->id;
154
 
155
        } else {
156
            return 0;
157
        }
158
    }
159
 
160
 
161
    /**
162
     *
163
     * @return boolean
164
     */
165
    public function hasNetwork()
166
    {
167
        return $this->hasNetwork;
168
    }
169
 
170
 
171
    public function getHostname() : string
172
    {
173
        return  $this->hostname;
174
    }
175
 
176
 
177
 
178
}