Completed
Push — master ( 592643...f454c2 )
by Michael
03:05 queued 01:21
created

admin/subscr.php (3 issues)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
/**
3
 * ****************************************************************************
4
 *  - A Project by Developers TEAM For Xoops - ( https://xoops.org )
5
 * ****************************************************************************
6
 *  XNEWSLETTER - MODULE FOR XOOPS
7
 *  Copyright (c) 2007 - 2012
8
 *  Goffy ( wedega.com )
9
 *
10
 *  You may not change or alter any portion of this comment or credits
11
 *  of supporting developers from this source code or any supporting
12
 *  source code which is considered copyrighted (c) material of the
13
 *  original comment or credit authors.
14
 *
15
 *  This program is distributed in the hope that it will be useful,
16
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
17
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
 *  GNU General Public License for more details.
19
 *  ---------------------------------------------------------------------------
20
 * @copyright  Goffy ( wedega.com )
21
 * @license    GPL 2.0
22
 * @package    xnewsletter
23
 * @author     Goffy ( [email protected] )
24
 *
25
 *  Version : 1 Wed 2012/11/28 22:18:22 :  Exp $
26
 * ****************************************************************************
27
 */
28
29
use Xmf\Request;
30
31
$currentFile = basename(__FILE__);
32
require_once __DIR__ . '/admin_header.php';
33
xoops_cp_header();
34
35
// We recovered the value of the argument op in the URL$
36
$op        = \Xmf\Request::getString('op', 'list');
37
$subscr_id = \Xmf\Request::getInt('subscr_id', 0);
38
39
$filter_subscr           = \Xmf\Request::getString('filter_subscr', '=');
40
$filter_subscr_firstname = \Xmf\Request::getString('filter_subscr_firstname', '');
41
$filter_subscr_lastname  = \Xmf\Request::getString('filter_subscr_lastname', '');
42
$filter_subscr_email     = \Xmf\Request::getString('filter_subscr_email', '');
43
44
if ('apply_filter' === $op) {
45
    if ('LIKE' === $filter_subscr && '' == !$filter_subscr_firstname) {
46
        $filter_subscr_firstname = "%{$filter_subscr_firstname}%";
47
    }
48
    if ('LIKE' === $filter_subscr && '' == !$filter_subscr_lastname) {
49
        $filter_subscr_lastname = "%{$filter_subscr_lastname}%";
50
    }
51
    if ('LIKE' === $filter_subscr && '' == !$filter_subscr_email) {
52
        $filter_subscr_email = "%{$filter_subscr_email}%";
53
    }
54
    if ('' == $filter_subscr_firstname && '' == $filter_subscr_lastname && '' == $filter_subscr_email) {
55
        $op = 'list';
56
    }
57
}
58
59
$adminObject = \Xmf\Module\Admin::getInstance();
60
switch ($op) {
61
    case 'show_catsubscr':
62
        $adminObject->displayNavigation($currentFile);
63
        $apply_filter = \Xmf\Request::getString('apply_filter', 'list');
64
        $linklist     = "?op=$apply_filter&filter_subscr={$filter_subscr}";
65
        $linklist     .= "&filter_subscr_firstname={$filter_subscr_firstname}";
66
        $linklist     .= "&filter_subscr_lastname={$filter_subscr_lastname}";
67
        $linklist     .= "&filter_subscr_email={$filter_subscr_email}";
68
        $adminObject->addItemButton(_AM_XNEWSLETTER_SUBSCR_SHOW_ALL, $linklist, 'view_detailed');
69
        $adminObject->displayButton('left');
70
71
        $subscrObj = $helper->getHandler('Subscr')->get($subscr_id);
72
73
        echo "<table class='outer' cellspacing='1'>
74
                <tr>
75
                    <th>" . _AM_XNEWSLETTER_SUBSCR_ID . '</th>
76
                    <th>' . _AM_XNEWSLETTER_SUBSCR_EMAIL . '</th>
77
                    <th>' . _AM_XNEWSLETTER_LETTERLIST . '</th>
78
                </tr>';
79
80
        $class = 'odd';
81
        echo "<tr class='{$class}'>";
82
        $class = ('even' === $class) ? 'odd' : 'even';
83
        echo "<td>{$subscr_id}</td>";
84
        echo '<td>' . $subscrObj->getVar('subscr_email') . '</td>';
85
        echo '<td>';
86
        $catsubscrCriteria = new \CriteriaCompo();
87
        $catsubscrCriteria->add(new \Criteria('catsubscr_subscrid', $subscr_id));
88
        $catsubscrCount = $helper->getHandler('Catsubscr')->getCount($catsubscrCriteria);
89
        if ($catsubscrCount > 0) {
90
            $catsubscrObjs = $helper->getHandler('Catsubscr')->getAll($catsubscrCriteria);
91
            foreach ($catsubscrObjs as $catsubscr_id => $catsubscrObj) {
92
                $cat_id = $catsubscrObj->getVar('catsubscr_catid');
93
                $catObj = $helper->getHandler('Cat')->get($cat_id);
94
                echo $catObj->getVar('cat_name') . '<br>';
95
            }
96
        } else {
97
            echo _AM_XNEWSLETTER_SUBSCR_NO_CATSUBSCR;
98
        }
99
        echo '</td>';
100
        echo '</tr>';
101
        echo '</table>';
102
        break;
103
    case 'list':
104
    case 'apply_filter':
105
    default:
106
        $adminObject->displayNavigation($currentFile);
107
        $adminObject->addItemButton(_AM_XNEWSLETTER_NEWSUBSCR, '?op=new_subscr', 'add');
108
        if ('apply_filter' === $op) {
109
            $adminObject->addItemButton(_AM_XNEWSLETTER_SUBSCR_SHOW_ALL, '?op=list', 'view_detailed');
110
        }
111
        $adminObject->displayButton('left');
112
113
        $limit          = $helper->getConfig('adminperpage');
114
        $subscrCriteria = new \CriteriaCompo();
115
116
        if ('apply_filter' === $op) {
117
            if ('' != $filter_subscr_firstname) {
118
                $subscrCriteria->add(new \Criteria('subscr_firstname', $filter_subscr_firstname, $filter_subscr));
119
            }
120
            if ('' != $filter_subscr_lastname) {
121
                $subscrCriteria->add(new \Criteria('subscr_lastname', $filter_subscr_lastname, $filter_subscr));
122
            }
123
            if ('' != $filter_subscr_email) {
124
                $subscrCriteria->add(new \Criteria('subscr_email', $filter_subscr_email, $filter_subscr));
125
            }
126
        }
127
        $subscrCriteria->setSort('subscr_id');
128
        $subscrCriteria->setOrder('DESC');
129
        $subscrCount = $helper->getHandler('Subscr')->getCount($subscrCriteria);
130
        $start       = \Xmf\Request::getInt('start', 0);
131
        $subscrCriteria->setStart($start);
132
        $subscrCriteria->setLimit($limit);
133
        $subscrObjs = $helper->getHandler('Subscr')->getAll($subscrCriteria);
134
        if ($subscrCount > $limit) {
135
            require_once XOOPS_ROOT_PATH . '/class/pagenav.php';
136
            $linklist = "op={$op}";
137
            $linklist .= "&filter_subscr={$filter_subscr}";
138
            $linklist .= "&filter_subscr_firstname={$filter_subscr_firstname}";
139
            $linklist .= "&filter_subscr_lastname={$filter_subscr_lastname}";
140
            $linklist .= "&filter_subscr_email={$filter_subscr_email}";
141
            $pagenav  = new \XoopsPageNav($subscrCount, $limit, $start, 'start', $linklist);
142
            $pagenav  = $pagenav->renderNav(4);
143
        } else {
144
            $pagenav = '';
145
        }
146
        if ('LIKE' === $filter_subscr) {
147
            //clean up var for refill form
148
            $filter_subscr_firstname = str_replace('%', '', $filter_subscr_firstname);
149
            $filter_subscr_lastname  = str_replace('%', '', $filter_subscr_lastname);
150
            $filter_subscr_email     = str_replace('%', '', $filter_subscr_email);
151
        }
152
153
        // View Table
154
        echo "<table class='outer width100' cellspacing='1'>";
155
        echo '<tr>';
156
        echo "    <th class='center'><input type='checkbox' title='" . _ALL . "'onClick='toggle(this);'></th>";
157
        echo '    <th>' . _AM_XNEWSLETTER_SUBSCR_ID . '</th>';
158
        echo '    <th>' . _AM_XNEWSLETTER_SUBSCR_SEX . '</th>';
159
        echo '    <th>' . _AM_XNEWSLETTER_SUBSCR_FIRSTNAME . '</th>';
160
        echo '    <th>' . _AM_XNEWSLETTER_SUBSCR_LASTNAME . '</th>';
161
        echo '    <th>' . _AM_XNEWSLETTER_SUBSCR_EMAIL . '</th>';
162
        echo '    <th>' . _AM_XNEWSLETTER_SUBSCR_UID . '</th>';
163
        echo '    <th>' . _AM_XNEWSLETTER_SUBSCR_CREATED . '</th>';
164
        echo '    <th>' . _AM_XNEWSLETTER_FORMACTION . '</th>';
165
        echo '</tr>';
166
167
        if ($subscrCount > 0) {
168
            $class = 'odd';
169
            echo "<form id='form_filter' enctype='multipart/form-data' method='post' action='{$currentFile}' name='form_filter'>";
170
            $inputstyle = ''; //style='border: 1px solid #000000;";
171
            echo "<tr class='{$class}'>";
172
            $class = ('even' === $class) ? 'odd' : 'even';
173
            echo "    <td class='center'>&nbsp;</td>";
174
            echo "    <td colspan='2'>" . _SEARCH . ':&nbsp;&nbsp;';
175
            echo "    <select id='filter_subscr' title='" . _SEARCH . "' name='filter_subscr' size='1'>";
176
            echo "        <option value='='" . (('=' === $filter_subscr) ? ' selected' : '') . '>' . _AM_XNEWSLETTER_SEARCH_EQUAL . '</option>';
177
            echo "        <option value='LIKE'" . (('LIKE' === $filter_subscr) ? ' selected' : '') . '>' . _AM_XNEWSLETTER_SEARCH_CONTAINS . '</option>';
178
            echo '    </select>';
179
            echo '    </td>';
180
            echo "    <td><input {$inputstyle} id='filter_subscr_firstname' type='text' value='{$filter_subscr_firstname}' maxlength='50' size='15' title='' name='filter_subscr_firstname'></td>";
181
            echo "    <td><input {$inputstyle} id='filter_subscr_lastname' type='text' value='{$filter_subscr_lastname}' maxlength='50' size='15' title='' name='filter_subscr_lastname'></td>";
182
            echo "    <td><input {$inputstyle} id='filter_subscr_email' type='text' value='{$filter_subscr_email}' maxlength='255' size='40' title='' name='filter_subscr_email'></td>";
183
            echo '    <td>&nbsp;</td>';
184
            echo '    <td>&nbsp;</td>';
185
            echo "    <td class='center'><input id='filter_submit' class='formButton' type='submit' title='" . _SEARCH . "' value='" . _SEARCH . "' name='filter_submit'></td>";
186
            echo '</tr>';
187
            echo "<input id='filter_op' type='hidden' value='apply_filter' name='op'>";
188
            echo '</form>';
189
190
            echo "<script language='JavaScript'>
191
            function toggle(source)
192
            {
193
                checkboxes = document.getElementsByName('subscr_ids[]');
194
                for (var i=0, n=checkboxes.length;i<n;i++) {
195
                    checkboxes[i].checked = source.checked;
196
                }
197
            }
198
            </script>";
199
            echo "<script language='JavaScript'>
200
            function check(source)
201
            {
202
                checkboxes = document.getElementsByName('subscr_ids[]');
203
                for (var i=0, n=checkboxes.length;i<n;i++) {
204
                    if (checkboxes[i].checked) return true;
205
                }
206
207
                return false;
208
            }
209
            </script>";
210
211
            echo "<form id='form_action' onsubmit='return check(this);' enctype='multipart/form-data' method='post' action='{$currentFile}' name='form_action'>";
212
            foreach ($subscrObjs as $subscr_id => $subscrObj) {
213
                echo "<tr class='{$class}'>";
214
                $class = ('even' === $class) ? 'odd' : 'even';
215
                echo "    <td class='center'><input type='checkbox' name='subscr_ids[]' value='{$subscr_id}'></td>";
216
                echo '    <td>' . $subscr_id . '</td>';
217
                echo '    <td>' . $subscrObj->getVar('subscr_sex') . '&nbsp;</td>';
218
                echo '    <td>' . $subscrObj->getVar('subscr_firstname') . '&nbsp;</td>';
219
                echo '    <td>' . $subscrObj->getVar('subscr_lastname') . '&nbsp;</td>';
220
                echo '    <td>' . $subscrObj->getVar('subscr_email') . '&nbsp;</td>';
221
                echo '    <td>';
222
                if ($subscrObj->getVar('subscr_uid') > 0) {
223
                    echo \XoopsUser::getUnameFromId($subscrObj->getVar('subscr_uid'), 'S');
224
                } else {
225
                    echo '-';
226
                }
227
                echo '    </td>';
228
                echo '    <td>';
229
                if (0 == $subscrObj->getVar('subscr_activated')) {
230
                    echo '<img src="' . XNEWSLETTER_ICONS_URL . '/xn_failed.png" alt="' . _AM_XNEWSLETTER_SUBSCRWAIT . '" title="' . _AM_XNEWSLETTER_SUBSCRWAIT . '"> ';
231
                } else {
232
                    echo '<img src="' . XNEWSLETTER_ICONS_URL . '/xn_ok.png" alt="' . _MA_XNEWSLETTER_SUBSCRIPTION_REG_CLOSED . '" title="' . _MA_XNEWSLETTER_SUBSCRIPTION_REG_CLOSED . '"> ';
233
                }
234
                echo formatTimestamp($subscrObj->getVar('subscr_created'), $helper->getConfig('dateformat')) . ' [' . $subscrObj->getVar('subscr_ip') . ']';
235
                echo '    </td>';
236
237
                echo "    <td class='center' nowrap='nowrap'>";
238
                echo "    <a href='?op=edit_subscr&subscr_id={$subscr_id}'><img src=" . XNEWSLETTER_ICONS_URL . "/xn_edit.png alt='" . _EDIT . "' title='" . _EDIT . "'></a>";
239
                echo '    &nbsp;';
240
                echo "    <a href='?op=delete_subscr&subscr_id={$subscr_id}'><img src=" . XNEWSLETTER_ICONS_URL . "/xn_delete.png alt='" . _DELETE . "' title='" . _DELETE . "'></a>";
241
                echo '    &nbsp;';
242
                echo "    <a href='?op=show_catsubscr&subscr_id={$subscr_id}&filter_subscr={$filter_subscr}&filter_subscr_firstname={$filter_subscr_firstname}&filter_subscr_lastname={$filter_subscr_lastname}&filter_subscr_email={$filter_subscr_email}&apply_filter={$op}'>";
243
                echo '    <img src=' . XNEWSLETTER_ICONS_URL . "/xn_details.png alt='" . _AM_XNEWSLETTER_DETAILS . "' title='" . _AM_XNEWSLETTER_DETAILS . "'>";
244
                echo '    </a>';
245
                echo '    </td>';
246
                echo '</tr>';
247
248
                //                $filter_subscr           = \Xmf\Request::getString('filter_subscr', '=');
249
                //                $filter_subscr_firstname = \Xmf\Request::getString('filter_subscr_firstname', '');
250
                //                $filter_subscr_lastname  = \Xmf\Request::getString('filter_subscr_lastname', '');
251
                //                $filter_subscr_email     = \Xmf\Request::getString('filter_subscr_email', '');
252
            }
253
            echo '<tr>';
254
            echo "    <td colspan='9'>";
255
            echo "        <select id='actions_action' name='actions_action' size='1'>";
256
            echo "            <option value='delete'>" . _DELETE . '</option>';
257
            echo "            <option value='activate'>" . _AM_XNEWSLETTER_ACTIONS_ACTIVATE . '</option>';
258
            echo "            <option value='unactivate'>" . _AM_XNEWSLETTER_ACTIONS_UNACTIVATE . '</option>';
259
            echo '        </select>';
260
            echo "        <input id='actions_submit' class='formButton' type='submit' title='" . _AM_XNEWSLETTER_ACTIONS_EXEC . "' value='" . _AM_XNEWSLETTER_ACTIONS_EXEC . "' name='actions_submit'>";
261
            echo '    </td>';
262
            echo '</tr>';
263
            echo "<input id='actions_op' type='hidden' value='apply_actions' name='op'>";
264
            echo '</form>';
265
        }
266
        echo '</table>';
267
        echo '<br>';
268
        echo '<div>' . $pagenav . '</div>';
269
        echo '<br>';
270
        break;
271
    case 'apply_actions':
272
        $action         = \Xmf\Request::getString('actions_action');
273
        $subscr_ids     = \Xmf\Request::getArray('subscr_ids', unserialize(Request::getString('serialize_subscr_ids')));
274
        $subscrCriteria = new \Criteria('subscr_id', '(' . implode(',', $subscr_ids) . ')', 'IN');
275
        switch ($action) {
276
            case 'delete':
277
                if (true === \Xmf\Request::getBool('ok', false, 'POST')) {
278
                    // delete subscriber (subscr), subscriptions (catsubscrs) and mailinglist
279
                    if ($helper->getHandler('Subscr')->deleteAll($subscrCriteria, true, true)) {
280
                        redirect_header($currentFile, 3, _AM_XNEWSLETTER_FORMDELOK);
281
                    } else {
282
                        echo $subscrObj->getHtmlErrors();
283
                    }
284
                } else {
285
                    $subscr_emails = [];
286
                    foreach ($helper->getHandler('Subscr')->getObjects($subscrCriteria) as $subscrObj) {
287
                        $subscr_emails[] = $subscrObj->getVar('subscr_email');
288
                    }
289
                    xoops_confirm([
290
                                      'ok'                   => true,
291
                                      'op'                   => 'apply_actions',
292
                                      'actions_action'       => $action,
293
                                      'serialize_subscr_ids' => serialize($subscr_ids),
294
                                  ], $_SERVER['REQUEST_URI'], sprintf(_AM_XNEWSLETTER_FORMSUREDEL, implode(', ', $subscr_emails)));
295
                }
296
                break;
297 View Code Duplication
            case 'activate':
0 ignored issues
show
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
298
                // activate subscriber (subscr)
299
                if ($helper->getHandler('Subscr')->updateAll('subscr_activated', true, $subscrCriteria, true)) {
300
                    redirect_header($currentFile, 3, _AM_XNEWSLETTER_FORMACTIVATEOK);
301
                } else {
302
                    echo $subscrObj->getHtmlErrors();
303
                }
304
                break;
305 View Code Duplication
            case 'unactivate':
0 ignored issues
show
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
306
                // unactivate subscriber (subscr)
307
                if ($helper->getHandler('Subscr')->updateAll('subscr_activated', false, $subscrCriteria, true)) {
308
                    redirect_header($currentFile, 3, _AM_XNEWSLETTER_FORMUNACTIVATEOK);
309
                } else {
310
                    echo $subscrObj->getHtmlErrors();
311
                }
312
                break;
313
            default:
314
                // NOP
315
                break;
316
        }
317
        break;
318
    case 'new_subscr':
319
        $adminObject->displayNavigation($currentFile);
320
        $adminObject->addItemButton(_AM_XNEWSLETTER_SUBSCRLIST, '?op=list', 'list');
321
        $adminObject->displayButton('left');
322
323
        $subscrObj = $helper->getHandler('Subscr')->create();
324
        $form      = $subscrObj->getFormAdmin();
325
        $form->display();
326
        break;
327
    case 'save_subscr':
328
        if (!$GLOBALS['xoopsSecurity']->check()) {
329
            redirect_header($currentFile, 3, implode(',', $GLOBALS['xoopsSecurity']->getErrors()));
330
        }
331
332
        $subscrObj = $helper->getHandler('Subscr')->get($subscr_id);
333
        $subscrObj->setVar('subscr_email', $_REQUEST['subscr_email']);
334
        $subscrObj->setVar('subscr_firstname', $_REQUEST['subscr_firstname']);
335
        $subscrObj->setVar('subscr_lastname', $_REQUEST['subscr_lastname']);
336
        $subscrObj->setVar('subscr_uid', $_REQUEST['subscr_uid']);
337
        $subscrObj->setVar('subscr_sex', $_REQUEST['subscr_sex']);
338
        $subscrObj->setVar('subscr_submitter', $_REQUEST['subscr_submitter']);
339
        $subscrObj->setVar('subscr_created', $_REQUEST['subscr_created']);
340
        $subscrObj->setVar('subscr_ip', $_REQUEST['subscr_ip']);
341
        $subscrObj->setVar('subscr_actkey', $_REQUEST['subscr_actkey']);
342
        $subscrObj->setVar('subscr_activated', \Xmf\Request::getInt('subscr_activated', 0));
343
344
        if ($helper->getHandler('Subscr')->insert($subscrObj)) {
345
            redirect_header('?op=list', 3, _AM_XNEWSLETTER_FORMOK);
346
        }
347
348
        echo $subscrObj->getHtmlErrors();
349
        $form = $subscrObj->getFormAdmin();
350
        $form->display();
351
        break;
352 View Code Duplication
    case 'edit_subscr':
353
        $adminObject->displayNavigation($currentFile);
354
        $adminObject->addItemButton(_AM_XNEWSLETTER_NEWSUBSCR, '?op=new_subscr', 'add');
355
        $adminObject->addItemButton(_AM_XNEWSLETTER_SUBSCRLIST, '?op=list', 'list');
356
        $adminObject->displayButton('left');
357
358
        $subscrObj = $helper->getHandler('Subscr')->get($subscr_id);
359
        $form      = $subscrObj->getFormAdmin();
360
        $form->display();
361
        break;
362 View Code Duplication
    case 'delete_subscr':
0 ignored issues
show
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
363
        $subscrObj = $helper->getHandler('Subscr')->get($subscr_id);
364
        if (true === \Xmf\Request::getBool('ok', false, 'POST')) {
365
            if (!$GLOBALS['xoopsSecurity']->check()) {
366
                redirect_header($currentFile, 3, implode(',', $GLOBALS['xoopsSecurity']->getErrors()));
367
            }
368
            // delete subscriber (subscr), subscriptions (catsubscrs) and mailinglist
369
            if ($helper->getHandler('Subscr')->delete($subscrObj)) {
370
                redirect_header($currentFile, 3, _AM_XNEWSLETTER_FORMDELOK);
371
            } else {
372
                echo $subscrObj->getHtmlErrors();
373
            }
374
        } else {
375
            xoops_confirm(['ok' => true, 'subscr_id' => $_REQUEST['subscr_id'], 'op' => 'delete_subscr'], $_SERVER['REQUEST_URI'], sprintf(_AM_XNEWSLETTER_FORMSUREDEL, $subscrObj->getVar('subscr_email')));
376
        }
377
        break;
378
}
379
require_once __DIR__ . '/admin_footer.php';
380