Passed
Push — master ( 54af47...338cc0 )
by Goffy
03:19
created
Labels
Severity
1
<?php declare(strict_types=1);
2
3
/*
4
 You may not change or alter any portion of this comment or credits
5
 of supporting developers from this source code or any supporting source code
6
 which is considered copyrighted (c) material of the original comment or credit authors.
7
8
 This program is distributed in the hope that it will be useful,
9
 but WITHOUT ANY WARRANTY; without even the implied warranty of
10
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11
*/
12
13
/**
14
 * wgEvents module for xoops
15
 *
16
 * @copyright    2021 XOOPS Project (https://xoops.org)
17
 * @license      GPL 2.0 or later
18
 * @package      wgevents
19
 * @author       Goffy - Wedega - Email:[email protected] - Website:https://xoops.wedega.com
20
 */
21
22
use Xmf\Request;
23
use XoopsModules\Wgevents;
24
use XoopsModules\Wgevents\ {
25
    Constants,
26
    Utility,
27
    Common,
28
    MailHandler
29
};
30
31
require __DIR__ . '/header.php';
32
$GLOBALS['xoopsOption']['template_main'] = 'wgevents_event.tpl';
33
require_once \XOOPS_ROOT_PATH . '/header.php';
34
35
// Permission
36
if (!$permissionsHandler->getPermEventsView()) {
37
    \redirect_header('index.php', 0);
38
}
39
$permSubmit = $permissionsHandler->getPermEventsSubmit();
40
$GLOBALS['xoopsTpl']->assign('permSubmit', $permSubmit);
41
$permApprove = $permissionsHandler->getPermEventsApprove();
42
$GLOBALS['xoopsTpl']->assign('permApprove', $permApprove);
43
$permRegister = $permissionsHandler->getPermRegistrationsSubmit();
44
$GLOBALS['xoopsTpl']->assign('permRegister', $permRegister);
45
46
$op     = Request::getCmd('op', 'list');
47
$evId   = Request::getInt('id');
48
$filter = Request::getString('filter');
49
$start  = Request::getInt('start');
50
$limit  = Request::getInt('limit', $helper->getConfig('userpager'));
51
$GLOBALS['xoopsTpl']->assign('start', $start);
52
$GLOBALS['xoopsTpl']->assign('limit', $limit);
53
$catId  = Request::getInt('catid');
54
$filterCats = Request::getArray('filter_cats');
55
if ($catId > 0 && 0 == \count($filterCats)) {
56
    $filterCats[$catId] = $catId;
57
}
58
$urlCats = Request::getString('cats');
59
if (0 == \count($filterCats) && '' != $urlCats) {
60
    $filterCats = \explode(',', $urlCats);
61
}
62
63
// Define Stylesheet
64
$GLOBALS['xoTheme']->addStylesheet($style, null);
65
// Paths
66
$GLOBALS['xoopsTpl']->assign('xoops_icons32_url', \XOOPS_ICONS32_URL);
67
$GLOBALS['xoopsTpl']->assign('wgevents_url', \WGEVENTS_URL);
68
// JS
69
$GLOBALS['xoTheme']->addScript(\WGEVENTS_URL . '/assets/js/forms.js');
70
// Keywords
71
$keywords = [];
72
// Breadcrumbs
73
$xoBreadcrumbs[] = ['title' => \_MA_WGEVENTS_INDEX, 'link' => 'index.php'];
74
75
//preferences
76
$gmapsEnableEvent = false;
77
$gmapsHeight      = false;
78
$useGMaps         = (bool)$helper->getConfig('use_gmaps');
79
if ($useGMaps) {
80
    $gmapsPositionList = (string)$helper->getConfig('gmaps_enableevent');
81
    $gmapsEnableEvent  = ('top' == $gmapsPositionList || 'bottom' == $gmapsPositionList);
82
    $gmapsHeight       = $helper->getConfig('gmaps_height');
83
}
84
$eventDisplayCats = (string)$helper->getConfig('event_displaycats');
85
$GLOBALS['xoopsTpl']->assign('event_displaycats', $eventDisplayCats);
86
87
//misc
88
$uidCurrent  = 0;
89
$userIsAdmin = false;
90
if (\is_object($GLOBALS['xoopsUser'])) {
91
    $uidCurrent  = $GLOBALS['xoopsUser']->uid();
92
    $userIsAdmin = $GLOBALS['xoopsUser']->isAdmin();
93
}
94
95
$showItem = ($evId > 0);
96
$GLOBALS['xoopsTpl']->assign('showItem', $showItem);
97
98
switch ($op) {
99
    case 'show':
100
    case 'list':
101
    case 'past':
102
    default:
103
        $GLOBALS['xoopsTpl']->assign('wgevents_upload_eventlogos_url', \WGEVENTS_UPLOAD_EVENTLOGOS_URL);
104
        $GLOBALS['xoopsTpl']->assign('wgevents_upload_catlogos_url', \WGEVENTS_UPLOAD_CATLOGOS_URL);
105
        $GLOBALS['xoopsTpl']->assign('wgevents_icons_url_24', \WGEVENTS_ICONS_URL_24 . '/');
106
        $GLOBALS['xoopsTpl']->assign('filter', $filter);
107
108
        $GLOBALS['xoTheme']->addScript(\WGEVENTS_URL . '/assets/js/expander/jquery.expander.min.js');
109
        $GLOBALS['xoopsTpl']->assign('user_maxchar', $helper->getConfig('user_maxchar'));
110
        $useGroups = (bool)$helper->getConfig('use_groups');
111
        $GLOBALS['xoopsTpl']->assign('use_groups', $useGroups);
112
113
        // get categories if they should be displayed
114
        if ('none' != $eventDisplayCats && !$showItem) {
115
            $categories = $categoryHandler->getCategoriesForFilter($eventDisplayCats, $filterCats, $op, $useGroups, $filter);
116
            $GLOBALS['xoopsTpl']->assign('categories', $categories);
117
        }
118
119
        // determine whether there are
120
        // - past events if coming are shown
121
        // - coming events if past are shown
122
        switch($op) {
123
            case 'show':
124
            default:
125
                $listDescr = '';
126
                break;
127
            case 'list':
128
                // get events from the past
129
                $crEventArchieve = new \CriteriaCompo();
130
                $crEventArchieve->add(new \Criteria('datefrom', \time(), '<'));
131
                $eventsCountArchieve = $eventHandler->getCount($crEventArchieve);
132
                unset($crEventArchieve);
133
                $GLOBALS['xoopsTpl']->assign('showBtnPast', $eventsCountArchieve > 0);
134
                $listDescr = \_MA_WGEVENTS_EVENTS_LISTCOMING;
135
                if ('form' == $eventDisplayCats) {
136
                    $formCatsCb = $categoryHandler->getFormCatsCb($filterCats, $op, $filter);
137
                    $GLOBALS['xoopsTpl']->assign('formCatsCb', $formCatsCb->render());
138
                }
139
                break;
140
            case 'past':
141
                $GLOBALS['xoopsTpl']->assign('showBtnComing', true);
142
                $listDescr = \_MA_WGEVENTS_EVENTS_LISTPAST;
143
                if ('form' == $eventDisplayCats) {
144
                    $formCatsCb = $categoryHandler->getFormCatsCb($filterCats, $op, $filter);
145
                    $GLOBALS['xoopsTpl']->assign('formCatsCb', $formCatsCb->render());
146
                }
147
                break;
148
        }
149
        $GLOBALS['xoopsTpl']->assign('listDescr', $listDescr);
150
151
        //misc for displaying events
152
        $crEvent = new \CriteriaCompo();
153
        if ($showItem) {
154
            $GLOBALS['xoopsTpl']->assign('showList', false);
155
            $xoBreadcrumbs[] = ['title' => \_MA_WGEVENTS_EVENT_DETAILS];
156
        } else {
157
            $GLOBALS['xoopsTpl']->assign('showList', true);
158
            $xoBreadcrumbs[] = ['title' => $listDescr];
159
        }
160
161
        // get events
162
        $eventsArr = $eventHandler->getEvents($start, $limit, \time(), 0, '', '', $op, $evId, $filter, $filterCats);
163
164
        $eventsCount = $eventsArr['count'];
165
        $GLOBALS['xoopsTpl']->assign('eventsCount', $eventsCount);
166
        if ($eventsCount > 0) {
167
            $eventsAll = $eventsArr['eventsAll'];
168
            $events    = [];
169
            $eventsMap = [];
170
            $evName    = '';
171
            // Get All Event
172
            foreach (\array_keys($eventsAll) as $i) {
173
                $events[$i] = $eventsAll[$i]->getValuesEvents();
174
175
                $permEdit = $permissionsHandler->getPermEventsEdit($eventsAll[$i]->getVar('submitter'), $eventsAll[$i]->getVar('status')) || $uidCurrent == $eventsAll[$i]->getVar('submitter');
176
                $events[$i]['permEdit'] = $permEdit;
177
                $crQuestion = new \CriteriaCompo();
178
                $crQuestion->add(new \Criteria('evid', $i));
179
                $events[$i]['nb_questions'] = $questionHandler->getCount($crQuestion);
180
                $crRegistration = new \CriteriaCompo();
181
                $crRegistration->add(new \Criteria('evid', $i));
182
                $numberRegCurr = $registrationHandler->getCount($crRegistration);
183
                $events[$i]['nb_registrations'] = $numberRegCurr;
184
                $registerMax = (int)$events[$i]['register_max'];
185
                $events[$i]['regmax'] = $registerMax;
186
                if ($registerMax > 0) {
187
                    $events[$i]['regmax'] = $registerMax;
188
                    $proportion = $numberRegCurr / $registerMax;
189
                    if ($proportion >= 1) {
190
                        $events[$i]['regcurrent'] = \_MA_WGEVENTS_REGISTRATIONS_FULL;
191
                    } else if (0 == $numberRegCurr) {
192
                        $events[$i]['regcurrent'] = \_MA_WGEVENTS_REGISTRATIONS_NBCURR_0;
193
                    } else {
194
                        $events[$i]['regcurrent'] = \sprintf(\_MA_WGEVENTS_REGISTRATIONS_NBCURR_INDEX, $numberRegCurr, $registerMax);
195
                    }
196
                    $events[$i]['regcurrent_text'] = $events[$i]['regcurrent'];
197
                    $events[$i]['regcurrent_tip'] = true;
198
                    if ($proportion < 0.75) {
199
                        $events[$i]['regcurrentstate'] = 'success';
200
                    } elseif ($proportion < 1) {
201
                        $events[$i]['regcurrentstate'] = 'warning';
202
                    } else {
203
                        $events[$i]['regcurrentstate'] = 'danger';
204
                        $events[$i]['regcurrent_tip'] = false;
205
                    }
206
                    $events[$i]['regpercentage'] = (int)($proportion * 100);
207
                } else if ('show' == $op) {
208
                    $events[$i]['regcurrent'] = $numberRegCurr;
209
                }
210
                $events[$i]['regenabled'] = $permEdit || (\time() >= $events[$i]['register_from'] && \time() <= $events[$i]['register_to']);
211
                $events[$i]['locked'] = (Constants::STATUS_LOCKED == $events[$i]['status']);
212
                $events[$i]['canceled'] = (Constants::STATUS_CANCELED == $events[$i]['status']);
213
                $evName = $eventsAll[$i]->getVar('name');
214
                if ($useGMaps && $gmapsEnableEvent && (float)$eventsAll[$i]->getVar('locgmlat') > 0) {
215
                    $eventsMap[$i] = [
216
                        'name' => $evName,
217
                        'location' => $events[$i]['location_text_user'],
218
                        'from' => $events[$i]['datefrom_text'],
219
                        'url' => 'event.php?op=show&id=' . $i,
220
                        'lat'  => (float)$eventsAll[$i]->getVar('locgmlat'),
221
                        'lon'  => (float)$eventsAll[$i]->getVar('locgmlon')
222
                    ];
223
                }
224
                $keywords[$i] = $evName;
225
            }
226
            $GLOBALS['xoopsTpl']->assign('events', $events);
227
            if ('show' == $op && $useGMaps) {
228
                $GLOBALS['xoopsTpl']->assign('gmapsShow', true);
229
            }
230
            if ($useGMaps && count($eventsMap) > 0) {
231
                $GLOBALS['xoopsTpl']->assign('gmapsShowList', true);
232
                $GLOBALS['xoopsTpl']->assign('gmapsEnableEvent', $gmapsEnableEvent);
233
                $GLOBALS['xoopsTpl']->assign('gmapsHeight', $gmapsHeight);
234
                $GLOBALS['xoopsTpl']->assign('gmapsPositionList', $gmapsPositionList);
235
                $GLOBALS['xoopsTpl']->assign('api_key', $helper->getConfig('gmaps_api'));
236
                $GLOBALS['xoopsTpl']->assign('eventsMap', $eventsMap);
237
            }
238
            unset($events, $eventMaps);
239
            // Display Navigation
240
            if ($eventsCount > $limit) {
241
                $urlCats = \implode(',', $filterCats);
242
                require_once \XOOPS_ROOT_PATH . '/class/pagenav.php';
243
                $pagenav = new \XoopsPageNav($eventsCount, $limit, $start, 'start', 'op=list&amp;filter=' . $filter . '&amp;limit=' . $limit . '&amp;cats=' . $urlCats);
244
                $GLOBALS['xoopsTpl']->assign('pagenav', $pagenav->renderNav());
245
            }
246
            $GLOBALS['xoopsTpl']->assign('table_type', $helper->getConfig('table_type'));
247
            $GLOBALS['xoopsTpl']->assign('start', $start);
248
            $GLOBALS['xoopsTpl']->assign('limit', $limit);
249
250
            if ('show' == $op && '' != $evName) {
251
                $GLOBALS['xoopsTpl']->assign('xoops_pagetitle', \strip_tags($evName . ' - ' . $GLOBALS['xoopsModule']->getVar('name')));
252
            }
253
        } else {
254
            if (\count($filterCats) > 0) {
255
                $GLOBALS['xoopsTpl']->assign('noEventsReason', \_MA_WGEVENTS_INDEX_THEREARENT_EVENTS_FILTER);
256
            } else {
257
                $GLOBALS['xoopsTpl']->assign('noEventsReason', \_MA_WGEVENTS_INDEX_THEREARENT_EVENTS);
258
            }
259
        }
260
261
        break;
262
    case 'save':
263
        // Security Check
264
        if (!$GLOBALS['xoopsSecurity']->check()) {
265
            \redirect_header('event.php', 3, \implode(',', $GLOBALS['xoopsSecurity']->getErrors()));
266
        }
267
        // Check permissions
268
        if (!$permissionsHandler->getPermEventsSubmit()) {
269
            \redirect_header('index.php?op=list', 3, \_NOPERM);
270
        }
271
        if ($evId > 0) {
272
            $eventObj = $eventHandler->get($evId);
273
            $eventObjOld = $eventHandler->get($evId);
274
            // Check permissions
275
            if (!$permissionsHandler->getPermEventsEdit($eventObj->getVar('submitter'), $eventObj->getVar('status'))) {
276
                \redirect_header('index.php?op=list', 3, \_NOPERM);
277
            }
278
        } else {
279
            $eventObj = $eventHandler->create();
280
        }
281
282
        $uploaderErrors = '';
283
        $dateErrors = '';
284
        $catId = Request::getInt('catid');
285
        $evSubmitter = Request::getInt('submitter');
286
287
        $eventObj->setVar('catid', $catId);
288
        $subCats = \serialize(Request::getArray('subcats'));
289
        $eventObj->setVar('subcats', $subCats);
290
        $eventObj->setVar('name', Request::getString('name'));
291
        // Set Var logo
292
        require_once \XOOPS_ROOT_PATH . '/class/uploader.php';
293
        $filename    = $_FILES['logo']['name'];
294
        $imgMimetype = $_FILES['logo']['type'];
295
        $imgNameDef  = Request::getString('name');
296
        $uploadPath  = \WGEVENTS_UPLOAD_EVENTLOGOS_PATH . '/' . $uidCurrent . '/';
297
        $uploader    = new \XoopsMediaUploader($uploadPath,
298
                                                    $helper->getConfig('mimetypes_image'), 
299
                                                    $helper->getConfig('maxsize_image'), null, null);
300
        if ($uploader->fetchMedia($_POST['xoops_upload_file'][0])) {
301
            $extension = \preg_replace('/^.+\.([^.]+)$/sU', '', $filename);
302
            $imgName = \str_replace(' ', '', $imgNameDef) . '.' . $extension;
303
            $uploader->setPrefix($imgName);
304
            $uploader->fetchMedia($_POST['xoops_upload_file'][0]);
305
            if ($uploader->upload()) {
306
                $savedFilename = $uploader->getSavedFileName();
307
                $maxwidth  = (int)$helper->getConfig('maxwidth_image');
308
                $maxheight = (int)$helper->getConfig('maxheight_image');
309
                if ($maxwidth > 0 && $maxheight > 0) {
310
                    // Resize image
311
                    $imgHandler                = new Wgevents\Common\Resizer();
312
                    $imgHandler->sourceFile    = $uploadPath . $savedFilename;
313
                    $imgHandler->endFile       = $uploadPath . $savedFilename;
314
                    $imgHandler->imageMimetype = $imgMimetype;
315
                    $imgHandler->maxWidth      = $maxwidth;
316
                    $imgHandler->maxHeight     = $maxheight;
317
                    $result                    = $imgHandler->resizeImage();
318
                }
319
                $filename = $savedFilename;
320
                $eventObj->setVar('logo', $savedFilename);
321
            } else {
322
                $uploaderErrors .= '<br>' . $uploader->getErrors();
323
            }
324
        } else {
325
            if ($filename > '') {
326
                $uploaderErrors .= '<br>' . $uploader->getErrors();
327
            }
328
            $filename = Request::getString('logo');
329
            if ('' != $filename) {
330
                $eventObj->setVar('logo', $filename);
331
            }
332
        }
333
        if ($evSubmitter !== $uidCurrent) {
334
            //if someone creates/save event for someone else then copy logo
335
            $submitterDirectory = \WGEVENTS_UPLOAD_EVENTLOGOS_PATH . '/' . $evSubmitter;
336
            if (!\file_exists($submitterDirectory)) {
337
                Utility::createFolder($submitterDirectory);
338
                \chmod($submitterDirectory, 0777);
339
                $source = \WGEVENTS_PATH . '/assets/images/blank.gif';
340
                $dest = $submitterDirectory . '/blank.gif';
341
                Utility::copyFile($source, $dest);
342
            }
343
            $dest = \WGEVENTS_UPLOAD_EVENTLOGOS_PATH . '/' . $evSubmitter . '/' . $filename;
344
            if (!\file_exists($dest)) {
345
                Utility::copyFile($uploadPath . $filename, $dest);
346
            }
347
        }
348
        $eventObj->setVar('desc', Request::getText('desc'));
349
        $eventDatefromArr = Request::getArray('datefrom');
350
        $eventDatefromObj = \DateTime::createFromFormat(\_SHORTDATESTRING, $eventDatefromArr['date']);
351
        $eventDatefromObj->setTime(0, 0);
352
        $eventDatefrom = $eventDatefromObj->getTimestamp() + (int)$eventDatefromArr['time'];
353
        $eventObj->setVar('datefrom', $eventDatefrom);
354
        $eventDatetoArr = Request::getArray('dateto');
355
        $eventDatetoObj = \DateTime::createFromFormat(\_SHORTDATESTRING, $eventDatetoArr['date']);
356
        $eventDatetoObj->setTime(0, 0);
357
        $eventDateto = $eventDatetoObj->getTimestamp() + (int)$eventDatetoArr['time'];
358
        if ($eventDateto < $eventDatefrom) {
359
            $eventDateto = $eventDatefrom;
360
            $dateErrors .= '<br>' . \_MA_WGEVENTS_EVENT_DATE_ERROR1;
361
        }
362
        $eventObj->setVar('dateto', $eventDateto);
363
        $eventObj->setVar('allday', Request::getInt('allday'));
364
        $eventObj->setVar('contact', Request::getString('contact'));
365
        $eventObj->setVar('email', Request::getString('email'));
366
        $eventObj->setVar('url', Request::getString('url'));
367
        $eventObj->setVar('location', Request::getString('location'));
368
        $eventObj->setVar('locgmlat', Request::getFloat('locgmlat'));
369
        $eventObj->setVar('locgmlon', Request::getFloat('locgmlon'));
370
        $eventObj->setVar('locgmzoom', Request::getInt('locgmzoom'));
371
        $evFeeAmountArr = Request::getArray('fee');
372
        $evFeeDescArr = Request::getArray('feedesc');
373
        $evFeeArr = [];
374
        foreach ($evFeeAmountArr as $key => $evFeeAmount) {
375
            $evFeeArr[] = [Utility::StringToFloat($evFeeAmount), $evFeeDescArr[$key]];
376
        }
377
        // remove last array item, as this is from hidden group
378
        \array_pop($evFeeArr);
379
        $evFee = \json_encode($evFeeArr);
380
        $eventObj->setVar('fee', $evFee);
381
        $eventObj->setVar('paymentinfo', Request::getText('paymentinfo'));
382
        $evRegisterUse = Request::getInt('register_use');
383
        $eventObj->setVar('register_use', $evRegisterUse);
384
        if ($evRegisterUse) {
385
            $evRegisterfromArr = Request::getArray('register_from');
386
            $evRegisterfromObj = \DateTime::createFromFormat(\_SHORTDATESTRING, $evRegisterfromArr['date']);
387
            $evRegisterfromObj->setTime(0, 0);
388
            $evRegisterfrom = $evRegisterfromObj->getTimestamp() + (int)$evRegisterfromArr['time'];
389
            $eventObj->setVar('register_from', $evRegisterfrom);
390
            $evRegistertoArr = Request::getArray('register_to');
391
            $evRegistertoObj = \DateTime::createFromFormat(\_SHORTDATESTRING, $evRegistertoArr['date']);
392
            $evRegistertoObj->setTime(0, 0);
393
            $evRegisterto = $evRegistertoObj->getTimestamp() + (int)$evRegistertoArr['time'];
394
            $eventObj->setVar('register_to', $evRegisterto);
395
            if ($evRegisterto < $evRegisterfrom) {
396
                $evRegisterto = $evRegisterfrom;
397
                $dateErrors .= '<br>' . \_MA_WGEVENTS_EVENT_DATE_ERROR2;
398
            }
399
            $eventObj->setVar('register_max', Request::getInt('register_max'));
400
            $eventObj->setVar('register_listwait', Request::getInt('register_listwait'));
401
            $eventObj->setVar('register_autoaccept', Request::getInt('register_autoaccept'));
402
            $eventObj->setVar('register_notify', Request::getString('register_notify'));
403
            $eventObj->setVar('register_forceverif', Request::getInt('register_forceverif'));
404
            $evRegisterSendermail = Request::getString('register_sendermail');
405
            if ('' == $evRegisterSendermail) {
406
                // Get Form Error
407
                $GLOBALS['xoopsTpl']->assign('error', \_MA_WGEVENTS_EVENT_REGISTER_SENDERMAIL_ERR);
408
                $form = $eventObj->getForm();
409
                $GLOBALS['xoopsTpl']->assign('form', $form->render());
410
                break;
411
            }
412
            $eventObj->setVar('register_sendermail', $evRegisterSendermail);
413
            $eventObj->setVar('register_sendername', Request::getString('register_sendername'));
414
            $eventObj->setVar('register_signature', Request::getString('register_signature'));
415
        } else {
416
            //reset previous values
417
            $eventObj->setVar('register_to', 0);
418
            $eventObj->setVar('register_max', 0);
419
            $eventObj->setVar('register_listwait', 0);
420
            $eventObj->setVar('register_autoaccept', 0);
421
            $eventObj->setVar('register_notify', '');
422
            $eventObj->setVar('register_sendermail', '');
423
            $eventObj->setVar('register_sendername', '');
424
            $eventObj->setVar('register_signature', '');
425
            $eventObj->setVar('register_forceverif', 0);
426
        }
427
        $eventObj->setVar('status', Request::getInt('status'));
428
        $eventObj->setVar('galid', Request::getInt('galid'));
429
        $arrGroups = Request::getArray('groups');
430
        if (in_array('00000', $arrGroups)) {
431
            $eventObj->setVar('groups', '00000');
432
        } else {
433
            $eventObj->setVar('groups', implode("|", $arrGroups));
434
        }
435
        if (Request::hasVar('datecreated_int')) {
436
            $eventObj->setVar('datecreated', Request::getInt('datecreated_int'));
437
        } else {
438
            $eventDatecreatedObj = \DateTime::createFromFormat(\_SHORTDATESTRING, Request::getString('datecreated'));
439
            $eventObj->setVar('datecreated', $eventDatecreatedObj->getTimestamp());
440
        }
441
        $eventObj->setVar('submitter', Request::getInt('submitter'));
442
        // Insert Data
443
        if ($eventHandler->insert($eventObj)) {
444
            $newEvId = $evId > 0 ? $evId : $eventObj->getNewInsertedId();
445
            // create unique identifier if new event and identifier exists
446
            if (0 == $evId) {
447
                $categoryObj = $categoryHandler->get($catId);
448
                $identifier = (string)$categoryObj->getVar('identifier');
449
                if ('' !== $identifier){
450
                    if (\substr($identifier, -1) !== '_') {
451
                        $identifier .= '_';
452
                    }
453
                    $identifier .= $eventDatefromObj->format('Y') . '_';
454
                    $crEvent = new \CriteriaCompo();
455
                    $crEvent->add(new \Criteria('identifier', $identifier . '%', 'LIKE'));
456
                    $eventsCount = $eventHandler->getCount($crEvent) + 1;
457
                    $eventIdentifierObj = $eventHandler->get($newEvId);
458
                    $eventIdentifierObj->setVar('identifier', $identifier . ($eventsCount));
459
                    $eventHandler->insert($eventIdentifierObj);
460
                    unset($eventIdentifierObj);
461
                }
462
            } else {
463
                $eventIdentifierObj = $eventHandler->get($evId);
464
                $eventIdentifierObj->setVar('identifier', Request::getString('identifier'));
465
                $eventHandler->insert($eventIdentifierObj);
466
                unset($eventIdentifierObj);
467
            }
468
469
            // Handle notification
470
            /*
471
            $evName = $eventObj->getVar('name');
472
            $evStatus = $eventObj->getVar('status');
473
            $tags = [];
474
            $tags['ITEM_NAME'] = $evName;
475
            $tags['ITEM_URL']  = \XOOPS_URL . '/modules/wgevents/event.php?op=show&id=' . $evId;
476
            $notificationHandler = \xoops_getHandler('notification');
477
            if (Constants::STATUS_SUBMITTED == $evStatus) {
478
                // Event approve notification
479
                $notificationHandler->triggerEvent('global', 0, 'global_approve', $tags);
480
                $notificationHandler->triggerEvent('events', $newEvId, 'event_approve', $tags);
481
            } else {
482
                if ($evId > 0) {
483
                    // Event modify notification
484
                    $notificationHandler->triggerEvent('global', 0, 'global_modify', $tags);
485
                    $notificationHandler->triggerEvent('events', $newEvId, 'event_modify', $tags);
486
                } else {
487
                    // Event new notification
488
                    $notificationHandler->triggerEvent('global', 0, 'global_new', $tags);
489
                }
490
            }
491
            */
492
493
            // check whether there are important changes of the event
494
            // if yes then send notifications to all participants
495
            if ($evId > 0) {
496
                // find changes in table events
497
                $infotext = $eventHandler->getEventsCompare($eventObjOld, $eventObj);
498
                if ('' != $infotext) {
499
                    $typeConfirm = Constants::MAIL_EVENT_NOTIFY_MODIFY;
500
                    $crRegistration = new \CriteriaCompo();
501
                    $crRegistration->add(new \Criteria('evid', $evId));
502
                    $registrationsCount = $registrationHandler->getCount($crRegistration);
503
                    if ($registrationsCount > 0) {
504
                        $registrationsAll = $registrationHandler->getAll($crRegistration);
505
                        foreach (\array_keys($registrationsAll) as $regId) {
506
                            // Event delete notification
507
                            /*
508
                            $tags = [];
509
                            $tags['ITEM_NAME'] = $regEvid;
510
                            $notificationHandler = \xoops_getHandler('notification');
511
                            $notificationHandler->triggerEvent('global', 0, 'global_delete', $tags);
512
                            $notificationHandler->triggerEvent('registrations', $regId, 'registration_delete', $tags);
513
                            */
514
                            $informModif = Request::getBool('informModif');
515
                            if ($informModif) {
516
                                // send notifications emails, only to participants
517
                                $regEmail = (string)$registrationsAll[$regId]->getVar('email');
518
                                if ('' != $regEmail) {
519
                                    // send confirmation
520
                                    $mailsHandler = new MailHandler();
521
                                    $mailParams = $mailsHandler->getMailParam($evId, $regId);
522
                                    $mailParams['infotext'] = $infotext;
523
                                    $mailParams['recipients'] = $regEmail;
524
                                    $mailsHandler->setParams($mailParams);
525
                                    $mailsHandler->setType($typeConfirm);
526
                                    $mailsHandler->setHtml(true);
527
                                    $mailsHandler->executeReg();
0 ignored issues
show
The method executeReg() does not exist on XoopsModules\Wgevents\MailHandler. Did you maybe mean execute()? ( Ignorable by Annotation )

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

527
                                    $mailsHandler->/** @scrutinizer ignore-call */ 
528
                                                   executeReg();

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
528
                                    unset($mailsHandler);
529
                                }
530
                            }
531
                        }
532
                    }
533
                }
534
            }
535
            // redirect after insert
536
            if ('' !== $uploaderErrors) {
537
                \redirect_header('event.php?op=edit&id=' . $newEvId, 5, $uploaderErrors);
538
            } else if ($evRegisterUse) {
539
                // clone questions, if event is clone of other event
540
                $idEvSource = Request::getInt('id_source');
541
                $cloneQuestions = Request::getBool('clone_question');
542
                if ($cloneQuestions) {
543
                    $crQuestion = new \CriteriaCompo();
544
                    $crQuestion->add(new \Criteria('evid', $idEvSource));
545
                    $questionsCount = $questionHandler->getCount($crQuestion);
546
                    if ($questionsCount > 0) {
547
                        $questionsAllSource = $questionHandler->getAll($crQuestion);
548
                        foreach ($questionsAllSource as $questionObjSource) {
549
                            $questionObjNew = $questionHandler->create();
550
                            $vars = $questionObjSource->getVars();
551
                            foreach (\array_keys($vars) as $var) {
552
                                switch ($var) {
553
                                    case 'id':
554
                                        break;
555
                                    case 'evid':
556
                                        $questionObjNew->setVar('evid', $newEvId);
557
                                        break;
558
                                    case 'datecreated':
559
                                        $questionObjNew->setVar('datecreated', \time());
560
                                        break;
561
                                    case 'submitter':
562
                                        $questionObjNew->setVar('submitter', $uidCurrent);
563
                                        break;
564
                                    case '':
565
                                    default:
566
                                        $questionObjNew->setVar($var, $questionObjSource->getVar($var));
567
                                        break;
568
                                }
569
                            }
570
                            $questionHandler->insert($questionObjNew);
571
                        }
572
                    }
573
                }
574
                $textFormOK = \_MA_WGEVENTS_FORM_OK . $dateErrors;
575
                if (Request::hasVar('continue_questions')) {
576
                    \redirect_header('question.php?op=list&amp;evid=' . $newEvId . '&amp;start=' . $start . '&amp;limit=' . $limit, 2, $textFormOK);
577
                }
578
                if ($evId > 0 || !$cloneQuestions) {
579
                    \redirect_header('event.php?op=show&amp;id=' . $evId . '&amp;start=' . $start . '&amp;limit=' . $limit, 2, $textFormOK);
580
                } else {
581
                    // check whether there are already question infos
582
                    $crQuestion = new \CriteriaCompo();
583
                    $crQuestion->add(new \Criteria('evid', $newEvId));
584
                    if ($questionHandler->getCount($crQuestion) > 0) {
585
                        // set of questions already existing
586
                        \redirect_header('question.php?op=list&amp;evid=' . $newEvId, 2, $textFormOK);
587
                    } else {
588
                        // redirect to question.php in order to add default set of questions
589
                        \redirect_header('question.php?op=newset&amp;evid=' . $newEvId, 0, $textFormOK);
590
                    }
591
                }
592
            } else {
593
                if ($evId > 0) {
594
                    $registrationHandler->cleanupRegistrations($evId);
595
                    $questionHandler->cleanupQuestions($evId);
596
                    $answerHandler->cleanupAnswers($evId);
597
                }
598
                \redirect_header('event.php?op=list&amp;start=' . $start . '&amp;limit=' . $limit, 2, \_MA_WGEVENTS_FORM_OK . $dateErrors);
599
            }
600
        }
601
        // Get Form Error
602
        $GLOBALS['xoopsTpl']->assign('error', $eventObj->getHtmlErrors());
603
        $form = $eventObj->getForm();
604
        $GLOBALS['xoopsTpl']->assign('form', $form->render());
605
        break;
606
    case 'new':
607
        // Breadcrumbs
608
        $xoBreadcrumbs[] = ['title' => \_MA_WGEVENTS_EVENT_ADD];
609
        // Check permissions
610
        if (!$permissionsHandler->getPermEventsSubmit()) {
611
            \redirect_header('event.php?op=list', 3, \_NOPERM);
612
        }
613
        if ($useGMaps) {
614
            $GLOBALS['xoopsTpl']->assign('gmapsModalSave', $permissionsHandler->getPermEventsSubmit());
615
            $GLOBALS['xoopsTpl']->assign('gmapsModal', true);
616
            $GLOBALS['xoopsTpl']->assign('api_key', $helper->getConfig('gmaps_api'));
617
        }
618
        // Form Create
619
        $eventObj = $eventHandler->create();
620
        $eventDate = Request::getInt('eventDate', \time());
621
        $eventObj->setVar('datefrom', $eventDate);
622
        $eventObj->setVar('dateto', $eventDate);
623
        $eventObj->start = $start;
624
        $eventObj->limit = $limit;
625
        $form = $eventObj->getForm();
626
        $GLOBALS['xoopsTpl']->assign('form', $form->render());
627
        break;
628
    case 'edit':
629
        // Breadcrumbs
630
        $xoBreadcrumbs[] = ['title' => \_MA_WGEVENTS_EVENT_EDIT];
631
        // Check params
632
        if (0 == $evId) {
633
            \redirect_header('event.php?op=list', 3, \_MA_WGEVENTS_INVALID_PARAM);
634
        }
635
        $eventObj = $eventHandler->get($evId);
636
        // Check permissions
637
        $permEdit = !$permissionsHandler->getPermEventsEdit($eventObj->getVar('submitter'), $eventObj->getVar('status'));
638
        if ($permEdit) {
639
            \redirect_header('index.php?op=list', 3, \_NOPERM);
640
        }
641
        if ($useGMaps) {
642
            $GLOBALS['xoopsTpl']->assign('gmapsModalSave', $permEdit);
643
            $GLOBALS['xoopsTpl']->assign('gmapsModal', true);
644
            $GLOBALS['xoopsTpl']->assign('api_key', $helper->getConfig('gmaps_api'));
645
        }
646
        // Get Form
647
        $eventObj = $eventHandler->get($evId);
648
        $eventObj->start = $start;
649
        $eventObj->limit = $limit;
650
        $form = $eventObj->getForm();
651
        $GLOBALS['xoopsTpl']->assign('form', $form->render());
652
        break;
653
    case 'clone':
654
        // Check permissions
655
        if (!$permissionsHandler->getPermEventsSubmit()) {
656
            \redirect_header('event.php?op=list', 3, \_NOPERM);
657
        }
658
659
        // Request source
660
        $evIdSource = Request::getInt('id_source');
661
        // Check params
662
        if (0 == $evIdSource) {
663
            \redirect_header('event.php?op=list', 3, \_MA_WGEVENTS_INVALID_PARAM);
664
        }
665
666
        // Breadcrumbs
667
        $xoBreadcrumbs[] = ['title' => \_MA_WGEVENTS_EVENT_CLONE];
668
669
        if ($useGMaps) {
670
            $GLOBALS['xoopsTpl']->assign('gmapsModalSave', $permissionsHandler->getPermEventsSubmit());
671
            $GLOBALS['xoopsTpl']->assign('gmapsModal', true);
672
            $GLOBALS['xoopsTpl']->assign('api_key', $helper->getConfig('gmaps_api'));
673
        }
674
675
        // Get Form
676
        $eventObjSource = $eventHandler->get($evIdSource);
677
        $eventObjClone  = $eventHandler->create();
678
        $vars = $eventObjSource->getVars();
679
        foreach (\array_keys($vars) as $var) {
680
            $eventObjClone->setVar($var, $eventObjSource->getVar($var));
681
        }
682
        $eventObjClone->idSource = $evIdSource;
683
        $form = $eventObjClone->getForm();
684
        $GLOBALS['xoopsTpl']->assign('form', $form->render());
685
        break;
686
    case 'delete':
687
        // Breadcrumbs
688
        $xoBreadcrumbs[] = ['title' => \_MA_WGEVENTS_EVENT_DELETE];
689
        // Check permissions
690
        if (!$permissionsHandler->getPermEventsSubmit()) {
691
            \redirect_header('event.php?op=list', 3, \_NOPERM);
692
        }
693
        // Check params
694
        if (0 == $evId) {
695
            \redirect_header('event.php?op=list', 3, \_MA_WGEVENTS_INVALID_PARAM);
696
        }
697
        $crRegistration = new \CriteriaCompo();
698
        $crRegistration->add(new \Criteria('evid', $evId));
699
        $registrationsCount = $registrationHandler->getCount($crRegistration);
700
        if ($registrationsCount > 0) {
701
            \redirect_header('event.php?op=list', 3, \_MA_WGEVENTS_EVENT_DELETE_ERR);
702
        }
703
        $eventObj = $eventHandler->get($evId);
704
        $evName = $eventObj->getVar('name');
705
        if (isset($_REQUEST['ok']) && 1 == $_REQUEST['ok']) {
706
            if (!$GLOBALS['xoopsSecurity']->check()) {
707
                \redirect_header('event.php', 3, \implode(', ', $GLOBALS['xoopsSecurity']->getErrors()));
708
            }
709
            $registrationHandler->cleanupRegistrations($evId);
710
            $questionHandler->cleanupQuestions($evId);
711
            $answerHandler->cleanupAnswers($evId);
712
            if ($eventHandler->delete($eventObj)) {
713
                // Event delete notification
714
                /*
715
                $tags = [];
716
                $tags['ITEM_NAME'] = $evName;
717
                $notificationHandler = \xoops_getHandler('notification');
718
                $notificationHandler->triggerEvent('global', 0, 'global_delete', $tags);
719
                $notificationHandler->triggerEvent('events', $evId, 'event_delete', $tags);
720
                */
721
                \redirect_header('event.php', 3, \_MA_WGEVENTS_FORM_DELETE_OK);
722
            } else {
723
                $GLOBALS['xoopsTpl']->assign('error', $eventObj->getHtmlErrors());
724
            }
725
        } else {
726
            $customConfirm = new Common\Confirm(
727
                ['ok' => 1, 'id' => $evId, 'start' => $start, 'limit' => $limit, 'op' => 'delete'],
728
                $_SERVER['REQUEST_URI'],
729
                \sprintf(\_MA_WGEVENTS_CONFIRMDELETE_EVENT, $eventObj->getVar('name')), \_MA_WGEVENTS_CONFIRMDELETE_TITLE, \_MA_WGEVENTS_CONFIRMDELETE_LABEL);
730
            $form = $customConfirm->getFormConfirm();
731
            $GLOBALS['xoopsTpl']->assign('form', $form->render());
732
        }
733
        break;
734
    case 'cancel':
735
        // Breadcrumbs
736
        $xoBreadcrumbs[] = ['title' => \_MA_WGEVENTS_EVENT_CANCEL];
737
        // Check permissions
738
        if (!$permissionsHandler->getPermEventsSubmit()) {
739
            \redirect_header('event.php?op=list', 3, \_NOPERM);
740
        }
741
        // Check params
742
        if (0 == $evId) {
743
            \redirect_header('event.php?op=list', 3, \_MA_WGEVENTS_INVALID_PARAM);
744
        }
745
        $eventObj = $eventHandler->get($evId);
746
        $evName = $eventObj->getVar('name');
747
        if (isset($_REQUEST['ok']) && 1 == $_REQUEST['ok']) {
748
            if (!$GLOBALS['xoopsSecurity']->check()) {
749
                \redirect_header('event.php', 3, \implode(', ', $GLOBALS['xoopsSecurity']->getErrors()));
750
            }
751
            $eventObj->setVar('status', Constants::STATUS_CANCELED);
752
            $eventObj->setVar('datecreated', \time());
753
            $eventObj->setVar('submitter', $uidCurrent);
754
            // delete all questions/registrations/answers
755
            $registrationHandler->cleanupRegistrations($evId);
756
            $questionHandler->cleanupQuestions($evId);
757
            $answerHandler->cleanupAnswers($evId);
758
            // Insert Data
759
            if ($eventHandler->insert($eventObj)) {
760
                // Event delete notification
761
                /*
762
                $tags = [];
763
                $tags['ITEM_NAME'] = $evName;
764
                $notificationHandler = \xoops_getHandler('notification');
765
                $notificationHandler->triggerEvent('global', 0, 'global_delete', $tags);
766
                $notificationHandler->triggerEvent('events', $evId, 'event_delete', $tags);
767
                */
768
                \redirect_header('event.php', 3, \_MA_WGEVENTS_FORM_CANCEL_OK);
769
            } else {
770
                $GLOBALS['xoopsTpl']->assign('error', $eventObj->getHtmlErrors());
771
            }
772
        } else {
773
            $customConfirm = new Common\Confirm(
774
                ['ok' => 1, 'id' => $evId, 'start' => $start, 'limit' => $limit, 'op' => 'cancel'],
775
                $_SERVER['REQUEST_URI'],
776
                \sprintf(\_MA_WGEVENTS_CONFIRMCANCEL_EVENT, $eventObj->getVar('name')), \_MA_WGEVENTS_CONFIRMCANCEL_TITLE, \_MA_WGEVENTS_CONFIRMCANCEL_LABEL);
777
            $form = $customConfirm->getFormConfirm();
778
            $GLOBALS['xoopsTpl']->assign('form', $form->render());
779
        }
780
        break;
781
}
782
783
// Keywords
784
wgeventsMetaKeywords($helper->getConfig('keywords') . ', ' . \implode(',', $keywords));
785
unset($keywords);
786
787
// Description
788
wgeventsMetaDescription(\_MA_WGEVENTS_EVENTS_DESC);
789
$GLOBALS['xoopsTpl']->assign('xoops_mpageurl', \WGEVENTS_URL.'/event.php');
790
$GLOBALS['xoopsTpl']->assign('wgevents_upload_url', \WGEVENTS_UPLOAD_URL);
791
792
require __DIR__ . '/footer.php';
793