Proyectos de Subversion LeadersLinked - Services

Rev

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

Rev Autor Línea Nro. Línea
283 www 1
<?php
2
namespace LeadersLinked\Library;
3
 
4
use LeadersLinked\Model\User;
5
use LeadersLinked\Model\UserProfile;
6
use LeadersLinked\Model\Company;
7
use LeadersLinked\Model\Group;
8
 
9
class Storage
10
{
11
    /**
12
     *
13
     * @var\LeadersLinked\Library\Storage
14
     */
15
    private static $_instance;
16
 
17
    /**
18
     *
19
     * @var array
20
     */
21
    private $config;
22
 
23
 
24
    /**
25
     *
26
     * @var S3Files
27
     */
28
    private $s3Files;
29
 
30
    /**
31
     *
32
     * @param array $config
33
     */
34
    private function __construct($config)
35
    {
36
        $this->config = $config;
37
        $this->s3Files = S3Files::getInstance($this->config);
38
    }
39
 
40
    /**
41
     *
42
     * @param array $config
43
     * @return \LeadersLinked\Library\Storage
44
     */
45
    public static function getInstance($config)
46
    {
47
        if(self::$_instance == null) {
48
            self::$_instance = new Storage($config);
49
        }
50
 
51
        return self::$_instance;
52
    }
53
 
54
    /**
55
     *
56
     * @param User $user
57
     * @return string
58
     */
59
    public function getUserImage($user)
60
    {
61
        if($user->image) {
62
            $remoto = $this->getPathUser() . '/' . $user->uuid . '/' .  $user->image;
63
            if($this->s3Files->objectExist($remoto)) {
287 www 64
                return $this->s3Files->getPresignedUrl($remoto);
65
 
283 www 66
            }
67
        }
68
 
69
        $remoto = $this->config['leaderslinked.images_default.user_image'];
70
        return $this->s3Files->getPresignedUrl($remoto);
71
    }
72
 
73
 
74
    /**
75
     *
76
     * @param User $user
77
     * @return string
78
     */
79
    public function getUserImageForCodeAndFilename($code, $filename)
80
    {
81
        if($filename) {
82
            $remoto = $this->getPathUser() . '/' . $code . '/' .  $filename;
83
            if($this->s3Files->objectExist($remoto)) {
287 www 84
                return $this->s3Files->getPresignedUrl($remoto);
85
 
283 www 86
            }
87
        }
88
 
89
        $remoto = $this->config['leaderslinked.images_default.user_image'];
287 www 90
        return $this->s3Files->getPresignedUrl($remoto);
91
 
283 www 92
    }
93
 
94
    /**
95
     *
96
     * @param User $user
97
     * @param UserProfile $userProfile
98
     * @return string
99
     */
100
    public function getUserProfileImage($user, $userProfile)
101
    {
102
        if($userProfile->image) {
103
            $remoto = $this->getPathUser() . '/' . $user->uuid . '/' .  $userProfile->image;
104
            if($this->s3Files->objectExist($remoto)) {
287 www 105
                return $this->s3Files->getPresignedUrl($remoto);
106
 
283 www 107
            }
108
        }
109
 
110
        $remoto = $this->config['leaderslinked.images_default.user_profile'];
287 www 111
        return $this->s3Files->getPresignedUrl($remoto);
112
 
283 www 113
    }
114
 
115
    /**
116
     *
117
     * @param User $user
118
     * @param UserProfile $userProfile
119
     * @return string
120
     */
121
    public function getUserProfileCover($user, $userProfile)
122
    {
123
        if($userProfile->cover) {
124
            $remoto = $this->getPathUser() . '/' . $user->uuid . '/' .  $userProfile->cover;
125
            if($this->s3Files->objectExist($remoto)) {
287 www 126
                return $this->s3Files->getPresignedUrl($remoto);
127
 
283 www 128
            }
129
        }
130
 
131
        $remoto = $this->config['leaderslinked.images_default.user_cover'];
287 www 132
        return $this->s3Files->getPresignedUrl($remoto);
133
 
283 www 134
    }
135
 
136
    /**
137
     *
138
     * @param Company $company
139
     * @return string
140
     */
141
    public function getCompanyImage($company)
142
    {
143
        if($company->image) {
144
            $remoto = $this->getPathCompany() . '/' . $company->uuid . '/' .  $company->image;
145
            if($this->s3Files->objectExist($remoto)) {
287 www 146
                return $this->s3Files->getPresignedUrl($remoto);
147
 
283 www 148
            }
149
        }
150
 
151
        $remoto = $this->config['leaderslinked.images_default.company_profile'];
287 www 152
        return $this->s3Files->getPresignedUrl($remoto);
153
 
283 www 154
    }
155
 
156
    /**
157
     *
158
     * @param string $code
159
     * @param string $filename
160
     * @return string
161
     */
162
    public function getCompanyImageForCodeAndFilename($code, $filename)
163
    {
164
        if($filename) {
165
            $remoto = $this->getPathCompany() . '/' . $code . '/' .  $filename;
166
            if($this->s3Files->objectExist($remoto)) {
287 www 167
                return $this->s3Files->getPresignedUrl($remoto);
168
 
283 www 169
            }
170
        }
171
 
172
        $remoto = $this->config['leaderslinked.images_default.company_profile'];
287 www 173
        return $this->s3Files->getPresignedUrl($remoto);
174
 
283 www 175
    }
176
 
177
    /**
178
     *
179
     * @param Company $company
180
     * @return string
181
     */
182
    public function getCompanyCover($company)
183
    {
184
        if($company->cover) {
185
            $remoto = $this->getPathCompany() . '/' . $company->uuid . '/' .  $company->cover;
186
            if($this->s3Files->objectExist($remoto)) {
287 www 187
                return $this->s3Files->getPresignedUrl($remoto);
188
 
283 www 189
            }
190
        }
191
 
192
        $remoto = $this->config['leaderslinked.images_default.company_cover'];
287 www 193
        return $this->s3Files->getPresignedUrl($remoto);
194
 
283 www 195
    }
196
 
197
    /**
198
     *
199
     * @param Group $group
200
     * @return string
201
     */
202
    public function getGroupImage($group)
203
    {
204
        if($group->image) {
205
            $remoto = $this->getPathGroup() . '/' . $group->uuid . '/' .  $group->image;
206
            if($this->s3Files->objectExist($remoto)) {
287 www 207
                return $this->s3Files->getPresignedUrl($remoto);
208
 
283 www 209
            }
210
        }
211
 
212
        $remoto = $this->config['leaderslinked.images_default.group_profile'];
287 www 213
        return $this->s3Files->getPresignedUrl($remoto);
214
 
283 www 215
    }
216
 
217
    /**
218
     *
219
     * @param string $code
220
     * @param string $filename
221
     * @return string
222
     */
223
    public function getGroupImageForCodeAndFilename($code, $filename)
224
    {
225
        if($filename) {
226
            $remoto = $this->getPathGroup() . '/' . $code . '/' .  $filename;
227
            if($this->s3Files->objectExist($remoto)) {
287 www 228
                return $this->s3Files->getPresignedUrl($remoto);
229
 
283 www 230
            }
231
        }
232
 
233
        $remoto = $this->config['leaderslinked.images_default.group_profile'];
287 www 234
        return $this->s3Files->getPresignedUrl($remoto);
235
 
283 www 236
    }
237
 
238
    /**
239
     *
240
     * @param Group $group
241
     * @return string
242
     */
243
    public function getGroupCover($group)
244
    {
245
        if($group->cover) {
246
            $remoto = $this->getPathGroup() . '/' . $group->uuid . '/' .  $group->cover;
247
            if($this->s3Files->objectExist($remoto)) {
287 www 248
                return $this->s3Files->getPresignedUrl($remoto);
249
 
283 www 250
            }
251
        }
252
 
253
        $remoto = $this->config['leaderslinked.images_default.group_cover'];
287 www 254
        return $this->s3Files->getPresignedUrl($remoto);
255
 
283 www 256
    }
257
 
258
    /**
259
     *
260
     * @param Group $group
261
     * @return string
262
     */
263
    public function getGenericImage($path, $code, $filename)
264
    {
265
        $remoto = $path . '/' . $code. '/' .  $filename;
266
        if($this->s3Files->objectExist($remoto)) {
287 www 267
            return $this->s3Files->getPresignedUrl($remoto);
268
 
283 www 269
        } else {
270
            $remoto = $this->config['leaderslinked.images_default.no_image'];
287 www 271
            return $this->s3Files->getPresignedUrl($remoto);
272
 
283 www 273
        }
274
    }
275
 
276
    /**
277
     *
298 www 278
     * @param string $path
279
     * @param string $code,
280
     * @param string $filename
281
     * @param boolean $checkExists
283 www 282
     * @return string
283
     */
298 www 284
    public function getGenericFile($path, $code, $filename, $checkExists = true)
283 www 285
    {
286
        $remoto = $path . '/' . $code. '/' .  $filename;
298 www 287
 
288
        if($checkExists) {
289
            if($this->s3Files->objectExist($remoto)) {
290
                return $this->s3Files->getPresignedUrl($remoto);
291
 
292
            } else {
293
                return;
294
            }
295
        }
296
        return $this->s3Files->getPresignedUrl($remoto);
283 www 297
    }
298
 
320 www 299
    /**
300
     *
301
     * @param string $path
302
     * @param string $code
303
     * @param string $filename
304
     * @return string
305
     */
306
    public function delete($path, $code, $filename)
307
    {
308
        $remoto = $path . '/' . $code. '/' .  $filename;
309
        try {
310
            $this->s3Files->deleteObject($remoto);
311
            return true;
312
        } catch (\Exception $exception) {
313
            //echo "No se pudo borrar el archivo : $remoto (" . $exception->getMessage() . ")";
314
            return false;
315
        }
316
 
317
    }
318
 
295 www 319
 
320
 
302 www 321
    /**
322
     *
323
     * @return string
324
     */
325
    public function getPathMedia()
326
    {
327
        return $this->config['leaderslinked.minio.fullpath_media'];
328
    }
295 www 329
 
330
 
283 www 331
    /**
324 www 332
     *
333
     * @return string
334
     */
335
    public function getPathHabitEmoji()
336
    {
337
        return $this->config['leaderslinked.minio.fullpath_habit_emoji'];
338
    }
339
 
340
    /**
341
     *
342
     * @return string
343
     */
344
    public function getPathHabitContent()
345
    {
346
        return $this->config['leaderslinked.minio.fullpath_habit_content'];
347
    }
348
 
349
 
350
    /**
283 www 351
     *
352
     * @return string
353
     */
354
    public function getPathGroup()
355
    {
356
        return $this->config['leaderslinked.minio.fullpath_group'];
357
    }
358
 
359
    /**
360
     *
361
     * @return string
362
     */
363
    public function getPathUser()
364
    {
365
        return $this->config['leaderslinked.minio.fullpath_user'];
366
    }
367
 
368
    /**
369
     *
370
     * @return string
371
     */
372
    public function getPathImage()
373
    {
374
        return $this->config['leaderslinked.minio.fullpath_image'];
375
    }
376
 
377
    /**
378
     *
379
     * @return string
380
     */
381
    public function getPathJob()
382
    {
383
        return $this->config['leaderslinked.minio.fullpath_job'];
384
    }
385
 
386
    /**
387
     *
388
     * @return string
389
     */
390
    public function getPathCompany()
391
    {
392
        return $this->config['leaderslinked.minio.fullpath_company'];
393
    }
394
 
395
    /**
396
     *
397
     * @return string
398
     */
399
    public function getPathFeed()
400
    {
401
        return $this->config['leaderslinked.minio.fullpath_feed'];
402
    }
403
 
295 www 404
 
405
 
283 www 406
    /**
407
     *
408
     * @return string
409
     */
295 www 410
    public function getPathMessage()
411
    {
412
        return $this->config['leaderslinked.minio.fullpath_message'];
413
    }
414
 
415
    /**
416
     *
417
     * @return string
418
     */
283 www 419
    public function getPathPost()
420
    {
421
        return $this->config['leaderslinked.minio.fullpath_post'];
422
    }
423
 
424
    /**
425
     *
426
     * @return string
427
     */
428
    public function getPathMicrolearningTopic()
429
    {
430
        return $this->config['leaderslinked.minio.fullpath_microlearning_topic'];
431
    }
432
 
433
    /**
434
     *
435
     * @return string
436
     */
437
    public function getPathMicrolearningCapsule()
438
    {
439
        return $this->config['leaderslinked.minio.fullpath_microlearning_capsule'];
440
    }
441
 
442
    /**
443
     *
444
     * @return string
445
     */
446
    public function getPathMicrolearningSlide()
447
    {
448
        return $this->config['leaderslinked.minio.fullpath_microlearning_slide'];
449
    }
450
 
451
    /**
452
     *
453
     * @return string
454
     */
455
    public function getPathJobDescription()
456
    {
457
        return $this->config['leaderslinked.minio.fullpath_job_description'];
458
    }
459
 
460
    /**
461
     *
462
     * @return string
463
     */
295 www 464
    public function getPathSelfEvaluation()
283 www 465
    {
466
        return $this->config['leaderslinked.minio.fullpath_self_evaluation'];
467
    }
468
 
469
    /**
470
     *
471
     * @return string
472
     */
473
    public function getPathRecruitmentSelection()
474
    {
475
        return $this->config['leaderslinked.minio.fullpath_recruitment_selection'];
476
    }
477
 
478
    /**
479
     *
480
     * @return string
481
     */
482
    public function getPathPerformanceEvaluation()
483
    {
484
        return $this->config['leaderslinked.minio.fullpath_performance_evaluation'];
485
    }
486
 
487
    /**
488
     *
489
     * @return string
490
     */
491
    public function getPathPlanningObjectivesAnGoals()
492
    {
493
        return $this->config['leaderslinked.minio.fullpath_planning_objectives_and_goals'];
494
    }
495
 
496
    /**
497
     *
498
     * @return string
499
     */
500
    public function getPathSurvey()
501
    {
502
        return $this->config['leaderslinked.minio.fullpath_survey'];
503
    }
504
 
505
    /**
506
     *
507
     * @return string
508
     */
509
    public function getPathNetwork()
510
    {
511
        return $this->config['leaderslinked.minio.fullpath_network'];
512
    }
513
 
514
    /**
515
     *
516
     * @return string
517
     */
518
    public function getPathEngagementReward()
519
    {
520
        return $this->config['leaderslinked.minio.fullpath_engagement_reward'];
521
    }
522
 
523
    /**
524
     *
525
     * @return string
526
     */
527
    public function getPathDailyPulse()
528
    {
529
        return $this->config['leaderslinked.minio.fullpath_daily_pulse'];
530
    }
531
 
532
    /**
533
     *
534
     * @return string
535
     */
536
    public function getPathKnowledgeArea()
537
    {
538
        return $this->config['leaderslinked.minio.fullpath_knowledge_area'];
539
    }
540
 
541
    /**
542
     *
543
     * @return string
544
     */
545
    public function getPathMyCoach()
546
    {
547
        return $this->config['leaderslinked.minio.fullpath_my_coach'];
548
    }
549
 
550
    /**
551
     *
552
     * @param String $filename
553
     * return boolean
554
     */
555
    public function objectExist($filename)
556
    {
285 www 557
        return $this->s3Files->objectExist($filename);
283 www 558
    }
559
 
560
    /**
561
     *
302 www 562
     * @param string $remote
563
     * @param string $local
283 www 564
     * @return boolean
565
     */
302 www 566
    public function putObject($remote, $local)
283 www 567
    {
302 www 568
        return $this->s3Files->putObject($remote, $local);
283 www 569
    }
570
 
571
 
572
    /**
573
     *
574
     * @param string $filename
575
 
576
     * @return boolean
577
     */
578
    public function deleteObject($filename)
579
    {
285 www 580
        return $this->s3Files->deleteObject($filename);
283 www 581
    }
582
 
583
 
584
    /**
585
     *
586
     * @param string $path
587
     * @param string $code
588
     * @param string $filename
589
     * @return boolean
590
     */
591
    public function deleteFile($path, $code, $filename)
592
    {
593
        if($code) {
594
            $remoto = $path . '/' . $code. '/' .  $filename;
595
        } else {
596
            $remoto = $path . '/' .  $filename;
597
        }
598
        if($this->s3Files->objectExist($remoto)) {
599
            return $this->s3Files->deleteObject($remoto);
600
        } else {
601
            return true;
602
        }
603
    }
295 www 604
 
605
    /**
606
     *
607
     * @param string $path
608
     * @param string $code
609
     * @return boolean
610
     */
611
    public function deleteDirectory($path, $code)
612
    {
613
        $remoto = $path . '/' . $code;
614
        if($this->s3Files->objectExist($remoto)) {
615
            return $this->s3Files->deleteObject($remoto);
616
        } else {
617
            return true;
618
        }
619
    }
620
 
283 www 621
 
622
 
623
    /**
624
     *
625
     * @param string $path
626
     * @param string $code
290 www 627
     * @param string $local_filename
283 www 628
     * @return boolean
629
     */
290 www 630
    public function putFile($path, $code, $local_filename)
283 www 631
    {
632
        if($code) {
290 www 633
            $remote = $path . '/' . $code . '/' . basename($local_filename);
283 www 634
        } else {
290 www 635
            $remote = $path. '/' . basename($local_filename);
283 www 636
        }
637
 
290 www 638
 
639
        $result = $this->s3Files->putObject($remote, $local_filename);
640
        if(file_exists($local_filename)) {
641
            @unlink($local_filename);
642
        }
283 www 643
 
644
        return $result;
645
    }
646
 
647
 
648
    /**
649
     *
650
     * @param string $path
651
     * @param string $code
652
     * @param string $tempfile
653
     * @param string $filename
654
     * @return boolean
655
     */
656
    public function moveAndPutFile($path, $code, $tempfile, $filename)
657
    {
658
        if($code) {
659
            $filepath = $path . '/' . $code;
660
        } else {
661
            $filepath = $path;
662
        }
663
 
664
        $filename = sys_get_temp_dir() . DIRECTORY_SEPARATOR . $filename;
665
 
666
        move_uploaded_file($tempfile, $filename);
667
 
285 www 668
        $result = $this->s3Files->putObject($filename, $filepath);
283 www 669
        @unlink($filename);
670
 
671
        return $result;
672
    }
673
 
674
    /**
675
     *
676
     * @return string
677
     */
678
    public function getTempPath()
679
    {
680
        return 'data' . DIRECTORY_SEPARATOR . 'storage';
681
    }
682
 
683
 
684
 
685
 
686
 
687
 
688
}