Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

Rev Autor Línea Nro. Línea
1 www 1
<?php
2
declare(strict_types=1);
3
 
4
namespace LeadersLinked\Controller;
5
 
6
use Laminas\Db\Adapter\AdapterInterface;
7
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
8
use Laminas\Mvc\Controller\AbstractActionController;
9
use Laminas\Log\LoggerInterface;
10
use Laminas\View\Model\ViewModel;
11
use Laminas\View\Model\JsonModel;
12
use LeadersLinked\Mapper\PostMapper;
13
use LeadersLinked\Mapper\FeedMapper;
14
use LeadersLinked\Model\Feed;
15
use LeadersLinked\Mapper\LocationMapper;
16
use LeadersLinked\Mapper\UserMapper;
17
use LeadersLinked\Mapper\NotificationMapper;
18
use LeadersLinked\Mapper\UserProfileMapper;
19
use LeadersLinked\Mapper\ProfileVisitMapper;
20
use LeadersLinked\Mapper\ConnectionMapper;
21
use LeadersLinked\Form\Feed\CreateForm;
22
use LeadersLinked\Form\Feed\ShareForm;
4842 efrain 23
use LeadersLinked\Model\Network;
1 www 24
 
25
class DashboardController extends AbstractActionController
26
{
27
    /**
28
     *
29
     * @var AdapterInterface
30
     */
31
    private $adapter;
32
 
33
 
34
    /**
35
     *
36
     * @var AbstractAdapter
37
     */
38
    private $cache;
39
 
40
    /**
41
     *
42
     * @var  LoggerInterface
43
     */
44
    private $logger;
45
 
46
 
47
 
48
    /**
49
     *
50
     * @param AdapterInterface $adapter
51
     * @param AbstractAdapter $cache
52
     * @param LoggerInterface $logger
53
     * @param array $config
54
     */
55
    public function __construct($adapter, $cache , $logger, $config)
56
    {
57
        $this->adapter      = $adapter;
58
        $this->cache        = $cache;
59
        $this->logger       = $logger;
60
        $this->config       = $config;
61
 
62
 
63
    }
64
 
65
 
66
    public function indexAction()
67
    {
68
        $currentUserPlugin = $this->plugin('currentUserPlugin');
69
        $currentUser = $currentUserPlugin->getUser();
70
 
4842 efrain 71
        $currentNetworkPlugin = $this->plugin('currentNetworkPlugin');
72
        $currentNetwork = $currentNetworkPlugin->getNetwork();
73
 
1 www 74
        $userMapper = UserMapper::getInstance($this->adapter);
75
        $user = $userMapper->fetchOne($currentUser->id);
76
 
77
        $request = $this->getRequest();
78
        if($request->isGet()) {
79
 
80
 
81
            $headers  = $request->getHeaders();
82
 
83
            $isJson = false;
84
            if($headers->has('Accept')) {
85
                $accept = $headers->get('Accept');
86
 
87
                $prioritized = $accept->getPrioritized();
88
 
89
                foreach($prioritized as $key => $value) {
90
                    $raw = trim($value->getRaw());
91
 
92
                    if(!$isJson) {
93
                        $isJson = strpos($raw, 'json');
94
                    }
95
 
96
                }
97
            }
98
 
99
            if($isJson) {
100
                $profileVisitMapper = ProfileVisitMapper::getInstance($this->adapter);
4714 efrain 101
                //$visits = $profileVisitMapper->getTotalByVisitedId($currentUser->id);
1 www 102
 
4714 efrain 103
                $visits = $profileVisitMapper->getTotalByVisitedIdGroupVisitorId($currentUser->id);
104
 
4842 efrain 105
                if($currentNetwork->relationship_user_mode == Network::RELATIONSHIP_USER_MODE_USER_2_USER)  {
106
                    $connectionMapper = ConnectionMapper::getInstance($this->adapter);
107
                    $connections = $connectionMapper->fetchTotalConnectionByUser($currentUser->id);
108
                } else {
109
                    if($currentNetwork->default == Network::DEFAULT_YES) {
110
                        $connections = $userMapper->fetchCountActiveByDefaultNetworkId($currentNetwork->id);
111
                    } else {
112
                        $connections = $userMapper->fetchCountActiveByOtherNetworkId($currentNetwork->id);
113
                    }
114
                }
1 www 115
 
116
                if($user->location_id) {
117
                    $locationMapper = LocationMapper::getInstance($this->adapter);
118
                    $location = $locationMapper->fetchOne($user->location_id);
119
 
120
                    $country = $location->country;
121
                } else {
122
                    $country = '';
123
                }
124
 
125
                $image_size = $this->config['leaderslinked.image_sizes.feed_image_upload'];
126
 
127
                return new JsonModel([
128
                    'user_uuid' => $user->uuid,
129
                    'image' => $this->url()->fromRoute('storage', ['type' => 'user', 'code' => $user->uuid, 'filename' => $user->image]),
130
                    'fullname' => trim($user->first_name . ' ' . $user->last_name),
131
                    'country' => $country,
132
                    'visits' => $visits,
133
                    'connections' => $connections,
134
                    'image_size' => $image_size,
135
                ]);
136
 
137
            } else {
3298 efrain 138
 
1 www 139
                $feed_uuid = $this->params()->fromRoute('feed');
140
                if($feed_uuid) {
141
                    $feedMapper = FeedMapper::getInstance($this->adapter);
3146 efrain 142
                    $feed = $feedMapper->fetchOneByUuidAnyStatus($feed_uuid);
1 www 143
                } else {
3298 efrain 144
                    $feed = '';
1 www 145
                }
146
 
147
 
148
 
149
 
150
                $profileVisitMapper = ProfileVisitMapper::getInstance($this->adapter);
4714 efrain 151
               // $visits = $profileVisitMapper->getTotalByVisitedId($currentUser->id);
152
                $visits = $profileVisitMapper->getTotalByVisitedIdGroupVisitorId($currentUser->id);
1 www 153
 
154
 
4842 efrain 155
                if($currentNetwork->relationship_user_mode == Network::RELATIONSHIP_USER_MODE_USER_2_USER)  {
156
                    $connectionMapper = ConnectionMapper::getInstance($this->adapter);
157
                    $connections = $connectionMapper->fetchTotalConnectionByUser($currentUser->id);
158
                } else {
159
                    if($currentNetwork->default == Network::DEFAULT_YES) {
160
                        $connections = $userMapper->fetchCountActiveByDefaultNetworkId($currentNetwork->id);
161
                    } else {
162
                        $connections = $userMapper->fetchCountActiveByOtherNetworkId($currentNetwork->id);
163
                    }
164
 
165
                    $connections--;
166
                }
1 www 167
 
4842 efrain 168
 
169
 
1 www 170
                if($user->location_id) {
171
                    $locationMapper = LocationMapper::getInstance($this->adapter);
172
                    $location = $locationMapper->fetchOne($user->location_id);
173
 
174
                    $country = $location->country;
175
                } else {
176
                    $country = '';
177
                }
178
 
179
                $userProfileMapper = UserProfileMapper::getInstance($this->adapter);
180
                $userProfile = $userProfileMapper->fetchOnePublicByUserId($currentUser->id);
181
 
182
 
183
                $image_size = $this->config['leaderslinked.image_sizes.feed_image_upload'];
184
 
185
                $formFeed = new CreateForm();
186
                $formShare = new ShareForm();
187
 
3146 efrain 188
 
3298 efrain 189
                if($feed) {
190
                    $link_timeline = $this->url()->fromRoute('feed/timeline', ['id' => $currentUser->uuid, 'type' => 'user', 'feed' => $feed->uuid]);
3146 efrain 191
                } else {
192
                    $link_timeline = $this->url()->fromRoute('feed/timeline', ['id' => $currentUser->uuid, 'type' => 'user']);
193
                }
194
 
195
 
196
 
197
 
198
 
1 www 199
                $this->layout()->setTemplate('layout/layout.phtml');
200
                $viewModel = new ViewModel();
201
                $viewModel->setVariables([
202
                    'user_uuid' => $user->uuid,
203
                    'image' => $this->url()->fromRoute('storage', ['type' => 'user', 'code' => $user->uuid, 'filename' => $user->image]),
204
                    'fullname' => trim($user->first_name . ' ' . $user->last_name),
205
                    'description' => empty($userProfile->description) ? '' :  trim($userProfile->description) ,
206
                    'country' => $country,
207
                    'visits' => $visits,
208
                    'connections' => $connections,
3146 efrain 209
                    'feed' => '',
210
                    'link_timeline' => $link_timeline,
1 www 211
                    'formFeed' => $formFeed,
212
                    'formShare' => $formShare,
213
                    'image_size' => $image_size,
214
                ]);
215
                $viewModel->setTemplate('leaders-linked/dashboard/index.phtml');
216
                return $viewModel ;
217
            }
218
        }
219
 
220
        return new JsonModel([
221
           'success' => false,
222
           'data' => 'ERROR_METHOD_NOT_ALLOWED'
223
        ]);
224
    }
225
 
60 efrain 226
    public function dashboard2Action()
1 www 227
    {
60 efrain 228
        $currentUserPlugin = $this->plugin('currentUserPlugin');
229
        $currentUser = $currentUserPlugin->getUser();
1 www 230
 
60 efrain 231
        $userMapper = UserMapper::getInstance($this->adapter);
232
        $user = $userMapper->fetchOne($currentUser->id);
233
 
234
        $request = $this->getRequest();
235
        if($request->isGet()) {
236
 
237
 
238
            $headers  = $request->getHeaders();
239
 
240
            $isJson = false;
241
            if($headers->has('Accept')) {
242
                $accept = $headers->get('Accept');
243
 
244
                $prioritized = $accept->getPrioritized();
245
 
246
                foreach($prioritized as $key => $value) {
247
                    $raw = trim($value->getRaw());
248
 
249
                    if(!$isJson) {
250
                        $isJson = strpos($raw, 'json');
251
                    }
252
 
253
                }
254
            }
255
 
256
            if($isJson) {
257
                $profileVisitMapper = ProfileVisitMapper::getInstance($this->adapter);
258
                $visits = $profileVisitMapper->getTotalByVisitedId($currentUser->id);
259
 
260
                $connectionMapper = ConnectionMapper::getInstance($this->adapter);
261
                $connections = $connectionMapper->fetchTotalConnectionByUser($currentUser->id);
262
 
263
 
264
                if($user->location_id) {
265
                    $locationMapper = LocationMapper::getInstance($this->adapter);
266
                    $location = $locationMapper->fetchOne($user->location_id);
267
 
268
                    $country = $location->country;
269
                } else {
270
                    $country = '';
271
                }
272
 
273
                $image_size = $this->config['leaderslinked.image_sizes.feed_image_upload'];
274
 
275
                return new JsonModel([
276
                    'user_uuid' => $user->uuid,
277
                    'image' => $this->url()->fromRoute('storage', ['type' => 'user', 'code' => $user->uuid, 'filename' => $user->image]),
278
                    'fullname' => trim($user->first_name . ' ' . $user->last_name),
279
                    'country' => $country,
280
                    'visits' => $visits,
281
                    'connections' => $connections,
282
                    'image_size' => $image_size,
283
                ]);
284
 
285
            } else {
286
                $feed_uuid = $this->params()->fromRoute('feed');
287
                if($feed_uuid) {
288
                    $feedMapper = FeedMapper::getInstance($this->adapter);
289
                    $feed = $feedMapper->fetchOneByUuid($feed_uuid);
290
                    if($feed && $feed->type == Feed::TYPE_UPDATE && $feed->user_id == $currentUser->id && $feed->status == Feed::STATUS_PUBLISHED) {
291
                        $notificationMapper = NotificationMapper::getInstance($this->adapter);
292
                        $notificationMapper->markAllNotificationsAsReadByUserIdAndFeedId($currentUser->id, $feed->id);
293
                    } else {
294
                        $feed_uuid = '';
295
                    }
296
                } else {
297
                    $feed_uuid = '';
298
                }
299
 
300
 
301
 
302
 
303
                $profileVisitMapper = ProfileVisitMapper::getInstance($this->adapter);
304
                $visits = $profileVisitMapper->getTotalByVisitedId($currentUser->id);
305
 
306
                $connectionMapper = ConnectionMapper::getInstance($this->adapter);
307
                $connections = $connectionMapper->fetchTotalConnectionByUser($currentUser->id);
308
 
309
 
310
                if($user->location_id) {
311
                    $locationMapper = LocationMapper::getInstance($this->adapter);
312
                    $location = $locationMapper->fetchOne($user->location_id);
313
 
314
                    $country = $location->country;
315
                } else {
316
                    $country = '';
317
                }
318
 
319
                $userProfileMapper = UserProfileMapper::getInstance($this->adapter);
320
                $userProfile = $userProfileMapper->fetchOnePublicByUserId($currentUser->id);
321
 
322
 
323
                $image_size = $this->config['leaderslinked.image_sizes.feed_image_upload'];
324
 
325
                $formFeed = new CreateForm();
326
                $formShare = new ShareForm();
327
 
328
                $this->layout()->setTemplate('layout/layout.phtml');
329
                $viewModel = new ViewModel();
330
                $viewModel->setVariables([
331
                    'user_uuid' => $user->uuid,
332
                    'image' => $this->url()->fromRoute('storage', ['type' => 'user', 'code' => $user->uuid, 'filename' => $user->image]),
333
                    'fullname' => trim($user->first_name . ' ' . $user->last_name),
334
                    'description' => empty($userProfile->description) ? '' :  trim($userProfile->description) ,
335
                    'country' => $country,
336
                    'visits' => $visits,
337
                    'connections' => $connections,
338
                    'feed' => $feed_uuid,
339
                    'formFeed' => $formFeed,
340
                    'formShare' => $formShare,
341
                    'image_size' => $image_size,
342
                ]);
343
                $viewModel->setTemplate('leaders-linked/dashboard/dashboard2.phtml');
344
                return $viewModel ;
345
            }
346
        }
347
 
1 www 348
        return new JsonModel([
60 efrain 349
            'success' => false,
350
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
1 www 351
        ]);
352
    }
353
}