Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 3648 | Rev 5605 | Ir a la última revisión | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 3648 Rev 5595
Línea 1... Línea 1...
1
<?php
1
<?php
-
 
2
 
2
/**
3
/**
3
 * 
4
 * 
4
 * Controlador: Mis Perfiles 
5
 * Controlador: Mis Perfiles 
5
 * 
6
 * 
6
 */
7
 */
-
 
8
 
7
declare(strict_types=1);
9
declare(strict_types=1);
Línea 8... Línea 10...
8
 
10
 
Línea 9... Línea 11...
9
namespace LeadersLinked\Controller;
11
namespace LeadersLinked\Controller;
Línea 42... Línea 44...
42
    /**
44
    /**
43
     *
45
     *
44
     * @var AdapterInterface
46
     * @var AdapterInterface
45
     */
47
     */
46
    private $adapter;
48
    private $adapter;
47
    
49
 
48
    
50
 
49
    /**
51
    /**
50
     *
52
     *
51
     * @var AbstractAdapter
53
     * @var AbstractAdapter
52
     */
54
     */
53
    private $cache;
55
    private $cache;
54
    
56
 
55
    /**
57
    /**
56
     *
58
     *
57
     * @var  LoggerInterface
59
     * @var  LoggerInterface
58
     */
60
     */
59
    private $logger;
61
    private $logger;
Línea 60... Línea 62...
60
 
62
 
61
    
63
 
62
    /**
64
    /**
63
     *
65
     *
64
     * @var array
66
     * @var array
65
     */
67
     */
66
    private $config;
68
    private $config;
67
    
69
 
68
    /**
70
    /**
69
     *
71
     *
70
     * @param AdapterInterface $adapter
72
     * @param AdapterInterface $adapter
71
     * @param AbstractAdapter $cache
73
     * @param AbstractAdapter $cache
72
     * @param LoggerInterface $logger
74
     * @param LoggerInterface $logger
73
     * @param array $config
75
     * @param array $config
74
     */
76
     */
75
    public function __construct($adapter, $cache , $logger,  $config)
77
    public function __construct($adapter, $cache, $logger,  $config)
76
    {
78
    {
77
        $this->adapter      = $adapter;
79
        $this->adapter      = $adapter;
78
        $this->cache        = $cache;
80
        $this->cache        = $cache;
79
        $this->logger       = $logger;
81
        $this->logger       = $logger;
80
        $this->config       = $config;
-
 
81
 
82
        $this->config       = $config;
82
    }
83
    }
83
    
84
 
84
    /**
85
    /**
85
     * 
86
     * 
86
     * Generación del listado de conversationes
87
     * Generación del listado de conversationes
87
     * 
88
     * 
Línea 105... Línea 106...
105
     * @return \Laminas\View\Model\JsonModel
106
     * @return \Laminas\View\Model\JsonModel
106
     */
107
     */
107
    public function indexAction()
108
    public function indexAction()
108
    {
109
    {
109
        $request = $this->getRequest();
110
        $request = $this->getRequest();
110
        if($request->isGet()) {
111
        if ($request->isGet()) {
111
            $currentUserPlugin = $this->plugin('currentUserPlugin');
112
            $currentUserPlugin = $this->plugin('currentUserPlugin');
112
            $currentUser = $currentUserPlugin->getUser();
113
            $currentUser = $currentUserPlugin->getUser();
113
            
114
 
114
            $id = $this->params()->fromRoute('id');
115
            $id = $this->params()->fromRoute('id');
115
            
116
 
116
            $headers  = $request->getHeaders();
117
            $headers  = $request->getHeaders();
117
            
118
 
118
            $isJson = false;
119
            $isJson = false;
119
            if($headers->has('Accept')) {
120
            if ($headers->has('Accept')) {
120
                $accept = $headers->get('Accept');
121
                $accept = $headers->get('Accept');
121
                
122
 
122
                $prioritized = $accept->getPrioritized();
123
                $prioritized = $accept->getPrioritized();
123
                
124
 
124
                foreach($prioritized as $key => $value) {
125
                foreach ($prioritized as $key => $value) {
125
                    $raw = trim($value->getRaw());
126
                    $raw = trim($value->getRaw());
126
                    
127
 
127
                    if(!$isJson) {
128
                    if (!$isJson) {
128
                        $isJson = strpos($raw, 'json');
129
                        $isJson = strpos($raw, 'json');
129
                    }
130
                    }
130
                    
-
 
131
                }
131
                }
132
            }
132
            }
Línea 133... Línea 133...
133
 
133
 
134
            if($isJson) {
134
            if ($isJson) {
135
                
135
 
136
                $utilMapper = UtilMapper::getInstance($this->adapter);
136
                $utilMapper = UtilMapper::getInstance($this->adapter);
137
                $now = $utilMapper->getDatebaseNow();
137
                $now = $utilMapper->getDatebaseNow();
138
                
138
 
139
                $currentUserPlugin = $this->plugin('currentUserPlugin');
139
                $currentUserPlugin = $this->plugin('currentUserPlugin');
140
                $currentUser = $currentUserPlugin->getUser();
140
                $currentUser = $currentUserPlugin->getUser();
141
                
141
 
142
                $userMapper = UserMapper::getInstance($this->adapter);
142
                $userMapper = UserMapper::getInstance($this->adapter);
143
                $conversationMapper = ConversationMapper::getInstance($this->adapter);
143
                $conversationMapper = ConversationMapper::getInstance($this->adapter);
144
                $messageMapper = MessageMapper::getInstance($this->adapter);
144
                $messageMapper = MessageMapper::getInstance($this->adapter);
145
                $conversations = [];
145
                $conversations = [];
146
                
146
 
147
                $selected_user_id = 0;
147
                $selected_user_id = 0;
148
                
148
 
149
                $id = $this->params()->fromRoute('id');
149
                $id = $this->params()->fromRoute('id');
150
                if($id) {
150
                if ($id) {
151
                    
151
 
152
                    $companyMapper = CompanyMapper::getInstance($this->adapter);
152
                    $companyMapper = CompanyMapper::getInstance($this->adapter);
153
                    $company = $companyMapper->fetchOneByUuid($id);
153
                    $company = $companyMapper->fetchOneByUuid($id);
154
                    if($company) {
154
                    if ($company) {
155
                        
155
 
156
                        $companyUserMapper = CompanyUserMapper::getInstance($this->adapter);
156
                        $companyUserMapper = CompanyUserMapper::getInstance($this->adapter);
157
                        $companyUser = $companyUserMapper->fetchOwnerByCompanyId($company->id);
157
                        $companyUser = $companyUserMapper->fetchOwnerByCompanyId($company->id);
158
                        
158
 
159
                        $user  = $userMapper->fetchOne($companyUser->user_id);
159
                        $user  = $userMapper->fetchOne($companyUser->user_id);
160
                        
160
 
161
                        
161
 
162
                        $selected_user_id = $user->id;
162
                        $selected_user_id = $user->id;
163
                        $conversation = $conversationMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
163
                        $conversation = $conversationMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
164
                        
164
 
165
                        
165
 
166
                        $timeElapsedString = '';
166
                        $timeElapsedString = '';
167
                        if($conversation) {
167
                        if ($conversation) {
168
                            $unread = $messageMapper->fetchCountUnreadMessagesByConversationIdAndReceiverId($conversation->id, $currentUser->id);
168
                            $unread = $messageMapper->fetchCountUnreadMessagesByConversationIdAndReceiverId($conversation->id, $currentUser->id);
169
                            $lastMessage = $messageMapper->fetchLastUnreadMessagesByConversationIdAndReceiverId($conversation->id, $currentUser->id);
169
                            $lastMessage = $messageMapper->fetchLastUnreadMessagesByConversationIdAndReceiverId($conversation->id, $currentUser->id);
170
                        
170
 
171
                            if($lastMessage) {
171
                            if ($lastMessage) {
172
                                $timeElapsedString =  $this->timeAgo($lastMessage, $now);
172
                                $timeElapsedString =  $this->timeAgo($lastMessage, $now);
173
                            } 
173
                            }
174
                        } else {
174
                        } else {
175
                            $unread = 0;
-
 
176
                          
175
                            $unread = 0;
177
                        }
-
 
178
                        
176
                        }
179
                        
-
 
180
                        
-
 
181
                        
177
 
182
                        
178
 
183
                        array_push($conversations, [
179
                        array_push($conversations, [
184
                            'uuid' => $company->uuid,
180
                            'uuid' => $company->uuid,
185
                            'name' => $company->name,
181
                            'name' => $company->name,
186
                            'image' => $this->url()->fromRoute('storage', ['type' => 'company', 'code' => $company->uuid, 'filename' => $company->image]),
182
                            'image' => $this->url()->fromRoute('storage', ['type' => 'company', 'code' => $company->uuid, 'filename' => $company->image]),
187
                            'profile' => $this->url()->fromRoute('company/view', ['id' => $company->uuid ] ),
183
                            'profile' => $this->url()->fromRoute('company/view', ['id' => $company->uuid]),
188
                            'last_message' => $timeElapsedString, 
184
                            'last_message' => $timeElapsedString,
189
                            'count_unread' => $unread,
185
                            'count_unread' => $unread,
190
                            'messages_link' => $this->url()->fromRoute('inmail/message', ['id' => $user->uuid]),
186
                            'messages_link' => $this->url()->fromRoute('inmail/message', ['id' => $user->uuid]),
191
                            'send_link' => $this->url()->fromRoute('inmail/message/send', ['id' => $user->uuid]),
187
                            'send_link' => $this->url()->fromRoute('inmail/message/send', ['id' => $user->uuid]),
192
                            'selected' => 1,
188
                            'selected' => 1,
193
                        ]);                        
189
                        ]);
194
                    } else {
190
                    } else {
195
                        $user = $userMapper->fetchOneByUuid($id);
191
                        $user = $userMapper->fetchOneByUuid($id);
196
                        if($user) {
192
                        if ($user) {
197
                            
193
 
198
                            $timeElapsedString = ''; 
194
                            $timeElapsedString = '';
199
                            
195
 
200
                            $selected_user_id = $user->id;
196
                            $selected_user_id = $user->id;
201
                            $conversation = $conversationMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
197
                            $conversation = $conversationMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
202
                            if($conversation) {
198
                            if ($conversation) {
203
                                $unread = $messageMapper->fetchCountUnreadMessagesByConversationIdAndReceiverId($conversation->id, $currentUser->id);
199
                                $unread = $messageMapper->fetchCountUnreadMessagesByConversationIdAndReceiverId($conversation->id, $currentUser->id);
204
                                $lastMessage = $messageMapper->fetchLastUnreadMessagesByConversationIdAndReceiverId($conversation->id, $currentUser->id);
200
                                $lastMessage = $messageMapper->fetchLastUnreadMessagesByConversationIdAndReceiverId($conversation->id, $currentUser->id);
205
                                if($lastMessage) {
201
                                if ($lastMessage) {
206
                                    $timeElapsedString =  $this->timeAgo($lastMessage, $now);
202
                                    $timeElapsedString =  $this->timeAgo($lastMessage, $now);
207
                                } 
-
 
208
                            
-
 
209
                            
203
                                }
210
                            } else {
204
                            } else {
211
                                $unread = 0;
205
                                $unread = 0;
212
                            }
206
                            }
213
                            
207
 
214
     
208
 
215
                            array_push($conversations, [
209
                            array_push($conversations, [
216
                                'uuid' => $user->uuid,
210
                                'uuid' => $user->uuid,
217
                                'name' => trim($user->first_name . ' ' . $user->last_name),
211
                                'name' => trim($user->first_name . ' ' . $user->last_name),
218
                                'image' => $this->url()->fromRoute('storage', ['type' => 'user', 'code' => $user->uuid, 'filename' => $user->image]),
212
                                'image' => $this->url()->fromRoute('storage', ['type' => 'user', 'code' => $user->uuid, 'filename' => $user->image]),
Línea 224... Línea 218...
224
                                'selected' => 1,
218
                                'selected' => 1,
225
                            ]);
219
                            ]);
226
                        }
220
                        }
227
                    }
221
                    }
228
                }
222
                }
229
                
223
 
230
                
224
 
231
                $records = $conversationMapper->fetchAllByUserId($currentUser->id);
225
                $records = $conversationMapper->fetchAllByUserId($currentUser->id);
232
                foreach($records as $record)
226
                foreach ($records as $record) {
233
                {
-
 
234
                    if($selected_user_id) {
227
                    if ($selected_user_id) {
235
                        if($record->sender_id == $currentUser->id && $record->receiver_id == $selected_user_id) {
228
                        if ($record->sender_id == $currentUser->id && $record->receiver_id == $selected_user_id) {
236
                            continue;
229
                            continue;
237
                        }
230
                        }
238
                        if($record->receiver_id == $currentUser->id && $record->sender_id == $selected_user_id) {
231
                        if ($record->receiver_id == $currentUser->id && $record->sender_id == $selected_user_id) {
239
                            continue;
232
                            continue;
240
                        }
233
                        }
241
                        
-
 
242
                    }
234
                    }
243
                    
235
 
244
                    if($record->sender_id == $currentUser->id) {
236
                    if ($record->sender_id == $currentUser->id) {
245
                        $user = $userMapper->fetchOne($record->receiver_id);
237
                        $user = $userMapper->fetchOne($record->receiver_id);
246
                    }
238
                    }
247
                    if($record->receiver_id == $currentUser->id) {
239
                    if ($record->receiver_id == $currentUser->id) {
248
                        $user = $userMapper->fetchOne($record->sender_id);
240
                        $user = $userMapper->fetchOne($record->sender_id);
249
                    }
241
                    }
250
                    
242
 
251
                    $timeElapsedString = '';
243
                    $timeElapsedString = '';
252
                    $unread = $messageMapper->fetchCountUnreadMessagesByConversationIdAndReceiverId($record->id, $currentUser->id);
244
                    $unread = $messageMapper->fetchCountUnreadMessagesByConversationIdAndReceiverId($record->id, $currentUser->id);
253
                    $lastMessage = $messageMapper->fetchLastMessagesByConversationIdAndReceiverId($record->id, $currentUser->id);
245
                    $lastMessage = $messageMapper->fetchLastMessagesByConversationIdAndReceiverId($record->id, $currentUser->id);
254
                   
246
 
255
             
247
 
256
                    if($lastMessage) { 
248
                    if ($lastMessage) {
257
                        $timeElapsedString =  $this->timeAgo($lastMessage, $now);
249
                        $timeElapsedString =  $this->timeAgo($lastMessage, $now);
258
                    } 
250
                    }
259
                    
251
 
260
                    array_push($conversations, [
252
                    array_push($conversations, [
261
                        'uuid' => $user->uuid,
253
                        'uuid' => $user->uuid,
262
                        'name' => trim($user->first_name . ' ' . $user->last_name),
254
                        'name' => trim($user->first_name . ' ' . $user->last_name),
263
                        'image' => $this->url()->fromRoute('storage', ['type' => 'user', 'code' => $user->uuid, 'filename' => $user->image]),
255
                        'image' => $this->url()->fromRoute('storage', ['type' => 'user', 'code' => $user->uuid, 'filename' => $user->image]),
264
                        'profile' => $this->url()->fromRoute('profile/view', ['id' => $user->uuid]),
256
                        'profile' => $this->url()->fromRoute('profile/view', ['id' => $user->uuid]),
Línea 267... Línea 259...
267
                        'messages_link' => $this->url()->fromRoute('inmail/message', ['id' => $user->uuid]),
259
                        'messages_link' => $this->url()->fromRoute('inmail/message', ['id' => $user->uuid]),
268
                        'send_link' => $this->url()->fromRoute('inmail/message/send', ['id' => $user->uuid]),
260
                        'send_link' => $this->url()->fromRoute('inmail/message/send', ['id' => $user->uuid]),
269
                        'selected' => 0,
261
                        'selected' => 0,
270
                    ]);
262
                    ]);
271
                }
263
                }
272
                
264
 
273
                        
265
 
274
                usort($conversations, function($a, $b) {
266
                usort($conversations, function ($a, $b) {
275
                    if ($a['selected'] == $b['selected']) {
267
                    if ($a['selected'] == $b['selected']) {
276
                        if($a['last_message'] == $b['last_message']) {
268
                        if ($a['last_message'] == $b['last_message']) {
277
                            return 0;
269
                            return 0;
278
                        } else {
270
                        } else {
279
                            return $a['last_message'] < $b['last_message'] ? -1 : 1;
271
                            return $a['last_message'] < $b['last_message'] ? -1 : 1;
280
                        }
272
                        }
281
                    } else {
273
                    } else {
282
                        return $a['selected'] < $b['selected'] ? -1 : 1;
274
                        return $a['selected'] < $b['selected'] ? -1 : 1;
283
                    }
275
                    }
284
                });
276
                });
285
                        
277
 
286
                        
278
 
287
                return new JsonModel([
279
                return new JsonModel([
288
                    'success' => true,
280
                    'success' => true,
289
                    'data' => $conversations
281
                    'data' => $conversations
290
                ]);
282
                ]);
291
                
-
 
292
            } else {
283
            } else {
293
                $this->layout()->setTemplate('layout/layout.phtml');
284
                $this->layout()->setTemplate('layout/layout.phtml');
294
                $viewModel = new ViewModel();
285
                $viewModel = new ViewModel();
295
                $viewModel->setTemplate('leaders-linked/inmail/index.phtml');
286
                $viewModel->setTemplate('leaders-linked/inmail/index.phtml');
296
                return $viewModel ;
287
                return $viewModel;
297
            }
288
            }
298
        } else {
289
        } else {
299
            return new JsonModel([
290
            return new JsonModel([
300
                'success' => false,
291
                'success' => false,
301
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
292
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
302
            ]);
293
            ]);
303
        }
294
        }
304
    }
295
    }
305
    
296
 
306
   
297
 
307
    /**
298
    /**
308
     * Esta función remueve el usuario del grupo
299
     * Esta función remueve el usuario del grupo
309
     * Es una petición GET el url recuperado en /inmail
300
     * Es una petición GET el url recuperado en /inmail
310
     * [ruta del servidor]/inmail/[uuid]/message
301
     * [ruta del servidor]/inmail/[uuid]/message
311
     * retorna un json en caso de ser  positivo
302
     * retorna un json en caso de ser  positivo
Línea 335... Línea 326...
335
     * @return \Laminas\View\Model\JsonModel
326
     * @return \Laminas\View\Model\JsonModel
336
     */
327
     */
337
    public function messageAction()
328
    public function messageAction()
338
    {
329
    {
339
        $request = $this->getRequest();
330
        $request = $this->getRequest();
340
        if($request->isGet()) {
331
        if ($request->isGet()) {
341
            
332
 
342
            $utilMapper = UtilMapper::getInstance($this->adapter);
333
            $utilMapper = UtilMapper::getInstance($this->adapter);
343
            $now = $utilMapper->getDatebaseNow();
334
            $now = $utilMapper->getDatebaseNow();
344
            
335
 
345
            $page = intval($this->params()->fromQuery('page', 0), 10);
336
            $page = intval($this->params()->fromQuery('page', 0), 10);
346
            
337
 
347
            $currentUserPlugin = $this->plugin('currentUserPlugin');
338
            $currentUserPlugin = $this->plugin('currentUserPlugin');
348
            $currentUser = $currentUserPlugin->getUser();
339
            $currentUser = $currentUserPlugin->getUser();
349
            
340
 
350
            $userMapper = UserMapper::getInstance($this->adapter);
341
            $userMapper = UserMapper::getInstance($this->adapter);
351
            $conversationMapper = ConversationMapper::getInstance($this->adapter);
342
            $conversationMapper = ConversationMapper::getInstance($this->adapter);
352
            
343
 
353
            $messageMapper = MessageMapper::getInstance($this->adapter);
344
            $messageMapper = MessageMapper::getInstance($this->adapter);
Línea 354... Línea 345...
354
 
345
 
355
            $id = $this->params()->fromRoute('id');
346
            $id = $this->params()->fromRoute('id');
356
            if(!$id) {
347
            if (!$id) {
357
                return new JsonModel([
348
                return new JsonModel([
358
                    'success' => false,
349
                    'success' => false,
359
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
350
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
360
                ]);
351
                ]);
361
            }
352
            }
362
            
353
 
363
            $user = $userMapper->fetchOneByUuid($id);
354
            $user = $userMapper->fetchOneByUuid($id);
364
            if(!$user) {
355
            if (!$user) {
365
                return new JsonModel([
356
                return new JsonModel([
366
                    'success' => false,
357
                    'success' => false,
367
                    'data' => 'ERROR_REQUEST_IS_INVALID'
358
                    'data' => 'ERROR_REQUEST_IS_INVALID'
368
                ]);
359
                ]);
369
            }
360
            }
370
            
361
 
371
            $conversationMapper = ConversationMapper::getInstance($this->adapter);
362
            $conversationMapper = ConversationMapper::getInstance($this->adapter);
372
            $conversation = $conversationMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
363
            $conversation = $conversationMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
373
            
364
 
374
            $messages = []; 
365
            $messages = [];
375
            if($conversation) {
366
            if ($conversation) {
376
                $records = $messageMapper->getAllMessagesPaginatorByConversationId($conversation->id, $page);
367
                $records = $messageMapper->getAllMessagesPaginatorByConversationId($conversation->id, $page);
377
                
368
 
378
               
369
 
379
                foreach($records as $record) {
370
                foreach ($records as $record) {
380
                    /*
371
                    /*
381
                    echo '<pre>'; 
372
                    echo '<pre>'; 
382
                    print_r($record); 
373
                    print_r($record); 
383
                    echo '</pre>'; */
374
                    echo '</pre>'; */
384
                    
375
 
Línea 385... Línea 376...
385
                    $timeElapsedString = $this->timeAgo($record->added_on, $now);
376
                    $timeElapsedString = $this->timeAgo($record->added_on, $now);
386
 
377
 
387
                    
378
 
388
                    if($record->sender_id == $currentUser->id) {
379
                    if ($record->sender_id == $currentUser->id) {
389
                        array_push($messages, [
380
                        array_push($messages, [
390
                            'sender_name' => trim($currentUser->first_name . ' ' . $currentUser->last_name),
381
                            'sender_name' => trim($currentUser->first_name . ' ' . $currentUser->last_name),
391
                            'sender_image' => $this->url()->fromRoute('storage', ['type' => 'user', 'filename' => $currentUser->image, 'code' => $currentUser->uuid]),
382
                            'sender_image' => $this->url()->fromRoute('storage', ['type' => 'user', 'filename' => $currentUser->image, 'code' => $currentUser->uuid]),
Línea 398... Línea 389...
398
                            'type' => $record->type,
389
                            'type' => $record->type,
399
                            'filename' => $record->filename ? $this->url()->fromRoute('storage', ['type' => 'message', 'filename' => $record->filename, 'code' => $record->uuid]) : '',
390
                            'filename' => $record->filename ? $this->url()->fromRoute('storage', ['type' => 'message', 'filename' => $record->filename, 'code' => $record->uuid]) : '',
400
                            'date' => $timeElapsedString
391
                            'date' => $timeElapsedString
401
                        ]);
392
                        ]);
402
                    } else {
393
                    } else {
403
                        
394
 
404
                        
395
 
405
                        
396
 
406
                        array_push($messages, [
397
                        array_push($messages, [
407
                            'sender_name' => trim($user->first_name . ' ' . $user->last_name),
398
                            'sender_name' => trim($user->first_name . ' ' . $user->last_name),
408
                            'sender_image' => $this->url()->fromRoute('storage', ['type' => 'user', 'filename' => $user->image, 'code' => $user->uuid]),
399
                            'sender_image' => $this->url()->fromRoute('storage', ['type' => 'user', 'filename' => $user->image, 'code' => $user->uuid]),
409
                            'sender_profile' => $this->url()->fromRoute('profile/view', ['id' => $user->uuid]),
400
                            'sender_profile' => $this->url()->fromRoute('profile/view', ['id' => $user->uuid]),
410
                            'receiver_name' => trim($currentUser->first_name . ' ' . $currentUser->last_name),
401
                            'receiver_name' => trim($currentUser->first_name . ' ' . $currentUser->last_name),
Línea 414... Línea 405...
414
                            'message' => $record->message,
405
                            'message' => $record->message,
415
                            'type' => $record->type,
406
                            'type' => $record->type,
416
                            'filename' => $record->filename ? $this->url()->fromRoute('storage', ['type' => 'message', 'filename' => $record->filename, 'code' => $record->uuid]) : '',
407
                            'filename' => $record->filename ? $this->url()->fromRoute('storage', ['type' => 'message', 'filename' => $record->filename, 'code' => $record->uuid]) : '',
417
                            'date' => $timeElapsedString
408
                            'date' => $timeElapsedString
418
                        ]);
409
                        ]);
419
                        
410
 
420
                        $messageMapper->markAsRead($record->id);
411
                        $messageMapper->markAsRead($record->id);
421
                    }
412
                    }
422
                }
413
                }
423
                    
414
 
424
                return new JsonModel([
415
                return new JsonModel([
425
                    'success' => true,
416
                    'success' => true,
426
                    'data' => $messages,
417
                    'data' => $messages,
427
                    'pagination' => $records->getPages()
418
                    'pagination' => $records->getPages()
428
                ]);
419
                ]);
429
            }
420
            }
430
            
421
 
431
            
422
 
432
            return new JsonModel([
423
            return new JsonModel([
433
                'success' => false,
424
                'success' => false,
434
                'data' => $messages
425
                'data' => $messages
435
            ]);
426
            ]);
436
            
-
 
437
            
-
 
438
            
-
 
439
            
-
 
440
        } else {
427
        } else {
441
            return new JsonModel([
428
            return new JsonModel([
442
                'success' => false,
429
                'success' => false,
443
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
430
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
444
            ]);
431
            ]);
Línea 484... Línea 471...
484
     * @return \Laminas\View\Model\JsonModel
471
     * @return \Laminas\View\Model\JsonModel
485
     */
472
     */
486
    public function sendMessageAction()
473
    public function sendMessageAction()
487
    {
474
    {
488
        $request = $this->getRequest();
475
        $request = $this->getRequest();
489
        if($request->isPost()) {
476
        if ($request->isPost()) {
490
            
477
 
491
            
478
 
492
            $utilMapper = UtilMapper::getInstance($this->adapter);
479
            $utilMapper = UtilMapper::getInstance($this->adapter);
493
            $now = $utilMapper->getDatebaseNow();
480
            $now = $utilMapper->getDatebaseNow();
494
            
481
 
495
            $currentUserPlugin = $this->plugin('currentUserPlugin');
482
            $currentUserPlugin = $this->plugin('currentUserPlugin');
496
            $currentUser = $currentUserPlugin->getUser();
483
            $currentUser = $currentUserPlugin->getUser();
497
            
484
 
498
            $userMapper = UserMapper::getInstance($this->adapter);
485
            $userMapper = UserMapper::getInstance($this->adapter);
499
            
486
 
500
            $id = $this->params()->fromRoute('id');
487
            $id = $this->params()->fromRoute('id');
501
            if(!$id) {
488
            if (!$id) {
502
                return new JsonModel([
489
                return new JsonModel([
503
                    'success' => false,
490
                    'success' => false,
504
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
491
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
505
                ]);
492
                ]);
506
            }
493
            }
507
            
494
 
508
            
495
 
509
            $user = $userMapper->fetchOneByUuidAndNetworkId($id, $currentUser->network_id);
496
            $user = $userMapper->fetchOneByUuidAndNetworkId($id, $currentUser->network_id);
510
            if(!$user) {
497
            if (!$user) {
511
                return new JsonModel([
498
                return new JsonModel([
512
                    'success' => false,
499
                    'success' => false,
513
                    'data' => 'ERROR_REQUEST_IS_INVALID'
500
                    'data' => 'ERROR_REQUEST_IS_INVALID'
514
                ]);
501
                ]);
515
            }
502
            }
516
            
503
 
517
            
504
 
518
            $data = array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());
505
            $data = array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());
519
            
506
 
520
            $form = new SendForm();
507
            $form = new SendForm();
521
            $form->setData($data);
508
            $form->setData($data);
522
            
509
 
523
            if($form->isValid()) {
510
            if ($form->isValid()) {
524
                
511
 
525
                $dataPost = (array) $form->getData();
512
                $dataPost = (array) $form->getData();
526
                
513
 
527
                $conversationMapper = ConversationMapper::getInstance($this->adapter);
514
                $conversationMapper = ConversationMapper::getInstance($this->adapter);
528
                $conversation = $conversationMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
515
                $conversation = $conversationMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
529
                
516
 
530
                if($conversation) {
517
                if ($conversation) {
531
                    $conversation->receiver_status = Conversation::STATUS_NORMAL;
518
                    $conversation->receiver_status = Conversation::STATUS_NORMAL;
532
                    $conversation->sender_status = Conversation::STATUS_NORMAL;
519
                    $conversation->sender_status = Conversation::STATUS_NORMAL;
533
                    
520
 
534
                    if(!$conversationMapper->update($conversation)) {
521
                    if (!$conversationMapper->update($conversation)) {
535
                        return new JsonModel([
522
                        return new JsonModel([
536
                            'success'  => false,
523
                            'success'  => false,
537
                            'data' => $conversationMapper->getError()
524
                            'data' => $conversationMapper->getError()
538
                        ]);
525
                        ]);
539
                    }
526
                    }
540
                    
-
 
541
                } else {
527
                } else {
542
                    $conversation = new Conversation();
528
                    $conversation = new Conversation();
543
                    $conversation->sender_id = $currentUser->id;
529
                    $conversation->sender_id = $currentUser->id;
544
                    $conversation->sender_status = Conversation::STATUS_NORMAL;
530
                    $conversation->sender_status = Conversation::STATUS_NORMAL;
545
                    $conversation->receiver_id = $user->id;
531
                    $conversation->receiver_id = $user->id;
546
                    $conversation->receiver_status = Conversation::STATUS_NORMAL;
532
                    $conversation->receiver_status = Conversation::STATUS_NORMAL;
547
                   
533
 
548
                    if(!$conversationMapper->insert($conversation)) {
534
                    if (!$conversationMapper->insert($conversation)) {
549
                        return new JsonModel([
535
                        return new JsonModel([
550
                            'success'  => false,
536
                            'success'  => false,
551
                            'data' => $conversationMapper->getError()
537
                            'data' => $conversationMapper->getError()
552
                        ]);
538
                        ]);
553
                    }
539
                    }
554
                    
-
 
555
                }
540
                }
556
                $files = $this->getRequest()->getFiles()->toArray();
541
                $files = $this->getRequest()->getFiles()->toArray();
557
                $type = Message::TYPE_TEXT;
542
                $type = Message::TYPE_TEXT;
558
                
543
 
559
                
544
 
560
                /*
545
                /*
561
                $encoding = $this->params()->fromRoute('encoding');
546
                $encoding = $this->params()->fromRoute('encoding');
562
                if($encoding == 'base64') {
547
                if($encoding == 'base64') {
Línea 604... Línea 589...
604
                    
589
                    
Línea 605... Línea 590...
605
                } else {
590
                } else {
606
                    
591
                    
607
                  
592
                  
608
                }*/
593
                }*/
609
                
594
 
610
                if(isset($files['filename']) && empty($files['filename']['error'])) {
595
                if (isset($files['filename']) && empty($files['filename']['error'])) {
611
                    $message_tmp_filename  = $files['filename']['tmp_name'];
596
                    $message_tmp_filename  = $files['filename']['tmp_name'];
612
                    $message_filename      = $this->normalizeString($files['filename']['name']);
597
                    $message_filename      = $this->normalizeString($files['filename']['name']);
613
                    
598
 
614
                    $mime_type = mime_content_type($message_tmp_filename);
599
                    $mime_type = mime_content_type($message_tmp_filename);
615
                    
600
 
616
                    
601
 
617
                    if($mime_type == 'image/jpg' || $mime_type == 'image/jpeg' || $mime_type == 'image/png') {
602
                    if ($mime_type == 'image/jpg' || $mime_type == 'image/jpeg' || $mime_type == 'image/png') {
618
                        $type = Message::TYPE_IMAGE;
603
                        $type = Message::TYPE_IMAGE;
619
                    } else if($mime_type == 'video/webm' || $mime_type == 'video/mpeg' || $mime_type == 'video/mpg' || $mime_type == 'video/mp4') {
604
                    } else if ($mime_type == 'video/webm' || $mime_type == 'video/mpeg' || $mime_type == 'video/mpg' || $mime_type == 'video/mp4') {
620
                        $type = Message::TYPE_VIDEO;
605
                        $type = Message::TYPE_VIDEO;
621
                    } else if($mime_type == 'application/pdf') {
606
                    } else if ($mime_type == 'application/pdf') {
622
                        $type = Message::TYPE_DOCUMENT;
-
 
Línea -... Línea 607...
-
 
607
                        $type = Message::TYPE_DOCUMENT;
623
                    }
608
                    }
624
                }
609
                }
625
                
610
 
626
 
611
 
627
                
612
 
628
                
613
 
629
                $message = new Message();
614
                $message = new Message();
630
                $message->conversation_id = $conversation->id;
615
                $message->conversation_id = $conversation->id;
631
                $message->read = Message::NO;
616
                $message->read = Message::NO;
632
                $message->message = $type == Message::TYPE_TEXT ? $dataPost['message'] : '';
617
                $message->message = $type == Message::TYPE_TEXT ? $dataPost['message'] : '';
633
                $message->receiver_id = $user->id;
618
                $message->receiver_id = $user->id;
634
                $message->receiver_status = Message::STATUS_NORMAL;
-
 
635
                $message->sender_id = $currentUser->id;
-
 
Línea -... Línea 619...
-
 
619
                $message->receiver_status = Message::STATUS_NORMAL;
636
                $message->sender_status = Message::STATUS_NORMAL;
620
                $message->sender_id = $currentUser->id;
-
 
621
                $message->sender_status = Message::STATUS_NORMAL;
637
                $message->type = $type;
622
                $message->type = $type;
638
                
623
 
639
                
624
 
640
 
625
 
641
 
626
 
642
                
627
 
643
                $messageMapper = MessageMapper::getInstance($this->adapter);
628
                $messageMapper = MessageMapper::getInstance($this->adapter);
644
                if($messageMapper->insert($message)) {
629
                if ($messageMapper->insert($message)) {
645
                    
630
 
646
                    $message = $messageMapper->fetchOne($message->id);
631
                    $message = $messageMapper->fetchOne($message->id);
647
                    
632
 
648
                    
633
 
649
                    if( $type == Message::TYPE_DOCUMENT) {
634
                    if ($type == Message::TYPE_DOCUMENT) {
650
                        try {
635
                        try {
651
                            $target_path = $this->config['leaderslinked.fullpath.message'] . $message->uuid;
636
                            $target_path = $this->config['leaderslinked.fullpath.message'] . $message->uuid;
652
                            if(!file_exists($target_path)) {
637
                            if (!file_exists($target_path)) {
653
                                mkdir($target_path, 0755);
638
                                mkdir($target_path, 0755);
654
                            }
639
                            }
655
                            
640
 
656
                            $full_filename = $target_path  . DIRECTORY_SEPARATOR .$message_filename;
641
                            $full_filename = $target_path  . DIRECTORY_SEPARATOR . $message_filename;
657
                            /*
642
                            /*
658
                            if($encoding == 'base64') {
643
                            if($encoding == 'base64') {
659
                                $resultMoveOrRename = rename($message_tmp_filename , $full_filename);
644
                                $resultMoveOrRename = rename($message_tmp_filename , $full_filename);
660
                            } else {
645
                            } else {
661
                                $resultMoveOrRename = move_uploaded_file($message_tmp_filename , $full_filename);
646
                                $resultMoveOrRename = move_uploaded_file($message_tmp_filename , $full_filename);
662
                            }
647
                            }
663
                            */
648
                            */
664
                            
649
 
665
                            $resultMoveOrRename = move_uploaded_file($message_tmp_filename , $full_filename);
650
                            $resultMoveOrRename = move_uploaded_file($message_tmp_filename, $full_filename);
666
                            if($resultMoveOrRename) {
651
                            if ($resultMoveOrRename) {
667
                                
652
 
668
                                $message->type = $type;
653
                                $message->type = $type;
669
                                $message->filename = basename($message_filename);
654
                                $message->filename = basename($message_filename);
670
                                $messageMapper->update($message);
655
                                $messageMapper->update($message);
671
                            } else {
656
                            } else {
672
                                error_log('no se pudo mover o renombrar el documento : ' . $message_tmp_filename . ' al directorio : ' . $full_filename );
657
                                error_log('no se pudo mover o renombrar el documento : ' . $message_tmp_filename . ' al directorio : ' . $full_filename);
673
                            }
658
                            }
674
                        } catch(\Throwable $e) {
659
                        } catch (\Throwable $e) {
675
                            error_log($e->getTraceAsString());
660
                            error_log($e->getTraceAsString());
676
                        }
661
                        }
677
                    }
662
                    }
678
                    if( $type == Message::TYPE_IMAGE) {
663
                    if ($type == Message::TYPE_IMAGE) {
679
                        try {
664
                        try {
680
                            $target_path = $this->config['leaderslinked.fullpath.message'] . $message->uuid;
665
                            $target_path = $this->config['leaderslinked.fullpath.message'] . $message->uuid;
681
                            if(!file_exists($target_path)) {
666
                            if (!file_exists($target_path)) {
682
                                mkdir($target_path, 0755);
667
                                mkdir($target_path, 0755);
683
                            }
668
                            }
684
                            
669
 
685
                            list($target_width, $target_height) = explode('x', $this->config['leaderslinked.image_sizes.message_image_size']);
670
                            list($target_width, $target_height) = explode('x', $this->config['leaderslinked.image_sizes.message_image_size']);
686
                            
671
 
687
                            $message_filename = substr($message_filename, 0, strrpos($message_filename, '.'))  . '.png';
672
                            $message_filename = substr($message_filename, 0, strrpos($message_filename, '.'))  . '.png';
688
                           
673
 
689
                            //echo "target_path = $target_path message_tmp_filename = $message_tmp_filename message_filename = $message_filename"; exit;
674
                            //echo "target_path = $target_path message_tmp_filename = $message_tmp_filename message_filename = $message_filename"; exit;
690
                            
675
 
691
                            $crop_to_dimensions = false;
676
                            $crop_to_dimensions = false;
692
                            if(Image::uploadImage($message_tmp_filename, $target_path, $message_filename, $target_width, $target_height, $crop_to_dimensions )) {
677
                            if (Image::uploadImage($message_tmp_filename, $target_path, $message_filename, $target_width, $target_height, $crop_to_dimensions)) {
693
                                $message->type = $type;
678
                                $message->type = $type;
694
                                $message->filename = basename($message_filename);
679
                                $message->filename = basename($message_filename);
695
                                $messageMapper->update($message);
680
                                $messageMapper->update($message);
696
                            }
681
                            }
697
                        } catch(\Throwable $e) {
682
                        } catch (\Throwable $e) {
698
                            error_log($e->getTraceAsString());
683
                            error_log($e->getTraceAsString());
699
                        }
684
                        }
700
                    }
685
                    }
701
                    if( $type == Message::TYPE_VIDEO) {
686
                    if ($type == Message::TYPE_VIDEO) {
702
                        try {
687
                        try {
703
                            $target_path = $this->config['leaderslinked.fullpath.message'] . $message->uuid;
688
                            $target_path = $this->config['leaderslinked.fullpath.message'] . $message->uuid;
704
                            if(!file_exists($target_path)) {
689
                            if (!file_exists($target_path)) {
705
                                mkdir($target_path, 0755);
690
                                mkdir($target_path, 0755);
706
                            }
691
                            }
707
                            
692
 
708
                            $full_filename = $target_path  . DIRECTORY_SEPARATOR . $message_filename;
693
                            $full_filename = $target_path  . DIRECTORY_SEPARATOR . $message_filename;
709
                            
694
 
710
                            /*
695
                            /*
711
                            if($encoding == 'base64') {
696
                            if($encoding == 'base64') {
712
                                $resultMoveOrRename = rename($message_tmp_filename , $full_filename);
697
                                $resultMoveOrRename = rename($message_tmp_filename , $full_filename);
713
                            } else {
698
                            } else {
714
                                $resultMoveOrRename = move_uploaded_file($message_tmp_filename , $full_filename);
699
                                $resultMoveOrRename = move_uploaded_file($message_tmp_filename , $full_filename);
715
                            }*/
700
                            }*/
716
                            
701
 
717
                            $resultMoveOrRename = move_uploaded_file($message_tmp_filename , $full_filename);
702
                            $resultMoveOrRename = move_uploaded_file($message_tmp_filename, $full_filename);
718
                            if($resultMoveOrRename) {
703
                            if ($resultMoveOrRename) {
719
                                
704
 
720
                                $size = $this->config['leaderslinked.image_sizes.message_image_size'];
705
                                $size = $this->config['leaderslinked.image_sizes.message_image_size'];
721
                                $getFromSecound = 2;
706
                                $getFromSecound = 2;
722
                                
707
 
723
                                //extracción del cover
708
                                //extracción del cover
724
                                $generateFileName = substr($message_filename, 0, strrpos($message_filename, '.'));
709
                                $generateFileName = substr($message_filename, 0, strrpos($message_filename, '.'));
725
                                $generateFile =  $target_path  . DIRECTORY_SEPARATOR . $generateFileName .  '.png';
710
                                $generateFile =  $target_path  . DIRECTORY_SEPARATOR . $generateFileName .  '.png';
726
                                $cmd            = "/usr/bin/ffmpeg -i $full_filename -an -ss $getFromSecound -s $size $generateFile";
711
                                $cmd            = "/usr/bin/ffmpeg -i $full_filename -an -ss $getFromSecound -s $size $generateFile";
727
                                exec($cmd);
712
                                exec($cmd);
728
                                
713
 
729
                                
714
 
730
                                $message->type = $type;
715
                                $message->type = $type;
731
                                $message->filename = basename($message_filename);
716
                                $message->filename = basename($message_filename);
732
                                $message->image_preview = basename($generateFile);
717
                                $message->image_preview = basename($generateFile);
733
                                $messageMapper->update($message);
718
                                $messageMapper->update($message);
734
                                
719
 
735
                                $videoConvert = new VideoConvert();
720
                                $videoConvert = new VideoConvert();
736
                                $videoConvert->filename = $full_filename;
721
                                $videoConvert->filename = $full_filename;
737
                                $videoConvert->type = VideoConvert::TYPE_FEED;
722
                                $videoConvert->type = VideoConvert::TYPE_FEED;
738
                                
723
 
739
                                $videoConvertMapper = VideoConvertMapper::getInstance($this->adapter);
724
                                $videoConvertMapper = VideoConvertMapper::getInstance($this->adapter);
740
                                $videoConvertMapper->insert($videoConvert);
725
                                $videoConvertMapper->insert($videoConvert);
741
                            } else {
726
                            } else {
742
                                error_log('no se pudo mover o renombrar el documento : ' . $message_tmp_filename . ' al directorio : ' . $full_filename );
727
                                error_log('no se pudo mover o renombrar el documento : ' . $message_tmp_filename . ' al directorio : ' . $full_filename);
743
                            }
728
                            }
744
                        } catch(\Throwable $e) {
-
 
745
                            error_log($e->getTraceAsString());
-
 
746
                        }
-
 
Línea -... Línea 729...
-
 
729
                        } catch (\Throwable $e) {
-
 
730
                            error_log($e->getTraceAsString());
747
                    } 
731
                        }
748
                    
732
                    }
749
                    $message = $messageMapper->fetchOne($message->id);
733
 
750
                    
734
                    $message = $messageMapper->fetchOne($message->id);
751
                    if($message->filename) {
735
 
Línea 752... Línea 736...
752
                        $filename = $this->url()->fromRoute('storage', ['type' => 'message', 'filename' => $message->filename, 'code' => $message->uuid]);
736
                    if ($message->filename) {
753
 
737
                        $filename = $this->url()->fromRoute('storage', ['type' => 'message', 'filename' => $message->filename, 'code' => $message->uuid]);
754
                    } else {
738
                    } else {
755
                        $filename = '';
739
                        $filename = '';
756
                    }
740
                    }
757
                    
741
 
758
                    $dt = \DateTime::createFromFormat('Y-m-d H:i:s', $message->added_on);
742
                    $dt = \DateTime::createFromFormat('Y-m-d H:i:s', $message->added_on);
759
 
743
 
760
                    $userMapper->updateLastActivity($currentUser->id);
744
                    $userMapper->updateLastActivity($currentUser->id);
Línea 775... Línea 759...
775
                            'type' => $message->type,
759
                            'type' => $message->type,
776
                            'filename' => $filename,
760
                            'filename' => $filename,
777
                            'date' => $this->timeAgo($now, $now),
761
                            'date' => $this->timeAgo($now, $now),
778
                        ]
762
                        ]
779
                    ]);
763
                    ]);
780
                    
-
 
781
                    
-
 
782
                    
-
 
783
                } else {
764
                } else {
784
                    return new JsonModel([
765
                    return new JsonModel([
785
                        'success'   => false,
766
                        'success'   => false,
786
                        'data'   => $messageMapper->getError()
767
                        'data'   => $messageMapper->getError()
787
                    ]);
768
                    ]);
788
                }
769
                }
789
                
-
 
790
                
-
 
791
                
-
 
792
 
-
 
793
                
-
 
794
            } else {
770
            } else {
Línea 795... Línea 771...
795
 
771
 
796
                
772
 
797
                $messages = [];
773
                $messages = [];
798
                $form_messages = (array) $form->getMessages();
774
                $form_messages = (array) $form->getMessages();
799
                foreach($form_messages  as $fieldname => $field_messages)
-
 
800
                {
775
                foreach ($form_messages  as $fieldname => $field_messages) {
801
                    $messages[$fieldname] = array_values($field_messages);
776
                    $messages[$fieldname] = array_values($field_messages);
802
                }
777
                }
803
                
778
 
804
                return new JsonModel([
779
                return new JsonModel([
805
                    'success'   => false,
780
                    'success'   => false,
806
                    'data'   => $messages
781
                    'data'   => $messages
807
                ]);
782
                ]);
808
            }
-
 
809
            
-
 
810
            
-
 
811
              
783
            }
812
        } else {
784
        } else {
813
            return new JsonModel([
785
            return new JsonModel([
814
                'success' => false,
786
                'success' => false,
815
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
787
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
816
            ]);
788
            ]);
817
        }
-
 
818
 
789
        }
819
    }
790
    }
820
    
791
 
821
    
792
 
822
    
793
 
823
    private function normalizeString ($str = '')
794
    private function normalizeString($str = '')
824
    {
795
    {
825
        $basename  = substr($str, 0, strrpos($str, '.'));
796
        $basename  = substr($str, 0, strrpos($str, '.'));
826
        $basename  = str_replace('.', '-', $basename);
797
        $basename  = str_replace('.', '-', $basename);
827
        
798
 
828
        $extension  = substr($str, strrpos($str, '.'));
799
        $extension  = substr($str, strrpos($str, '.'));
829
        
800
 
830
        $str = $basename . $extension;
801
        $str = $basename . $extension;
831
        
802
 
832
        $str = strip_tags($str);
803
        $str = strip_tags($str);
833
        $str = preg_replace('/[\r\n\t ]+/', ' ', $str);
804
        $str = preg_replace('/[\r\n\t ]+/', ' ', $str);
834
        $str = preg_replace('/[\"\*\/\:\<\>\?\'\|\,]+/', ' ', $str);
805
        $str = preg_replace('/[\"\*\/\:\<\>\?\'\|\,]+/', ' ', $str);
835
        $str = strtolower($str);
806
        $str = strtolower($str);
836
        $str = html_entity_decode( $str, ENT_QUOTES, "utf-8" );
807
        $str = html_entity_decode($str, ENT_QUOTES, "utf-8");
837
        $str = htmlentities($str, ENT_QUOTES, "utf-8");
808
        $str = htmlentities($str, ENT_QUOTES, "utf-8");
838
        $str = preg_replace("/(&)([a-z])([a-z]+;)/i", '$2', $str);
809
        $str = preg_replace("/(&)([a-z])([a-z]+;)/i", '$2', $str);
839
        $str = str_replace(' ', '-', $str);
810
        $str = str_replace(' ', '-', $str);
840
        $str = rawurlencode($str);
811
        $str = rawurlencode($str);
841
        $str = str_replace('%', '-', $str);
812
        $str = str_replace('%', '-', $str);
842
        return trim(strtolower($str));
813
        return trim(strtolower($str));
843
    }
814
    }
844
    
815
 
845
    /**
816
    /**
846
     *
817
     *
847
     * @param string $timestamp
818
     * @param string $timestamp
848
     * @param string $now
819
     * @param string $now
849
     * @return string
820
     * @return string
850
     */
821
     */
851
    private function timeAgo($timestamp, $now = '')
822
    private function timeAgo($timestamp, $now = '')
852
    {
823
    {
853
        
824
 
854
        if($now) {
825
        if ($now) {
855
            $datetime1 = \DateTime::createFromFormat('Y-m-d H:i:s', $now);
826
            $datetime1 = \DateTime::createFromFormat('Y-m-d H:i:s', $now);
856
        } else {
827
        } else {
857
            $now = date('Y-m-d H:i:s');
828
            $now = date('Y-m-d H:i:s');
858
            $datetime1 = date_create($now);
829
            $datetime1 = date_create($now);
859
        }
830
        }
860
        $datetime2 = date_create($timestamp);
831
        $datetime2 = date_create($timestamp);
861
        
832
 
862
        $diff = date_diff($datetime1, $datetime2);
833
        $diff = date_diff($datetime1, $datetime2);
863
        $timemsg = '';
834
        $timemsg = '';
864
        if ($diff->y > 0) {
835
        if ($diff->y > 0) {
865
            $timemsg = $diff->y . ' año' . ($diff->y > 1 ? "s" : '');
836
            $timemsg = $diff->y . ' año' . ($diff->y > 1 ? "s" : '');
Línea 879... Línea 850...
879
        } else {
850
        } else {
880
            $timemsg = $timemsg . '';
851
            $timemsg = $timemsg . '';
881
        }
852
        }
882
        return $timemsg;
853
        return $timemsg;
883
    }
854
    }
884
    
-
 
885
    
-
 
886
}
855
}