Completed
Push — master ( 48ecb4...5fe85d )
by Michael
01:45
created
admin/admin_footer.php 1 patch
Indentation   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -1,10 +1,10 @@
 block discarded – undo
1 1
 <?php
2 2
 // Автор: andrey3761
3 3
 echo "<div style='text-align:center;'><a href='http://xoops.ws' target='_blank'><img src="
4
-      . XOOPS_URL
5
-      . '/modules/instruction/assets/images/xoops.ws.gif'
6
-      . ' alt="XOOPS.WebSite" title="XOOPS.WebSite"></a></div>';
4
+	  . XOOPS_URL
5
+	  . '/modules/instruction/assets/images/xoops.ws.gif'
6
+	  . ' alt="XOOPS.WebSite" title="XOOPS.WebSite"></a></div>';
7 7
 echo "<div class='center smallsmall italic pad5'><strong>"
8
-      . $xoopsModule->getVar('name')
9
-      . "</strong> is maintained by the <a class='tooltip' rel='external' href='https://xoops.org/' title='Visit XOOPS Community'>XOOPS Community</a></div>";
8
+	  . $xoopsModule->getVar('name')
9
+	  . "</strong> is maintained by the <a class='tooltip' rel='external' href='https://xoops.org/' title='Visit XOOPS Community'>XOOPS Community</a></div>";
10 10
 xoops_cp_footer();
Please login to merge, or discard this patch.
admin/instr.php 1 patch
Indentation   +561 added lines, -561 removed lines patch added patch discarded remove patch
@@ -40,566 +40,566 @@
 block discarded – undo
40 40
 // Выбор
41 41
 switch ($op) {
42 42
 
43
-    case 'main':
44
-
45
-        // Заголовок админки
46
-        xoops_cp_header();
47
-        // Меню
48
-        $adminObject->displayNavigation(basename(__FILE__));
49
-        $adminObject->addItemButton(_AM_INSTRUCTION_ADDINSTR, 'instr.php?op=editinstr', 'add');
50
-        $adminObject->displayButton('left', '');
51
-
52
-        //
53
-        $criteria = new CriteriaCompo();
54
-
55
-        // Если была передана категория
56
-        if ($cid) {
57
-            // Добавляем в выборку ID категории
58
-            $criteria->add(new Criteria('cid', $cid, '='));
59
-            // Получаем объект категории
60
-            $objInscat = $inscatHandler->get($cid);
61
-            // Если нет такой категории
62
-            if (!is_object($objInscat)) {
63
-                redirect_header('cat.php', 3, _AM_INSTRUCTION_ERR_CATNOTSELECT);
64
-            }
65
-        }
66
-
67
-        // Число инструкций, удовлетворяющих данному условию
68
-        $numrows = $insinstrHandler->getCount($criteria);
69
-
70
-        // Число выборки
71
-        $criteria->setLimit($limit);
72
-        // Начинасть с данного элемента
73
-        $criteria->setStart($start);
74
-        // Сортировать по
75
-        $criteria->setSort('instrid');
76
-        // Порядок сортировки
77
-        $criteria->setOrder('DESC');
78
-        // Находим все справки
79
-        $instr_arr = $insinstrHandler->getall($criteria);
80
-        // Если записей больше чем $limit, то выводим пагинатор
81
-        if ($numrows > $limit) {
82
-            $pagenav = new XoopsPageNav($numrows, $limit, $start, 'start', 'op=' . $op . '&amp;cid=' . $cid);
83
-            $pagenav = $pagenav->renderNav(4);
84
-        } else {
85
-            $pagenav = '';
86
-        }
87
-        // Выводим пагинатор в шаблон
88
-        $GLOBALS['xoopsTpl']->assign('insPagenav', $pagenav);
89
-
90
-        // Если есть записи
91
-        if ($numrows > 0) {
92
-            $class = 'odd';
93
-            foreach (array_keys($instr_arr) as $i) {
94
-
95
-                //
96
-                $class = ('even' === $class) ? 'odd' : 'even';
97
-                // ID
98
-                $insinstr_instrid = $instr_arr[$i]->getVar('instrid');
99
-                // Название
100
-                $insinstr_title   = $instr_arr[$i]->getVar('title');
101
-                // Статус
102
-                $insinstr_status  = $instr_arr[$i]->getVar('status');
103
-                // Количество страниц
104
-                $insinstr_pages   = $instr_arr[$i]->getVar('pages');
105
-                // Категория
106
-                $insinstr_cat     = $inscatHandler->get($instr_arr[$i]->getVar('cid'));
107
-
108
-                // Выводим в шаблон
109
-                $GLOBALS['xoopsTpl']->append('insListInstr', ['instrid' => $insinstr_instrid, 'title' => $insinstr_title, 'status' => $insinstr_status, 'pages' => $insinstr_pages, 'ctitle' => $insinstr_cat->getVar('title'), 'cid' => $insinstr_cat->getVar('cid'), 'class' => $class]);
110
-            }
111
-
112
-            //
113
-            $inshead = isset($objInscat) && is_object($objInscat) ? sprintf(_AM_INSTR_LISTINSTRINCAT, $objInscat->getVar('title')) : _AM_INSTR_LISTINSTRALL;
114
-            $GLOBALS['xoopsTpl']->assign('insHead', $inshead);
115
-            // Языковые константы
116
-            $GLOBALS['xoopsTpl']->assign('lang_title', _AM_INSTRUCTION_TITLE);
117
-            $GLOBALS['xoopsTpl']->assign('lang_cat', _AM_INSTRUCTION_CAT);
118
-            $GLOBALS['xoopsTpl']->assign('lang_pages', _AM_INSTRUCTION_PAGES);
119
-            $GLOBALS['xoopsTpl']->assign('lang_action', _AM_INSTRUCTION_ACTION);
120
-            $GLOBALS['xoopsTpl']->assign('lang_display', _AM_INSTRUCTION_DISPLAY);
121
-            $GLOBALS['xoopsTpl']->assign('lang_edit', _AM_INSTRUCTION_EDIT);
122
-            $GLOBALS['xoopsTpl']->assign('lang_del', _AM_INSTRUCTION_DEL);
123
-            $GLOBALS['xoopsTpl']->assign('lang_lock', _AM_INSTRUCTION_LOCK);
124
-            $GLOBALS['xoopsTpl']->assign('lang_unlock', _AM_INSTRUCTION_UNLOCK);
125
-            $GLOBALS['xoopsTpl']->assign('lang_addpage', _AM_INSTRUCTION_ADDPAGE);
126
-            $GLOBALS['xoopsTpl']->assign('lang_addinstr', _AM_INSTRUCTION_ADDINSTR);
127
-        }
128
-
129
-        // Выводим шаблон
130
-        $GLOBALS['xoopsTpl']->display('db:admin/instruction_admin_instr.tpl');
131
-
132
-        // Текст внизу админки
133
-        include __DIR__ . '/admin_footer.php';
134
-
135
-        break;
136
-
137
-    // Редактирование категории
138
-    case 'editinstr':
139
-
140
-        // Заголовок админки
141
-        xoops_cp_header();
142
-        // Меню
143
-        $adminObject->displayNavigation(basename(__FILE__));
144
-
145
-        // Если мы редактируем инструкцию
146
-        if ($instrid) {
147
-            $objInsinstr = $insinstrHandler->get($instrid);
148
-            // Создание новой страницы
149
-        } else {
150
-            $objInsinstr = $insinstrHandler->create();
151
-        }
152
-
153
-        // Выводим шаблон
154
-        $GLOBALS['xoopsTpl']->display('db:admin/instruction_admin_editinstr.tpl');
155
-        $form = $objInsinstr->getForm('instr.php');
156
-        // Форма
157
-        echo $form->render();
158
-
159
-        // Текст внизу админки
160
-        include __DIR__ . '/admin_footer.php';
161
-
162
-        break;
163
-
164
-    // Сохранение инструкций
165
-    case 'saveinstr':
166
-
167
-        // Проверка
168
-        if (!$GLOBALS['xoopsSecurity']->check()) {
169
-            redirect_header('instr.php', 3, implode(',', $GLOBALS['xoopsSecurity']->getErrors()));
170
-        }
171
-        // Если мы редактируем
172
-        if ($instrid) {
173
-            $objInsinstr = $insinstrHandler->get($instrid);
174
-        } else {
175
-            $objInsinstr = $insinstrHandler->create();
176
-            // Указываем дату создания
177
-            $objInsinstr->setVar('datecreated', $time);
178
-            // Указываем пользователя
179
-            $objInsinstr->setVar('uid', $uid);
180
-        }
181
-
182
-        $err         = false;
183
-        $message_err = '';
184
-        //
185
-        $instr_title       = InstructionUtility::cleanVars($_POST, 'title', '', 'string');
186
-        $instr_description = InstructionUtility::cleanVars($_POST, 'description', '', 'string');
187
-
188
-        // Дата обновления
189
-        $objInsinstr->setVar('dateupdated', $time);
190
-        //
191
-        $objInsinstr->setVar('cid', $cid);
192
-        $objInsinstr->setVar('title', $instr_title);
193
-        $objInsinstr->setVar('status', $_POST['status']);
194
-        $objInsinstr->setVar('description', $instr_description);
195
-        $objInsinstr->setVar('metakeywords', $_POST['metakeywords']);
196
-        $objInsinstr->setVar('metadescription', $_POST['metadescription']);
197
-
198
-        // Проверка категорий
199
-        if (!$cid) {
200
-            $err         = true;
201
-            $message_err .= _AM_INSTRUCTION_ERR_CAT . '<br>';
202
-        }
203
-        // Проверка названия
204
-        if (!$instr_title) {
205
-            $err         = true;
206
-            $message_err .= _AM_INSTR_ERR_TITLE . '<br>';
207
-        }
208
-        // Проверка основного текста
209
-        if (!$instr_description) {
210
-            $err         = true;
211
-            $message_err .= _AM_INSTR_ERR_DESCRIPTION . '<br>';
212
-        }
213
-
214
-        // Если были ошибки
215
-        if (true === $err) {
216
-            xoops_cp_header();
217
-            // Меню страницы
218
-            $adminObject->displayNavigation(basename(__FILE__));
219
-
220
-            $message_err = '<div class="errorMsg" style="text-align: left;">' . $message_err . '</div>';
221
-            // Выводим ошибки в шаблон
222
-            $GLOBALS['xoopsTpl']->assign('insErrorMsg', $message_err);
223
-            // Если небыло ошибок
224
-        } else {
225
-            // Вставляем данные в БД
226
-            if ($insinstrHandler->insert($objInsinstr)) {
227
-                // Получаем ID созданной записи
228
-                $instrid_new = $instrid ?: $objInsinstr->get_new_enreg();
229
-                // Обновление даты в категории
230
-                $inscatHandler->updateDateupdated($cid, $time);
231
-                // Тэги
232
-                if (xoops_getModuleOption('usetag', 'instruction')) {
233
-                    $tagHandler = xoops_getModuleHandler('tag', 'tag');
234
-                    $tagHandler->updateByItem($_POST['tag'], $instrid_new, $GLOBALS['xoopsModule']->getVar('dirname'), 0);
235
-                }
236
-
237
-                // Если мы редактируем
238
-                if ($instrid) {
239
-                    redirect_header('instr.php', 3, _AM_INSTRUCTION_INSTRMODIFY);
240
-                } else {
241
-                    redirect_header('instr.php', 3, _AM_INSTRUCTION_INSTRADDED);
242
-                }
243
-            }
244
-            xoops_cp_header();
245
-            // Меню страницы
246
-            $adminObject->displayNavigation(basename(__FILE__));
247
-
248
-            // Выводим ошибки в шаблон
249
-            $GLOBALS['xoopsTpl']->assign('insErrorMsg', $objInstructioncat->getHtmlErrors());
250
-        }
251
-        // Выводим шаблон
252
-        $GLOBALS['xoopsTpl']->display('db:admin/instruction_admin_saveinstr.tpl');
253
-        // Выводим форму
254
-        $form = $objInsinstr->getForm();
255
-        // Форма
256
-        echo $form->render();
257
-        // Текст внизу админки
258
-        include __DIR__ . '/admin_footer.php';
259
-
260
-        break;
261
-
262
-    // Просмотр категории
263
-    case 'viewinstr':
264
-
265
-        // Подключаем трей
266
-        include_once XOOPS_ROOT_PATH . '/modules/instruction/class/tree.php';
267
-
268
-        // Заголовок админки
269
-        xoops_cp_header();
270
-        // Меню
271
-        $adminObject->displayNavigation(basename(__FILE__));
272
-        // Кнопки
273
-        $adminObject->addItemButton(_AM_INSTRUCTION_ADDPAGE, 'instr.php?op=editpage&instrid=' . $instrid, 'add');
274
-        $adminObject->displayButton('left', '');
275
-
276
-        //
277
-        $objInsinstr = $insinstrHandler->get($instrid);
278
-
279
-        // Находим все страницы в данной инструкции
280
-        $criteria = new CriteriaCompo();
281
-        $criteria->add(new Criteria('instrid', $instrid, '='));
282
-        $criteria->setSort('weight');
283
-        $criteria->setOrder('ASC');
284
-        $ins_page = $inspageHandler->getall($criteria);
285
-        //
286
-        unset($criteria);
287
-
288
-        // Инициализируем
289
-        $instree = new InstructionTree($ins_page, 'pageid', 'pid');
290
-        // Выводим список страниц в шаблон
291
-        $GLOBALS['xoopsTpl']->assign('insListPage', $instree->makePagesAdmin($objInsinstr, '--'));
292
-
293
-        // Выводим шаблон
294
-        $GLOBALS['xoopsTpl']->display('db:admin/instruction_admin_viewinstr.tpl');
295
-
296
-        // Текст внизу админки
297
-        include __DIR__ . '/admin_footer.php';
298
-
299
-        break;
300
-
301
-    // Удаление категории
302
-    case 'delinstr':
303
-
304
-        // Проверка на instrid
305
-        // ==================
306
-        // Объект инструкций
307
-        $objInsinstr = $insinstrHandler->get($instrid);
308
-
309
-        // Нажали ли мы на кнопку OK
310
-        $ok = isset($_POST['ok']) ? (int)$_POST['ok'] : 0;
311
-        //
312
-        if ($ok) {
313
-
314
-            // Проверка
315
-            if (!$GLOBALS['xoopsSecurity']->check()) {
316
-                redirect_header('instr.php', 3, implode(',', $GLOBALS['xoopsSecurity']->getErrors()));
317
-            }
318
-            // Находим все страницы, пренадлежащие этой инструкции
319
-            $criteria = new CriteriaCompo();
320
-            $criteria->add(new Criteria('instrid', $instrid));
321
-            $ins_page = $inspageHandler->getall($criteria);
322
-            //
323
-            unset($criteria);
324
-            // Перебираем все страницы в данной инструкции
325
-            foreach (array_keys($ins_page) as $i) {
326
-                // Декримент комментов
327
-                // Делает дикримент одного коммента, а не всех в цикле...
328
-                // Удаляем комментарии
329
-                xoops_comment_delete($GLOBALS['xoopsModule']->getVar('mid'), $ins_page[$i]->getVar('pageid'));
330
-                // Декримент страниц (Опционально)
331
-                // ==============================
332
-
333
-                // Удаляем страницу
334
-                // Сделать проверку на удалённость страницы
335
-                // ========================================
336
-                $inspageHandler->delete($ins_page[$i]);
337
-            }
338
-            // Пытаемся удалить инструкцию
339
-            if ($insinstrHandler->delete($objInsinstr)) {
340
-                // Редирект
341
-                redirect_header('instr.php', 3, _AM_INSTRUCTION_INSTRDELETED);
342
-            } else {
343
-                // Редирект
344
-                redirect_header('instr.php', 3, _AM_INSTRUCTION_ERR_DELINSTR);
345
-            }
346
-        } else {
347
-            xoops_cp_header();
348
-
349
-            $adminObject->displayNavigation(basename(__FILE__));
350
-            // Форма
351
-            xoops_confirm(['ok' => 1, 'instrid' => $instrid, 'op' => 'delinstr'], 'instr.php', sprintf(_AM_INSTRUCTION_FORMDELINSTR, $objInsinstr->getVar('title')));
352
-            // Текст внизу админки
353
-            include __DIR__ . '/admin_footer.php';
354
-        }
355
-
356
-        break;
357
-
358
-    // Добавление страницы
359
-    case 'editpage':
360
-
361
-        // Заголовок админки
362
-        xoops_cp_header();
363
-        // Скрипты
364
-        $xoTheme->addScript(XOOPS_URL . '/modules/instruction/assets/js/admin.js');
365
-        // Меню
366
-        $adminObject->displayNavigation(basename(__FILE__));
367
-
368
-        // Если мы редактируем страницу
369
-        if ($pageid) {
370
-            // Получаем объект страницы
371
-            $objInspage = $inspageHandler->get($pageid);
372
-            // ID инструкции
373
-            $instrid = $objInspage->getVar('instrid');
374
-            // Создание новой страницы
375
-        } elseif ($instrid) {
376
-            // Создаём объект страницы
377
-            $objInspage = $inspageHandler->create();
378
-            // Устанавливаем родительскую страницу
379
-            $objInspage->setVar('pid', $pid);
380
-        } else {
381
-            redirect_header('instr.php', 3, _AM_INSTRUCTION_BADREQUEST);
382
-        }
383
-        // Форма
384
-        $form = $objInspage->getForm('instr.php', $instrid);
385
-        // Форма
386
-        echo $form->render();
387
-        // Выводим шаблон
388
-        $GLOBALS['xoopsTpl']->display('db:admin/instruction_admin_editpage.tpl');
389
-
390
-        // Текст внизу админки
391
-        include __DIR__ . '/admin_footer.php';
392
-
393
-        break;
394
-
395
-    // Сохранение страницы
396
-    case 'savepage':
397
-        // Ошибки
398
-        $err         = false;
399
-        $message_err = '';
400
-
401
-        // Проверка сессии
402
-        if (!$GLOBALS['xoopsSecurity']->check()) {
403
-            $err         = true;
404
-            $err_txt     = implode(', ', $GLOBALS['xoopsSecurity']->getErrors());
405
-            $message_err .= $err_txt . '<br>';
406
-        }
407
-
408
-        // Если мы редактируем
409
-        if ($pageid) {
410
-            $objInspage = $inspageHandler->get($pageid);
411
-        } elseif ($instrid) {
412
-            $objInspage = $inspageHandler->create();
413
-            // Если мы создаём страницу необходимо указать к какой инструкции
414
-            $objInspage->setVar('instrid', $instrid);
415
-            // Указываем дату создания
416
-            $objInspage->setVar('datecreated', $time);
417
-            // Указываем пользователя
418
-            $objInspage->setVar('uid', $uid);
419
-        } else {
420
-            redirect_header('instr.php', 3, _AM_INSTRUCTION_BADREQUEST);
421
-        }
422
-
423
-        //
424
-        $page_title    = InstructionUtility::cleanVars($_POST, 'title', '', 'string');
425
-        $page_hometext = InstructionUtility::cleanVars($_POST, 'hometext', '', 'string');
426
-
427
-        // Родительская страница
428
-        $objInspage->setVar('pid', $pid);
429
-        // Дата обновления
430
-        $objInspage->setVar('dateupdated', $time);
431
-        // Название страницы
432
-        $objInspage->setVar('title', $page_title);
433
-        // Вес страницы
434
-        $objInspage->setVar('weight', $weight);
435
-        // Основной текст
436
-        $objInspage->setVar('hometext', $page_hometext);
437
-        // Сноска
438
-        $objInspage->setVar('footnote', InstructionUtility::cleanVars($_POST, 'footnote', '', 'string'));
439
-        // Статус
440
-        $objInspage->setVar('status', InstructionUtility::cleanVars($_POST, 'status', 0, 'int'));
441
-        // Тип
442
-        $objInspage->setVar('type', InstructionUtility::cleanVars($_POST, 'type', 0, 'int'));
443
-        // Мета-теги описания
444
-        $objInspage->setVar('keywords', InstructionUtility::cleanVars($_POST, 'keywords', '', 'string'));
445
-        // Мета-теги ключевых слов
446
-        $objInspage->setVar('description', InstructionUtility::cleanVars($_POST, 'description', '', 'string'));
447
-        //
448
-        $dosmiley = (isset($_POST['dosmiley']) && (int)$_POST['dosmiley'] > 0) ? 1 : 0;
449
-        $doxcode  = (isset($_POST['doxcode']) && (int)$_POST['doxcode'] > 0) ? 1 : 0;
450
-        $dobr     = (isset($_POST['dobr']) && (int)$_POST['dobr'] > 0) ? 1 : 0;
451
-        $dohtml   = (isset($_POST['dohtml']) && (int)$_POST['dohtml'] > 0) ? 1 : 0;
452
-        //$doimage = ( isset( $_POST['doimage'] ) && intval( $_POST['doimage'] ) > 0 ) ? 1 : 0;
453
-        $objInspage->setVar('dohtml', $dohtml);
454
-        $objInspage->setVar('dosmiley', $dosmiley);
455
-        $objInspage->setVar('doxcode', $doxcode);
456
-        //$objInspage->setVar( 'doimage', $doimage );
457
-        $objInspage->setVar('dobr', $dobr);
458
-
459
-        //
460
-        if (!$pageid && !$instrid) {
461
-            $err         = true;
462
-            $message_err .= _AM_INSTRUCTION_ERR_INSTR . '<br>';
463
-        }
464
-        // Проверка веса
465
-        if (0 == $weight) {
466
-            $err         = true;
467
-            $message_err .= _AM_INSTRUCTION_ERR_WEIGHT . '<br>';
468
-        }
469
-        // Проверка родительской страницы
470
-        if ($pageid && ($pageid == $pid)) {
471
-            $err         = true;
472
-            $message_err .= _AM_INSTRUCTION_ERR_PPAGE . '<br>';
473
-        }
474
-        // Проверка названия
475
-        if (!$page_title) {
476
-            $err         = true;
477
-            $message_err .= _AM_INSTR_ERR_TITLE . '<br>';
478
-        }
479
-        // Проверка основного текста
480
-        if (!$page_hometext) {
481
-            $err         = true;
482
-            $message_err .= _AM_INSTR_ERR_HOMETEXT . '<br>';
483
-        }
484
-
485
-        // Если были ошибки
486
-        if (true === $err) {
487
-            xoops_cp_header();
488
-            // Меню страницы
489
-            $adminObject->displayNavigation(basename(__FILE__));
490
-
491
-            $message_err = '<div class="errorMsg" style="text-align: left;">' . $message_err . '</div>';
492
-            // Выводим ошибки в шаблон
493
-            $GLOBALS['xoopsTpl']->assign('insErrorMsg', $message_err);
494
-            // Если небыло ошибок
495
-        } else {
496
-            // Вставляем данные в БД
497
-            if ($inspageHandler->insert($objInspage)) {
498
-                // Ссылка для редиректа
499
-                $redirect_url = 'instr.php?op=viewinstr&amp;instrid=' . $instrid . '#pageid_' . $pid;
500
-                // Получаем ID инструкции
501
-                $instrid = $objInspage->getInstrid();
502
-                // Обновляем в инструкции число страниц и дату
503
-                $insinstrHandler->updatePages($instrid);
504
-                // Если мы редактируем
505
-                if ($pageid) {
506
-                    // Редирект
507
-                    redirect_header($redirect_url, 3, _AM_INSTRUCTION_PAGEMODIFY);
508
-                    // Если мы добавляем
509
-                } else {
510
-                    // Инкримент комментов
511
-                    $inspageHandler->updateposts($uid, $_POST['status'], 'add');
512
-                    // Редирект
513
-                    redirect_header($redirect_url, 3, _AM_INSTRUCTION_PAGEADDED);
514
-                }
515
-            }
516
-            xoops_cp_header();
517
-            // Меню страницы
518
-            $adminObject->displayNavigation(basename(__FILE__));
519
-
520
-            // Выводим ошибки в шаблон
521
-            $GLOBALS['xoopsTpl']->assign('insErrorMsg', $objInspage->getHtmlErrors());
522
-        }
523
-        // Скрипты
524
-        $xoTheme->addScript(XOOPS_URL . '/modules/instruction/assets/js/admin.js');
525
-        // Выводим шаблон
526
-        $GLOBALS['xoopsTpl']->display('db:admin/instruction_admin_savepage.tpl');
527
-        // Выводим форму
528
-        $form = $objInspage->getForm('instr.php', $instrid);
529
-        // Форма
530
-        echo $form->render();
531
-        // Текст внизу админки
532
-        include __DIR__ . '/admin_footer.php';
533
-
534
-        break;
535
-
536
-    // Удаление страницы
537
-    case 'delpage':
538
-
539
-        // Проверка на pageid
540
-        // ==================
541
-
542
-        $objInspage = $inspageHandler->get($pageid);
543
-        // Нажали ли мы на кнопку OK
544
-        $ok = isset($_POST['ok']) ? (int)$_POST['ok'] : 0;
545
-        // Если мы нажали на кнопку
546
-        if ($ok) {
547
-
548
-            // Проверка
549
-            if (!$GLOBALS['xoopsSecurity']->check()) {
550
-                redirect_header('instr.php', 3, implode(',', $GLOBALS['xoopsSecurity']->getErrors()));
551
-            }
552
-            // ID инструкции
553
-            $page_instrid = $objInspage->getVar('instrid');
554
-            // Декримент комментов
555
-            $inspageHandler->updateposts($objInspage->getVar('uid'), $objInspage->getVar('status'), 'delete');
556
-            // Пытаемся удалить страницу
557
-            if ($inspageHandler->delete($objInspage)) {
558
-                // Обновляем в инструкции число страниц и дату
559
-                $insinstrHandler->updatePages($page_instrid);
560
-                // Удаляем комментарии
561
-                xoops_comment_delete($GLOBALS['xoopsModule']->getVar('mid'), $pageid);
562
-                //
563
-                redirect_header('instr.php?op=viewinstr&amp;instrid=' . $page_instrid, 3, _AM_INSTRUCTION_PAGEDELETED);
564
-                // Если не смогли удалить страницу
565
-            } else {
566
-                redirect_header('instr.php?op=viewinstr&amp;instrid=' . $page_instrid, 3, _AM_INSTRUCTION_ERR_DELPAGE);
567
-            }
568
-        } else {
569
-
570
-            // Заголовок админки
571
-            xoops_cp_header();
572
-            // Меню
573
-            $adminObject->displayNavigation(basename(__FILE__));
574
-            // Форма
575
-            xoops_confirm(['ok' => 1, 'pageid' => $pageid, 'op' => 'delpage'], 'instr.php', sprintf(_AM_INSTRUCTION_FORMDELPAGE, $objInspage->getVar('title')));
576
-            // Текст внизу админки
577
-            include __DIR__ . '/admin_footer.php';
578
-        }
579
-
580
-        break;
581
-
582
-    // Удаление страницы
583
-    case 'updpage':
584
-
585
-        // Принимаем данные
586
-        $pageids = $_POST['pageids'];
587
-        $weights = $_POST['weights'];
588
-        // Перебираем все значения
589
-        foreach ($pageids as $key => $pageid) {
590
-
591
-            // Объявляем объект
592
-            $objInspage = $inspageHandler->get($pageid);
593
-            // Устанавливаем вес
594
-            $objInspage->setVar('weight', $weights[$key]);
595
-            // Вставляем данные в БД
596
-            $inspageHandler->insert($objInspage);
597
-            // Удаляем объект
598
-            unset($objInspage);
599
-        }
600
-        // Редирект
601
-        redirect_header('instr.php?op=viewinstr&instrid=' . $instrid, 3, _AM_INSTRUCTION_PAGESUPDATE);
602
-
603
-        break;
43
+	case 'main':
44
+
45
+		// Заголовок админки
46
+		xoops_cp_header();
47
+		// Меню
48
+		$adminObject->displayNavigation(basename(__FILE__));
49
+		$adminObject->addItemButton(_AM_INSTRUCTION_ADDINSTR, 'instr.php?op=editinstr', 'add');
50
+		$adminObject->displayButton('left', '');
51
+
52
+		//
53
+		$criteria = new CriteriaCompo();
54
+
55
+		// Если была передана категория
56
+		if ($cid) {
57
+			// Добавляем в выборку ID категории
58
+			$criteria->add(new Criteria('cid', $cid, '='));
59
+			// Получаем объект категории
60
+			$objInscat = $inscatHandler->get($cid);
61
+			// Если нет такой категории
62
+			if (!is_object($objInscat)) {
63
+				redirect_header('cat.php', 3, _AM_INSTRUCTION_ERR_CATNOTSELECT);
64
+			}
65
+		}
66
+
67
+		// Число инструкций, удовлетворяющих данному условию
68
+		$numrows = $insinstrHandler->getCount($criteria);
69
+
70
+		// Число выборки
71
+		$criteria->setLimit($limit);
72
+		// Начинасть с данного элемента
73
+		$criteria->setStart($start);
74
+		// Сортировать по
75
+		$criteria->setSort('instrid');
76
+		// Порядок сортировки
77
+		$criteria->setOrder('DESC');
78
+		// Находим все справки
79
+		$instr_arr = $insinstrHandler->getall($criteria);
80
+		// Если записей больше чем $limit, то выводим пагинатор
81
+		if ($numrows > $limit) {
82
+			$pagenav = new XoopsPageNav($numrows, $limit, $start, 'start', 'op=' . $op . '&amp;cid=' . $cid);
83
+			$pagenav = $pagenav->renderNav(4);
84
+		} else {
85
+			$pagenav = '';
86
+		}
87
+		// Выводим пагинатор в шаблон
88
+		$GLOBALS['xoopsTpl']->assign('insPagenav', $pagenav);
89
+
90
+		// Если есть записи
91
+		if ($numrows > 0) {
92
+			$class = 'odd';
93
+			foreach (array_keys($instr_arr) as $i) {
94
+
95
+				//
96
+				$class = ('even' === $class) ? 'odd' : 'even';
97
+				// ID
98
+				$insinstr_instrid = $instr_arr[$i]->getVar('instrid');
99
+				// Название
100
+				$insinstr_title   = $instr_arr[$i]->getVar('title');
101
+				// Статус
102
+				$insinstr_status  = $instr_arr[$i]->getVar('status');
103
+				// Количество страниц
104
+				$insinstr_pages   = $instr_arr[$i]->getVar('pages');
105
+				// Категория
106
+				$insinstr_cat     = $inscatHandler->get($instr_arr[$i]->getVar('cid'));
107
+
108
+				// Выводим в шаблон
109
+				$GLOBALS['xoopsTpl']->append('insListInstr', ['instrid' => $insinstr_instrid, 'title' => $insinstr_title, 'status' => $insinstr_status, 'pages' => $insinstr_pages, 'ctitle' => $insinstr_cat->getVar('title'), 'cid' => $insinstr_cat->getVar('cid'), 'class' => $class]);
110
+			}
111
+
112
+			//
113
+			$inshead = isset($objInscat) && is_object($objInscat) ? sprintf(_AM_INSTR_LISTINSTRINCAT, $objInscat->getVar('title')) : _AM_INSTR_LISTINSTRALL;
114
+			$GLOBALS['xoopsTpl']->assign('insHead', $inshead);
115
+			// Языковые константы
116
+			$GLOBALS['xoopsTpl']->assign('lang_title', _AM_INSTRUCTION_TITLE);
117
+			$GLOBALS['xoopsTpl']->assign('lang_cat', _AM_INSTRUCTION_CAT);
118
+			$GLOBALS['xoopsTpl']->assign('lang_pages', _AM_INSTRUCTION_PAGES);
119
+			$GLOBALS['xoopsTpl']->assign('lang_action', _AM_INSTRUCTION_ACTION);
120
+			$GLOBALS['xoopsTpl']->assign('lang_display', _AM_INSTRUCTION_DISPLAY);
121
+			$GLOBALS['xoopsTpl']->assign('lang_edit', _AM_INSTRUCTION_EDIT);
122
+			$GLOBALS['xoopsTpl']->assign('lang_del', _AM_INSTRUCTION_DEL);
123
+			$GLOBALS['xoopsTpl']->assign('lang_lock', _AM_INSTRUCTION_LOCK);
124
+			$GLOBALS['xoopsTpl']->assign('lang_unlock', _AM_INSTRUCTION_UNLOCK);
125
+			$GLOBALS['xoopsTpl']->assign('lang_addpage', _AM_INSTRUCTION_ADDPAGE);
126
+			$GLOBALS['xoopsTpl']->assign('lang_addinstr', _AM_INSTRUCTION_ADDINSTR);
127
+		}
128
+
129
+		// Выводим шаблон
130
+		$GLOBALS['xoopsTpl']->display('db:admin/instruction_admin_instr.tpl');
131
+
132
+		// Текст внизу админки
133
+		include __DIR__ . '/admin_footer.php';
134
+
135
+		break;
136
+
137
+	// Редактирование категории
138
+	case 'editinstr':
139
+
140
+		// Заголовок админки
141
+		xoops_cp_header();
142
+		// Меню
143
+		$adminObject->displayNavigation(basename(__FILE__));
144
+
145
+		// Если мы редактируем инструкцию
146
+		if ($instrid) {
147
+			$objInsinstr = $insinstrHandler->get($instrid);
148
+			// Создание новой страницы
149
+		} else {
150
+			$objInsinstr = $insinstrHandler->create();
151
+		}
152
+
153
+		// Выводим шаблон
154
+		$GLOBALS['xoopsTpl']->display('db:admin/instruction_admin_editinstr.tpl');
155
+		$form = $objInsinstr->getForm('instr.php');
156
+		// Форма
157
+		echo $form->render();
158
+
159
+		// Текст внизу админки
160
+		include __DIR__ . '/admin_footer.php';
161
+
162
+		break;
163
+
164
+	// Сохранение инструкций
165
+	case 'saveinstr':
166
+
167
+		// Проверка
168
+		if (!$GLOBALS['xoopsSecurity']->check()) {
169
+			redirect_header('instr.php', 3, implode(',', $GLOBALS['xoopsSecurity']->getErrors()));
170
+		}
171
+		// Если мы редактируем
172
+		if ($instrid) {
173
+			$objInsinstr = $insinstrHandler->get($instrid);
174
+		} else {
175
+			$objInsinstr = $insinstrHandler->create();
176
+			// Указываем дату создания
177
+			$objInsinstr->setVar('datecreated', $time);
178
+			// Указываем пользователя
179
+			$objInsinstr->setVar('uid', $uid);
180
+		}
181
+
182
+		$err         = false;
183
+		$message_err = '';
184
+		//
185
+		$instr_title       = InstructionUtility::cleanVars($_POST, 'title', '', 'string');
186
+		$instr_description = InstructionUtility::cleanVars($_POST, 'description', '', 'string');
187
+
188
+		// Дата обновления
189
+		$objInsinstr->setVar('dateupdated', $time);
190
+		//
191
+		$objInsinstr->setVar('cid', $cid);
192
+		$objInsinstr->setVar('title', $instr_title);
193
+		$objInsinstr->setVar('status', $_POST['status']);
194
+		$objInsinstr->setVar('description', $instr_description);
195
+		$objInsinstr->setVar('metakeywords', $_POST['metakeywords']);
196
+		$objInsinstr->setVar('metadescription', $_POST['metadescription']);
197
+
198
+		// Проверка категорий
199
+		if (!$cid) {
200
+			$err         = true;
201
+			$message_err .= _AM_INSTRUCTION_ERR_CAT . '<br>';
202
+		}
203
+		// Проверка названия
204
+		if (!$instr_title) {
205
+			$err         = true;
206
+			$message_err .= _AM_INSTR_ERR_TITLE . '<br>';
207
+		}
208
+		// Проверка основного текста
209
+		if (!$instr_description) {
210
+			$err         = true;
211
+			$message_err .= _AM_INSTR_ERR_DESCRIPTION . '<br>';
212
+		}
213
+
214
+		// Если были ошибки
215
+		if (true === $err) {
216
+			xoops_cp_header();
217
+			// Меню страницы
218
+			$adminObject->displayNavigation(basename(__FILE__));
219
+
220
+			$message_err = '<div class="errorMsg" style="text-align: left;">' . $message_err . '</div>';
221
+			// Выводим ошибки в шаблон
222
+			$GLOBALS['xoopsTpl']->assign('insErrorMsg', $message_err);
223
+			// Если небыло ошибок
224
+		} else {
225
+			// Вставляем данные в БД
226
+			if ($insinstrHandler->insert($objInsinstr)) {
227
+				// Получаем ID созданной записи
228
+				$instrid_new = $instrid ?: $objInsinstr->get_new_enreg();
229
+				// Обновление даты в категории
230
+				$inscatHandler->updateDateupdated($cid, $time);
231
+				// Тэги
232
+				if (xoops_getModuleOption('usetag', 'instruction')) {
233
+					$tagHandler = xoops_getModuleHandler('tag', 'tag');
234
+					$tagHandler->updateByItem($_POST['tag'], $instrid_new, $GLOBALS['xoopsModule']->getVar('dirname'), 0);
235
+				}
236
+
237
+				// Если мы редактируем
238
+				if ($instrid) {
239
+					redirect_header('instr.php', 3, _AM_INSTRUCTION_INSTRMODIFY);
240
+				} else {
241
+					redirect_header('instr.php', 3, _AM_INSTRUCTION_INSTRADDED);
242
+				}
243
+			}
244
+			xoops_cp_header();
245
+			// Меню страницы
246
+			$adminObject->displayNavigation(basename(__FILE__));
247
+
248
+			// Выводим ошибки в шаблон
249
+			$GLOBALS['xoopsTpl']->assign('insErrorMsg', $objInstructioncat->getHtmlErrors());
250
+		}
251
+		// Выводим шаблон
252
+		$GLOBALS['xoopsTpl']->display('db:admin/instruction_admin_saveinstr.tpl');
253
+		// Выводим форму
254
+		$form = $objInsinstr->getForm();
255
+		// Форма
256
+		echo $form->render();
257
+		// Текст внизу админки
258
+		include __DIR__ . '/admin_footer.php';
259
+
260
+		break;
261
+
262
+	// Просмотр категории
263
+	case 'viewinstr':
264
+
265
+		// Подключаем трей
266
+		include_once XOOPS_ROOT_PATH . '/modules/instruction/class/tree.php';
267
+
268
+		// Заголовок админки
269
+		xoops_cp_header();
270
+		// Меню
271
+		$adminObject->displayNavigation(basename(__FILE__));
272
+		// Кнопки
273
+		$adminObject->addItemButton(_AM_INSTRUCTION_ADDPAGE, 'instr.php?op=editpage&instrid=' . $instrid, 'add');
274
+		$adminObject->displayButton('left', '');
275
+
276
+		//
277
+		$objInsinstr = $insinstrHandler->get($instrid);
278
+
279
+		// Находим все страницы в данной инструкции
280
+		$criteria = new CriteriaCompo();
281
+		$criteria->add(new Criteria('instrid', $instrid, '='));
282
+		$criteria->setSort('weight');
283
+		$criteria->setOrder('ASC');
284
+		$ins_page = $inspageHandler->getall($criteria);
285
+		//
286
+		unset($criteria);
287
+
288
+		// Инициализируем
289
+		$instree = new InstructionTree($ins_page, 'pageid', 'pid');
290
+		// Выводим список страниц в шаблон
291
+		$GLOBALS['xoopsTpl']->assign('insListPage', $instree->makePagesAdmin($objInsinstr, '--'));
292
+
293
+		// Выводим шаблон
294
+		$GLOBALS['xoopsTpl']->display('db:admin/instruction_admin_viewinstr.tpl');
295
+
296
+		// Текст внизу админки
297
+		include __DIR__ . '/admin_footer.php';
298
+
299
+		break;
300
+
301
+	// Удаление категории
302
+	case 'delinstr':
303
+
304
+		// Проверка на instrid
305
+		// ==================
306
+		// Объект инструкций
307
+		$objInsinstr = $insinstrHandler->get($instrid);
308
+
309
+		// Нажали ли мы на кнопку OK
310
+		$ok = isset($_POST['ok']) ? (int)$_POST['ok'] : 0;
311
+		//
312
+		if ($ok) {
313
+
314
+			// Проверка
315
+			if (!$GLOBALS['xoopsSecurity']->check()) {
316
+				redirect_header('instr.php', 3, implode(',', $GLOBALS['xoopsSecurity']->getErrors()));
317
+			}
318
+			// Находим все страницы, пренадлежащие этой инструкции
319
+			$criteria = new CriteriaCompo();
320
+			$criteria->add(new Criteria('instrid', $instrid));
321
+			$ins_page = $inspageHandler->getall($criteria);
322
+			//
323
+			unset($criteria);
324
+			// Перебираем все страницы в данной инструкции
325
+			foreach (array_keys($ins_page) as $i) {
326
+				// Декримент комментов
327
+				// Делает дикримент одного коммента, а не всех в цикле...
328
+				// Удаляем комментарии
329
+				xoops_comment_delete($GLOBALS['xoopsModule']->getVar('mid'), $ins_page[$i]->getVar('pageid'));
330
+				// Декримент страниц (Опционально)
331
+				// ==============================
332
+
333
+				// Удаляем страницу
334
+				// Сделать проверку на удалённость страницы
335
+				// ========================================
336
+				$inspageHandler->delete($ins_page[$i]);
337
+			}
338
+			// Пытаемся удалить инструкцию
339
+			if ($insinstrHandler->delete($objInsinstr)) {
340
+				// Редирект
341
+				redirect_header('instr.php', 3, _AM_INSTRUCTION_INSTRDELETED);
342
+			} else {
343
+				// Редирект
344
+				redirect_header('instr.php', 3, _AM_INSTRUCTION_ERR_DELINSTR);
345
+			}
346
+		} else {
347
+			xoops_cp_header();
348
+
349
+			$adminObject->displayNavigation(basename(__FILE__));
350
+			// Форма
351
+			xoops_confirm(['ok' => 1, 'instrid' => $instrid, 'op' => 'delinstr'], 'instr.php', sprintf(_AM_INSTRUCTION_FORMDELINSTR, $objInsinstr->getVar('title')));
352
+			// Текст внизу админки
353
+			include __DIR__ . '/admin_footer.php';
354
+		}
355
+
356
+		break;
357
+
358
+	// Добавление страницы
359
+	case 'editpage':
360
+
361
+		// Заголовок админки
362
+		xoops_cp_header();
363
+		// Скрипты
364
+		$xoTheme->addScript(XOOPS_URL . '/modules/instruction/assets/js/admin.js');
365
+		// Меню
366
+		$adminObject->displayNavigation(basename(__FILE__));
367
+
368
+		// Если мы редактируем страницу
369
+		if ($pageid) {
370
+			// Получаем объект страницы
371
+			$objInspage = $inspageHandler->get($pageid);
372
+			// ID инструкции
373
+			$instrid = $objInspage->getVar('instrid');
374
+			// Создание новой страницы
375
+		} elseif ($instrid) {
376
+			// Создаём объект страницы
377
+			$objInspage = $inspageHandler->create();
378
+			// Устанавливаем родительскую страницу
379
+			$objInspage->setVar('pid', $pid);
380
+		} else {
381
+			redirect_header('instr.php', 3, _AM_INSTRUCTION_BADREQUEST);
382
+		}
383
+		// Форма
384
+		$form = $objInspage->getForm('instr.php', $instrid);
385
+		// Форма
386
+		echo $form->render();
387
+		// Выводим шаблон
388
+		$GLOBALS['xoopsTpl']->display('db:admin/instruction_admin_editpage.tpl');
389
+
390
+		// Текст внизу админки
391
+		include __DIR__ . '/admin_footer.php';
392
+
393
+		break;
394
+
395
+	// Сохранение страницы
396
+	case 'savepage':
397
+		// Ошибки
398
+		$err         = false;
399
+		$message_err = '';
400
+
401
+		// Проверка сессии
402
+		if (!$GLOBALS['xoopsSecurity']->check()) {
403
+			$err         = true;
404
+			$err_txt     = implode(', ', $GLOBALS['xoopsSecurity']->getErrors());
405
+			$message_err .= $err_txt . '<br>';
406
+		}
407
+
408
+		// Если мы редактируем
409
+		if ($pageid) {
410
+			$objInspage = $inspageHandler->get($pageid);
411
+		} elseif ($instrid) {
412
+			$objInspage = $inspageHandler->create();
413
+			// Если мы создаём страницу необходимо указать к какой инструкции
414
+			$objInspage->setVar('instrid', $instrid);
415
+			// Указываем дату создания
416
+			$objInspage->setVar('datecreated', $time);
417
+			// Указываем пользователя
418
+			$objInspage->setVar('uid', $uid);
419
+		} else {
420
+			redirect_header('instr.php', 3, _AM_INSTRUCTION_BADREQUEST);
421
+		}
422
+
423
+		//
424
+		$page_title    = InstructionUtility::cleanVars($_POST, 'title', '', 'string');
425
+		$page_hometext = InstructionUtility::cleanVars($_POST, 'hometext', '', 'string');
426
+
427
+		// Родительская страница
428
+		$objInspage->setVar('pid', $pid);
429
+		// Дата обновления
430
+		$objInspage->setVar('dateupdated', $time);
431
+		// Название страницы
432
+		$objInspage->setVar('title', $page_title);
433
+		// Вес страницы
434
+		$objInspage->setVar('weight', $weight);
435
+		// Основной текст
436
+		$objInspage->setVar('hometext', $page_hometext);
437
+		// Сноска
438
+		$objInspage->setVar('footnote', InstructionUtility::cleanVars($_POST, 'footnote', '', 'string'));
439
+		// Статус
440
+		$objInspage->setVar('status', InstructionUtility::cleanVars($_POST, 'status', 0, 'int'));
441
+		// Тип
442
+		$objInspage->setVar('type', InstructionUtility::cleanVars($_POST, 'type', 0, 'int'));
443
+		// Мета-теги описания
444
+		$objInspage->setVar('keywords', InstructionUtility::cleanVars($_POST, 'keywords', '', 'string'));
445
+		// Мета-теги ключевых слов
446
+		$objInspage->setVar('description', InstructionUtility::cleanVars($_POST, 'description', '', 'string'));
447
+		//
448
+		$dosmiley = (isset($_POST['dosmiley']) && (int)$_POST['dosmiley'] > 0) ? 1 : 0;
449
+		$doxcode  = (isset($_POST['doxcode']) && (int)$_POST['doxcode'] > 0) ? 1 : 0;
450
+		$dobr     = (isset($_POST['dobr']) && (int)$_POST['dobr'] > 0) ? 1 : 0;
451
+		$dohtml   = (isset($_POST['dohtml']) && (int)$_POST['dohtml'] > 0) ? 1 : 0;
452
+		//$doimage = ( isset( $_POST['doimage'] ) && intval( $_POST['doimage'] ) > 0 ) ? 1 : 0;
453
+		$objInspage->setVar('dohtml', $dohtml);
454
+		$objInspage->setVar('dosmiley', $dosmiley);
455
+		$objInspage->setVar('doxcode', $doxcode);
456
+		//$objInspage->setVar( 'doimage', $doimage );
457
+		$objInspage->setVar('dobr', $dobr);
458
+
459
+		//
460
+		if (!$pageid && !$instrid) {
461
+			$err         = true;
462
+			$message_err .= _AM_INSTRUCTION_ERR_INSTR . '<br>';
463
+		}
464
+		// Проверка веса
465
+		if (0 == $weight) {
466
+			$err         = true;
467
+			$message_err .= _AM_INSTRUCTION_ERR_WEIGHT . '<br>';
468
+		}
469
+		// Проверка родительской страницы
470
+		if ($pageid && ($pageid == $pid)) {
471
+			$err         = true;
472
+			$message_err .= _AM_INSTRUCTION_ERR_PPAGE . '<br>';
473
+		}
474
+		// Проверка названия
475
+		if (!$page_title) {
476
+			$err         = true;
477
+			$message_err .= _AM_INSTR_ERR_TITLE . '<br>';
478
+		}
479
+		// Проверка основного текста
480
+		if (!$page_hometext) {
481
+			$err         = true;
482
+			$message_err .= _AM_INSTR_ERR_HOMETEXT . '<br>';
483
+		}
484
+
485
+		// Если были ошибки
486
+		if (true === $err) {
487
+			xoops_cp_header();
488
+			// Меню страницы
489
+			$adminObject->displayNavigation(basename(__FILE__));
490
+
491
+			$message_err = '<div class="errorMsg" style="text-align: left;">' . $message_err . '</div>';
492
+			// Выводим ошибки в шаблон
493
+			$GLOBALS['xoopsTpl']->assign('insErrorMsg', $message_err);
494
+			// Если небыло ошибок
495
+		} else {
496
+			// Вставляем данные в БД
497
+			if ($inspageHandler->insert($objInspage)) {
498
+				// Ссылка для редиректа
499
+				$redirect_url = 'instr.php?op=viewinstr&amp;instrid=' . $instrid . '#pageid_' . $pid;
500
+				// Получаем ID инструкции
501
+				$instrid = $objInspage->getInstrid();
502
+				// Обновляем в инструкции число страниц и дату
503
+				$insinstrHandler->updatePages($instrid);
504
+				// Если мы редактируем
505
+				if ($pageid) {
506
+					// Редирект
507
+					redirect_header($redirect_url, 3, _AM_INSTRUCTION_PAGEMODIFY);
508
+					// Если мы добавляем
509
+				} else {
510
+					// Инкримент комментов
511
+					$inspageHandler->updateposts($uid, $_POST['status'], 'add');
512
+					// Редирект
513
+					redirect_header($redirect_url, 3, _AM_INSTRUCTION_PAGEADDED);
514
+				}
515
+			}
516
+			xoops_cp_header();
517
+			// Меню страницы
518
+			$adminObject->displayNavigation(basename(__FILE__));
519
+
520
+			// Выводим ошибки в шаблон
521
+			$GLOBALS['xoopsTpl']->assign('insErrorMsg', $objInspage->getHtmlErrors());
522
+		}
523
+		// Скрипты
524
+		$xoTheme->addScript(XOOPS_URL . '/modules/instruction/assets/js/admin.js');
525
+		// Выводим шаблон
526
+		$GLOBALS['xoopsTpl']->display('db:admin/instruction_admin_savepage.tpl');
527
+		// Выводим форму
528
+		$form = $objInspage->getForm('instr.php', $instrid);
529
+		// Форма
530
+		echo $form->render();
531
+		// Текст внизу админки
532
+		include __DIR__ . '/admin_footer.php';
533
+
534
+		break;
535
+
536
+	// Удаление страницы
537
+	case 'delpage':
538
+
539
+		// Проверка на pageid
540
+		// ==================
541
+
542
+		$objInspage = $inspageHandler->get($pageid);
543
+		// Нажали ли мы на кнопку OK
544
+		$ok = isset($_POST['ok']) ? (int)$_POST['ok'] : 0;
545
+		// Если мы нажали на кнопку
546
+		if ($ok) {
547
+
548
+			// Проверка
549
+			if (!$GLOBALS['xoopsSecurity']->check()) {
550
+				redirect_header('instr.php', 3, implode(',', $GLOBALS['xoopsSecurity']->getErrors()));
551
+			}
552
+			// ID инструкции
553
+			$page_instrid = $objInspage->getVar('instrid');
554
+			// Декримент комментов
555
+			$inspageHandler->updateposts($objInspage->getVar('uid'), $objInspage->getVar('status'), 'delete');
556
+			// Пытаемся удалить страницу
557
+			if ($inspageHandler->delete($objInspage)) {
558
+				// Обновляем в инструкции число страниц и дату
559
+				$insinstrHandler->updatePages($page_instrid);
560
+				// Удаляем комментарии
561
+				xoops_comment_delete($GLOBALS['xoopsModule']->getVar('mid'), $pageid);
562
+				//
563
+				redirect_header('instr.php?op=viewinstr&amp;instrid=' . $page_instrid, 3, _AM_INSTRUCTION_PAGEDELETED);
564
+				// Если не смогли удалить страницу
565
+			} else {
566
+				redirect_header('instr.php?op=viewinstr&amp;instrid=' . $page_instrid, 3, _AM_INSTRUCTION_ERR_DELPAGE);
567
+			}
568
+		} else {
569
+
570
+			// Заголовок админки
571
+			xoops_cp_header();
572
+			// Меню
573
+			$adminObject->displayNavigation(basename(__FILE__));
574
+			// Форма
575
+			xoops_confirm(['ok' => 1, 'pageid' => $pageid, 'op' => 'delpage'], 'instr.php', sprintf(_AM_INSTRUCTION_FORMDELPAGE, $objInspage->getVar('title')));
576
+			// Текст внизу админки
577
+			include __DIR__ . '/admin_footer.php';
578
+		}
579
+
580
+		break;
581
+
582
+	// Удаление страницы
583
+	case 'updpage':
584
+
585
+		// Принимаем данные
586
+		$pageids = $_POST['pageids'];
587
+		$weights = $_POST['weights'];
588
+		// Перебираем все значения
589
+		foreach ($pageids as $key => $pageid) {
590
+
591
+			// Объявляем объект
592
+			$objInspage = $inspageHandler->get($pageid);
593
+			// Устанавливаем вес
594
+			$objInspage->setVar('weight', $weights[$key]);
595
+			// Вставляем данные в БД
596
+			$inspageHandler->insert($objInspage);
597
+			// Удаляем объект
598
+			unset($objInspage);
599
+		}
600
+		// Редирект
601
+		redirect_header('instr.php?op=viewinstr&instrid=' . $instrid, 3, _AM_INSTRUCTION_PAGESUPDATE);
602
+
603
+		break;
604 604
 
605 605
 }
Please login to merge, or discard this patch.