Proyectos de Subversion LeadersLinked - Services

Rev

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

Rev 703 Rev 704
Línea 187... Línea 187...
187
                'success' => false,
187
                'success' => false,
188
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
188
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
189
            ]);
189
            ]);
190
        }
190
        }
Línea 191... Línea 191...
191
        
191
        
192
        $page = intval($this->params()->fromQuery('page', 0), 10);
192
        $page = (int) filter_var($this->params()->fromQuery('page'), FILTER_SANITIZE_NUMBER_INT);
Línea 193... Línea 193...
193
        $uuid = $this->params()->fromRoute('uuid');
193
        $uuid = $this->params()->fromRoute('uuid');
194
        
194
        
195
        if (!$uuid) {
195
        if (!$uuid) {
Línea 211... Línea 211...
211
                'success' => false,
211
                'success' => false,
212
                'data' => 'ERROR_REQUEST_IS_INVALID'
212
                'data' => 'ERROR_REQUEST_IS_INVALID'
213
            ]);
213
            ]);
214
        }
214
        }
Línea -... Línea 215...
-
 
215
 
-
 
216
        // Pre-calcular datos del usuario para evitar repetición
-
 
217
        $userData = $this->prepareUserData($user);
-
 
218
        $currentUserData = $this->prepareUserData($currentUser);
215
 
219
 
216
        $abuseReportMapper = AbuseReportMapper::getInstance($this->adapter);
220
        $abuseReportMapper = AbuseReportMapper::getInstance($this->adapter);
217
        $abuse_report_message_ids = $abuseReportMapper->fetchAllDataByUserReportingIdAndTypeReturnIds(
221
        $abuse_report_message_ids = $abuseReportMapper->fetchAllDataByUserReportingIdAndTypeReturnIds(
218
            $currentUser->id, 
222
            $currentUser->id, 
219
            AbuseReport::TYPE_INMAIL_MESSAGE
223
            AbuseReport::TYPE_INMAIL_MESSAGE
Línea 225... Línea 229...
225
        $conversation = $conversationMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
229
        $conversation = $conversationMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
Línea 226... Línea 230...
226
        
230
        
Línea 227... Línea 231...
227
        $messages = [];
231
        $messages = [];
228
        
232
        
-
 
233
        if ($conversation) {
Línea 229... Línea 234...
229
        if ($conversation) {
234
            $paginator = $messageMapper->getAllMessagesPaginatorByConversationId($conversation->id, $page ? $page : 1, 10);
230
            $records = $messageMapper->getAllMessagesPaginatorByConversationId($conversation->id, $page);
235
            $records = $paginator->getCurrentItems();
-
 
236
 
-
 
237
            foreach ($records as $record) {
Línea 231... Línea -...
231
 
-
 
232
            foreach ($records as $record) {
238
                $timeElapsedString = $this->timeAgo($record->added_on, $now);
233
                $timeElapsedString = $this->timeAgo($record->added_on, $now);
239
                $isOwnMessage = $record->sender_id == $currentUser->id;
234
 
-
 
235
                if ($record->sender_id == $currentUser->id) {
-
 
236
                    array_push($messages, [
240
                $isReported = in_array($record->id, $abuse_report_message_ids);
237
                        'uuid' => $record->uuid,
-
 
238
                        'sender_name' => trim($currentUser->first_name . ' ' . $currentUser->last_name),
241
 
239
                        'sender_image' => $this->url()->fromRoute('storage', [
-
 
240
                            'type' => 'user', 
-
 
241
                            'filename' => $currentUser->image, 
-
 
242
                            'code' => $currentUser->uuid
-
 
243
                        ], ['force_canonical' => true]),
242
                if ($isOwnMessage) {
244
                        'sender_profile' => $this->url()->fromRoute('profile/view', ['id' => $currentUser->uuid]),
-
 
245
                        'receiver_name' => trim($user->first_name . ' ' . $user->last_name),
-
 
246
                        'receiver_image' => $this->url()->fromRoute('storage', [
-
 
247
                            'type' => 'user', 
-
 
248
                            'filename' => $user->image, 
243
                    $messages[] = $this->buildMessageData(
249
                            'code' => $user->uuid
-
 
250
                        ], ['force_canonical' => true]),
-
 
251
                        'receiver_profile' => $this->url()->fromRoute('profile/view', ['id' => $user->uuid]),
-
 
252
                        'side' => 'left',
-
 
253
                        'message' => $record->message,
-
 
254
                        'type' => $record->type,
-
 
255
                        'filename' => $record->filename ? $this->url()->fromRoute('storage', [
-
 
256
                            'type' => 'message', 
244
                        $record,
257
                            'filename' => $record->filename, 
245
                        $currentUserData,
258
                            'code' => $record->uuid
246
                        $userData,
259
                        ], ['force_canonical' => true]) : '',
-
 
260
                        'date' => $timeElapsedString,
247
                        'left',
261
                        'url_abuse_report' => '', // No se puede reportar mensajes propios
-
 
262
                    ]);
248
                        $timeElapsedString,
263
                } 
-
 
264
                else {
-
 
265
                    if (in_array($record->id, $abuse_report_message_ids)) {
249
                        '' // No se puede reportar mensajes propios
266
                        array_push($messages, [
250
                    );
267
                            'uuid' => $record->uuid,
-
 
268
                            'sender_name' => trim($user->first_name . ' ' . $user->last_name),
-
 
269
                            'sender_image' => $this->url()->fromRoute('storage', [
-
 
270
                                'type' => 'user', 
-
 
271
                                'filename' => $user->image, 
-
 
272
                                'code' => $user->uuid
-
 
273
                            ], ['force_canonical' => true]),
-
 
274
                            'sender_profile' => $this->url()->fromRoute('profile/view', ['id' => $user->uuid]),
-
 
275
                            'receiver_name' => trim($currentUser->first_name . ' ' . $currentUser->last_name),
-
 
276
                            'receiver_image' => $this->url()->fromRoute('storage', [
-
 
277
                                'type' => 'user', 
-
 
278
                                'filename' => $currentUser->image, 
251
                } else {
279
                                'code' => $user->uuid
-
 
280
                            ], ['force_canonical' => true]),
-
 
281
                            'receiver_profile' => $this->url()->fromRoute('profile/view', ['id' => $currentUser->uuid]),
252
                    if ($isReported) {
282
                            'side' => 'right',
253
                        $messages[] = $this->buildReportedMessageData(
283
                            'message' => 'LABEL_ABUSE_CONTENT_REPORTED',
-
 
284
                            'type' => Message::TYPE_TEXT,
254
                            $record,
285
                            'filename' => '',
255
                            $userData,
286
                            'date' => $timeElapsedString,
256
                            $currentUserData,
287
                            'url_abuse_report' => '', // Ya no se puede reportar
257
                            $timeElapsedString
288
                        ]);
258
                        );
289
                    } else {
259
                    } else {
Línea 290... Línea 260...
290
                        $url_abuse_report = $this->url()->fromRoute('helpers/abuse-report', [
260
                        $url_abuse_report = $this->url()->fromRoute('helpers/abuse-report', [
291
                            'type' => 'message', 
261
                            'type' => 'message', 
292
                            'id' => $record->uuid
-
 
293
                        ], ['force_canonical' => true]);
-
 
294
 
262
                            'id' => $record->uuid
295
                        array_push($messages, [
-
 
296
                            'uuid' => $record->uuid,
-
 
297
                            'sender_name' => trim($user->first_name . ' ' . $user->last_name),
-
 
298
                            'sender_image' => $this->url()->fromRoute('storage', [
-
 
299
                                'type' => 'user', 
-
 
300
                                'filename' => $user->image, 
-
 
301
                                'code' => $user->uuid
263
                        ], ['force_canonical' => true]);
302
                            ], ['force_canonical' => true]),
-
 
303
                            'sender_profile' => $this->url()->fromRoute('profile/view', ['id' => $user->uuid]),
-
 
304
                            'receiver_name' => trim($currentUser->first_name . ' ' . $currentUser->last_name),
-
 
305
                            'receiver_image' => $this->url()->fromRoute('storage', [
-
 
306
                                'type' => 'user', 
264
 
307
                                'filename' => $currentUser->image, 
-
 
308
                                'code' => $user->uuid
-
 
309
                            ], ['force_canonical' => true]),
-
 
310
                            'receiver_profile' => $this->url()->fromRoute('profile/view', ['id' => $currentUser->uuid]),
-
 
311
                            'side' => 'right',
-
 
312
                            'message' => $record->message,
-
 
313
                            'type' => $record->type,
-
 
314
                            'filename' => $record->filename ? $this->url()->fromRoute('storage', [
265
                        $messages[] = $this->buildMessageData(
315
                                'type' => 'message', 
266
                            $record,
316
                                'filename' => $record->filename, 
267
                            $userData,
Línea 317... Línea 268...
317
                                'code' => $record->uuid
268
                            $currentUserData,
318
                            ], ['force_canonical' => true]) : '',
269
                            'right',
319
                            'date' => $timeElapsedString,
270
                            $timeElapsedString,
320
                            'url_abuse_report' => $url_abuse_report,
271
                            $url_abuse_report
Línea 321... Línea 272...
321
                        ]);
272
                        );
322
 
273
 
323
                        $messageMapper->markAsRead($record->id);
274
                        $messageMapper->markAsRead($record->id);
-
 
275
                    }
324
                    }
276
                }
-
 
277
            }
-
 
278
 
-
 
279
            return new JsonModel([
-
 
280
                'success' => true,
-
 
281
                'data' => [
-
 
282
                    'total' => [
-
 
283
                        'count' => $paginator->getTotalItemCount(),
-
 
284
                        'pages' => $paginator->getPages()->pageCount,
325
                }
285
                    ],
326
            }
286
                    'current' => [
Línea 327... Línea 287...
327
 
287
                        'items'    => $messages,
328
            return new JsonModel([
288
                        'page'     => $paginator->getCurrentPageNumber(),
329
                'success' => true,
289
                        'count'    => $paginator->getCurrentItemCount(),
330
                'data' => $messages,
290
                    ]
-
 
291
                ]
-
 
292
            ]);
-
 
293
        }
-
 
294
 
-
 
295
        return new JsonModel([
-
 
296
            'success' => true,
-
 
297
            'data' => [
-
 
298
                'total' => [
-
 
299
                    'count' => 0,
331
                'pagination' => $records->getPages()
300
                    'pages' => 0,
332
            ]);
301
                ],
Línea -... Línea 302...
-
 
302
                'current' => [
-
 
303
                    'items'    => $messages,
-
 
304
                    'page'     => 1,
-
 
305
                    'count'    => 0,
-
 
306
                ]
-
 
307
            ]
-
 
308
        ]);
-
 
309
    }
-
 
310
 
-
 
311
    /**
-
 
312
     * Prepara los datos del usuario para evitar repetición en la construcción de mensajes
-
 
313
     */
-
 
314
    private function prepareUserData($user)
-
 
315
    {
-
 
316
        return [
-
 
317
            'name' => trim($user->first_name . ' ' . $user->last_name),
-
 
318
            'image_url' => $this->url()->fromRoute('storage', [
-
 
319
                'type' => 'user', 
-
 
320
                'filename' => $user->image, 
-
 
321
                'code' => $user->uuid
-
 
322
            ], ['force_canonical' => true]),
-
 
323
            'profile_url' => $this->url()->fromRoute('profile/view', ['id' => $user->uuid])
-
 
324
        ];
-
 
325
    }
-
 
326
 
-
 
327
    /**
-
 
328
     * Construye los datos de un mensaje normal
-
 
329
     */
-
 
330
    private function buildMessageData($record, $senderData, $receiverData, $side, $timeElapsedString, $abuseReportUrl)
-
 
331
    {
-
 
332
        return [
-
 
333
            'uuid' => $record->uuid,
-
 
334
            'sender_name' => $senderData['name'],
-
 
335
            'sender_image' => $senderData['image_url'],
-
 
336
            'sender_profile' => $senderData['profile_url'],
-
 
337
            'receiver_name' => $receiverData['name'],
-
 
338
            'receiver_image' => $receiverData['image_url'],
-
 
339
            'receiver_profile' => $receiverData['profile_url'],
-
 
340
            'side' => $side,
-
 
341
            'message' => $record->message,
-
 
342
            'type' => $record->type,
-
 
343
            'filename' => $record->filename ? $this->url()->fromRoute('storage', [
-
 
344
                'type' => 'message', 
-
 
345
                'filename' => $record->filename, 
-
 
346
                'code' => $record->uuid
-
 
347
            ], ['force_canonical' => true]) : '',
-
 
348
            'date' => $timeElapsedString,
-
 
349
            'url_abuse_report' => $abuseReportUrl,
-
 
350
        ];
-
 
351
    }
-
 
352
 
-
 
353
    /**
-
 
354
     * Construye los datos de un mensaje reportado
-
 
355
     */
-
 
356
    private function buildReportedMessageData($record, $senderData, $receiverData, $timeElapsedString)
-
 
357
    {
-
 
358
        return [
-
 
359
            'uuid' => $record->uuid,
-
 
360
            'sender_name' => $senderData['name'],
-
 
361
            'sender_image' => $senderData['image_url'],
-
 
362
            'sender_profile' => $senderData['profile_url'],
-
 
363
            'receiver_name' => $receiverData['name'],
-
 
364
            'receiver_image' => $receiverData['image_url'],
-
 
365
            'receiver_profile' => $receiverData['profile_url'],
333
        }
366
            'side' => 'right',
334
 
367
            'message' => 'LABEL_ABUSE_CONTENT_REPORTED',
335
        return new JsonModel([
368
            'type' => Message::TYPE_TEXT,
336
            'success' => true,
369
            'filename' => '',
337
            'data' => $messages,
370
            'date' => $timeElapsedString,