Proyectos de Subversion LeadersLinked - Services

Rev

Rev 283 | | 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
 
339 www 25
    /**
26
     *
27
     * @var AdapterInterface $adapter
28
     */
29
    private $adapter;
283 www 30
 
339 www 31
 
283 www 32
    /**
33
     *
1 efrain 34
     * @var boolean
35
     */
283 www 36
    private $hasNetwork;
1 efrain 37
 
38
 
39
 
40
    /**
41
     *
42
     * @return \LeadersLinked\Model\Network
43
     */
283 www 44
    private $network;
1 efrain 45
 
46
 
47
    /**
48
     *
49
     * @var string
50
     */
283 www 51
    private $hostname;
1 efrain 52
 
283 www 53
 
1 efrain 54
    /**
55
     *
56
     * @param AdapterInterface $adapter
283 www 57
     * @return \LeadersLinked\Plugin\CurrentNetworkPlugin
1 efrain 58
     */
283 www 59
    public static function getInstance($adapter)
1 efrain 60
    {
283 www 61
        if(self::$_instance == null) {
62
            self::$_instance = new CurrentNetworkPlugin($adapter);
63
        }
64
        return self::$_instance;
65
    }
164 efrain 66
 
283 www 67
 
68
 
69
    /**
70
     *
71
     * @param AdapterInterface $adapter
72
     */
73
    private function __construct($adapter)
74
    {
339 www 75
        $this->adapter = $adapter;
1 efrain 76
        $this->hasNetwork = false;
188 efrain 77
        $networkMapper = NetworkMapper::getInstance($adapter);
1 efrain 78
 
20 efrain 79
 
185 efrain 80
        $request_uri = empty($_SERVER['REQUEST_URI']) ? '' : $_SERVER['REQUEST_URI'];
187 efrain 81
        if($request_uri) {
82
 
83
            if(substr($request_uri, 0, 1) == '/') {
84
                $request_uri = substr($request_uri, 1);
85
            }
86
 
188 efrain 87
            $parts = explode('/', $request_uri);
88
            if($parts[0] == 'services') {
89
 
90
                $this->network = $networkMapper->fetchOneByDefault();
91
                if($this->network) {
92
                    $this->hostname = $this->network->main_hostname;
93
                    $this->hasNetwork = true;
94
                }
95
            }
164 efrain 96
 
187 efrain 97
 
188 efrain 98
 
186 efrain 99
 
187 efrain 100
        }
188 efrain 101
 
102
        if(!$this->hasNetwork) {
103
 
104
            $hostname = empty($_SERVER['HTTP_ORIGIN']) ? '' : $_SERVER['HTTP_ORIGIN'];
105
 
106
            if(empty($hostname)) {
107
 
108
                $hostname = empty($_SERVER['HTTP_REFERER']) ?  '' : $_SERVER['HTTP_REFERER'];
109
 
110
                if(empty($hostname)) {
111
                    $hostname = empty($_SERVER['HTTP_HOST']) ?  '' : $_SERVER['HTTP_HOST'];
185 efrain 112
 
188 efrain 113
                }
114
            }
154 efrain 115
 
188 efrain 116
            $hostname = trim(str_replace(['https://', 'http://'], '', $hostname));
117
 
118
 
119
            //echo $hostname; exit;
120
 
154 efrain 121
 
188 efrain 122
            $parts = explode('/', $hostname);
123
 
124
 
125
 
126
            $hostname = $parts > 1 ? $parts[0] : $hostname;
127
 
128
            $networkMapper = NetworkMapper::getInstance($adapter);
129
            $this->network = $networkMapper->fetchOneByHostnameForFrontend($hostname);
130
 
131
 
132
            if($this->network) {
133
 
134
                $this->hostname = $this->network->main_hostname == $hostname ?  $this->network->main_hostname : $this->network->alternative_hostname;
135
                $this->hasNetwork = true;
154 efrain 136
            }
18 efrain 137
        }
1 efrain 138
    }
139
 
140
    /**
141
     *
142
     * @return \LeadersLinked\Model\Network
143
     */
144
    public function getNetwork()
145
    {
146
        if($this->hasNetwork) {
147
            return $this->network;
148
        } else {
149
            return null;
150
        }
151
    }
152
 
153
    /**
154
     *
155
     * @return int
156
     */
157
    public function getNetworkId()
158
    {
159
        if($this->hasNetwork) {
160
           return $this->network->id;
161
 
162
        } else {
163
            return 0;
164
        }
165
    }
166
 
167
 
168
    /**
169
     *
170
     * @return boolean
171
     */
172
    public function hasNetwork()
173
    {
174
        return $this->hasNetwork;
175
    }
176
 
177
 
178
    public function getHostname() : string
179
    {
180
        return  $this->hostname;
181
    }
182
 
339 www 183
 
184
    public function fetchDefaultNetwork()
185
    {
186
        $networkMapper = NetworkMapper::getInstance($this->adapter);
187
        $this->network = $networkMapper->fetchOneByDefault();
188
        if($this->network) {
189
            $this->hasNetwork = true;
190
            $this->hostname  = $this->network->main_hostname;
191
        }
192
 
193
    }
1 efrain 194
 
195
 
196
}