PhotoHandler::getAlbumPhotoAdminPage()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 8
nc 1
nop 2
dl 0
loc 11
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace XoopsModules\Extgallery;
4
5
/**
6
 * ExtGallery Class Manager
7
 *
8
 * You may not change or alter any portion of this comment or credits
9
 * of supporting developers from this source code or any supporting source code
10
 * which is considered copyrighted (c) material of the original comment or credit authors.
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
 *
15
 * @copyright   {@link https://xoops.org/ XOOPS Project}
16
 * @license     GNU GPL 2 (https://www.gnu.org/licenses/old-licenses/gpl-2.0.html)
17
 * @author      Zoullou (http://www.zoullou.net)
18
 * @package     ExtGallery
19
 */
20
21
use Criteria;
22
use CriteriaCompo;
23
use Image_Transform;
24
use Xmf\Request;
25
use XoopsDatabase;
26
use XoopsMediaUploader;
27
use XoopsModules\Extgallery;
28
use XoopsModules\Tag;
29
use XoopsModules\Tag\Helper;
0 ignored issues
show
Bug introduced by
This use statement conflicts with another class in this namespace, XoopsModules\Extgallery\Helper. Consider defining an alias.

Let?s assume that you have a directory layout like this:

.
|-- OtherDir
|   |-- Bar.php
|   `-- Foo.php
`-- SomeDir
    `-- Foo.php

and let?s assume the following content of Bar.php:

// Bar.php
namespace OtherDir;

use SomeDir\Foo; // This now conflicts the class OtherDir\Foo

If both files OtherDir/Foo.php and SomeDir/Foo.php are loaded in the same runtime, you will see a PHP error such as the following:

PHP Fatal error:  Cannot use SomeDir\Foo as Foo because the name is already in use in OtherDir/Foo.php

However, as OtherDir/Foo.php does not necessarily have to be loaded and the error is only triggered if it is loaded before OtherDir/Bar.php, this problem might go unnoticed for a while. In order to prevent this error from surfacing, you must import the namespace with a different alias:

// Bar.php
namespace OtherDir;

use SomeDir\Foo as SomeDirFoo; // There is no conflict anymore.
Loading history...
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
use function md5;
45
46
47
48
49
50
51
52
53
54
55
56
/**
57
 * Class PhotoHandler
58
 */
59
class PhotoHandler extends Extgallery\PersistableObjectHandler
60
{
61
    public $photoUploader = null;
62
63
    /**
64
     * @param \XoopsDatabase|null $db
65
     * @param                     $type
66
     */
67
    public function __construct(XoopsDatabase $db, $type)
68
    {
69
        parent::__construct($db, 'extgallery_' . $type . 'photo', \ucfirst($type) . 'Photo', 'photo_id');
70
    }
71
72
    /**
73
     * @param $data
74
     *
75
     * @return bool
76
     */
77
    public function createPhoto($data)
78
    {
79
        $photo = $this->create();
80
        $photo->setVars($data);
81
82
        return $this->insert($photo, true);
83
    }
84
85
    /**
86
     * @param $photoId
87
     * @param $data
88
     *
89
     * @return bool
90
     */
91
    public function modifyPhoto($photoId, $data)
92
    {
93
        $photo = $this->get($photoId);
94
        $photo->setVars($data);
95
96
        return $this->insert($photo, true);
97
    }
98
99
    /**
100
     * @param $photo
101
     */
102
    public function deletePhoto($photo)
103
    {
104
        if ('' == $photo->getVar('photo_serveur')) {
105
            $this->deleteFile($photo);
0 ignored issues
show
Unused Code introduced by
The call to XoopsModules\Extgallery\PhotoHandler::deleteFile() has too many arguments starting with $photo. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

105
            $this->/** @scrutinizer ignore-call */ 
106
                   deleteFile($photo);

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress. Please note the @ignore annotation hint above.

Loading history...
106
        }
107
        $this->deleteById($photo->getVar('photo_id'), true);
108
    }
109
110
    /**
111
     * @param $catId
112
     */
113
    public function deletePhotoByCat($catId)
114
    {
115
        $criteria = new Criteria('cat_id', $catId);
116
        $photos   = $this->getObjects($criteria);
117
        foreach ($photos as $photo) {
118
            $this->deletePhoto($photo);
119
        }
120
    }
121
122
    public function deleteFile()
123
    {
124
        exit('deleteFile() method must be defined on sub classes');
0 ignored issues
show
Best Practice introduced by
Using exit here is not recommended.

In general, usage of exit should be done with care and only when running in a scripting context like a CLI script.

Loading history...
125
    }
126
127
    /**
128
     * @param $photoId
129
     *
130
     * @return bool
131
     */
132
    public function getPhoto($photoId)
133
    {
134
        $criteria = new CriteriaCompo();
135
        $criteria->add(new Criteria('photo_id', $photoId));
136
        $criteria->add(new Criteria('photo_approved', 1));
137
138
        $photo = $this->getObjects($criteria);
139
        if (1 != \count($photo)) {
140
            return false;
141
        }
142
143
        return $photo[0];
144
    }
145
146
    /**
147
     * @param $cat
148
     *
149
     * @return int
150
     */
151
    public function nbPhoto($cat)
152
    {
153
        $criteria = new Criteria('cat_id', $cat->getVar('cat_id'));
154
155
        return $this->getCount($criteria);
156
    }
157
158
    /**
159
     * @param $catId
160
     * @param $start
161
     * @param $sortby
162
     * @param $orderby
163
     *
164
     * @return array
165
     */
166
    public function getAlbumPhotoPage($catId, $start, $sortby, $orderby)
167
    {
168
        $criteria = new CriteriaCompo();
169
        $criteria->add(new Criteria('cat_id', $catId));
170
        $criteria->add(new Criteria('photo_approved', 1));
171
        $criteria->setStart($start);
172
        $criteria->setLimit($GLOBALS['xoopsModuleConfig']['nb_column'] * $GLOBALS['xoopsModuleConfig']['nb_line']);
173
        if ('' == $criteria->getSort()) {
174
            $criteria->setSort($sortby);
175
            $criteria->setOrder($orderby);
176
        }
177
178
        return $this->getObjects($criteria);
179
    }
180
181
    /**
182
     * @param $catId
183
     * @param $start
184
     *
185
     * @return array
186
     */
187
    public function getAlbumPhotoAdminPage($catId, $start)
188
    {
189
        $criteria = new CriteriaCompo();
190
        $criteria->add(new Criteria('cat_id', $catId));
191
        $criteria->add(new Criteria('photo_approved', 1));
192
        $criteria->setStart($start);
193
        $criteria->setLimit($GLOBALS['xoopsModuleConfig']['admin_nb_photo']);
194
        $criteria->setSort('photo_weight, photo_id');
195
        $criteria->setOrder($GLOBALS['xoopsModuleConfig']['display_set_order']);
196
197
        return $this->getObjects($criteria);
198
    }
199
200
    /**
201
     * @param $catId
202
     *
203
     * @return array
204
     */
205
    public function getSlideshowAlbumPhoto($catId)
206
    {
207
        $criteria = new CriteriaCompo();
208
        $criteria->add(new Criteria('cat_id', $catId));
209
        $criteria->add(new Criteria('photo_approved', 1));
210
        $criteria->setSort('photo_weight, photo_id');
211
        $criteria->setOrder($GLOBALS['xoopsModuleConfig']['display_set_order']);
212
213
        return $this->getObjects($criteria, false, false);
214
    }
215
216
    /**
217
     * @param $catId
218
     *
219
     * @return array
220
     */
221
    public function getPhotoAlbumId($catId)
222
    {
223
        $ret    = [];
224
        $criteria = new CriteriaCompo();
225
        $criteria->add(new Criteria('cat_id', $catId));
226
        $criteria->add(new Criteria('photo_approved', 1));
227
228
        $sql = 'SELECT photo_id FROM ' . $this->db->prefix('extgallery_publicphoto') . ' ' . $criteria->renderWhere() . ' ORDER BY photo_weight, photo_id ASC;';
229
230
        $result = $this->db->query($sql);
231
        if ($result instanceof \mysqli_result) {
232
            while (false !== ($myrow = $this->db->fetchArray($result))) {
233
                $ret[] = (int)$myrow['photo_id'];
234
            }
235
        }
236
        return $ret;
237
    }
238
239
    /**
240
     * @param $catId
241
     * @param $photoId
242
     *
243
     * @return array
244
     */
245
    public function getAlbumPrevPhoto($catId, $photoId)
246
    {
247
        $catHandler = Extgallery\Helper::getInstance()->getHandler('PublicCategory');
248
249
        $criteria = new CriteriaCompo();
250
        $criteria->add($catHandler->getCatRestrictCriteria());
0 ignored issues
show
Bug introduced by
It seems like $catHandler->getCatRestrictCriteria() can also be of type false; however, parameter $criteriaElement of CriteriaCompo::add() does only seem to accept CriteriaElement, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

250
        $criteria->add(/** @scrutinizer ignore-type */ $catHandler->getCatRestrictCriteria());
Loading history...
251
        $criteria->add(new Criteria('photo_approved', 1));
252
        $criteria->add(new Criteria('cat_id', $catId));
253
        $criteria->add(new Criteria('photo_id', $photoId, '<'));
254
        $criteria->setSort('photo_weight, photo_id');
255
        $criteria->setOrder('DESC');
256
        $criteria->setLimit(1);
257
258
        return $this->getObjects($criteria);
259
    }
260
261
    /**
262
     * @param $catId
263
     * @param $photoId
264
     *
265
     * @return array
266
     */
267
    public function getAlbumNextPhoto($catId, $photoId)
268
    {
269
        $catHandler = Extgallery\Helper::getInstance()->getHandler('PublicCategory');
270
271
        $criteria = new CriteriaCompo();
272
        $criteria->add($catHandler->getCatRestrictCriteria());
0 ignored issues
show
Bug introduced by
It seems like $catHandler->getCatRestrictCriteria() can also be of type false; however, parameter $criteriaElement of CriteriaCompo::add() does only seem to accept CriteriaElement, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

272
        $criteria->add(/** @scrutinizer ignore-type */ $catHandler->getCatRestrictCriteria());
Loading history...
273
        $criteria->add(new Criteria('photo_approved', 1));
274
        $criteria->add(new Criteria('cat_id', $catId));
275
        $criteria->add(new Criteria('photo_id', $photoId, '>'));
276
        $criteria->setSort('photo_weight, photo_id');
277
        $criteria->setOrder('ASC');
278
        $criteria->setLimit(1);
279
280
        return $this->getObjects($criteria);
281
    }
282
283
    /**
284
     * @param $catId
285
     * @param $photoId
286
     *
287
     * @return int
288
     */
289
    public function getAlbumCurrentPhotoPlace($catId, $photoId)
290
    {
291
        $catHandler = Extgallery\Helper::getInstance()->getHandler('PublicCategory');
292
293
        $criteria = new CriteriaCompo();
294
        $criteria->add($catHandler->getCatRestrictCriteria());
0 ignored issues
show
Bug introduced by
It seems like $catHandler->getCatRestrictCriteria() can also be of type false; however, parameter $criteriaElement of CriteriaCompo::add() does only seem to accept CriteriaElement, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

294
        $criteria->add(/** @scrutinizer ignore-type */ $catHandler->getCatRestrictCriteria());
Loading history...
295
        $criteria->add(new Criteria('photo_approved', 1));
296
        $criteria->add(new Criteria('cat_id', $catId));
297
        $criteria->add(new Criteria('photo_id', $photoId, '<='));
298
        $criteria->setSort('photo_weight, photo_id');
299
        $criteria->setOrder('DESC');
300
301
        return $this->getCount($criteria);
302
    }
303
304
    /**
305
     * @param $catId
306
     *
307
     * @return array
308
     */
309
    public function getAlbumPhoto($catId)
310
    {
311
        $criteria = new Criteria('cat_id', $catId);
312
        $criteria->setSort('photo_weight, photo_id');
313
        $criteria->setOrder('ASC');
314
315
        return $this->getObjects($criteria);
316
    }
317
318
    /**
319
     * @param $category
320
     *
321
     * @return array
322
     */
323
    public function getCatPhoto($category)
324
    {
325
        $catHandler = Extgallery\Helper::getInstance()->getHandler('PublicCategory');
326
327
        $criteria = new CriteriaCompo();
328
        $criteria->add(new Criteria('nleft', $category->getVar('nleft'), '>='));
329
        $criteria->add(new Criteria('nright', $category->getVar('nright'), '<='));
330
331
        $cats = $catHandler->getObjects($criteria);
332
333
        $count = \count($cats);
334
        if ($count > 0) {
335
            $in = '(' . $cats[0]->getVar('cat_id');
336
            \array_shift($cats);
337
            /** @var Extgallery\Category $cat */
338
            foreach ($cats as $cat) {
339
                $in .= ',' . $cat->getVar('cat_id');
340
            }
341
            $in       .= ')';
342
            $criteria = new Criteria('cat_id', $in, 'IN');
343
        } else {
344
            $criteria = new Criteria('cat_id', '(0)', 'IN');
345
        }
346
347
        return $this->getObjects($criteria);
348
    }
349
350
    /**
351
     * @param $catId
352
     *
353
     * @return int
354
     */
355
    public function getAlbumCount($catId)
356
    {
357
        $criteria = new Criteria('cat_id', $catId);
358
359
        return $this->getCount($criteria);
360
    }
361
362
    /**
363
     * @param $photoId
364
     *
365
     * @return bool
366
     */
367
    public function updateHits($photoId)
368
    {
369
        $criteria = new Criteria('photo_id', $photoId);
370
371
        return $this->updateCounter('photo_hits', $criteria);
372
    }
373
374
    /**
375
     * @param $photoId
376
     *
377
     * @return bool
378
     */
379
    public function updateNbRating($photoId)
380
    {
381
        $criteria = new Criteria('photo_id', $photoId);
382
383
        return $this->updateCounter('photo_nbrating', $criteria);
384
    }
385
386
    /**
387
     * @param $photoId
388
     *
389
     * @return bool
390
     */
391
    public function updateDownload($photoId)
392
    {
393
        $criteria = new Criteria('photo_id', $photoId);
394
395
        return $this->updateCounter('photo_download', $criteria);
396
    }
397
398
    /**
399
     * @param $photoId
400
     *
401
     * @return bool
402
     */
403
    public function updateEcard($photoId)
404
    {
405
        $criteria = new Criteria('photo_id', $photoId);
406
407
        return $this->updateCounter('photo_ecard', $criteria);
408
    }
409
410
    public function getAllSize()
411
    {
412
        exit('getAllSize() method must be defined on sub classes');
0 ignored issues
show
Best Practice introduced by
Using exit here is not recommended.

In general, usage of exit should be done with care and only when running in a scripting context like a CLI script.

Loading history...
413
    }
414
415
    /**
416
     * @param $imageTransform
417
     */
418
    public function _makeWatermark($imageTransform)
419
    {
420
        if (!\function_exists('imagettfbbox')) {
421
            return;
422
        }
423
424
        /** @var Extgallery\Helper $helper */
425
        $helper = Extgallery\Helper::getInstance();
426
427
        /*  Text position param
428
        /
429
        /   0 : orig
430
        /   -1 : opposit
431
        /   1 : center
432
        /
433
        */
434
        if ('tl' === $helper->getConfig('watermark_position')) {
435
            $x = 0;
436
            $y = 0;
437
        } elseif ('tr' === $helper->getConfig('watermark_position')) {
438
            $x = -1;
439
            $y = 0;
440
        } elseif ('bl' === $helper->getConfig('watermark_position')) {
441
            $x = 0;
442
            $y = -1;
443
        } elseif ('br' === $helper->getConfig('watermark_position')) {
444
            $x = -1;
445
            $y = -1;
446
        } elseif ('tc' === $helper->getConfig('watermark_position')) {
447
            $x = 1;
448
            $y = 0;
449
        } elseif ('bc' === $helper->getConfig('watermark_position')) {
450
            $x = 1;
451
            $y = -1;
452
        } elseif ('lc' === $helper->getConfig('watermark_position')) {
453
            $x = 0;
454
            $y = 1;
455
        } elseif ('rc' === $helper->getConfig('watermark_position')) {
456
            $x = -1;
457
            $y = 1;
458
        } elseif ('cc' === $helper->getConfig('watermark_position')) {
459
            $x = 1;
460
            $y = 1;
461
        }
462
463
        $text = (0 == $helper->getConfig('watermark_type')) ? $GLOBALS['xoopsUser']->getVar('uname') : $helper->getConfig('watermark_text');
0 ignored issues
show
Bug Best Practice introduced by
It seems like you are loosely comparing $helper->getConfig('watermark_type') of type mixed|null to 0; this is ambiguous as not only 0 == 0 is true, but null == 0 is true, too. Consider using a strict comparison ===.
Loading history...
464
465
        $watermarkParams = [
466
            'text'         => $text,
467
            'x'            => $x,
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $x does not seem to be defined for all execution paths leading up to this point.
Loading history...
468
            'y'            => $y,
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $y does not seem to be defined for all execution paths leading up to this point.
Loading history...
469
            'color'        => $helper->getConfig('watermark_color'),
470
            'font'         => XOOPS_ROOT_PATH . '/modules/extgallery/fonts/' . $helper->getConfig('watermark_font'),
471
            'size'         => $helper->getConfig('watermark_fontsize'),
472
            'resize_first' => false,
473
            'padding'      => $helper->getConfig('watermark_padding'),
474
        ];
475
        $imageTransform->addText($watermarkParams);
476
    }
477
478
    /**
479
     * @param $imageTransform
480
     */
481
    public function _makeBorder($imageTransform)
482
    {
483
        /** @var Extgallery\Helper $helper */
484
        $helper = Extgallery\Helper::getInstance();
485
486
        $borders   = [];
487
        $borders[] = [
488
            'borderWidth' => $helper->getConfig('inner_border_size'),
489
            'borderColor' => $helper->getConfig('inner_border_color'),
490
        ];
491
        $borders[] = [
492
            'borderWidth' => $helper->getConfig('outer_border_size'),
493
            'borderColor' => $helper->getConfig('outer_border_color'),
494
        ];
495
        //        $imageTransform->addBorders($borders);
496
        foreach ($borders as $border) {
497
            $imageTransform->addBorder($border['borderWidth'], $border['borderColor']);
498
        }
499
    }
500
501
    public function getUploadPhotoPath()
502
    {
503
        exit('getUploadPhotoPath() method must be defined on sub classes');
0 ignored issues
show
Best Practice introduced by
Using exit here is not recommended.

In general, usage of exit should be done with care and only when running in a scripting context like a CLI script.

Loading history...
504
    }
505
506
    /**
507
     * @param $photoName
508
     */
509
    public function _largePhotoTreatment($photoName)
510
    {
511
        /** @var Extgallery\Helper $helper */
512
        $helper = Extgallery\Helper::getInstance();
513
514
        // Check if must save large photo
515
        if ($helper->getConfig('save_large')) {
516
            // Define Graphical library path
517
            if (!\defined('IMAGE_TRANSFORM_IM_PATH') && 'imagick' === $helper->getConfig('graphic_lib')) {
518
                \define('IMAGE_TRANSFORM_IM_PATH', $helper->getConfig('graphic_lib_path'));
519
            }
520
            $imageFactory   = new Image_Transform();
521
            $imageTransform = $imageFactory->factory($helper->getConfig('graphic_lib'));
522
523
            $filePath = $this->getUploadPhotoPath();
0 ignored issues
show
Bug introduced by
Are you sure the assignment to $filePath is correct as $this->getUploadPhotoPath() targeting XoopsModules\Extgallery\...r::getUploadPhotoPath() seems to always return null.

This check looks for function or method calls that always return null and whose return value is assigned to a variable.

class A
{
    function getObject()
    {
        return null;
    }

}

$a = new A();
$object = $a->getObject();

The method getObject() can return nothing but null, so it makes no sense to assign that value to a variable.

The reason is most likely that a function or method is imcomplete or has been reduced for debug purposes.

Loading history...
524
            $imageTransform->load($filePath . $photoName);
525
526
            // Save large photo only if it's bigger than medium size
527
            if ($imageTransform->getImageWidth() > $helper->getConfig('medium_width')
528
                || $imageTransform->getImageHeight() > $helper->getConfig('medium_heigth')) {
529
                // Make watermark
530
                if ($helper->getConfig('enable_large_watermark')) {
531
                    $this->_makeWatermark($imageTransform);
532
                }
533
534
                // Make border
535
                if ($helper->getConfig('enable_large_border')) {
536
                    $this->_makeBorder($imageTransform);
537
                }
538
539
                $largeFilePath = $filePath . 'large/large_' . $photoName;
540
                $imageTransform->save($largeFilePath, '', 100);
541
                $imageTransform->free();
542
            }
543
        }
544
    }
545
546
    /**
547
     * @param             $photoName
548
     * @param null|string $filePath
549
     * @param null        $mediumFilePath
0 ignored issues
show
Documentation Bug introduced by
Are you sure the doc-type for parameter $mediumFilePath is correct as it would always require null to be passed?
Loading history...
550
     */
551
    public function _mediumPhotoTreatment($photoName, $filePath = null, $mediumFilePath = null)
552
    {
553
        /** @var Extgallery\Helper $helper */
554
        $helper = Extgallery\Helper::getInstance();
555
556
        // Define Graphical library path
557
        if (!\defined('IMAGE_TRANSFORM_IM_PATH') && 'imagick' === $helper->getConfig('graphic_lib')) {
558
            \define('IMAGE_TRANSFORM_IM_PATH', $helper->getConfig('graphic_lib_path'));
559
        }
560
        $imageFactory   = new Image_Transform();
561
        $imageTransform = $imageFactory->factory($helper->getConfig('graphic_lib'));
562
563
        if (null === $filePath) {
564
            $filePath = $this->getUploadPhotoPath();
0 ignored issues
show
Bug introduced by
Are you sure the assignment to $filePath is correct as $this->getUploadPhotoPath() targeting XoopsModules\Extgallery\...r::getUploadPhotoPath() seems to always return null.

This check looks for function or method calls that always return null and whose return value is assigned to a variable.

class A
{
    function getObject()
    {
        return null;
    }

}

$a = new A();
$object = $a->getObject();

The method getObject() can return nothing but null, so it makes no sense to assign that value to a variable.

The reason is most likely that a function or method is imcomplete or has been reduced for debug purposes.

Loading history...
565
        }
566
        if (null === $mediumFilePath) {
0 ignored issues
show
introduced by
The condition null === $mediumFilePath is always true.
Loading history...
567
            $mediumFilePath = $filePath . 'medium/' . $photoName;
568
        }
569
        $imageTransform->load($filePath . $photoName);
570
571
        // Fitting image to desired size
572
        if ($helper->getConfig('enable_medium_border')) {
573
            $borderSize = ($helper->getConfig('inner_border_size') * 2) + ($helper->getConfig('outer_border_size') * 2);
574
        } else {
575
            $borderSize = 0;
576
        }
577
        $imageTransform->fit($helper->getConfig('medium_width') - $borderSize, $helper->getConfig('medium_heigth') - $borderSize);
578
        $imageTransform->save($mediumFilePath, '', $helper->getConfig('medium_quality'));
579
        $imageTransform->free();
580
581
        if ($helper->getConfig('enable_medium_watermark') || $helper->getConfig('enable_medium_border')) {
582
            $imageTransform->load($mediumFilePath);
583
584
            // Make watermark
585
            if ($helper->getConfig('enable_medium_watermark')) {
586
                $this->_makeWatermark($imageTransform);
587
            }
588
589
            // Make border
590
            if ($helper->getConfig('enable_medium_border')) {
591
                $this->_makeBorder($imageTransform);
592
            }
593
594
            $imageTransform->save($mediumFilePath, '', $helper->getConfig('medium_quality'));
595
            $imageTransform->free();
596
        }
597
    }
598
599
    /**
600
     * @param $photoName
601
     */
602
    public function _makeThumb($photoName)
603
    {
604
        /** @var Extgallery\Helper $helper */
605
        $helper = Extgallery\Helper::getInstance();
606
607
        // Define Graphical library path
608
        if (!\defined('IMAGE_TRANSFORM_IM_PATH') && 'imagick' === $helper->getConfig('graphic_lib')) {
609
            \define('IMAGE_TRANSFORM_IM_PATH', $helper->getConfig('graphic_lib_path'));
610
        }
611
        $imageFactory   = new Image_Transform();
612
        $imageTransform = $imageFactory->factory($helper->getConfig('graphic_lib'));
613
614
        $filePath  = $this->getUploadPhotoPath() . 'medium/' . $photoName;
0 ignored issues
show
Bug introduced by
Are you sure the usage of $this->getUploadPhotoPath() targeting XoopsModules\Extgallery\...r::getUploadPhotoPath() seems to always return null.

This check looks for function or method calls that always return null and whose return value is used.

class A
{
    function getObject()
    {
        return null;
    }

}

$a = new A();
if ($a->getObject()) {

The method getObject() can return nothing but null, so it makes no sense to use the return value.

The reason is most likely that a function or method is imcomplete or has been reduced for debug purposes.

Loading history...
615
        $thumbPath = $this->getUploadPhotoPath() . 'thumb/thumb_' . $photoName;
616
617
        $imageTransform->load($filePath);
618
        $imageTransform->fit($helper->getConfig('thumb_width'), $helper->getConfig('thumb_heigth'));
619
        $imageTransform->save($thumbPath, '', $helper->getConfig('thumb_quality'));
620
        $imageTransform->free();
621
    }
622
623
    /**
624
     * @param $photoName
625
     *
626
     * @return bool
627
     */
628
    public function _haveLargePhoto($photoName)
629
    {
630
        return \file_exists($this->getUploadPhotoPath() . 'large/large_' . $photoName);
0 ignored issues
show
Bug introduced by
Are you sure the usage of $this->getUploadPhotoPath() targeting XoopsModules\Extgallery\...r::getUploadPhotoPath() seems to always return null.

This check looks for function or method calls that always return null and whose return value is used.

class A
{
    function getObject()
    {
        return null;
    }

}

$a = new A();
if ($a->getObject()) {

The method getObject() can return nothing but null, so it makes no sense to use the return value.

The reason is most likely that a function or method is imcomplete or has been reduced for debug purposes.

Loading history...
631
    }
632
633
    /**
634
     * @param $photoName
635
     *
636
     * @return array
637
     */
638
    public function _getImageDimension($photoName)
639
    {
640
        /** @var Extgallery\Helper $helper */
641
        $helper = Extgallery\Helper::getInstance();
642
643
        // Define Graphical library path
644
        if (!\defined('IMAGE_TRANSFORM_IM_PATH') && 'imagick' === $helper->getConfig('graphic_lib')) {
645
            \define('IMAGE_TRANSFORM_IM_PATH', $helper->getConfig('graphic_lib_path'));
646
        }
647
        $imageFactory   = new Image_Transform();
648
        $imageTransform = $imageFactory->factory($helper->getConfig('graphic_lib'));
649
650
        $ret = [];
651
        if ($this->_haveLargePhoto($photoName)) {
652
            $imageTransform->load($this->getUploadPhotoPath() . 'large/large_' . $photoName);
653
            $ret['width']  = $imageTransform->getImageWidth();
654
            $ret['height'] = $imageTransform->getImageHeight();
655
        } else {
656
            $imageTransform->load($this->getUploadPhotoPath() . 'medium/' . $photoName);
657
            $ret['width']  = $imageTransform->getImageWidth();
658
            $ret['height'] = $imageTransform->getImageHeight();
659
        }
660
        $imageTransform->free();
661
662
        return $ret;
663
    }
664
665
    /**
666
     * @param $photoName
667
     *
668
     * @return string
669
     */
670
    public function getAutoDescription($photoName)
671
    {
672
        /** @var Extgallery\Helper $helper */
673
        $helper = Extgallery\Helper::getInstance();
674
675
        //DNPROSSI
676
        /*if ($helper->getConfig('enable_longdesc')) {
677
            $newphotoname = '';
678
            $newnewphotoname = '';
679
            $patterns = [];
680
            $patterns[0] = "/-/";
681
            $patterns[1] = "/_/";
682
            $replacements = [];
683
            $replacements[0] = " ";
684
            $replacements[1] = "'";
685
            $newphotoName = substr($photoName, strpos($photoName, "-") + 1);
686
            $newphotoName = substr($newphotoName, strpos($newphotoName, "-") + 1);
687
688
            return preg_replace($patterns, $replacements, substr($newphotoName,0,-12));
689
        } else { */
690
        $matches = [];
691
        \preg_match_all($helper->getConfig('photoname_pattern'), mb_substr($photoName, 0, -12), $matches);
692
        \preg_match_all($helper->getConfig('photoname_pattern'), $photoName, $matches);
693
694
        return \implode(' ', $matches[1]);
695
        //}
696
    }
697
698
    /**
699
     * @param $fileName
700
     *
701
     * @return string
702
     */
703
    public function makeFileName($fileName)
704
    {
705
        //DNPROSSI
706
        //$fileName = preg_replace("/[^a-zA-Z0-9()_\.-]/", "-", $fileName);
707
        $fileName = \preg_replace("/[^a-zA-Z0-9_\.-]/", '-', $fileName);
708
709
        $fileName = \explode('.', $fileName);
710
        $userId   = \is_object($GLOBALS['xoopsUser']) ? $GLOBALS['xoopsUser']->getVar('uid') : 0;
711
712
        return $fileName[0] . '_' . $userId . '_' . mb_substr(md5(\uniqid(\mt_rand(), true)), 27) . '.' . $fileName[1];
713
    }
714
715
    /**
716
     * @param $photoName
717
     *
718
     * @return float
719
     */
720
    public function getPhotoSize($photoName)
721
    {
722
        if ($this->_haveLargePhoto($photoName)) {
723
            return $this->getFileSize('large/large_' . $photoName);
724
        }
725
726
        return $this->getFileSize($photoName);
727
    }
728
729
    /**
730
     * @param $fileName
731
     *
732
     * @return float
733
     */
734
    public function getFileSize($fileName)
735
    {
736
        return \round(\filesize($this->getUploadPhotoPath() . $fileName) / 1024, 2);
0 ignored issues
show
Bug introduced by
Are you sure the usage of $this->getUploadPhotoPath() targeting XoopsModules\Extgallery\...r::getUploadPhotoPath() seems to always return null.

This check looks for function or method calls that always return null and whose return value is used.

class A
{
    function getObject()
    {
        return null;
    }

}

$a = new A();
if ($a->getObject()) {

The method getObject() can return nothing but null, so it makes no sense to use the return value.

The reason is most likely that a function or method is imcomplete or has been reduced for debug purposes.

Loading history...
737
    }
738
739
    /**
740
     * @param $catId
741
     */
742
    public function rebuildThumbnail($catId)
743
    {
744
        $photos = $this->getAlbumPhoto($catId);
745
        foreach ($photos as $photo) {
746
            $this->_makeThumb($photo->getVar('photo_name'));
747
        }
748
    }
749
750
    /* Return Code :
751
        0 : Photo added
752
        1 : Photo pending
753
        2 : This is not an album
754
        3 : HTTP Upload error
755
        4 : File rejected
756
        5 : File chunk receive
757
        */
758
759
    /**
760
     * @param      $file
761
     * @param bool $checkMd5
762
     *
763
     * @return int
764
     */
765
    public function postPhotoTraitement($file, $checkMd5 = false)
0 ignored issues
show
Unused Code introduced by
The parameter $checkMd5 is not used and could be removed. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-unused  annotation

765
    public function postPhotoTraitement($file, /** @scrutinizer ignore-unused */ $checkMd5 = false)

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
766
    {
767
        //        require_once XOOPS_ROOT_PATH.'/modules/extgallery/class/photoUploader.php';
768
769
        $catHandler = Extgallery\Helper::getInstance()->getHandler('PublicCategory');
770
771
        $catId = Request::getInt('cat_id', 0, 'POST');
772
773
        // If isn't an album when stop the traitment
774
        $cat = $catHandler->getCat($catId);
775
        if (null !== $cat && (1 != $cat->getVar('nright') - $cat->getVar('nleft'))) {
776
            return 2;
777
        }
778
779
        $allowedMimeTypes = ['image/jpeg', 'image/jpg', 'image/pjpeg', 'image/gif', 'image/png', 'image/x-png'];
780
        //        $allowedMimeTypes = array('jpg/jpeg', 'image/bmp', 'image/gif', 'image/jpeg', 'image/jpg', 'image/x-png', 'image/png');
781
782
        $uploadDir = XOOPS_ROOT_PATH . '/uploads/extgallery/public-photo/';
783
784
        //        $this->photoUploader = new Extgallery\PhotoUploader($uploadDir,  50000000, 5000, 5000);
785
        //        $this->photoUploader->checkMd5 = $checkMd5;
786
        //        $this->photoUploader->fetchPhoto($_FILES[$file]);
787
788
        //------------------------
789
        require_once XOOPS_ROOT_PATH . '/class/uploader.php';
790
        $this->photoUploader = new XoopsMediaUploader($uploadDir, $allowedMimeTypes, 50000000, 5000, 5000);
791
792
        $jupart  = Request::getInt('jupart', 0, 'POST');
793
        $jufinal = Request::getInt('jufinal', 1, 'POST');
794
795
        if ($this->photoUploader->fetchMedia($file) && $this->photoUploader->upload()) {
796
        } else {
797
            // We got a chunk, so we don't add photo to database
798
            if ($jupart && !$jufinal) {
799
                return 5;
800
            }
801
802
            return 4;
803
        }
804
805
        //---------------------------
806
807
        /*
808
809
                $jupart = (isset($_POST['jupart'])) ? (int) $_POST['jupart'] : 0;
810
                $jufinal = (isset($_POST['jufinal'])) ? (int) $_POST['jufinal'] : 1;
811
812
                if ($this->photoUploader->isError()) {
813
                    return 4;
814
                // We got a chunk, so we don't add photo to database
815
                } elseif ($jupart && !$jufinal) {
816
                    return 5;
817
                }
818
        */
819
820
        //DNPROSSI - add missing title and description on upload
821
        $photoTitle = '';
822
        $photoDesc  = '';
823
        $photoExtra = '';
824
        $photoTag   = '';
825
826
        if (Request::hasVar('photo_title', 'POST')) {
827
            $photoTitle = $_POST['photo_title'];
828
        }
829
        if (Request::hasVar('photo_desc', 'POST')) {
830
            $photoDesc = $_POST['photo_desc'];
831
        }
832
        if (Request::hasVar('photo_extra', 'POST')) {
833
            $photoExtra = $_POST['photo_extra'];
834
        }
835
        if (Request::hasVar('tag', 'POST')) {
836
            $photoTag = $_POST['tag'];
837
        }
838
839
        $photoStatus = $this->addLocalPhoto($catId, $this->photoUploader->getSavedFileName(), $photoTitle, $photoDesc, $photoExtra, $photoTag);
840
        /** @var Extgallery\Category $cat */
841
        $cat = $catHandler->getCat($catId);
842
        $cat->setVar('cat_isalbum', 1);
843
        $catHandler->insert($cat);
844
845
        /** @var \XoopsNotificationHandler $notificationHandler */
846
        $notificationHandler = \xoops_getHandler('notification');
847
        $extraTags           = [
848
            'X_ITEM_CAT'     => $cat->getVar('cat_name'),
849
            'X_ITEM_NBPHOTO' => 1,
850
        ];
851
852
        if (1 == $photoStatus) {
853
            $extraTags['X_ITEM_URL'] = XOOPS_URL . '/modules/extgallery/public-album.php?id=' . $cat->getVar('cat_id');
854
            $notificationHandler->triggerEvent('global', 0, 'new_photo', $extraTags);
855
            $notificationHandler->triggerEvent('album', $cat->getVar('cat_id'), 'new_photo_album', $extraTags);
856
857
            // Update album count
858
            if (0 == $cat->getVar('cat_nb_photo')) {
859
                $criteria = new CriteriaCompo();
860
                $criteria->add(new Criteria('nleft', $cat->getVar('nleft'), '<'));
861
                $criteria->add(new Criteria('nright', $cat->getVar('nright'), '>'));
862
                $catHandler->updateFieldValue('cat_nb_album', 'cat_nb_album + 1', $criteria);
863
            }
864
865
            // Update photo count
866
            $criteria = new CriteriaCompo();
867
            $criteria->add(new Criteria('nleft', $cat->getVar('nleft'), '<='));
868
            $criteria->add(new Criteria('nright', $cat->getVar('nright'), '>='));
869
            $catHandler->updateFieldValue('cat_nb_photo', 'cat_nb_photo + 1', $criteria);
870
871
            return 0;
872
        }
873
        $extraTags['X_ITEM_URL'] = XOOPS_URL . '/modules/extgallery/admin/photo.php';
874
        $notificationHandler->triggerEvent('global', 0, 'new_photo_pending', $extraTags);
875
876
        return 1;
877
    }
878
879
    /**
880
     * @param        $catId
881
     * @param        $dirtyPhotoName
882
     * @param string $photoTitle
883
     * @param string $photoDesc
884
     * @param string $photoExtra
885
     * @param string $photoTag
886
     *
887
     * @return mixed
888
     */
889
    public function addLocalPhoto(
890
        $catId,
891
        $dirtyPhotoName,
892
        $photoTitle = '',
893
        $photoDesc = '',
894
        $photoExtra = '',
895
        $photoTag = ''
896
    ) {
897
        require_once XOOPS_ROOT_PATH . '/modules/extgallery/class/pear/Image/Transform.php';
898
899
        $permHandler = Extgallery\PublicPermHandler::getInstance();
900
        /** @var Extgallery\Helper $helper */
901
        $helper = Extgallery\Helper::getInstance();
902
903
        // Replace all bad file name character
904
        $photoName = $this->makeFileName($dirtyPhotoName);
905
        \rename($this->getUploadPhotoPath() . $dirtyPhotoName, $this->getUploadPhotoPath() . $photoName);
0 ignored issues
show
Bug introduced by
Are you sure the usage of $this->getUploadPhotoPath() targeting XoopsModules\Extgallery\...r::getUploadPhotoPath() seems to always return null.

This check looks for function or method calls that always return null and whose return value is used.

class A
{
    function getObject()
    {
        return null;
    }

}

$a = new A();
if ($a->getObject()) {

The method getObject() can return nothing but null, so it makes no sense to use the return value.

The reason is most likely that a function or method is imcomplete or has been reduced for debug purposes.

Loading history...
906
907
        //DNPROSSI - changed photo_desc to photo_title
908
        // Making auto description
909
        if ('' === $photoTitle) {
910
            $photoTitle = $this->getAutoDescription($photoName);
911
        }
912
913
        $originalName = '';
914
        // Save original photo
915
        if ($helper->getConfig('save_large') && $helper->getConfig('save_original')) {
916
            $fileName     = \explode('.', $photoName);
917
            $originalName = md5(\uniqid(\mt_rand(), true)) . '.' . $fileName[1];
918
            \copy($this->getUploadPhotoPath() . $photoName, $this->getUploadPhotoPath() . 'original/' . $originalName);
919
        }
920
921
        $this->_largePhotoTreatment($photoName);
922
923
        $this->_mediumPhotoTreatment($photoName);
924
925
        $this->_makeThumb($photoName);
926
927
        $imageDimension = $this->_getImageDimension($photoName);
928
929
        $userId = \is_object($GLOBALS['xoopsUser']) ? $GLOBALS['xoopsUser']->getVar('uid') : 0;
930
        $data   = [
931
            'cat_id'          => $catId,
932
            'photo_title'     => $photoTitle,
933
            'photo_desc'      => $photoDesc,
934
            'photo_name'      => $photoName,
935
            'photo_orig_name' => $originalName,
936
            'uid'             => $userId,
937
            'photo_size'      => $this->getPhotoSize($photoName),
938
            'photo_res_x'     => $imageDimension['width'],
939
            'photo_res_y'     => $imageDimension['height'],
940
            'photo_date'      => \time(),
941
            'photo_havelarge' => $this->_haveLargePhoto($photoName),
942
            'photo_approved'  => $permHandler->isAllowed($GLOBALS['xoopsUser'], 'public_autoapprove', $catId),
943
            'photo_extra'     => $photoExtra,
944
            'dohtml'          => $helper->getConfig('allow_html'),
945
        ];
946
947
        // Deleting working photo
948
        \unlink($this->getUploadPhotoPath() . $photoName);
949
950
        $this->createPhoto($data);
951
952
        //        if (1 == $helper->getConfig('usetag') || (is_dir('../tag') || is_dir('../../tag'))) {
953
        if (\class_exists(Helper::class) && 1 == $helper->getConfig('usetag')) {
954
            $newid      = $this->db->getInsertId();
955
            $tagHandler = \XoopsModules\Tag\Helper::getInstance()->getHandler('Tag'); // xoops_getModuleHandler('tag', 'tag');
956
            $tagHandler->updateByItem($photoTag, $newid, 'extgallery', 0);
957
        }
958
959
        return $data['photo_approved'];
960
    }
961
962
    /**
963
     * @param $queryArray
964
     * @param $condition
965
     * @param $limit
966
     * @param $start
967
     * @param $userId
968
     *
969
     * @return array
970
     */
971
    public function getSearchedPhoto($queryArray, $condition, $limit, $start, $userId)
972
    {
973
        $criteria = new CriteriaCompo();
974
        if ($userId > 0) {
975
            $criteria->add(new Criteria('uid', $userId));
976
        }
977
        $criteria->add(new Criteria('photo_approved', 1));
978
        if ($queryArray && \is_array($queryArray)) {
979
            $subCriteria = new CriteriaCompo();
980
            foreach ($queryArray as $keyWord) {
981
                $keyWordCriteria = new CriteriaCompo();
982
                $keyWordCriteria->add(new Criteria('photo_title', '%' . $keyWord . '%', 'LIKE'));
983
                $keyWordCriteria->add(new Criteria('photo_desc', '%' . $keyWord . '%', 'LIKE'), 'OR');
984
                $keyWordCriteria->add(new Criteria('photo_name', '%' . $keyWord . '%', 'LIKE'), 'OR');
985
                $subCriteria->add($keyWordCriteria, $condition);
986
                unset($keyWordCriteria);
987
            }
988
            $criteria->add($subCriteria);
989
        }
990
        $criteria->setStart($start);
991
        $criteria->setLimit($limit);
992
        $criteria->setSort('photo_date');
993
994
        $photos = $this->getObjects($criteria);
995
996
        $ret = [];
997
        foreach ($photos as $photo) {
998
            if ($photo->getVar('photo_title')) {
999
                $title = $photo->getVar('photo_title');
1000
            } else {
1001
                $title = $photo->getVar('photo_desc');
1002
            }
1003
            $data  = [
1004
                'image' => 'assets/images/extgallery-posticon.gif',
1005
                'link'  => 'public-photo.php?photoId=' . $photo->getVar('photo_id'),
1006
                'title' => $title,
1007
                'time'  => $photo->getVar('photo_date'),
1008
                'uid'   => $photo->getVar('uid'),
1009
            ];
1010
            $ret[] = $data;
1011
        }
1012
1013
        return $ret;
1014
    }
1015
1016
    /**
1017
     * @return array
1018
     */
1019
    public function getPendingPhoto()
1020
    {
1021
        $criteria = new Criteria('photo_approved', 0);
1022
1023
        return $this->getObjects($criteria);
1024
    }
1025
1026
    /**
1027
     * @param $criteria
1028
     * @param $data
1029
     */
1030
    public function addInCriteria($criteria, $data)
1031
    {
1032
        $count = \count($data);
1033
        if ($count > 0) {
1034
            $in = '(' . $data[0];
1035
            \array_shift($data);
1036
            foreach ($data as $elmt) {
1037
                $in .= ',' . $elmt;
1038
            }
1039
            $in .= ')';
1040
            $criteria->add(new Criteria('cat_id', $in, 'IN'));
1041
        }
1042
    }
1043
1044
    /**
1045
     * @param $param
1046
     *
1047
     * @return array
1048
     */
1049
    public function getRandomPhoto($param)
1050
    {
1051
        $catHandler = Extgallery\Helper::getInstance()->getHandler('PublicCategory');
1052
        $criteria   = new CriteriaCompo();
1053
        if (false !== $catHandler->getCatRestrictCriteria()) {
1054
            $criteria->add($catHandler->getCatRestrictCriteria());
1055
        }
1056
        $criteria->add(new Criteria('photo_approved', 1));
1057
        $this->addInCriteria($criteria, $param['cat']);
1058
        $criteria->setSort('RAND()');
1059
        $criteria->setLimit($param['limit']);
1060
1061
        return $this->getObjects($criteria);
1062
    }
1063
1064
    /**
1065
     * @param $param
1066
     *
1067
     * @return array
1068
     */
1069
    public function getLastPhoto($param)
1070
    {
1071
        $catHandler = Extgallery\Helper::getInstance()->getHandler('PublicCategory');
1072
1073
        $criteria = new CriteriaCompo();
1074
        $criteria->add($catHandler->getCatRestrictCriteria());
0 ignored issues
show
Bug introduced by
It seems like $catHandler->getCatRestrictCriteria() can also be of type false; however, parameter $criteriaElement of CriteriaCompo::add() does only seem to accept CriteriaElement, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

1074
        $criteria->add(/** @scrutinizer ignore-type */ $catHandler->getCatRestrictCriteria());
Loading history...
1075
        $criteria->add(new Criteria('photo_approved', 1));
1076
        $this->addInCriteria($criteria, $param['cat']);
1077
        $criteria->setSort('photo_date');
1078
        $criteria->setOrder('DESC');
1079
        $criteria->setLimit($param['limit']);
1080
1081
        return $this->getObjects($criteria);
1082
    }
1083
1084
    /**
1085
     * @param $param
1086
     *
1087
     * @return array
1088
     */
1089
    public function getTopViewPhoto($param)
1090
    {
1091
        $catHandler = Extgallery\Helper::getInstance()->getHandler('PublicCategory');
1092
1093
        $criteria = new CriteriaCompo();
1094
        $criteria->add($catHandler->getCatRestrictCriteria());
0 ignored issues
show
Bug introduced by
It seems like $catHandler->getCatRestrictCriteria() can also be of type false; however, parameter $criteriaElement of CriteriaCompo::add() does only seem to accept CriteriaElement, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

1094
        $criteria->add(/** @scrutinizer ignore-type */ $catHandler->getCatRestrictCriteria());
Loading history...
1095
        $criteria->add(new Criteria('photo_approved', 1));
1096
        $this->addInCriteria($criteria, $param['cat']);
1097
        $criteria->setSort('photo_hits');
1098
        $criteria->setOrder('DESC');
1099
        $criteria->setLimit($param['limit']);
1100
1101
        return $this->getObjects($criteria);
1102
    }
1103
1104
    /**
1105
     * @param $param
1106
     *
1107
     * @return array
1108
     */
1109
    public function getTopRatedPhoto($param)
1110
    {
1111
        $catHandler = Extgallery\Helper::getInstance()->getHandler('PublicCategory');
1112
1113
        $criteria = new CriteriaCompo();
1114
        $criteria->add($catHandler->getCatRestrictCriteria());
0 ignored issues
show
Bug introduced by
It seems like $catHandler->getCatRestrictCriteria() can also be of type false; however, parameter $criteriaElement of CriteriaCompo::add() does only seem to accept CriteriaElement, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

1114
        $criteria->add(/** @scrutinizer ignore-type */ $catHandler->getCatRestrictCriteria());
Loading history...
1115
        $criteria->add(new Criteria('photo_approved', 1));
1116
        $this->addInCriteria($criteria, $param['cat']);
1117
        $criteria->setSort('photo_rating');
1118
        $criteria->setOrder('DESC');
1119
        $criteria->setLimit($param['limit']);
1120
1121
        return $this->getObjects($criteria);
1122
    }
1123
1124
    /**
1125
     * @param $param
1126
     *
1127
     * @return array
1128
     */
1129
    public function getTopEcardPhoto($param)
1130
    {
1131
        $catHandler = Extgallery\Helper::getInstance()->getHandler('PublicCategory');
1132
1133
        $criteria = new CriteriaCompo();
1134
        $criteria->add($catHandler->getCatRestrictCriteria());
0 ignored issues
show
Bug introduced by
It seems like $catHandler->getCatRestrictCriteria() can also be of type false; however, parameter $criteriaElement of CriteriaCompo::add() does only seem to accept CriteriaElement, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

1134
        $criteria->add(/** @scrutinizer ignore-type */ $catHandler->getCatRestrictCriteria());
Loading history...
1135
        $criteria->add(new Criteria('photo_approved', 1));
1136
        $this->addInCriteria($criteria, $param['cat']);
1137
        $criteria->setSort('photo_ecard');
1138
        $criteria->setOrder('DESC');
1139
        $criteria->setLimit($param['limit']);
1140
1141
        return $this->getObjects($criteria);
1142
    }
1143
1144
    /**
1145
     * @param $param
1146
     */
1147
    public function getTopSubmitter($param)
1148
    {
1149
        $catHandler = Extgallery\Helper::getInstance()->getHandler('PublicCategory');
0 ignored issues
show
Unused Code introduced by
The assignment to $catHandler is dead and can be removed.
Loading history...
1150
1151
        $criteria = new Criteria('');
1152
        $this->addInCriteria($criteria, $param['cat']);
1153
1154
        echo $criteria->renderWhere();
1155
    }
1156
1157
    /**
1158
     * @return mixed
1159
     */
1160
    public function getInsertId()
1161
    {
1162
        return $this->db->getInsertId();
1163
    }
1164
}
1165