edit()   F
last analyzed

Complexity

Conditions 16
Paths 1440

Size

Total Lines 131
Code Lines 88

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 16
eloc 88
c 0
b 0
f 0
nc 1440
nop 0
dl 0
loc 131
rs 1.3818

How to fix   Long Method    Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

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
 * @copyright    {@link https://xoops.org/ XOOPS Project}
15
 * @license      {@link https://www.gnu.org/licenses/gpl-2.0.html GNU GPL 2 or later}
16
 * @author       Brian Wahoff <[email protected]>
17
 * @author       Eric Juden <[email protected]>
18
 * @author       XOOPS Development Team
19
 */
20
21
use Xmf\Module\Admin;
22
use Xmf\Request;
23
use XoopsModules\Xhelp\{
24
    Helper,
25
    RoleHandler,
26
    Session,
27
    Utility
28
};
29
30
require_once __DIR__ . '/admin_header.php';
31
$session = Session::getInstance();
32
$helper  = Helper::getInstance();
33
/** @var \XoopsModules\Xhelp\NotificationHandler $notificationHandler */
34
$notificationHandler = $helper->getHandler('Notification');
35
36
global $xoopsModule;
37
if (!$templates = $session->get('xhelp_notifications')) {
38
    $templates = $xoopsModule->getInfo('_email_tpl');
39
    $session->set('xhelp_notifications', $templates);
40
}
41
$has_notifications = count($templates);
42
43
$aStaffSettings = [
44
    2 => _AM_XHELP_STAFF_SETTING2, // 1 => _AM_XHELP_STAFF_SETTING1, -- removed because we don't need it
45
    3 => _AM_XHELP_STAFF_SETTING3,
46
    4 => _AM_XHELP_STAFF_SETTING4,
47
];
48
$aUserSettings  = ['1' => _AM_XHELP_USER_SETTING1, '2' => _AM_XHELP_USER_SETTING2];
49
50
// Also in profile.php
51
$aNotifications = [
52
    XHELP_NOTIF_NEWTICKET    => [
53
        'name'      => _AM_XHELP_NOTIF_NEW_TICKET,
54
        'email_tpl' => [
55
            1  => $templates[1],
56
            18 => $templates[18],
57
            20 => $templates[20],
58
            21 => $templates[21],
59
            22 => $templates[22],
60
            23 => $templates[23],
61
            24 => $templates[24],
62
        ],
63
    ],
64
    XHELP_NOTIF_DELTICKET    => [
65
        'name'      => _AM_XHELP_NOTIF_DEL_TICKET,
66
        'email_tpl' => [2 => $templates[2], 12 => $templates[12]],
67
    ],
68
    XHELP_NOTIF_EDITTICKET   => [
69
        'name'      => _AM_XHELP_NOTIF_MOD_TICKET,
70
        'email_tpl' => [3 => $templates[3], 13 => $templates[13]],
71
    ],
72
    XHELP_NOTIF_NEWRESPONSE  => [
73
        'name'      => _AM_XHELP_NOTIF_NEW_RESPONSE,
74
        'email_tpl' => [4 => $templates[4], 14 => $templates[14]],
75
    ],
76
    XHELP_NOTIF_EDITRESPONSE => [
77
        'name'      => _AM_XHELP_NOTIF_MOD_RESPONSE,
78
        'email_tpl' => [5 => $templates[5], 15 => $templates[15]],
79
    ],
80
    XHELP_NOTIF_EDITSTATUS   => [
81
        'name'      => _AM_XHELP_NOTIF_MOD_STATUS,
82
        'email_tpl' => [6 => $templates[6], 16 => $templates[16]],
83
    ],
84
    XHELP_NOTIF_EDITPRIORITY => [
85
        'name'      => _AM_XHELP_NOTIF_MOD_PRIORITY,
86
        'email_tpl' => [7 => $templates[7], 17 => $templates[17]],
87
    ],
88
    XHELP_NOTIF_EDITOWNER    => [
89
        'name'      => _AM_XHELP_NOTIF_MOD_OWNER,
90
        'email_tpl' => [8 => $templates[8], 11 => $templates[11]],
91
    ],
92
    XHELP_NOTIF_CLOSETICKET  => [
93
        'name'      => _AM_XHELP_NOTIF_CLOSE_TICKET,
94
        'email_tpl' => [9 => $templates[9], 19 => $templates[19]],
95
    ],
96
    XHELP_NOTIF_MERGETICKET  => [
97
        'name'      => _AM_XHELP_NOTIF_MERGE_TICKET,
98
        'email_tpl' => [10 => $templates[10], 25 => $templates[25]],
99
    ],
100
];
101
102
$op = 'default';
103
if (Request::hasVar('op', 'REQUEST')) {
104
    $op = $_REQUEST['op'];
105
}
106
107
switch ($op) {
108
    case 'edit':
109
        edit();
110
        break;
111
    case 'manage':
112
        manage();
113
        break;
114
    case 'modifyEmailTpl':
115
        modifyEmailTpl();
116
        break;
117
    default:
118
        manage();
119
}
120
121
function edit()
122
{
123
    global $xoopsModule, $session, $aNotifications, $has_notifications, $aStaffSettings, $aUserSettings;
124
    $helper = Helper::getInstance();
125
126
    if (Request::hasVar('id', 'REQUEST')) {
127
        $id = Request::getInt('id', 0, 'REQUEST');
128
    } else {
129
        // No id specified, return to manage page
130
        $helper->redirect('admin/notifications.php?op=manage', 3, _AM_XHELP_MESSAGE_NO_ID);
131
    }
132
133
    /** @var \XoopsModules\Xhelp\NotificationHandler $notificationHandler */
134
    $notificationHandler = $helper->getHandler('Notification');
135
    $settings            = $notificationHandler->get($id);
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $id does not seem to be defined for all execution paths leading up to this point.
Loading history...
136
137
    if (null === $settings || false === $settings) {
138
        $helper->redirect('admin/notifications.php?op=manage', 3, _AM_XHELP_EDIT_ERR);
139
    }
140
141
    xoops_cp_header();
142
    //echo $oAdminButton->renderButtons('manNotify');
143
    $adminObject = Admin::getInstance();
144
145
    $adminObject->addItemButton(_AM_XHELP_TEXT_MANAGE_NOTIFICATIONS, 'notifications.php?op=manage', 'add');
146
    $adminObject->addItemButton(_AM_XHELP_MENU_MODIFY_EMLTPL, 'notifications.php?op=modifyEmailTpl', 'list');
147
    $adminObject->displayButton('left');
148
149
    $adminObject->displayNavigation(basename(__FILE__));
150
151
    $session->set('xhelp_return_page', mb_substr(mb_strstr($_SERVER['REQUEST_URI'], 'admin/'), 6));
152
153
    if (Request::hasVar('save_notification', 'POST')) {
154
        $settings->setVar('staff_setting', Request::getInt('staff_setting', 0, 'POST'));
155
        $settings->setVar('user_setting', Request::getInt('user_setting', 0, 'POST'));
156
        if (XHELP_NOTIF_STAFF_DEPT == Request::getInt('staff_setting', 0, 'POST')) {
157
            $settings->setVar('staff_options', $_POST['roles']);
158
        } else {
159
            $settings->setVar('staff_options', []);
160
        }
161
        $notificationHandler->insert($settings, true);
162
        $helper->redirect("notifications.php?op=edit&id=$id");
163
    }
164
165
    // Retrieve list of email templates
166
    if (!$templates = $session->get('xhelp_notifications')) {
0 ignored issues
show
Unused Code introduced by
The assignment to $templates is dead and can be removed.
Loading history...
167
        $templates = $xoopsModule->getInfo('_email_tpl');
168
        $session->set('xhelp_notifications', $templates);
169
    }
170
    $notification = $aNotifications[$id];
171
172
    $staff_settings = Utility::getMeta("notify_staff{$id}");
0 ignored issues
show
Unused Code introduced by
The assignment to $staff_settings is dead and can be removed.
Loading history...
173
    $user_settings  = Utility::getMeta("notify_user{$id}");
0 ignored issues
show
Unused Code introduced by
The assignment to $user_settings is dead and can be removed.
Loading history...
174
    /** @var RoleHandler $roleHandler */
175
    $roleHandler = $helper->getHandler('Role');
176
    if (XHELP_NOTIF_STAFF_DEPT == $settings->getVar('staff_setting')) {
177
        $selectedRoles = $settings->getVar('staff_options');
178
    } else {
179
        $selectedRoles = [];
180
    }
181
    $roles = $roleHandler->getObjects();
182
183
    echo "<form method='post' action='" . XHELP_ADMIN_URL . '/notifications.php?op=edit&amp;id=' . $id . "'>";
0 ignored issues
show
Bug introduced by
The constant XHELP_ADMIN_URL was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
184
    echo "<table width='100%' cellspacing='1' class='outer'>";
185
    echo "<tr><th colspan='2'>" . $notification['name'] . '</th></tr>';
186
    echo "<tr><td class='head' width='20%'>" . _AM_XHELP_TEXT_NOTIF_STAFF . "</td>
187
              <td class='even' valign='top'>";
188
    echo "<table border='0'>";
189
    echo '<tr>';
190
    foreach ($aStaffSettings as $value => $setting) {
191
        echo "<td valign='top'>";
192
        if ($settings->getVar('staff_setting') == $value) {
193
            $checked = 'checked';
194
        } else {
195
            $checked = '';
196
        }
197
        echo "<input type='radio' name='staff_setting' id='staff" . $value . "' value='" . $value . "' $checked>
198
                          <label for='staff" . $value . "'>" . $setting . '</label>&nbsp;';
199
        if (XHELP_NOTIF_STAFF_DEPT == $value) {
200
            echo "<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
201
                        <select name='roles[]' multiple='multiple'>";
202
            foreach ($roles as $role) {
203
                $role_id = $role->getVar('id');
204
                if (in_array($role_id, $selectedRoles)) {
205
                    echo "<option value='" . $role_id . "' selected>" . $role->getVar('name') . '</option>';
206
                } else {
207
                    echo "<option value='" . $role_id . "'>" . $role->getVar('name') . '</option>';
208
                }
209
            }
210
            echo '</select>';
211
        }
212
        echo '</td>';
213
    }
214
    echo '</tr></table>';
215
    echo '</td>
216
          </tr>';
217
    echo "<tr><td class='head' width='20%'>" . _AM_XHELP_TEXT_NOTIF_USER . "</td>
218
              <td class='even'>";
219
    foreach ($aUserSettings as $value => $setting) {
220
        if ($settings->getVar('user_setting') == $value) {
221
            $checked = 'checked';
222
        } else {
223
            $checked = '';
224
        }
225
        echo "<input type='radio' name='user_setting' id='user" . $value . "' value='" . $value . "' $checked>
226
                          <label for='user" . $value . "'>" . $setting . '</label>&nbsp;';
227
    }
228
    echo '</td>
229
          </tr>';
230
    echo "<tr>
231
              <td class='head'></td>
232
              <td class='even'><input type='submit' name='save_notification' value='" . _AM_XHELP_BUTTON_SUBMIT . "'></td>
233
          </tr>";
234
    echo '</table></form><br>';
235
236
    echo "<table width='100%' cellspacing='1' class='outer'>";
237
    echo "<tr><th colspan='3'>" . _AM_XHELP_TEXT_ASSOC_TPL . '</th></tr>';
238
    echo "<tr class='head'><td>" . _AM_XHELP_TEXT_TEMPLATE_NAME . '</td>
239
                           <td>' . _AM_XHELP_TEXT_DESCRIPTION . '</td>
240
                           <td>' . _AM_XHELP_TEXT_ACTIONS . '</td></tr>';
241
    foreach ($notification['email_tpl'] as $template) {
242
        echo "<tr class='even'>
243
                  <td>" . $template['title'] . '</a></td><td>' . $template['description'] . "</td>
244
                  <td><a href='" . XHELP_ADMIN_URL . 'notifications.php?op=modifyEmailTpl&amp;file=' . $template['mail_template'] . ".tpl'>
245
                      <img src='" . XOOPS_URL . "/modules/xhelp/assets/images/button_edit.png' title='" . _AM_XHELP_TEXT_EDIT . "' name='editNotification'></a>
246
                  </td>
247
              </tr>";
248
    }
249
    echo '</table>';
250
251
    xoops_cp_footer();
252
}
253
254
function manage()
255
{
256
    global $xoopsModule, $session, $aNotifications, $has_notifications, $xoopsDB, $aStaffSettings, $aUserSettings;
257
    $helper = Helper::getInstance();
258
259
    xoops_cp_header();
260
    //echo $oAdminButton->renderButtons('manNotify');
261
    $adminObject = Admin::getInstance();
262
263
    $adminObject->addItemButton(_AM_XHELP_TEXT_MANAGE_NOTIFICATIONS, 'notifications.php?op=manage', 'add');
264
    $adminObject->addItemButton(_AM_XHELP_MENU_MODIFY_EMLTPL, 'notifications.php?op=modifyEmailTpl', 'list');
265
266
    $adminObject->displayNavigation(basename(__FILE__));
267
    $adminObject->displayButton('left');
268
269
    /** @var \XoopsModules\Xhelp\NotificationHandler $notificationHandler */
270
    $notificationHandler = $helper->getHandler('Notification');
271
    $settings            = $notificationHandler->getObjects(null, true);
272
273
    echo "<table width='100%' cellspacing='1' class='outer'>";
274
    echo "<tr><th colspan='3'>" . _AM_XHELP_TEXT_MANAGE_NOTIFICATIONS . '</th></tr>';
275
    if ($has_notifications) {
276
        echo "<tr class='head'>
277
                  <td>" . _AM_XHELP_TEXT_NOTIF_NAME . '</td>
278
                  <td>' . _AM_XHELP_TEXT_SUBSCRIBED_MEMBERS . '</td>
279
                  <td>' . _AM_XHELP_TEXT_ACTIONS . '</td>
280
              </tr>';
281
        foreach ($aNotifications as $template_id => $template) {
282
            //            if (isset($settings[$template_id])) {
283
            $cSettings = $settings[$template_id] ?? '';
284
            //                if (null !== $cSettings) {
285
            //                $staff_setting = $cSettings->getVar('staff_setting');
286
            //                $user_setting  = $cSettings->getVar('user_setting');
287
            $staff_setting = !empty($cSettings) ? $cSettings->getVar('staff_setting') : 0;
288
            $user_setting  = !empty($cSettings) ? $cSettings->getVar('user_setting') : 0;
289
            //            }
290
            // Build text of who gets notification
291
            if (XHELP_NOTIF_USER_YES == $user_setting) {
292
                if (\XHELP_NOTIF_STAFF_NONE == $staff_setting) {
293
                    $sSettings = _AM_XHELP_TEXT_SUBMITTER;
294
                } else {
295
                    $sSettings = $aStaffSettings[$staff_setting] . ' ' . _AM_XHELP_TEXT_AND . ' ' . _AM_XHELP_TEXT_SUBMITTER;
296
                }
297
            } elseif (\XHELP_NOTIF_STAFF_NONE == $staff_setting) {
298
                $sSettings = '';
299
            } else {
300
                $sSettings = $aStaffSettings[$staff_setting] ?? '';
301
            }
302
            // End Build text of who gets notification
303
304
            echo "<tr class='even'>
305
                     <td width='20%'>" . $template['name'] . '</td>
306
                     <td>' . $sSettings . "</td>
307
                     <td>
308
                         <a href='notifications.php?op=edit&amp;id=" . $template_id . "'><img src='" . XOOPS_URL . "/modules/xhelp/assets/images/button_edit.png' title='" . _AM_XHELP_TEXT_EDIT . "' name='editNotification'></a>
309
                     </td>
310
                  </tr>";
311
        }
312
    } else {
313
        // No notifications found (Should never happen)
314
        echo "<tr><td class='even' colspan='3'>" . _AM_XHELP_TEXT_NO_RECORDS . '</td></tr>';
315
    }
316
    echo '</table>';
317
318
    xoops_cp_footer();
319
}
320
321
function modifyEmailTpl()
322
{
323
    global $xoopsConfig, $session;
324
    $helper = Helper::getInstance();
325
326
    if (is_dir(XOOPS_ROOT_PATH . '/modules/xhelp/language/' . $xoopsConfig['language'] . '/mail_template')) {
327
        $opendir = opendir(XOOPS_ROOT_PATH . '/modules/xhelp/language/' . $xoopsConfig['language'] . '/mail_template/');
328
        $dir     = XOOPS_ROOT_PATH . '/modules/xhelp/language/' . $xoopsConfig['language'] . '/mail_template/';
329
        $url     = XOOPS_URL . '/modules/xhelp/language/' . $xoopsConfig['language'] . '/mail_template/';
0 ignored issues
show
Unused Code introduced by
The assignment to $url is dead and can be removed.
Loading history...
330
    } else {
331
        $opendir = opendir(XOOPS_ROOT_PATH . '/modules/xhelp/language/english/mail_template/');
332
        $dir     = XOOPS_ROOT_PATH . '/modules/xhelp/language/english/mail_template/';
333
        $url     = XOOPS_URL . '/modules/xhelp/language/english/mail_template/';
334
    }
335
336
    $notNames = [
337
        _MI_XHELP_DEPT_NEWTICKET_NOTIFYTPL          => [
338
            _MI_XHELP_DEPT_NEWTICKET_NOTIFY,
339
            _MI_XHELP_DEPT_NEWTICKET_NOTIFYDSC,
340
            _MI_XHELP_DEPT_NEWTICKET_NOTIFYTPL,
341
        ],
342
        _MI_XHELP_DEPT_REMOVEDTICKET_NOTIFYTPL      => [
343
            _MI_XHELP_DEPT_REMOVEDTICKET_NOTIFY,
344
            _MI_XHELP_DEPT_REMOVEDTICKET_NOTIFYDSC,
345
            _MI_XHELP_DEPT_REMOVEDTICKET_NOTIFYTPL,
346
        ],
347
        _MI_XHELP_DEPT_NEWRESPONSE_NOTIFYTPL        => [
348
            _MI_XHELP_DEPT_NEWRESPONSE_NOTIFY,
349
            _MI_XHELP_DEPT_NEWRESPONSE_NOTIFYDSC,
350
            _MI_XHELP_DEPT_NEWRESPONSE_NOTIFYTPL,
351
        ],
352
        _MI_XHELP_DEPT_MODIFIEDRESPONSE_NOTIFYTPL   => [
353
            _MI_XHELP_DEPT_MODIFIEDRESPONSE_NOTIFY,
354
            _MI_XHELP_DEPT_MODIFIEDRESPONSE_NOTIFYDSC,
355
            _MI_XHELP_DEPT_MODIFIEDRESPONSE_NOTIFYTPL,
356
        ],
357
        _MI_XHELP_DEPT_MODIFIEDTICKET_NOTIFYTPL     => [
358
            _MI_XHELP_DEPT_MODIFIEDTICKET_NOTIFY,
359
            _MI_XHELP_DEPT_MODIFIEDTICKET_NOTIFYDSC,
360
            _MI_XHELP_DEPT_MODIFIEDTICKET_NOTIFYTPL,
361
        ],
362
        _MI_XHELP_DEPT_CHANGEDSTATUS_NOTIFYTPL      => [
363
            _MI_XHELP_DEPT_CHANGEDSTATUS_NOTIFY,
364
            _MI_XHELP_DEPT_CHANGEDSTATUS_NOTIFYDSC,
365
            _MI_XHELP_DEPT_CHANGEDSTATUS_NOTIFYTPL,
366
        ],
367
        _MI_XHELP_DEPT_CHANGEDPRIORITY_NOTIFYTPL    => [
368
            _MI_XHELP_DEPT_CHANGEDPRIORITY_NOTIFY,
369
            _MI_XHELP_DEPT_CHANGEDPRIORITY_NOTIFYDSC,
370
            _MI_XHELP_DEPT_CHANGEDPRIORITY_NOTIFYTPL,
371
        ],
372
        _MI_XHELP_DEPT_NEWOWNER_NOTIFYTPL           => [
373
            _MI_XHELP_DEPT_NEWOWNER_NOTIFY,
374
            _MI_XHELP_DEPT_NEWOWNER_NOTIFYDSC,
375
            _MI_XHELP_DEPT_NEWOWNER_NOTIFYTPL,
376
        ],
377
        _MI_XHELP_DEPT_CLOSETICKET_NOTIFYTPL        => [
378
            _MI_XHELP_DEPT_CLOSETICKET_NOTIFY,
379
            _MI_XHELP_DEPT_CLOSETICKET_NOTIFYDSC,
380
            _MI_XHELP_DEPT_CLOSETICKET_NOTIFYTPL,
381
        ],
382
        _MI_XHELP_TICKET_NEWOWNER_NOTIFYTPL         => [
383
            _MI_XHELP_TICKET_NEWOWNER_NOTIFY,
384
            _MI_XHELP_TICKET_NEWOWNER_NOTIFYDSC,
385
            _MI_XHELP_TICKET_NEWOWNER_NOTIFYTPL,
386
        ],
387
        _MI_XHELP_TICKET_REMOVEDTICKET_NOTIFYTPL    => [
388
            _MI_XHELP_TICKET_REMOVEDTICKET_NOTIFY,
389
            _MI_XHELP_TICKET_REMOVEDTICKET_NOTIFYDSC,
390
            _MI_XHELP_TICKET_REMOVEDTICKET_NOTIFYTPL,
391
        ],
392
        _MI_XHELP_TICKET_MODIFIEDTICKET_NOTIFYTPL   => [
393
            _MI_XHELP_TICKET_MODIFIEDTICKET_NOTIFY,
394
            _MI_XHELP_TICKET_MODIFIEDTICKET_NOTIFYDSC,
395
            _MI_XHELP_TICKET_MODIFIEDTICKET_NOTIFYTPL,
396
        ],
397
        _MI_XHELP_TICKET_NEWRESPONSE_NOTIFYTPL      => [
398
            _MI_XHELP_TICKET_NEWRESPONSE_NOTIFY,
399
            _MI_XHELP_TICKET_NEWRESPONSE_NOTIFYDSC,
400
            _MI_XHELP_TICKET_NEWRESPONSE_NOTIFYTPL,
401
        ],
402
        _MI_XHELP_TICKET_MODIFIEDRESPONSE_NOTIFYTPL => [
403
            _MI_XHELP_TICKET_MODIFIEDRESPONSE_NOTIFY,
404
            _MI_XHELP_TICKET_MODIFIEDRESPONSE_NOTIFYDSC,
405
            _MI_XHELP_TICKET_MODIFIEDRESPONSE_NOTIFYTPL,
406
        ],
407
        _MI_XHELP_TICKET_CHANGEDSTATUS_NOTIFYTPL    => [
408
            _MI_XHELP_TICKET_CHANGEDSTATUS_NOTIFY,
409
            _MI_XHELP_TICKET_CHANGEDSTATUS_NOTIFYDSC,
410
            _MI_XHELP_TICKET_CHANGEDSTATUS_NOTIFYTPL,
411
        ],
412
        _MI_XHELP_TICKET_CHANGEDPRIORITY_NOTIFYTPL  => [
413
            _MI_XHELP_TICKET_CHANGEDPRIORITY_NOTIFY,
414
            _MI_XHELP_TICKET_CHANGEDPRIORITY_NOTIFYDSC,
415
            _MI_XHELP_TICKET_CHANGEDPRIORITY_NOTIFYTPL,
416
        ],
417
        _MI_XHELP_TICKET_NEWTICKET_NOTIFYTPL        => [
418
            _MI_XHELP_TICKET_NEWTICKET_NOTIFY,
419
            _MI_XHELP_TICKET_NEWTICKET_NOTIFYDSC,
420
            _MI_XHELP_TICKET_NEWTICKET_NOTIFYTPL,
421
        ],
422
        _MI_XHELP_TICKET_NEWTICKET_EMAIL_NOTIFYTPL  => [
423
            _MI_XHELP_TICKET_NEWTICKET_EMAIL_NOTIFY,
424
            _MI_XHELP_TICKET_NEWTICKET_EMAIL_NOTIFYDSC,
425
            _MI_XHELP_TICKET_NEWTICKET_EMAIL_NOTIFYTPL,
426
        ],
427
        _MI_XHELP_TICKET_CLOSETICKET_NOTIFYTPL      => [
428
            _MI_XHELP_TICKET_CLOSETICKET_NOTIFY,
429
            _MI_XHELP_TICKET_CLOSETICKET_NOTIFYDSC,
430
            _MI_XHELP_TICKET_CLOSETICKET_NOTIFYTPL,
431
        ],
432
        _MI_XHELP_TICKET_NEWUSER_NOTIFYTPL          => [
433
            _MI_XHELP_TICKET_NEWUSER_NOTIFY,
434
            _MI_XHELP_TICKET_NEWUSER_NOTIFYDSC,
435
            _MI_XHELP_TICKET_NEWUSER_NOTIFYTPL,
436
        ],
437
        _MI_XHELP_TICKET_NEWUSER_ACT1_NOTIFYTPL     => [
438
            _MI_XHELP_TICKET_NEWUSER_ACT1_NOTIFY,
439
            _MI_XHELP_TICKET_NEWUSER_ACT1_NOTIFYDSC,
440
            _MI_XHELP_TICKET_NEWUSER_ACT1_NOTIFYTPL,
441
        ],
442
        _MI_XHELP_TICKET_NEWUSER_ACT2_NOTIFYTPL     => [
443
            _MI_XHELP_TICKET_NEWUSER_ACT2_NOTIFY,
444
            _MI_XHELP_TICKET_NEWUSER_ACT2_NOTIFYDSC,
445
            _MI_XHELP_TICKET_NEWUSER_ACT2_NOTIFYTPL,
446
        ],
447
        _MI_XHELP_TICKET_EMAIL_ERROR_NOTIFYTPL      => [
448
            _MI_XHELP_TICKET_EMAIL_ERROR_NOTIFY,
449
            _MI_XHELP_TICKET_EMAIL_ERROR_NOTIFYDSC,
450
            _MI_XHELP_TICKET_EMAIL_ERROR_NOTIFYTPL,
451
        ],
452
        _MI_XHELP_DEPT_MERGE_TICKET_NOTIFYTPL       => [
453
            _MI_XHELP_DEPT_MERGE_TICKET_NOTIFY,
454
            _MI_XHELP_DEPT_MERGE_TICKET_NOTIFYDSC,
455
            _MI_XHELP_DEPT_MERGE_TICKET_NOTIFYTPL,
456
        ],
457
        _MI_XHELP_TICKET_MERGE_TICKET_NOTIFYTPL     => [
458
            _MI_XHELP_TICKET_MERGE_TICKET_NOTIFY,
459
            _MI_XHELP_TICKET_MERGE_TICKET_NOTIFYDSC,
460
            _MI_XHELP_TICKET_MERGE_TICKET_NOTIFYTPL,
461
        ],
462
    ];
463
464
    $notKeys = array_keys($notNames);
465
466
    while (false !== ($file = readdir($opendir))) {
467
        //Do not Display .
468
        if (is_dir($file)) {
469
            continue;
470
        }
471
472
        if (!in_array($file, $notKeys)) {
473
            continue;
474
        }
475
476
        $aFile             = [];
477
        $aFile['name']     = $notNames[$file][0];
478
        $aFile['desc']     = $notNames[$file][1];
479
        $aFile['filename'] = $notNames[$file][2];
480
        $aFile['url']      = "notifications.php?op=modifyEmailTpl&amp;file=$file";
481
        $aFiles[]          = $aFile;
482
    }
483
484
    if (isset($_GET['file'])) {
485
        xoops_cp_header();
486
        //echo $oAdminButton->renderButtons('manNotify');
487
        $adminObject = Admin::getInstance();
488
        $adminObject->addItemButton(_AM_XHELP_TEXT_MANAGE_NOTIFICATIONS, 'notifications.php?op=manage', 'add');
489
        $adminObject->addItemButton(_AM_XHELP_MENU_MODIFY_EMLTPL, 'notifications.php?op=modifyEmailTpl', 'list');
490
491
        $adminObject->displayNavigation(basename(__FILE__));
492
        $adminObject->displayButton('left');
493
494
        foreach ($aFiles as $file) {
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $aFiles does not seem to be defined for all execution paths leading up to this point.
Loading history...
495
            if (\Xmf\Request::getString('file', '', 'GET') == $file['filename']) {
496
                $myFileName = $file['filename'];
497
                $myFileDesc = $file['desc'];
498
                $myName     = $file['name'];
499
                break;
500
            }
501
        }
502
        if (!$has_write = is_writable($dir . $myFileName)) {
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $myFileName does not seem to be defined for all execution paths leading up to this point.
Loading history...
503
            $message  = _AM_XHELP_MESSAGE_FILE_READONLY;
504
            $handle   = fopen($dir . $myFileName, 'rb');
505
            $fileSize = filesize($dir . $myFileName);
506
        } elseif (Request::hasVar('editTemplate', 'POST')) {
507
            $handle = fopen($dir . $myFileName, 'wb+');
508
        } else {
509
            $handle   = fopen($dir . $myFileName, 'rb+');
510
            $fileSize = filesize($dir . $myFileName);
511
        }
512
513
        if (Request::hasVar('editTemplate', 'POST')) {
514
            if (Request::hasVar('templateText', 'POST')) {
515
                $text = $_POST['templateText'];    // Get new text for template
516
            } else {
517
                $text = '';
518
            }
519
520
            if (!$returnPage = $session->get('xhelp_return_page')) {
521
                $returnPage = false;
522
            }
523
524
            if (fwrite($handle, $text)) {
525
                $message  = _AM_XHELP_MESSAGE_FILE_UPDATED;
526
                $fileSize = filesize($dir . $myFileName);
527
                fclose($handle);
528
                if ($returnPage) {
529
                    $helper->redirect((string)$returnPage);
530
                } else {
531
                    $helper->redirect('admin/notifications.php');
532
                }
533
            } else {
534
                $message  = _AM_XHELP_MESSAGE_FILE_UPDATED_ERROR;
535
                $fileSize = filesize($dir . $myFileName);
536
                fclose($handle);
537
                if ($returnPage) {
538
                    $helper->redirect((string)$returnPage, 3, $message);
539
                } else {
540
                    $helper->redirect('admin/notifications.php', 3, $message);
541
                }
542
            }
543
        }
544
        if (!$has_write) {
545
            echo "<div id='readOnly' class='errorMsg'>";
546
            echo $message;
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $message does not seem to be defined for all execution paths leading up to this point.
Loading history...
547
            echo '</div>';
548
        }
549
550
        echo "<form action='" . XHELP_ADMIN_URL . '/notifications.php?op=modifyEmailTpl&amp;file=' . $myFileName . "' method='post'>";
0 ignored issues
show
Bug introduced by
The constant XHELP_ADMIN_URL was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
551
        echo $GLOBALS['xoopsSecurity']->getTokenHTML();
552
        echo "<table width='100%' border='0' cellspacing='1' class='outer'>
553
              <tr><th colspan='2'>" . $myName . "</th></tr>
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $myName does not seem to be defined for all execution paths leading up to this point.
Loading history...
554
              <tr><td colspan='2' class='head'>" . $myFileDesc . '</td></tr>';
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $myFileDesc does not seem to be defined for all execution paths leading up to this point.
Loading history...
555
556
        echo "<tr class='odd'>
557
                  <td><textarea name='templateText' cols='40' rows='40'>" . fread($handle, $fileSize) . "</textarea></td>
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $fileSize does not seem to be defined for all execution paths leading up to this point.
Loading history...
558
                  <td valign='top'>
559
                      <b>" . _AM_XHELP_TEXT_GENERAL_TAGS . '</b>
560
                      <ul>
561
                        <li>' . _AM_XHELP_TEXT_GENERAL_TAGS1 . '</li>
562
                        <li>' . _AM_XHELP_TEXT_GENERAL_TAGS2 . '</li>
563
                        <li>' . _AM_XHELP_TEXT_GENERAL_TAGS3 . '</li>
564
                        <li>' . _AM_XHELP_TEXT_GENERAL_TAGS4 . '</li>
565
                        <li>' . _AM_XHELP_TEXT_GENERAL_TAGS5 . '</li>
566
                      </ul>
567
                      <br>
568
                      <u>' . _AM_XHELP_TEXT_TAGS_NO_MODIFY . '</u>
569
                  </td>
570
              </tr>';
571
572
        if ($has_write) {
573
            echo "<tr><td class='foot' colspan='2'><input type='submit' name='editTemplate' value='" . _AM_XHELP_BUTTON_UPDATE . "' class='formButton'></td></tr>";
574
        }
575
        echo '</table></form>';
576
    } else {
577
        xoops_cp_header();
578
        //echo $oAdminButton->renderButtons('manNotify');
579
        $adminObject = Admin::getInstance();
580
        $adminObject->addItemButton(_AM_XHELP_TEXT_MANAGE_NOTIFICATIONS, 'notifications.php?op=manage', 'add');
581
        $adminObject->addItemButton(_AM_XHELP_MENU_MODIFY_EMLTPL, 'notifications.php?op=modifyEmailTpl', 'list');
582
583
        $adminObject->displayNavigation(basename(__FILE__));
584
        $adminObject->displayButton('left');
585
586
        echo "<table width='100%' border='0' cellspacing='1' class='outer'>
587
              <tr><th colspan='2'><label>" . _AM_XHELP_MENU_MODIFY_EMLTPL . "</label></th></tr>
588
              <tr class='head'><td>" . _AM_XHELP_TEXT_TEMPLATE_NAME . '</td><td>' . _AM_XHELP_TEXT_DESCRIPTION . '</td></tr>';
589
590
        static $rowSwitch = 0;
591
        foreach ($aFiles as $file) {
592
            if (0 == $rowSwitch) {
593
                echo "<tr class='odd'><td><a href='" . $file['url'] . "'>" . $file['name'] . '</a></td><td>' . $file['desc'] . '</td></tr>';
594
                $rowSwitch = 1;
595
            } else {
596
                echo "<tr class='even'><td><a href='" . $file['url'] . "'>" . $file['name'] . '</a></td><td>' . $file['desc'] . '</td></tr>';
597
                $rowSwitch = 0;
598
            }
599
        }
600
        echo '</table>';
601
    }
602
    require_once __DIR__ . '/admin_footer.php';
603
}
604