Issues (3083)

htdocs/modules/system/admin/avatars/main.php (4 issues)

1
<?php
2
/*
3
 * You may not change or alter any portion of this comment or credits
4
 * of supporting developers from this source code or any supporting source code
5
 * which is considered copyrighted (c) material of the original comment or credit authors.
6
 *
7
 * This program is distributed in the hope that it will be useful,
8
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10
 */
11
12
use Xmf\Request;
13
14
/**
15
 * @copyright    XOOPS Project https://xoops.org/
16
 * @license      GNU GPL 2.0 or later (https://www.gnu.org/licenses/gpl-2.0.html)
17
 * @package
18
 * @since
19
 * @author       XOOPS Development Team, Kazumi Ono (AKA onokazu)
20
 */
21
22
// Check users rights
23
if (!is_object($xoopsUser) || !is_object($xoopsModule) || !$xoopsUser->isAdmin($xoopsModule->mid())) {
24
    exit(_NOPERM);
25
}
26
//  Check is active
27
if (!xoops_getModuleOption('active_avatars', 'system')) {
0 ignored issues
show
Deprecated Code introduced by
The function xoops_getModuleOption() has been deprecated. ( Ignorable by Annotation )

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

27
if (!/** @scrutinizer ignore-deprecated */ xoops_getModuleOption('active_avatars', 'system')) {
Loading history...
28
    redirect_header('admin.php', 2, _AM_SYSTEM_NOTACTIVE);
29
}
30
// Get Action type
31
$op = Request::getString('op', 'list');
32
33
switch ($op) {
34
    default:
35
    case 'list':
36
        // Define main template
37
        $GLOBALS['xoopsOption']['template_main'] = 'system_avatars.tpl';
38
        // Call Header
39
        xoops_cp_header();
40
        // Define Stylesheet
41
        $xoTheme->addStylesheet(XOOPS_URL . '/modules/system/css/admin.css');
42
        $xoTheme->addScript('browse.php?Frameworks/jquery/jquery.js');
43
        $xoTheme->addScript('modules/system/js/admin.js');
44
        // Define Breadcrumb and tips
45
        $xoBreadCrumb->addLink(_AM_SYSTEM_AVATAR_MANAGER, system_adminVersion('avatars', 'adminpath'));
46
        $xoBreadCrumb->addHelp(system_adminVersion('avatars', 'help'));
47
        $xoBreadCrumb->addTips(_AM_SYSTEM_AVATAR_TIPS);
48
        $xoBreadCrumb->render();
49
        // Get avatar handler
50
        /** @var  XoopsAvatarHandler $avt_handler */
51
        $avt_handler = xoops_getModuleHandler('avatar');
52
        // Get User Config
53
        /** @var XoopsConfigHandler $config_handler */
54
        $config_handler  = xoops_getHandler('config');
55
        $xoopsConfigUser = $config_handler->getConfigsByCat(XOOPS_CONF_USER);
56
        // User language
57
        xoops_loadLanguage('user');
58
        // Count avatars
59
        $savatar_count = $avt_handler->getCount(new Criteria('avatar_type', 'S'));
60
        $cavatar_count = $avt_handler->getCount(new Criteria('avatar_type', 'C'));
61
        // Assign Template variables
62
        $xoopsTpl->assign('view_cat', true);
63
        $xoopsTpl->assign('count_system', $savatar_count);
64
        $xoopsTpl->assign('count_custom', $cavatar_count);
65
        // Create form
66
        $avatar = $avt_handler->create();
67
        $form   = $avatar->getForm();
68
        // Assign form
69
        $xoopsTpl->assign('form', $form->render());
70
        // Call Footer
71
        xoops_cp_footer();
72
        break;
73
74
    case 'listavt':
75
        // Get Avatar type
76
        $type = Request::getString('type', 'c');
77
        $start = Request::getInt('start', 0);
78
        // Define main template
79
        $GLOBALS['xoopsOption']['template_main'] = 'system_avatars.tpl';
80
        // Call Header
81
        xoops_cp_header();
82
        // Define Stylesheet
83
        $xoTheme->addStylesheet(XOOPS_URL . '/modules/system/css/admin.css');
84
        // Define scripts
85
        $xoTheme->addScript('browse.php?Frameworks/jquery/jquery.js');
86
        $xoTheme->addScript('modules/system/js/admin.js');
87
        // Define Breadcrumb and tips
88
        $xoBreadCrumb->addLink(_AM_SYSTEM_AVATAR_MANAGER, system_adminVersion('avatars', 'adminpath'));
89
        $xoBreadCrumb->addLink(($type === 's' ? _AM_SYSTEM_AVATAR_SYSTEM : _AM_SYSTEM_AVATAR_CUSTOM));
90
        $xoBreadCrumb->addHelp(system_adminVersion('avatars', 'help') . '#' . $type);
91
        $xoBreadCrumb->addTips(_AM_SYSTEM_AVATAR_TIPS);
92
        $xoBreadCrumb->render();
93
        // Get avatar handler
94
        /** @var  XoopsAvatarHandler $avt_handler */
95
        $avt_handler = xoops_getHandler('avatar');
96
        // Count avatars
97
        $savatar_count = $avt_handler->getCount(new Criteria('avatar_type', 'S'));
98
        $cavatar_count = $avt_handler->getCount(new Criteria('avatar_type', 'C'));
99
        // Assign Template variables
100
        $xoopsTpl->assign('type', $type);
101
        $xoopsTpl->assign('count_system', $savatar_count);
102
        $xoopsTpl->assign('count_custom', $cavatar_count);
103
        // Filter avatars
104
        $criteria = new Criteria('avatar_type', $type);
105
        $avtcount = $avt_handler->getCount($criteria);
106
        // Get avatar list
107
        $criteria->setStart($start);
108
        $criteria->setLimit(xoops_getModuleOption('avatars_pager', 'system'));
0 ignored issues
show
Deprecated Code introduced by
The function xoops_getModuleOption() has been deprecated. ( Ignorable by Annotation )

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

108
        $criteria->setLimit(/** @scrutinizer ignore-deprecated */ xoops_getModuleOption('avatars_pager', 'system'));
Loading history...
109
        $avatars = $avt_handler->getObjects($criteria, true);
110
        // Construct avatars array
111
        $avatar_list = array();
112
        $i           = 0;
113
        foreach (array_keys($avatars) as $i) {
114
            $avatar_list[$i]          = $avatars[$i]->toArray();
115
            $avatar_list[$i]['type']  = $type;
116
            $avatar_list[$i]['count'] = count($avt_handler->getUser($avatars[$i]));
117
            if ($type === 'c') {
118
                $user = $avt_handler->getUser($avatars[$i]);
119
                if (is_array($user) && isset($user[0])) {
120
                    $avatar_list[$i]['user'] = $user[0];
121
                }
122
            }
123
        }
124
        $xoopsTpl->assign('avatars_list', $avatar_list);
125
        // Display Page Navigation
126
        if ($avtcount > xoops_getModuleOption('avatars_pager')) {
0 ignored issues
show
Deprecated Code introduced by
The function xoops_getModuleOption() has been deprecated. ( Ignorable by Annotation )

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

126
        if ($avtcount > /** @scrutinizer ignore-deprecated */ xoops_getModuleOption('avatars_pager')) {
Loading history...
127
            $nav = new XoopsPageNav(
128
                $avtcount,
129
                xoops_getModuleOption('avatars_pager', 'system'),
0 ignored issues
show
Deprecated Code introduced by
The function xoops_getModuleOption() has been deprecated. ( Ignorable by Annotation )

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

129
                /** @scrutinizer ignore-deprecated */ xoops_getModuleOption('avatars_pager', 'system'),
Loading history...
130
                $start,
131
                'start',
132
                'fct=avatars&amp;type=' . $type . '&amp;op=listavt'
133
            );
134
            $xoopsTpl->assign('nav_menu', $nav->renderNav(4));
135
        }
136
        // Call Footer
137
        xoops_cp_footer();
138
        break;
139
140
    case 'edit':
141
        // Define main template
142
        $GLOBALS['xoopsOption']['template_main'] = 'system_avatars.tpl';
143
        // Call Header
144
        xoops_cp_header();
145
        // Define Stylesheet
146
        $xoTheme->addStylesheet(XOOPS_URL . '/modules/system/css/admin.css');
147
        // Define Breadcrumb and tips
148
        $xoBreadCrumb->addLink(_AM_SYSTEM_AVATAR_MANAGER, system_adminVersion('avatars', 'adminpath'));
149
        $xoBreadCrumb->addLink(_AM_SYSTEM_AVATAR_EDIT);
150
        $xoBreadCrumb->addHelp(system_adminVersion('avatars', 'help') . '#edit');
151
        $xoBreadCrumb->addTips(_AM_SYSTEM_AVATAR_TIPS);
152
        $xoBreadCrumb->render();
153
        // User language
154
        xoops_loadLanguage('user');
155
        // Get avatar handler
156
        $avt_handler = xoops_getModuleHandler('avatar');
157
        $avatar_id = Request::getInt('avatar_id', 0);
158
        if ($avatar_id > 0) {
159
            $avatar = $avt_handler->get($avatar_id);
160
            // Create form
161
            $form = $avatar->getForm();
162
            // Assign form
163
            $xoopsTpl->assign('form', $form->render());
164
        } else {
165
            redirect_header('admin.php?fct=avatars', 1, _AM_SYSTEM_DBERROR);
166
        }
167
        // Call Footer
168
        xoops_cp_footer();
169
        break;
170
171
    case 'save':
172
        // Check security
173
        if (!$GLOBALS['xoopsSecurity']->check()) {
174
            redirect_header('admin.php?fct=avatars', 3, implode('<br>', $GLOBALS['xoopsSecurity']->getErrors()));
175
        }
176
        /** @var XoopsConfigHandler $config_handler */
177
        $config_handler  = xoops_getHandler('config');
178
        $xoopsConfigUser = $config_handler->getConfigsByCat(XOOPS_CONF_USER);
179
        // Upload class
180
        include_once $GLOBALS['xoops']->path('/class/uploader.php');
181
182
        $uploader = new XoopsMediaUploader(
183
            XOOPS_UPLOAD_PATH . '/avatars',
184
            array(
185
            'image/gif',
186
            'image/jpeg',
187
            'image/pjpeg',
188
            'image/x-png',
189
            'image/png'),
190
            $xoopsConfigUser['avatar_maxsize'],
191
            $xoopsConfigUser['avatar_width'],
192
            $xoopsConfigUser['avatar_height']
193
        );
194
        // Get avatar handler
195
        $avt_handler = xoops_getHandler('avatar');
196
        // Get avatar id
197
        $avatar_id = Request::getInt('avatar_id', 0, 'POST');
198
        if ($avatar_id > 0) {
199
            $avatar = $avt_handler->get($avatar_id);
200
        } else {
201
            $avatar = $avt_handler->create();
202
        }
203
        $err = array();
204
        if ($_FILES['avatar_file']['error'] != UPLOAD_ERR_NO_FILE) {
205
            if ($uploader->fetchMedia('avatar_file')) {
206
                $uploader->setPrefix('savt');
207
                if (!$uploader->upload()) {
208
                    $err[] =& $uploader->getErrors();
209
                } else {
210
                    $avatar->setVar('avatar_name', Request::getString('avatar_name', '', 'POST'));
211
                    $avatar->setVar('avatar_display', Request::getBool('avatar_display', false, 'POST'));
212
                    $avatar->setVar('avatar_weight', Request::getInt('avatar_weight', 0, 'POST'));
213
                    $avatar->setVar('avatar_file', 'avatars/' . $uploader->getSavedFileName());
214
                    $avatar->setVar('avatar_mimetype', $uploader->getMediaType());
215
                    $avatar->setVar('avatar_type', 's');
216
                    if (!$avt_handler->insert($avatar)) {
217
                        $err[] = sprintf(_FAILSAVEIMG, $avatar->getVar('avatar_name'));
218
                    }
219
                }
220
            } else {
221
                $err[] = $uploader->getErrors();
222
            }
223
        } else {
224
            $file = Request::getString('avatar_file', 'blank.gif');
225
            $avatar->setVars($_REQUEST);
226
            $avatar->setVar('avatar_file', 'avatars/' . $file);
227
            if (!$avt_handler->insert($avatar)) {
228
                $err[] = sprintf(_FAILSAVEIMG, $avatar->getVar('avatar_name'));
229
            }
230
        }
231
        if (count($err) > 0) {
232
            // Define main template
233
            $GLOBALS['xoopsOption']['template_main'] = 'system_header.tpl';
234
            // Call header
235
            xoops_cp_header();
236
            // Define Stylesheet
237
            $xoTheme->addStylesheet(XOOPS_URL . '/modules/system/css/admin.css');
238
            // Define Breadcrumb and tips
239
            $xoBreadCrumb->addLink(_AM_SYSTEM_AVATAR_MANAGER, system_adminVersion('avatars', 'adminpath'));
240
            $xoBreadCrumb->addLink(_AM_SYSTEM_AVATAR_ERROR);
241
            $xoBreadCrumb->render();
242
            // Display errors
243
            xoops_error($err);
244
            // Call Footer
245
            xoops_cp_footer();
246
            exit();
247
        }
248
        redirect_header('admin.php?fct=avatars', 2, _AM_SYSTEM_DBUPDATED);
249
        break;
250
251
    case 'display':
252
        // Get avatar handler
253
        $avt_handler = xoops_getHandler('avatar');
254
        // Get avatar id
255
        $avatar_id = Request::getInt('avatar_id', 0, 'POST');
256
        if ($avatar_id > 0) {
257
            // Get avatar
258
            $avatar = $avt_handler->get($avatar_id);
259
            $old    = $avatar->getVar('avatar_display');
260
            // Set value
261
            $avatar->setVar('avatar_display', !$old);
262
            if (!$avt_handler->insert($avatar)) {
263
                $error = true;
264
            }
265
        }
266
        break;
267
268
    case 'delfile':
269
        // Define main template
270
        $GLOBALS['xoopsOption']['template_main'] = 'system_avatars.tpl';
271
        // Call Header
272
        xoops_cp_header();
273
        // Define Stylesheet
274
        $xoTheme->addStylesheet(XOOPS_URL . '/modules/system/css/admin.css');
275
        // Define Breadcrumb and tips
276
        $xoBreadCrumb->addLink(_AM_SYSTEM_AVATAR_MANAGER, system_adminVersion('avatars', 'adminpath'));
277
        $xoBreadCrumb->addLink(_AM_SYSTEM_AVATAR_DELETE);
278
        $xoBreadCrumb->addHelp(system_adminVersion('avatars', 'help') . '#delete');
279
        $xoBreadCrumb->render();
280
        // Get variables
281
        $user_id   = Request::getInt('user_id', 0);
282
        $avatar_id = Request::getInt('avatar_id', 0);
283
        // Get avatar handler
284
        $avt_handler = xoops_getHandler('avatar');
285
        if ($avatar_id > 0) {
286
            $avatar = $avt_handler->get($avatar_id);
287
            $msg = '<div class="spacer"><img src="' . XOOPS_UPLOAD_URL . '/'
288
                . $avatar->getVar('avatar_file', 's')
289
                . '" alt="" /></div><div class="txtcenter bold">'
290
                . $avatar->getVar('avatar_name', 's')
291
                . '</div>' . _AM_SYSTEM_AVATAR_SUREDEL;
292
            // Display message
293
            xoops_confirm(
294
                array(
295
                    'op' => 'delfileok',
296
                    'avatar_id' => $avatar_id,
297
                    'fct' => 'avatars',
298
                    'user_id' => $user_id
299
                ),
300
                'admin.php',
301
                $msg
302
            );
303
        } else {
304
            redirect_header('admin.php?fct=avatars', 1, _AM_SYSTEM_DBERROR);
305
        }
306
        // Call footer
307
        xoops_cp_footer();
308
        break;
309
310
    case 'delfileok':
311
        if (!$GLOBALS['xoopsSecurity']->check()) {
312
            redirect_header('admin.php?fct=avatars', 1, 3, implode('<br>', $GLOBALS['xoopsSecurity']->getErrors()));
313
        }
314
        $avatar_id = Request::getInt('avatar_id', 0, 'POST');
315
        if ($avatar_id <= 0) {
316
            redirect_header('admin.php?fct=avatars', 1, _AM_SYSTEM_DBERROR);
317
        }
318
        $avt_handler = xoops_getHandler('avatar');
319
        $avatar      = $avt_handler->get($avatar_id);
320
        if (!is_object($avatar)) {
321
            redirect_header('admin.php?fct=avatars', 1, _AM_SYSTEM_DBERROR);
322
        }
323
        if (!$avt_handler->delete($avatar)) {
324
            // Call Header
325
            xoops_cp_header();
326
            // Display errors
327
            xoops_error(sprintf(_AM_SYSTEM_AVATAR_FAILDEL, $avatar->getVar('avatar_id')));
328
            // Call Footer
329
            xoops_cp_footer();
330
            exit();
331
        }
332
        $file = $avatar->getVar('avatar_file');
333
        // Delete file
334
        @unlink(XOOPS_UPLOAD_PATH . '/' . $file);
335
        // Update member profile
336
        if (isset($user_id) && $avatar->getVar('avatar_type') === 'C') {
337
            $xoopsDB->query('UPDATE ' . $xoopsDB->prefix('users')
338
                . " SET user_avatar='blank.gif' WHERE uid=" . (int)$user_id);
339
        } else {
340
            $xoopsDB->query('UPDATE ' . $xoopsDB->prefix('users')
341
                . " SET user_avatar='blank.gif' WHERE user_avatar='" . $file . "'");
342
        }
343
        redirect_header('admin.php?fct=avatars', 2, _AM_SYSTEM_DBUPDATED);
344
        break;
345
346
    case 'multiupload':
347
        // Define main template
348
        $GLOBALS['xoopsOption']['template_main'] = 'system_avatars.tpl';
349
        // Call Header
350
        xoops_cp_header();
351
        // Define Stylesheet
352
        $xoTheme->addStylesheet(XOOPS_URL . '/media/fine-uploader/fine-uploader-new.css');
353
        $xoTheme->addStylesheet(XOOPS_URL . '/media/fine-uploader/ManuallyTriggerUploads.css');
354
        $xoTheme->addStylesheet(XOOPS_URL . '/media/font-awesome/css/font-awesome.min.css');
355
        $xoTheme->addStylesheet(XOOPS_URL . '/modules/system/css/admin.css');
356
        // Define scripts
357
        $xoTheme->addScript('browse.php?Frameworks/jquery/jquery.js');
358
        $xoTheme->addScript('modules/system/js/admin.js');
359
        $xoTheme->addScript('media/fine-uploader/fine-uploader.js');
360
        // Define Breadcrumb and tips
361
        $xoBreadCrumb->addLink(_AM_SYSTEM_AVATAR_MANAGER, system_adminVersion('avatars', 'adminpath'));
362
        $xoBreadCrumb->addLink(_AM_SYSTEM_AVATAR_MULTIUPLOAD);
363
        $xoBreadCrumb->render();
364
        /** @var XoopsConfigHandler $config_handler */
365
        $config_handler  = xoops_getHandler('config');
366
        $xoopsConfigUser = $config_handler->getConfigsByCat(XOOPS_CONF_USER);
367
368
        $xoopsTpl->assign('multiupload', true);
369
        $xoopsTpl->assign('imgcat_maxsize', $xoopsConfigUser['avatar_maxsize']);
370
        $xoopsTpl->assign('imgcat_maxwidth', $xoopsConfigUser['avatar_width']);
371
        $xoopsTpl->assign('imgcat_maxheight', $xoopsConfigUser['avatar_height']);
372
        $payload = array(
373
            'aud' => 'ajaxfineupload.php',
374
            'cat' => '',
375
            'uid' => $xoopsUser instanceof \XoopsUser ? $xoopsUser->id() : 0,
376
            'handler' => 'fineavataruploadhandler',
377
            'moddir' => 'system',
378
        );
379
        $jwt = \Xmf\Jwt\TokenFactory::build('fineuploader', $payload, 60*30); // token good for 30 minutes
380
        $xoopsTpl->assign('jwt', $jwt);
381
        $fineup_debug = 'false';
382
        if (($xoopsUser instanceof \XoopsUser ? $xoopsUser->isAdmin() : false)
383
            && isset($_REQUEST['FINEUPLOADER_DEBUG'])
384
        ) {
385
            $fineup_debug = 'true';
386
        }
387
        $xoopsTpl->assign('fineup_debug', $fineup_debug);
388
389
        // Call footer
390
        xoops_cp_footer();
391
392
        break;
393
}
394