|
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
|
|
|
* **************************************************************************** |
|
26
|
|
|
*/ |
|
27
|
|
|
|
|
28
|
|
|
use Xmf\Request; |
|
29
|
|
|
|
|
30
|
|
|
$currentFile = basename(__FILE__); |
|
31
|
|
|
require_once __DIR__ . '/admin_header.php'; |
|
32
|
|
|
xoops_cp_header(); |
|
33
|
|
|
|
|
34
|
|
|
// set template |
|
35
|
|
|
$templateMain = 'xnewsletter_admin_import.tpl'; |
|
36
|
|
|
|
|
37
|
|
|
define('XNEWSLETTER_BASIC_LIMIT_IMPORT_CHECKED', 100); |
|
38
|
|
|
define('XNEWSLETTER_BASIC_LIMIT_IMPORT_AT_ONCE', 10); |
|
39
|
|
|
|
|
40
|
|
|
$op = Request::getString('op', 'default'); |
|
41
|
|
|
$plugin = Request::getString('plugin', 'csv'); |
|
42
|
|
|
$cat_id = Request::getInt('cat_id', 0, 'int'); |
|
43
|
|
|
$action_after_read = Request::getInt('action_after_read', 1); |
|
44
|
|
|
$start = Request::getInt('start', 0); |
|
45
|
|
|
$limitcheck = Request::getInt('limitcheck', XNEWSLETTER_BASIC_LIMIT_IMPORT_CHECKED); |
|
46
|
|
|
$skipcatsubscrexist = Request::getInt('skipcatsubscrexist', 1); |
|
47
|
|
|
$check_import = Request::getInt('check_import', 0); |
|
48
|
|
|
|
|
49
|
|
|
$adminObject->displayNavigation($currentFile); |
|
50
|
|
|
|
|
51
|
|
|
switch ($op) { |
|
52
|
|
|
case 'show_formcheck': |
|
53
|
|
|
$adminObject->addItemButton(_AM_XNEWSLETTER_IMPORT_PLUGINS_AVAIL, $currentFile, 'list'); |
|
54
|
|
|
$GLOBALS['xoopsTpl']->assign('buttons', $adminObject->renderButton('left')); |
|
55
|
|
|
|
|
56
|
|
|
$importCriteria = new \CriteriaCompo(); |
|
57
|
|
|
$importCriteria->setSort('import_id'); |
|
58
|
|
|
$importCriteria->setOrder('ASC'); |
|
59
|
|
|
$importsCount = $helper->getHandler('Import')->getCount($importCriteria); |
|
60
|
|
|
|
|
61
|
|
|
$importCriteria->setStart($start); |
|
62
|
|
|
$importCriteria->setLimit($limitcheck); |
|
63
|
|
|
$importObjs = $helper->getHandler('Import')->getAll($importCriteria); |
|
64
|
|
|
|
|
65
|
|
|
if ($importsCount > 0) { |
|
66
|
|
|
require_once XOOPS_ROOT_PATH . '/class/xoopsformloader.php'; |
|
67
|
|
|
|
|
68
|
|
|
$action = $_SERVER['REQUEST_URI']; |
|
69
|
|
|
$unique_id = uniqid(mt_rand(), true); |
|
70
|
|
|
$form = '<br>'; |
|
71
|
|
|
$form .= "<form name=\"form_import_{$unique_id}\" id=\"form_import_{$unique_id}\" action=\"{$currentFile}\" method=\"post\" enctype=\"multipart/form-data\">"; |
|
72
|
|
|
|
|
73
|
|
|
$showlimit = str_replace('%s', $start + 1, _AM_XNEWSLETTER_IMPORT_SHOW); |
|
74
|
|
|
if ($limitcheck < $importsCount) { |
|
75
|
|
|
$showlimit = str_replace('%l', $limitcheck, $showlimit); |
|
76
|
|
|
} else { |
|
77
|
|
|
$showlimit = str_replace('%l', $importsCount, $showlimit); |
|
78
|
|
|
} |
|
79
|
|
|
$showlimit = str_replace('%n', $importsCount, $showlimit); |
|
80
|
|
|
|
|
81
|
|
|
$form .= " |
|
82
|
|
|
<table width='100%' cellspacing='1' class='outer'> |
|
83
|
|
|
<tr> |
|
84
|
|
|
<td align='left' colspan='8'>" . $showlimit . '</td> |
|
85
|
|
|
</tr>'; |
|
86
|
|
|
|
|
87
|
|
|
$class = 'odd'; |
|
88
|
|
|
$form .= ' |
|
89
|
|
|
<tr> |
|
90
|
|
|
<th> </th> |
|
91
|
|
|
<th>' . _AM_XNEWSLETTER_SUBSCR_EMAIL . '</th> |
|
92
|
|
|
<th>' . _AM_XNEWSLETTER_SUBSCR_SEX . '</th> |
|
93
|
|
|
<th>' . _AM_XNEWSLETTER_SUBSCR_FIRSTNAME . '</th> |
|
94
|
|
|
<th>' . _AM_XNEWSLETTER_SUBSCR_LASTNAME . '</th> |
|
95
|
|
|
<th>' . _AM_XNEWSLETTER_IMPORT_EMAIL_EXIST . '</th> |
|
96
|
|
|
<th>' . _AM_XNEWSLETTER_IMPORT_CATSUBSCR_EXIST . '</th> |
|
97
|
|
|
<th>' . _AM_XNEWSLETTER_CAT_NAME . '</th> |
|
98
|
|
|
</tr>'; |
|
99
|
|
|
|
|
100
|
|
|
$class = 'odd'; |
|
101
|
|
|
$counter = 0; |
|
102
|
|
|
|
|
103
|
|
|
//get data for dropdown with cats |
|
104
|
|
|
$catCriteria = new \CriteriaCompo(); |
|
105
|
|
|
$catCriteria->setSort('cat_id ASC, cat_name'); |
|
106
|
|
|
$catCriteria->setOrder('ASC'); |
|
107
|
|
|
$catObjs = $helper->getHandler('Cat')->getAll($catCriteria); |
|
108
|
|
|
|
|
109
|
|
|
foreach ($importObjs as $i => $importObj) { |
|
110
|
|
|
++$counter; |
|
111
|
|
|
$form .= "<tr class='{$class}'>"; |
|
112
|
|
|
$class = ('even' === $class) ? 'odd' : 'even'; |
|
113
|
|
|
$form .= '<td>' . $counter; |
|
114
|
|
|
$form .= "<input type='hidden' name='import_id_{$counter}' title='import_id_{$counter}' id='import_id_{$counter}' value='" . $importObj->getVar('import_id') . "'>"; |
|
115
|
|
|
$form .= '</td>'; |
|
116
|
|
|
$form .= '<td>'; |
|
117
|
|
|
$form .= "<input type='text' disabled=disabled name='email_{$counter}' title='" . _AM_XNEWSLETTER_SUBSCR_EMAIL . "' id='email_{$counter}' value='" . $importObj->getVar('import_email') . "'>"; |
|
118
|
|
|
$form .= '</td>'; |
|
119
|
|
|
|
|
120
|
|
|
$form .= '<td>'; |
|
121
|
|
|
$sex = $importObj->getVar('import_sex'); |
|
122
|
|
|
$form .= "<select size='1' name='sex_{$counter}' id='sex_{$counter}' title='" . _AM_XNEWSLETTER_SUBSCR_SEX . "' "; |
|
123
|
|
|
$form .= "value='" . $sex . "'>"; |
|
124
|
|
|
$form .= "<option value=''"; |
|
125
|
|
|
if (_AM_XNEWSLETTER_SUBSCR_SEX_EMPTY == $sex) { |
|
126
|
|
|
$form .= ' selected'; |
|
127
|
|
|
} |
|
128
|
|
|
$form .= '>' . _AM_XNEWSLETTER_SUBSCR_SEX_EMPTY . '</option>'; |
|
129
|
|
|
$form .= "<option value='" . _AM_XNEWSLETTER_SUBSCR_SEX_FEMALE . "'"; |
|
130
|
|
|
if (_AM_XNEWSLETTER_SUBSCR_SEX_FEMALE == $sex) { |
|
131
|
|
|
$form .= ' selected'; |
|
132
|
|
|
} |
|
133
|
|
|
$form .= '>' . _AM_XNEWSLETTER_SUBSCR_SEX_FEMALE . '</option>'; |
|
134
|
|
|
$form .= "<option value='" . _AM_XNEWSLETTER_SUBSCR_SEX_MALE . "'"; |
|
135
|
|
|
if (_AM_XNEWSLETTER_SUBSCR_SEX_MALE == $sex) { |
|
136
|
|
|
$form .= ' selected'; |
|
137
|
|
|
} |
|
138
|
|
|
$form .= '>' . _AM_XNEWSLETTER_SUBSCR_SEX_MALE . '</option>'; |
|
139
|
|
|
$form .= "<option value='" . _AM_XNEWSLETTER_SUBSCR_SEX_COMP . "'"; |
|
140
|
|
|
if (_AM_XNEWSLETTER_SUBSCR_SEX_COMP == $sex) { |
|
141
|
|
|
$form .= ' selected'; |
|
142
|
|
|
} |
|
143
|
|
|
$form .= '>' . _AM_XNEWSLETTER_SUBSCR_SEX_COMP . '</option>'; |
|
144
|
|
|
$form .= "<option value='" . _AM_XNEWSLETTER_SUBSCR_SEX_FAMILY . "'"; |
|
145
|
|
|
if (_AM_XNEWSLETTER_SUBSCR_SEX_FAMILY == $sex) { |
|
146
|
|
|
$form .= ' selected'; |
|
147
|
|
|
} |
|
148
|
|
|
$form .= '>' . _AM_XNEWSLETTER_SUBSCR_SEX_FAMILY . '</option>'; |
|
149
|
|
|
$form .= "</select>\n"; |
|
150
|
|
|
$form .= '</td>'; |
|
151
|
|
|
|
|
152
|
|
|
$form .= '<td>'; |
|
153
|
|
|
$form .= "<input type='text' name='firstname_{$counter}' title='" . _AM_XNEWSLETTER_SUBSCR_FIRSTNAME . "' id='firstname_{$counter}' value='" . $importObj->getVar('import_firstname') . "'>"; |
|
154
|
|
|
$form .= '</td>'; |
|
155
|
|
|
$form .= '<td>'; |
|
156
|
|
|
$form .= "<input type='text' name='lastname_{$counter}' title='" . _AM_XNEWSLETTER_SUBSCR_LASTNAME . "' id='lastname_{$counter}' value='" . $importObj->getVar('import_lastname') . "'>"; |
|
157
|
|
|
$form .= '</td>'; |
|
158
|
|
|
$form .= '<td>'; |
|
159
|
|
|
$subscr_id = $importObj->getVar('import_subscr_id'); |
|
160
|
|
|
$form .= "<input type='hidden' name='subscr_id_{$counter}' title='subscr_id' id='subscr_id_{$counter}' value='" . $subscr_id . "'>"; |
|
161
|
|
|
if ($subscr_id > 0) { |
|
162
|
|
|
$form .= "<img src='" . XNEWSLETTER_ICONS_URL . "/xn_ok.png' alt='" . _AM_XNEWSLETTER_IMPORT_EMAIL_EXIST . "' title='" . _AM_XNEWSLETTER_IMPORT_EMAIL_EXIST . "'>"; |
|
163
|
|
|
} |
|
164
|
|
|
$form .= '</td>'; |
|
165
|
|
|
$form .= '<td>'; |
|
166
|
|
|
$catsubscr_id = $importObj->getVar('import_catsubscr_id'); |
|
167
|
|
|
$form .= "<input type='hidden' name='catsubscr_id_{$counter}' title='catsubscr_id' id='catsubscr_id_{$counter}' value='" . $catsubscr_id . "'>"; |
|
168
|
|
|
if ($catsubscr_id > 0) { |
|
169
|
|
|
$form .= "<img src='" . XNEWSLETTER_ICONS_URL . "/xn_ok.png' alt='" . _AM_XNEWSLETTER_IMPORT_CATSUBSCR_EXIST . "' title='" . _AM_XNEWSLETTER_IMPORT_CATSUBSCR_EXIST . "'>"; |
|
170
|
|
|
} |
|
171
|
|
|
$form .= '</td>'; |
|
172
|
|
|
$form .= '</td>'; |
|
173
|
|
|
$form .= '<td>'; |
|
174
|
|
|
$curr_cat_id = $importObj->getVar('import_cat_id'); |
|
175
|
|
|
$form .= "<select size='1' name='cat_id_{$counter}' id=\"cat_id_{$counter}' title='cat' "; |
|
176
|
|
|
$form .= "value='" . $curr_cat_id . "'>"; |
|
177
|
|
|
$cat_select = "<option value='0'"; |
|
178
|
|
|
$cat_select .= '>' . _AM_XNEWSLETTER_IMPORT_NOIMPORT . '</option>'; |
|
179
|
|
|
foreach ($catObjs as $cat_id => $catObj) { |
|
180
|
|
|
$cat_select .= "<option value='" . $cat_id . "'"; |
|
181
|
|
|
if ($curr_cat_id == $cat_id) { |
|
182
|
|
|
$cat_select .= ' selected'; |
|
183
|
|
|
} |
|
184
|
|
|
$cat_select .= '>' . $catObj->getVar('cat_name') . '</option>'; |
|
185
|
|
|
} |
|
186
|
|
|
|
|
187
|
|
|
$form .= $cat_select; |
|
188
|
|
|
$form .= "</select>\n"; |
|
189
|
|
|
|
|
190
|
|
|
$form .= '</td>'; |
|
191
|
|
|
$form .= '</tr>'; |
|
192
|
|
|
} |
|
193
|
|
|
$form .= "<tr class='{$class}'>"; |
|
194
|
|
|
$class = ('even' === $class) ? 'odd' : 'even'; |
|
195
|
|
|
$form .= "<td colspan='8'>"; |
|
196
|
|
|
$form .= "<input type='hidden' name='counter' title='counter' id='counter' value='{$counter}'>"; |
|
197
|
|
|
$form .= "<input type='hidden' name='limitcheck' title='limitcheck' id='limitcheck' value='" . $limitcheck . "'>"; |
|
198
|
|
|
$form .= "<input type='hidden' name='op' title='op' id='op' value='apply_import_form'>"; |
|
199
|
|
|
$form .= "<input type='submit' class='formButton' name='submit' id='submit' value='" . _AM_XNEWSLETTER_IMPORT_EXEC . "' title='" . _AM_XNEWSLETTER_IMPORT_EXEC . "'>"; |
|
200
|
|
|
$form .= '</td></tr>'; |
|
201
|
|
|
|
|
202
|
|
|
$form .= '</table></form>'; |
|
203
|
|
|
$GLOBALS['xoopsTpl']->assign('form', $form); |
|
204
|
|
|
} |
|
205
|
|
|
break; |
|
206
|
|
|
case 'apply_import_form': |
|
207
|
|
|
//update xnewsletter with settings form_import |
|
208
|
|
|
$counter = Request::getInt('counter', 0); |
|
209
|
|
|
|
|
210
|
|
|
for ($i = 1; $i < ($counter + 1); ++$i) { |
|
211
|
|
|
$import_id = Request::getString("import_id_{$i}", 'default'); |
|
212
|
|
|
$subscr_firstname = Request::getString("firstname_{$i}", ''); |
|
213
|
|
|
$subscr_lastname = Request::getString("lastname_{$i}", ''); |
|
214
|
|
|
$subscr_sex = Request::getString("sex_{$i}", ''); |
|
215
|
|
|
$cat_id = Request::getInt("cat_id_{$i}", 0); |
|
216
|
|
|
|
|
217
|
|
|
if ($cat_id > 0) { |
|
218
|
|
|
if (0 == $subscr_id) { |
|
219
|
|
|
//update sex, firstname, lastname |
|
220
|
|
|
$sql = "UPDATE {$xoopsDB->prefix('xnewsletter_import')}"; |
|
221
|
|
|
$sql .= " SET `import_sex`='{$subscr_sex}', `import_firstname`='{$subscr_firstname}', `import_lastname`='{$subscr_lastname}'"; |
|
222
|
|
|
$sql .= " WHERE `import_id`={$import_id}"; |
|
223
|
|
|
$result = $xoopsDB->queryF($sql); |
|
224
|
|
|
} |
|
225
|
|
|
} |
|
226
|
|
|
//update cat_id and import_status |
|
227
|
|
|
$sql = "UPDATE {$xoopsDB->prefix('xnewsletter_import')}"; |
|
228
|
|
|
$sql .= " SET `import_cat_id`='{$cat_id}', `import_status`=1"; |
|
229
|
|
|
$sql .= " WHERE `import_id`={$import_id}"; |
|
230
|
|
|
$result = $xoopsDB->queryF($sql); |
|
231
|
|
|
} |
|
232
|
|
|
|
|
233
|
|
|
redirect_header("?op=exec_import_final&check_import=1&limitcheck={$limitcheck}", 0, ''); |
|
234
|
|
|
break; |
|
235
|
|
|
case 'exec_import_final': |
|
236
|
|
|
//execute final import of all data from xnewsletter_import, where import_status = true |
|
237
|
|
|
//delete data from xnewsletter_import, when imported (successful or not) |
|
238
|
|
|
$adminObject->addItemButton(_AM_XNEWSLETTER_IMPORT_PLUGINS_AVAIL, $currentFile, 'list'); |
|
239
|
|
|
$GLOBALS['xoopsTpl']->assign('buttons', $adminObject->renderButton('left')); |
|
240
|
|
|
|
|
241
|
|
|
$ip = xoops_getenv('REMOTE_ADDR'); |
|
242
|
|
|
$submitter = $xoopsUser->uid(); |
|
243
|
|
|
|
|
244
|
|
|
$importCriteria = new \CriteriaCompo(); |
|
245
|
|
|
$importCriteria->add(new \Criteria('import_status', true)); |
|
246
|
|
|
$numrows_total = $helper->getHandler('Import')->getCount(); |
|
247
|
|
|
$numrows_act = $helper->getHandler('Import')->getCount($importCriteria); |
|
248
|
|
|
if ($numrows_act > 0) { |
|
249
|
|
|
$sql = 'SELECT *'; |
|
250
|
|
|
$sql .= " FROM {$xoopsDB->prefix('xnewsletter_import')}"; |
|
251
|
|
|
$sql .= ' WHERE ((import_status)=1)'; |
|
252
|
|
|
$sql .= ' ORDER BY `import_id` ASC'; |
|
253
|
|
|
$counter = 0; |
|
254
|
|
|
if (!$users_import = $xoopsDB->queryF($sql)) { |
|
255
|
|
|
die('MySQL-Error: ' . $GLOBALS['xoopsDB']->error()); |
|
256
|
|
|
} |
|
257
|
|
|
while (null !== ($user_import = mysqli_fetch_assoc($users_import))) { |
|
258
|
|
|
$import_id = $user_import['import_id']; |
|
259
|
|
|
$subscr_email = $user_import['import_email']; |
|
260
|
|
|
$subscr_firstname = $user_import['import_firstname']; |
|
261
|
|
|
$subscr_lastname = $user_import['import_lastname']; |
|
262
|
|
|
$subscr_sex = $user_import['import_sex']; |
|
263
|
|
|
$cat_id = $user_import['import_cat_id']; |
|
264
|
|
|
$subscr_id = $user_import['import_subscr_id']; |
|
265
|
|
|
$catsubscr_id = $user_import['import_catsubscr_id']; |
|
266
|
|
|
$subscribe = 0; |
|
267
|
|
|
|
|
268
|
|
|
if (0 == $cat_id) { |
|
269
|
|
|
createProtocol(str_replace('%e', $subscr_email, _AM_XNEWSLETTER_IMPORT_RESULT_SKIP), true, $submitter); |
|
270
|
|
|
} else { |
|
271
|
|
|
//register email |
|
272
|
|
|
if (0 == $subscr_id) { |
|
273
|
|
|
$subscr_uid = 0; |
|
274
|
|
|
$sql = 'SELECT `uid`'; |
|
275
|
|
|
$sql .= " FROM {$xoopsDB->prefix('users')}"; |
|
276
|
|
|
$sql .= " WHERE (`email`='{$subscr_email}') LIMIT 1"; |
|
277
|
|
|
$user = $xoopsDB->queryF($sql); |
|
278
|
|
|
if ($user) { |
|
279
|
|
|
$row_user = $xoopsDB->fetchBoth($user); |
|
280
|
|
|
$subscr_uid = $row_user[0]; |
|
281
|
|
|
} |
|
282
|
|
|
unset($row_user); |
|
283
|
|
|
unset($user); |
|
284
|
|
|
|
|
285
|
|
|
$sql = 'INSERT'; |
|
286
|
|
|
$sql .= " INTO `{$xoopsDB->prefix('xnewsletter_subscr')}`"; |
|
287
|
|
|
$sql .= ' (`subscr_email`, `subscr_firstname`, `subscr_lastname`, `subscr_uid`, `subscr_sex`, `subscr_submitter`, `subscr_created`, `subscr_ip`, `subscr_activated`, `subscr_actoptions`)'; |
|
288
|
|
|
$sql .= " VALUES ('{$subscr_email}', '{$subscr_firstname}', '{$subscr_lastname}', " . $subscr_uid . ", '{$subscr_sex}', {$submitter}, " . time() . ",'{$ip}', 1, '')"; |
|
289
|
|
|
if (!$xoopsDB->queryF($sql)) { |
|
290
|
|
|
createProtocol(str_replace('%e', $subscr_email, _AM_XNEWSLETTER_IMPORT_RESULT_FAILED), false, $submitter); |
|
291
|
|
|
} else { |
|
292
|
|
|
//register email successful |
|
293
|
|
|
$resulttext = $subscr_email . ': ' . _AM_XNEWSLETTER_IMPORT_RESULT_REG_OK . ' | '; |
|
294
|
|
|
$subscr_id = $xoopsDB->getInsertId(); |
|
295
|
|
|
$subscribe = 1; |
|
296
|
|
|
} |
|
297
|
|
|
} else { |
|
298
|
|
|
//email already registered |
|
299
|
|
|
$resulttext = $subscr_email . ': ' . _AM_XNEWSLETTER_IMPORT_EMAIL_EXIST . ' | '; |
|
300
|
|
|
$subscribe = 1; |
|
301
|
|
|
} |
|
302
|
|
|
if (1 == $subscribe) { |
|
303
|
|
|
if (0 == $catsubscr_id) { |
|
304
|
|
|
//add subscription of this email |
|
305
|
|
|
$sql = 'INSERT'; |
|
306
|
|
|
$sql .= " INTO `{$xoopsDB->prefix('xnewsletter_catsubscr')}`"; |
|
307
|
|
|
$sql .= ' (`catsubscr_catid`, `catsubscr_subscrid`, `catsubscr_submitter`, `catsubscr_created`)'; |
|
308
|
|
|
$sql .= " VALUES ({$cat_id}, {$subscr_id}, {$submitter}," . time() . ')'; |
|
309
|
|
|
if ($xoopsDB->queryF($sql)) { |
|
310
|
|
|
createProtocol($resulttext . _AM_XNEWSLETTER_IMPORT_RESULT_SUBSCR_OK, true, $submitter); |
|
311
|
|
|
//handle mailinglists |
|
312
|
|
|
$cat_mailinglist = 0; |
|
313
|
|
|
$sql = 'SELECT `cat_mailinglist`'; |
|
314
|
|
|
$sql .= " FROM {$xoopsDB->prefix('xnewsletter_cat')}"; |
|
315
|
|
|
$sql .= " WHERE (`cat_id`={$cat_id}) LIMIT 1"; |
|
316
|
|
|
$cat_mls = $xoopsDB->queryF($sql); |
|
317
|
|
|
if ($cat_mls) { |
|
318
|
|
|
$cat_ml = $xoopsDB->fetchBoth($cat_mls); |
|
319
|
|
|
$cat_mailinglist = $cat_ml[0]; |
|
320
|
|
|
} |
|
321
|
|
|
unset($cat_ml); |
|
322
|
|
|
unset($cat_mls); |
|
323
|
|
|
|
|
324
|
|
|
if ($cat_mailinglist > 0) { |
|
325
|
|
|
require_once XOOPS_ROOT_PATH . '/modules/xnewsletter/include/mailinglist.php'; |
|
326
|
|
|
subscribingMLHandler(_XNEWSLETTER_MAILINGLIST_SUBSCRIBE, $subscr_id, $cat_mailinglist); |
|
327
|
|
|
} |
|
328
|
|
|
} else { |
|
329
|
|
|
createProtocol(str_replace('%e', $subscr_email, _AM_XNEWSLETTER_IMPORT_RESULT_FAILED), false, $submitter); |
|
330
|
|
|
} |
|
331
|
|
|
} else { |
|
332
|
|
|
createProtocol($resulttext . _AM_XNEWSLETTER_IMPORT_CATSUBSCR_EXIST, true, $submitter); |
|
333
|
|
|
} |
|
334
|
|
|
} |
|
335
|
|
|
} |
|
336
|
|
|
$sql_del = 'DELETE'; |
|
337
|
|
|
$sql_del .= " FROM {$xoopsDB->prefix('xnewsletter_import')}"; |
|
338
|
|
|
$sql_del .= " WHERE `import_id`={$import_id}"; |
|
339
|
|
|
$result = $xoopsDB->queryF($sql_del); |
|
340
|
|
|
} |
|
341
|
|
|
|
|
342
|
|
|
$resulttext = str_replace('%p', $numrows_act, _AM_XNEWSLETTER_IMPORT_FINISHED); |
|
343
|
|
|
$resulttext = str_replace('%t', $numrows_total, $resulttext); |
|
344
|
|
|
$GLOBALS['xoopsTpl']->assign('resulttext', XNEWSLETTER_IMG_OK . $resulttext); |
|
345
|
|
|
|
|
346
|
|
|
$numrows_pend = $helper->getHandler('Import')->getCount(); |
|
347
|
|
|
if ($numrows_pend > 0) { |
|
348
|
|
|
$form_continue = "<form id='form_continue' enctype='multipart/form-data' method='post' action='{$currentFile}' name='form_continue'>"; |
|
349
|
|
|
$form_continue .= "<input id='submit' class='formButton' type='submit' title='" . _AM_XNEWSLETTER_IMPORT_CONTINUE . "' value='" . _AM_XNEWSLETTER_IMPORT_CONTINUE . "' name='submit'>"; |
|
350
|
|
|
$form_continue .= '<input id="limitcheck" type="hidden" value="' . $limitcheck . '" name="limitcheck">'; |
|
351
|
|
|
if (1 == $check_import) { |
|
352
|
|
|
//show next form for check settings |
|
353
|
|
|
$form_continue .= '<input id="op" type="hidden" value="show_formcheck" name="op">'; |
|
354
|
|
|
} else { |
|
355
|
|
|
// set import_status = 1 for next package |
|
356
|
|
|
$sql_update = 'UPDATE ' . $xoopsDB->prefix('xnewsletter_import') . ' SET `import_status`=1 ORDER BY import_id LIMIT ' . $limitcheck; |
|
357
|
|
|
$xoopsDB->queryF($sql_update); |
|
358
|
|
|
//execute import for the next package |
|
359
|
|
|
$form_continue .= '<input id="op" type="hidden" value="exec_import_final" name="op">'; |
|
360
|
|
|
} |
|
361
|
|
|
$form_continue .= '<input id="action_after_read" type="hidden" value="' . $action_after_read . '" name="action_after_read">'; |
|
362
|
|
|
$form_continue .= '<input id="limitcheck" type="hidden" value="' . $limitcheck . '" name="limitcheck">'; |
|
363
|
|
|
$form_continue .= '<input id="plugin" type="hidden" value="' . $plugin . '" name="plugin">'; |
|
364
|
|
|
$form_continue .= '<input id="check_import" type="hidden" value="' . $check_import . '" name="check_import">'; |
|
365
|
|
|
$form_continue .= '</form>'; |
|
366
|
|
|
$GLOBALS['xoopsTpl']->assign('form', $form_continue); |
|
367
|
|
|
} |
|
368
|
|
|
} else { |
|
369
|
|
|
$GLOBALS['xoopsTpl']->assign('error', _AM_XNEWSLETTER_IMPORT_NODATA); |
|
370
|
|
|
} |
|
371
|
|
|
break; |
|
372
|
|
|
case 'searchdata': |
|
373
|
|
|
//delete all existing data, import data into xnewsletter_import with plugin |
|
374
|
|
|
//set cat_id as preselected, update information about existing registration/subscriptions |
|
375
|
|
|
//if ($action_after_read==1) execute import else show form for check before executing import |
|
376
|
|
|
|
|
377
|
|
|
$pluginFile = XNEWSLETTER_ROOT_PATH . "/plugins/{$plugin}.php"; |
|
378
|
|
View Code Duplication |
if (!file_exists($pluginFile)) { |
|
|
|
|
|
|
379
|
|
|
$GLOBALS['xoopsTpl']->assign('error', str_replace('%p', $plugin, _AM_XNEWSLETTER_IMPORT_ERROR_NO_PLUGIN)); |
|
380
|
|
|
break; |
|
381
|
|
|
} |
|
382
|
|
|
require_once $pluginFile; |
|
383
|
|
|
|
|
384
|
|
|
$function = 'xnewsletter_plugin_getdata_' . $plugin; |
|
385
|
|
|
if (!function_exists($function)) { |
|
386
|
|
|
$error = "Error: require_once function 'xnewsletter_plugin_getdata_{$plugin}' doesn't exist<br>"; |
|
387
|
|
|
$error .= str_replace('%f', $plugin, _AM_XNEWSLETTER_IMPORT_ERROR_NO_FUNCTION); |
|
388
|
|
|
$GLOBALS['xoopsTpl']->assign('error', $error); |
|
389
|
|
|
break; |
|
390
|
|
|
} |
|
391
|
|
|
|
|
392
|
|
|
//delete all existing data |
|
393
|
|
|
$sql = 'TRUNCATE TABLE ' . $xoopsDB->prefix('xnewsletter_import'); |
|
394
|
|
|
$result = $xoopsDB->queryF($sql); |
|
395
|
|
|
|
|
396
|
|
|
//import data into xnewsletter_import with plugin |
|
397
|
|
|
if ('csv' === $plugin) { |
|
398
|
|
|
$csv_file = $_FILES['csv_file']['tmp_name']; |
|
399
|
|
|
$csv_header = Request::getInt('csv_header', 0); |
|
400
|
|
|
$csv_delimiter = Request::getString('csv_delimiter', ','); |
|
401
|
|
|
//$numData = $function($cat_id, $action_after_read, $limitcheck, $skipcatsubscrexist, $csv_file, $csv_delimiter, $csv_header); |
|
402
|
|
|
$numData = call_user_func($function, $cat_id, $action_after_read, $limitcheck, $skipcatsubscrexist, $csv_file, $csv_delimiter, $csv_header); |
|
403
|
|
|
} else { |
|
404
|
|
|
if ('xoopsuser' === $plugin) { |
|
405
|
|
|
$arr_groups = $_POST['xoopsuser_group']; |
|
406
|
|
|
//$numData = $function($cat_id, $action_after_read, $limitcheck, $skipcatsubscrexist, $arr_groups); |
|
407
|
|
|
$numData = call_user_func($function, $cat_id, $action_after_read, $limitcheck, $skipcatsubscrexist, $arr_groups); |
|
408
|
|
|
} else { |
|
409
|
|
|
//$numData = $function($cat_id, $action_after_read, $limitcheck, $skipcatsubscrexist); |
|
410
|
|
|
$numData = call_user_func($function, $cat_id, $action_after_read, $limitcheck, $skipcatsubscrexist); |
|
411
|
|
|
} |
|
412
|
|
|
} |
|
413
|
|
|
|
|
414
|
|
|
if ($numData > 0) { |
|
415
|
|
|
if (0 == $action_after_read) { |
|
416
|
|
|
//execute import without check |
|
417
|
|
|
redirect_header("{$currentFile}?op=exec_import_final&action_after_read=0&limitcheck={$limitcheck}", 0, ''); |
|
418
|
|
|
} else { |
|
419
|
|
|
//show form for check before executing import |
|
420
|
|
|
redirect_header("{$currentFile}?op=show_formcheck&action_after_read=1&plugin={$plugin}&limitcheck={$limitcheck}", 0, ''); |
|
421
|
|
|
} |
|
422
|
|
|
} else { |
|
423
|
|
|
redirect_header($currentFile, 3, _AM_XNEWSLETTER_IMPORT_NODATA); |
|
424
|
|
|
} |
|
425
|
|
|
break; |
|
426
|
|
|
case 'form_additional': |
|
427
|
|
|
//show form for additional settings |
|
428
|
|
|
$adminObject->addItemButton(_AM_XNEWSLETTER_IMPORT_PLUGINS_AVAIL, $currentFile, 'list'); |
|
429
|
|
|
$GLOBALS['xoopsTpl']->assign('buttons', $adminObject->renderButton('left')); |
|
430
|
|
|
|
|
431
|
|
|
$pluginFile = XNEWSLETTER_ROOT_PATH . "/plugins/{$plugin}.php"; |
|
432
|
|
View Code Duplication |
if (!file_exists($pluginFile)) { |
|
|
|
|
|
|
433
|
|
|
$GLOBALS['xoopsTpl']->assign('error', str_replace('%p', $plugin, _AM_XNEWSLETTER_IMPORT_ERROR_NO_PLUGIN)); |
|
434
|
|
|
break; |
|
435
|
|
|
} |
|
436
|
|
|
require_once $pluginFile; |
|
437
|
|
|
|
|
438
|
|
|
$function = "xnewsletter_plugin_getform_{$plugin}"; |
|
439
|
|
|
if (!function_exists($function)) { |
|
440
|
|
|
$GLOBALS['xoopsTpl']->assign('error', str_replace('%f', $plugin, _AM_XNEWSLETTER_IMPORT_ERROR_NO_FUNCTION)); |
|
441
|
|
|
break; |
|
442
|
|
|
} |
|
443
|
|
|
//$form = $function( $cat_id, $action_after_read, $limitcheck, $skipcatsubscrexist ); |
|
444
|
|
|
$form = call_user_func($function, $cat_id, $action_after_read, $limitcheck, $skipcatsubscrexist); |
|
445
|
|
|
$GLOBALS['xoopsTpl']->assign('form', $form->render()); |
|
446
|
|
|
break; |
|
447
|
|
|
case 'default': |
|
448
|
|
|
default: |
|
449
|
|
|
//show basic search form |
|
450
|
|
|
$importObj = $helper->getHandler('Import')->create(); |
|
451
|
|
|
$form = $importObj->getSearchForm($plugin, $action_after_read, $limitcheck); |
|
452
|
|
|
$GLOBALS['xoopsTpl']->assign('form', $form->render()); |
|
453
|
|
|
break; |
|
454
|
|
|
} |
|
455
|
|
|
require_once __DIR__ . '/admin_footer.php'; |
|
456
|
|
|
|
|
457
|
|
|
/** |
|
458
|
|
|
* @param $prot_text |
|
459
|
|
|
* @param $success |
|
460
|
|
|
* @param $submitter |
|
461
|
|
|
*/ |
|
462
|
|
|
function createProtocol($prot_text, $success, $submitter) |
|
463
|
|
|
{ |
|
464
|
|
|
global $xoopsDB; |
|
465
|
|
|
$sql = "INSERT INTO `{$xoopsDB->prefix('xnewsletter_protocol')}`"; |
|
466
|
|
|
$sql .= ' (`protocol_letter_id`, `protocol_subscriber_id`, `protocol_status`, `protocol_success`, `protocol_submitter`, `protocol_created`)'; |
|
467
|
|
|
$sql .= " VALUES (0,0,'{$prot_text}', {$success}, {$submitter}, " . time() . ')'; |
|
468
|
|
|
if (!$xoopsDB->queryF($sql)) { |
|
469
|
|
|
die('MySQL-Error: ' . $GLOBALS['xoopsDB']->error()); |
|
470
|
|
|
} |
|
471
|
|
|
} |
|
472
|
|
|
|
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.