Completed
Push — master ( 8239ac...55b92e )
by Michael
01:49
created
admin/instr.php 1 patch
Indentation   +577 added lines, -577 removed lines patch added patch discarded remove patch
@@ -40,582 +40,582 @@
 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 . '&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
-        xoops_cp_footer();
136
-
137
-        break;
138
-
139
-    // Редактирование категории
140
-    case 'editinstr':
141
-
142
-        // Заголовок админки
143
-        xoops_cp_header();
144
-        // Меню
145
-        $adminObject->displayNavigation(basename(__FILE__));
146
-
147
-        // Если мы редактируем инструкцию
148
-        if ($instrid) {
149
-            $objInsinstr = $insinstrHandler->get($instrid);
150
-            // Создание новой страницы
151
-        } else {
152
-            $objInsinstr = $insinstrHandler->create();
153
-        }
154
-
155
-        // Выводим шаблон
156
-        $GLOBALS['xoopsTpl']->display('db:admin/instruction_admin_editinstr.tpl');
157
-        $form = $objInsinstr->getForm('instr.php');
158
-        // Форма
159
-        echo $form->render();
160
-
161
-        // Текст внизу админки
162
-        include __DIR__ . '/admin_footer.php';
163
-        // Подвал админки
164
-        xoops_cp_footer();
165
-
166
-        break;
167
-
168
-    // Сохранение инструкций
169
-    case 'saveinstr':
170
-
171
-        // Проверка
172
-        if (!$GLOBALS['xoopsSecurity']->check()) {
173
-            redirect_header('instr.php', 3, implode(',', $GLOBALS['xoopsSecurity']->getErrors()));
174
-        }
175
-        // Если мы редактируем
176
-        if ($instrid) {
177
-            $objInsinstr = $insinstrHandler->get($instrid);
178
-        } else {
179
-            $objInsinstr = $insinstrHandler->create();
180
-            // Указываем дату создания
181
-            $objInsinstr->setVar('datecreated', $time);
182
-            // Указываем пользователя
183
-            $objInsinstr->setVar('uid', $uid);
184
-        }
185
-
186
-        $err         = false;
187
-        $message_err = '';
188
-        //
189
-        $instr_title       = InstructionUtility::cleanVars($_POST, 'title', '', 'string');
190
-        $instr_description = InstructionUtility::cleanVars($_POST, 'description', '', 'string');
191
-
192
-        // Дата обновления
193
-        $objInsinstr->setVar('dateupdated', $time);
194
-        //
195
-        $objInsinstr->setVar('cid', $cid);
196
-        $objInsinstr->setVar('title', $instr_title);
197
-        $objInsinstr->setVar('status', $_POST['status']);
198
-        $objInsinstr->setVar('description', $instr_description);
199
-        $objInsinstr->setVar('metakeywords', $_POST['metakeywords']);
200
-        $objInsinstr->setVar('metadescription', $_POST['metadescription']);
201
-
202
-        // Проверка категорий
203
-        if (!$cid) {
204
-            $err         = true;
205
-            $message_err .= _AM_INSTRUCTION_ERR_CAT . '<br>';
206
-        }
207
-        // Проверка названия
208
-        if (!$instr_title) {
209
-            $err         = true;
210
-            $message_err .= _AM_INSTR_ERR_TITLE . '<br>';
211
-        }
212
-        // Проверка основного текста
213
-        if (!$instr_description) {
214
-            $err         = true;
215
-            $message_err .= _AM_INSTR_ERR_DESCRIPTION . '<br>';
216
-        }
217
-
218
-        // Если были ошибки
219
-        if (true === $err) {
220
-            xoops_cp_header();
221
-            // Меню страницы
222
-            $adminObject->displayNavigation(basename(__FILE__));
223
-
224
-            $message_err = '<div class="errorMsg" style="text-align: left;">' . $message_err . '</div>';
225
-            // Выводим ошибки в шаблон
226
-            $GLOBALS['xoopsTpl']->assign('insErrorMsg', $message_err);
227
-            // Если небыло ошибок
228
-        } else {
229
-            // Вставляем данные в БД
230
-            if ($insinstrHandler->insert($objInsinstr)) {
231
-                // Получаем ID созданной записи
232
-                $instrid_new = $instrid ?: $objInsinstr->get_new_enreg();
233
-                // Обновление даты в категории
234
-                $inscatHandler->updateDateupdated($cid, $time);
235
-                // Тэги
236
-                if (xoops_getModuleOption('usetag', 'instruction')) {
237
-                    $tagHandler = xoops_getModuleHandler('tag', 'tag');
238
-                    $tagHandler->updateByItem($_POST['tag'], $instrid_new, $GLOBALS['xoopsModule']->getVar('dirname'), 0);
239
-                }
240
-
241
-                // Если мы редактируем
242
-                if ($instrid) {
243
-                    redirect_header('instr.php', 3, _AM_INSTRUCTION_INSTRMODIFY);
244
-                } else {
245
-                    redirect_header('instr.php', 3, _AM_INSTRUCTION_INSTRADDED);
246
-                }
247
-            }
248
-            xoops_cp_header();
249
-            // Меню страницы
250
-            $adminObject->displayNavigation(basename(__FILE__));
251
-
252
-            // Выводим ошибки в шаблон
253
-            $GLOBALS['xoopsTpl']->assign('insErrorMsg', $objInstructioncat->getHtmlErrors());
254
-        }
255
-        // Выводим шаблон
256
-        $GLOBALS['xoopsTpl']->display('db:admin/instruction_admin_saveinstr.tpl');
257
-        // Выводим форму
258
-        $form = $objInsinstr->getForm();
259
-        // Форма
260
-        echo $form->render();
261
-        // Текст внизу админки
262
-        include __DIR__ . '/admin_footer.php';
263
-        // Подвал админки
264
-        xoops_cp_footer();
265
-
266
-        break;
267
-
268
-    // Просмотр категории
269
-    case 'viewinstr':
270
-
271
-        // Подключаем трей
272
-        include_once XOOPS_ROOT_PATH . '/modules/instruction/class/tree.php';
273
-
274
-        // Заголовок админки
275
-        xoops_cp_header();
276
-        // Меню
277
-        $adminObject->displayNavigation(basename(__FILE__));
278
-        // Кнопки
279
-        $adminObject->addItemButton(_AM_INSTRUCTION_ADDPAGE, 'instr.php?op=editpage&instrid=' . $instrid, 'add');
280
-        $adminObject->displayButton('left', '');
281
-
282
-        //
283
-        $objInsinstr = $insinstrHandler->get($instrid);
284
-
285
-        // Находим все страницы в данной инструкции
286
-        $criteria = new CriteriaCompo();
287
-        $criteria->add(new Criteria('instrid', $instrid, '='));
288
-        $criteria->setSort('weight');
289
-        $criteria->setOrder('ASC');
290
-        $ins_page = $inspageHandler->getall($criteria);
291
-        //
292
-        unset($criteria);
293
-
294
-        // Инициализируем
295
-        $instree = new InstructionTree($ins_page, 'pageid', 'pid');
296
-        // Выводим список страниц в шаблон
297
-        $GLOBALS['xoopsTpl']->assign('insListPage', $instree->makePagesAdmin($objInsinstr, '--'));
298
-
299
-        // Выводим шаблон
300
-        $GLOBALS['xoopsTpl']->display('db:admin/instruction_admin_viewinstr.tpl');
301
-
302
-        // Текст внизу админки
303
-        include __DIR__ . '/admin_footer.php';
304
-        // Подвал админки
305
-        xoops_cp_footer();
306
-
307
-        break;
308
-
309
-    // Удаление категории
310
-    case 'delinstr':
311
-
312
-        // Проверка на instrid
313
-        // ==================
314
-        // Объект инструкций
315
-        $objInsinstr = $insinstrHandler->get($instrid);
316
-
317
-        // Нажали ли мы на кнопку OK
318
-        $ok = isset($_POST['ok']) ? (int)$_POST['ok'] : 0;
319
-        //
320
-        if ($ok) {
321
-
322
-            // Проверка
323
-            if (!$GLOBALS['xoopsSecurity']->check()) {
324
-                redirect_header('instr.php', 3, implode(',', $GLOBALS['xoopsSecurity']->getErrors()));
325
-            }
326
-            // Находим все страницы, пренадлежащие этой инструкции
327
-            $criteria = new CriteriaCompo();
328
-            $criteria->add(new Criteria('instrid', $instrid));
329
-            $ins_page = $inspageHandler->getall($criteria);
330
-            //
331
-            unset($criteria);
332
-            // Перебираем все страницы в данной инструкции
333
-            foreach (array_keys($ins_page) as $i) {
334
-                // Декримент комментов
335
-                // Делает дикримент одного коммента, а не всех в цикле...
336
-                // Удаляем комментарии
337
-                xoops_comment_delete($GLOBALS['xoopsModule']->getVar('mid'), $ins_page[$i]->getVar('pageid'));
338
-                // Декримент страниц (Опционально)
339
-                // ==============================
340
-
341
-                // Удаляем страницу
342
-                // Сделать проверку на удалённость страницы
343
-                // ========================================
344
-                $inspageHandler->delete($ins_page[$i]);
345
-            }
346
-            // Пытаемся удалить инструкцию
347
-            if ($insinstrHandler->delete($objInsinstr)) {
348
-                // Редирект
349
-                redirect_header('instr.php', 3, _AM_INSTRUCTION_INSTRDELETED);
350
-            } else {
351
-                // Редирект
352
-                redirect_header('instr.php', 3, _AM_INSTRUCTION_ERR_DELINSTR);
353
-            }
354
-        } else {
355
-            xoops_cp_header();
356
-
357
-            $adminObject->displayNavigation(basename(__FILE__));
358
-            // Форма
359
-            xoops_confirm(['ok' => 1, 'instrid' => $instrid, 'op' => 'delinstr'], 'instr.php', sprintf(_AM_INSTRUCTION_FORMDELINSTR, $objInsinstr->getVar('title')));
360
-            // Текст внизу админки
361
-            include __DIR__ . '/admin_footer.php';
362
-            // Подвал админки
363
-            xoops_cp_footer();
364
-        }
365
-
366
-        break;
367
-
368
-    // Добавление страницы
369
-    case 'editpage':
370
-
371
-        // Заголовок админки
372
-        xoops_cp_header();
373
-        // Скрипты
374
-        $xoTheme->addScript(XOOPS_URL . '/modules/instruction/assets/js/admin.js');
375
-        // Меню
376
-        $adminObject->displayNavigation(basename(__FILE__));
377
-
378
-        // Если мы редактируем страницу
379
-        if ($pageid) {
380
-            // Получаем объект страницы
381
-            $objInspage = $inspageHandler->get($pageid);
382
-            // ID инструкции
383
-            $instrid = $objInspage->getVar('instrid');
384
-            // Создание новой страницы
385
-        } elseif ($instrid) {
386
-            // Создаём объект страницы
387
-            $objInspage = $inspageHandler->create();
388
-            // Устанавливаем родительскую страницу
389
-            $objInspage->setVar('pid', $pid);
390
-        } else {
391
-            redirect_header('instr.php', 3, _AM_INSTRUCTION_BADREQUEST);
392
-        }
393
-        // Форма
394
-        $form = $objInspage->getForm('instr.php', $instrid);
395
-        // Форма
396
-        echo $form->render();
397
-        // Выводим шаблон
398
-        $GLOBALS['xoopsTpl']->display('db:admin/instruction_admin_editpage.tpl');
399
-
400
-        // Текст внизу админки
401
-        include __DIR__ . '/admin_footer.php';
402
-        // Подвал админки
403
-        xoops_cp_footer();
404
-
405
-        break;
406
-
407
-    // Сохранение страницы
408
-    case 'savepage':
409
-        // Ошибки
410
-        $err         = false;
411
-        $message_err = '';
412
-
413
-        // Проверка сессии
414
-        if (!$GLOBALS['xoopsSecurity']->check()) {
415
-            $err         = true;
416
-            $err_txt     = implode(', ', $GLOBALS['xoopsSecurity']->getErrors());
417
-            $message_err .= $err_txt . '<br>';
418
-        }
419
-
420
-        // Если мы редактируем
421
-        if ($pageid) {
422
-            $objInspage = $inspageHandler->get($pageid);
423
-        } elseif ($instrid) {
424
-            $objInspage = $inspageHandler->create();
425
-            // Если мы создаём страницу необходимо указать к какой инструкции
426
-            $objInspage->setVar('instrid', $instrid);
427
-            // Указываем дату создания
428
-            $objInspage->setVar('datecreated', $time);
429
-            // Указываем пользователя
430
-            $objInspage->setVar('uid', $uid);
431
-        } else {
432
-            redirect_header('instr.php', 3, _AM_INSTRUCTION_BADREQUEST);
433
-        }
434
-
435
-        //
436
-        $page_title    = InstructionUtility::cleanVars($_POST, 'title', '', 'string');
437
-        $page_hometext = InstructionUtility::cleanVars($_POST, 'hometext', '', 'string');
438
-
439
-        // Родительская страница
440
-        $objInspage->setVar('pid', $pid);
441
-        // Дата обновления
442
-        $objInspage->setVar('dateupdated', $time);
443
-        // Название страницы
444
-        $objInspage->setVar('title', $page_title);
445
-        // Вес страницы
446
-        $objInspage->setVar('weight', $weight);
447
-        // Основной текст
448
-        $objInspage->setVar('hometext', $page_hometext);
449
-        // Сноска
450
-        $objInspage->setVar('footnote', InstructionUtility::cleanVars($_POST, 'footnote', '', 'string'));
451
-        // Статус
452
-        $objInspage->setVar('status', InstructionUtility::cleanVars($_POST, 'status', 0, 'int'));
453
-        // Тип
454
-        $objInspage->setVar('type', InstructionUtility::cleanVars($_POST, 'type', 0, 'int'));
455
-        // Мета-теги описания
456
-        $objInspage->setVar('keywords', InstructionUtility::cleanVars($_POST, 'keywords', '', 'string'));
457
-        // Мета-теги ключевых слов
458
-        $objInspage->setVar('description', InstructionUtility::cleanVars($_POST, 'description', '', 'string'));
459
-        //
460
-        $dosmiley = (isset($_POST['dosmiley']) && (int)$_POST['dosmiley'] > 0) ? 1 : 0;
461
-        $doxcode  = (isset($_POST['doxcode']) && (int)$_POST['doxcode'] > 0) ? 1 : 0;
462
-        $dobr     = (isset($_POST['dobr']) && (int)$_POST['dobr'] > 0) ? 1 : 0;
463
-        $dohtml   = (isset($_POST['dohtml']) && (int)$_POST['dohtml'] > 0) ? 1 : 0;
464
-        //$doimage = ( isset( $_POST['doimage'] ) && intval( $_POST['doimage'] ) > 0 ) ? 1 : 0;
465
-        $objInspage->setVar('dohtml', $dohtml);
466
-        $objInspage->setVar('dosmiley', $dosmiley);
467
-        $objInspage->setVar('doxcode', $doxcode);
468
-        //$objInspage->setVar( 'doimage', $doimage );
469
-        $objInspage->setVar('dobr', $dobr);
470
-
471
-        //
472
-        if (!$pageid && !$instrid) {
473
-            $err         = true;
474
-            $message_err .= _AM_INSTRUCTION_ERR_INSTR . '<br>';
475
-        }
476
-        // Проверка веса
477
-        if (0 == $weight) {
478
-            $err         = true;
479
-            $message_err .= _AM_INSTRUCTION_ERR_WEIGHT . '<br>';
480
-        }
481
-        // Проверка родительской страницы
482
-        if ($pageid && ($pageid == $pid)) {
483
-            $err         = true;
484
-            $message_err .= _AM_INSTRUCTION_ERR_PPAGE . '<br>';
485
-        }
486
-        // Проверка названия
487
-        if (!$page_title) {
488
-            $err         = true;
489
-            $message_err .= _AM_INSTR_ERR_TITLE . '<br>';
490
-        }
491
-        // Проверка основного текста
492
-        if (!$page_hometext) {
493
-            $err         = true;
494
-            $message_err .= _AM_INSTR_ERR_HOMETEXT . '<br>';
495
-        }
496
-
497
-        // Если были ошибки
498
-        if (true === $err) {
499
-            xoops_cp_header();
500
-            // Меню страницы
501
-            $adminObject->displayNavigation(basename(__FILE__));
502
-
503
-            $message_err = '<div class="errorMsg" style="text-align: left;">' . $message_err . '</div>';
504
-            // Выводим ошибки в шаблон
505
-            $GLOBALS['xoopsTpl']->assign('insErrorMsg', $message_err);
506
-            // Если небыло ошибок
507
-        } else {
508
-            // Вставляем данные в БД
509
-            if ($inspageHandler->insert($objInspage)) {
510
-                // Ссылка для редиректа
511
-                $redirect_url = 'instr.php?op=viewinstr&amp;instrid=' . $instrid . '#pageid_' . $pid;
512
-                // Получаем ID инструкции
513
-                $instrid = $objInspage->getInstrid();
514
-                // Обновляем в инструкции число страниц и дату
515
-                $insinstrHandler->updatePages($instrid);
516
-                // Если мы редактируем
517
-                if ($pageid) {
518
-                    // Редирект
519
-                    redirect_header($redirect_url, 3, _AM_INSTRUCTION_PAGEMODIFY);
520
-                    // Если мы добавляем
521
-                } else {
522
-                    // Инкримент комментов
523
-                    $inspageHandler->updateposts($uid, $_POST['status'], 'add');
524
-                    // Редирект
525
-                    redirect_header($redirect_url, 3, _AM_INSTRUCTION_PAGEADDED);
526
-                }
527
-            }
528
-            xoops_cp_header();
529
-            // Меню страницы
530
-            $adminObject->displayNavigation(basename(__FILE__));
531
-
532
-            // Выводим ошибки в шаблон
533
-            $GLOBALS['xoopsTpl']->assign('insErrorMsg', $objInspage->getHtmlErrors());
534
-        }
535
-        // Скрипты
536
-        $xoTheme->addScript(XOOPS_URL . '/modules/instruction/assets/js/admin.js');
537
-        // Выводим шаблон
538
-        $GLOBALS['xoopsTpl']->display('db:admin/instruction_admin_savepage.tpl');
539
-        // Выводим форму
540
-        $form = $objInspage->getForm('instr.php', $instrid);
541
-        // Форма
542
-        echo $form->render();
543
-        // Текст внизу админки
544
-        include __DIR__ . '/admin_footer.php';
545
-        // Подвал админки
546
-        xoops_cp_footer();
547
-
548
-        break;
549
-
550
-    // Удаление страницы
551
-    case 'delpage':
552
-
553
-        // Проверка на pageid
554
-        // ==================
555
-
556
-        $objInspage = $inspageHandler->get($pageid);
557
-        // Нажали ли мы на кнопку OK
558
-        $ok = isset($_POST['ok']) ? (int)$_POST['ok'] : 0;
559
-        // Если мы нажали на кнопку
560
-        if ($ok) {
561
-
562
-            // Проверка
563
-            if (!$GLOBALS['xoopsSecurity']->check()) {
564
-                redirect_header('instr.php', 3, implode(',', $GLOBALS['xoopsSecurity']->getErrors()));
565
-            }
566
-            // ID инструкции
567
-            $page_instrid = $objInspage->getVar('instrid');
568
-            // Декримент комментов
569
-            $inspageHandler->updateposts($objInspage->getVar('uid'), $objInspage->getVar('status'), 'delete');
570
-            // Пытаемся удалить страницу
571
-            if ($inspageHandler->delete($objInspage)) {
572
-                // Обновляем в инструкции число страниц и дату
573
-                $insinstrHandler->updatePages($page_instrid);
574
-                // Удаляем комментарии
575
-                xoops_comment_delete($GLOBALS['xoopsModule']->getVar('mid'), $pageid);
576
-                //
577
-                redirect_header('instr.php?op=viewinstr&amp;instrid=' . $page_instrid, 3, _AM_INSTRUCTION_PAGEDELETED);
578
-                // Если не смогли удалить страницу
579
-            } else {
580
-                redirect_header('instr.php?op=viewinstr&amp;instrid=' . $page_instrid, 3, _AM_INSTRUCTION_ERR_DELPAGE);
581
-            }
582
-        } else {
583
-
584
-            // Заголовок админки
585
-            xoops_cp_header();
586
-            // Меню
587
-            $adminObject->displayNavigation(basename(__FILE__));
588
-            // Форма
589
-            xoops_confirm(['ok' => 1, 'pageid' => $pageid, 'op' => 'delpage'], 'instr.php', sprintf(_AM_INSTRUCTION_FORMDELPAGE, $objInspage->getVar('title')));
590
-            // Текст внизу админки
591
-            include __DIR__ . '/admin_footer.php';
592
-            // Подвал админки
593
-            xoops_cp_footer();
594
-        }
595
-
596
-        break;
597
-
598
-    // Удаление страницы
599
-    case 'updpage':
600
-
601
-        // Принимаем данные
602
-        $pageids = $_POST['pageids'];
603
-        $weights = $_POST['weights'];
604
-        // Перебираем все значения
605
-        foreach ($pageids as $key => $pageid) {
606
-
607
-            // Объявляем объект
608
-            $objInspage = $inspageHandler->get($pageid);
609
-            // Устанавливаем вес
610
-            $objInspage->setVar('weight', $weights[$key]);
611
-            // Вставляем данные в БД
612
-            $inspageHandler->insert($objInspage);
613
-            // Удаляем объект
614
-            unset($objInspage);
615
-        }
616
-        // Редирект
617
-        redirect_header('instr.php?op=viewinstr&instrid=' . $instrid, 3, _AM_INSTRUCTION_PAGESUPDATE);
618
-
619
-        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
+		xoops_cp_footer();
136
+
137
+		break;
138
+
139
+	// Редактирование категории
140
+	case 'editinstr':
141
+
142
+		// Заголовок админки
143
+		xoops_cp_header();
144
+		// Меню
145
+		$adminObject->displayNavigation(basename(__FILE__));
146
+
147
+		// Если мы редактируем инструкцию
148
+		if ($instrid) {
149
+			$objInsinstr = $insinstrHandler->get($instrid);
150
+			// Создание новой страницы
151
+		} else {
152
+			$objInsinstr = $insinstrHandler->create();
153
+		}
154
+
155
+		// Выводим шаблон
156
+		$GLOBALS['xoopsTpl']->display('db:admin/instruction_admin_editinstr.tpl');
157
+		$form = $objInsinstr->getForm('instr.php');
158
+		// Форма
159
+		echo $form->render();
160
+
161
+		// Текст внизу админки
162
+		include __DIR__ . '/admin_footer.php';
163
+		// Подвал админки
164
+		xoops_cp_footer();
165
+
166
+		break;
167
+
168
+	// Сохранение инструкций
169
+	case 'saveinstr':
170
+
171
+		// Проверка
172
+		if (!$GLOBALS['xoopsSecurity']->check()) {
173
+			redirect_header('instr.php', 3, implode(',', $GLOBALS['xoopsSecurity']->getErrors()));
174
+		}
175
+		// Если мы редактируем
176
+		if ($instrid) {
177
+			$objInsinstr = $insinstrHandler->get($instrid);
178
+		} else {
179
+			$objInsinstr = $insinstrHandler->create();
180
+			// Указываем дату создания
181
+			$objInsinstr->setVar('datecreated', $time);
182
+			// Указываем пользователя
183
+			$objInsinstr->setVar('uid', $uid);
184
+		}
185
+
186
+		$err         = false;
187
+		$message_err = '';
188
+		//
189
+		$instr_title       = InstructionUtility::cleanVars($_POST, 'title', '', 'string');
190
+		$instr_description = InstructionUtility::cleanVars($_POST, 'description', '', 'string');
191
+
192
+		// Дата обновления
193
+		$objInsinstr->setVar('dateupdated', $time);
194
+		//
195
+		$objInsinstr->setVar('cid', $cid);
196
+		$objInsinstr->setVar('title', $instr_title);
197
+		$objInsinstr->setVar('status', $_POST['status']);
198
+		$objInsinstr->setVar('description', $instr_description);
199
+		$objInsinstr->setVar('metakeywords', $_POST['metakeywords']);
200
+		$objInsinstr->setVar('metadescription', $_POST['metadescription']);
201
+
202
+		// Проверка категорий
203
+		if (!$cid) {
204
+			$err         = true;
205
+			$message_err .= _AM_INSTRUCTION_ERR_CAT . '<br>';
206
+		}
207
+		// Проверка названия
208
+		if (!$instr_title) {
209
+			$err         = true;
210
+			$message_err .= _AM_INSTR_ERR_TITLE . '<br>';
211
+		}
212
+		// Проверка основного текста
213
+		if (!$instr_description) {
214
+			$err         = true;
215
+			$message_err .= _AM_INSTR_ERR_DESCRIPTION . '<br>';
216
+		}
217
+
218
+		// Если были ошибки
219
+		if (true === $err) {
220
+			xoops_cp_header();
221
+			// Меню страницы
222
+			$adminObject->displayNavigation(basename(__FILE__));
223
+
224
+			$message_err = '<div class="errorMsg" style="text-align: left;">' . $message_err . '</div>';
225
+			// Выводим ошибки в шаблон
226
+			$GLOBALS['xoopsTpl']->assign('insErrorMsg', $message_err);
227
+			// Если небыло ошибок
228
+		} else {
229
+			// Вставляем данные в БД
230
+			if ($insinstrHandler->insert($objInsinstr)) {
231
+				// Получаем ID созданной записи
232
+				$instrid_new = $instrid ?: $objInsinstr->get_new_enreg();
233
+				// Обновление даты в категории
234
+				$inscatHandler->updateDateupdated($cid, $time);
235
+				// Тэги
236
+				if (xoops_getModuleOption('usetag', 'instruction')) {
237
+					$tagHandler = xoops_getModuleHandler('tag', 'tag');
238
+					$tagHandler->updateByItem($_POST['tag'], $instrid_new, $GLOBALS['xoopsModule']->getVar('dirname'), 0);
239
+				}
240
+
241
+				// Если мы редактируем
242
+				if ($instrid) {
243
+					redirect_header('instr.php', 3, _AM_INSTRUCTION_INSTRMODIFY);
244
+				} else {
245
+					redirect_header('instr.php', 3, _AM_INSTRUCTION_INSTRADDED);
246
+				}
247
+			}
248
+			xoops_cp_header();
249
+			// Меню страницы
250
+			$adminObject->displayNavigation(basename(__FILE__));
251
+
252
+			// Выводим ошибки в шаблон
253
+			$GLOBALS['xoopsTpl']->assign('insErrorMsg', $objInstructioncat->getHtmlErrors());
254
+		}
255
+		// Выводим шаблон
256
+		$GLOBALS['xoopsTpl']->display('db:admin/instruction_admin_saveinstr.tpl');
257
+		// Выводим форму
258
+		$form = $objInsinstr->getForm();
259
+		// Форма
260
+		echo $form->render();
261
+		// Текст внизу админки
262
+		include __DIR__ . '/admin_footer.php';
263
+		// Подвал админки
264
+		xoops_cp_footer();
265
+
266
+		break;
267
+
268
+	// Просмотр категории
269
+	case 'viewinstr':
270
+
271
+		// Подключаем трей
272
+		include_once XOOPS_ROOT_PATH . '/modules/instruction/class/tree.php';
273
+
274
+		// Заголовок админки
275
+		xoops_cp_header();
276
+		// Меню
277
+		$adminObject->displayNavigation(basename(__FILE__));
278
+		// Кнопки
279
+		$adminObject->addItemButton(_AM_INSTRUCTION_ADDPAGE, 'instr.php?op=editpage&instrid=' . $instrid, 'add');
280
+		$adminObject->displayButton('left', '');
281
+
282
+		//
283
+		$objInsinstr = $insinstrHandler->get($instrid);
284
+
285
+		// Находим все страницы в данной инструкции
286
+		$criteria = new CriteriaCompo();
287
+		$criteria->add(new Criteria('instrid', $instrid, '='));
288
+		$criteria->setSort('weight');
289
+		$criteria->setOrder('ASC');
290
+		$ins_page = $inspageHandler->getall($criteria);
291
+		//
292
+		unset($criteria);
293
+
294
+		// Инициализируем
295
+		$instree = new InstructionTree($ins_page, 'pageid', 'pid');
296
+		// Выводим список страниц в шаблон
297
+		$GLOBALS['xoopsTpl']->assign('insListPage', $instree->makePagesAdmin($objInsinstr, '--'));
298
+
299
+		// Выводим шаблон
300
+		$GLOBALS['xoopsTpl']->display('db:admin/instruction_admin_viewinstr.tpl');
301
+
302
+		// Текст внизу админки
303
+		include __DIR__ . '/admin_footer.php';
304
+		// Подвал админки
305
+		xoops_cp_footer();
306
+
307
+		break;
308
+
309
+	// Удаление категории
310
+	case 'delinstr':
311
+
312
+		// Проверка на instrid
313
+		// ==================
314
+		// Объект инструкций
315
+		$objInsinstr = $insinstrHandler->get($instrid);
316
+
317
+		// Нажали ли мы на кнопку OK
318
+		$ok = isset($_POST['ok']) ? (int)$_POST['ok'] : 0;
319
+		//
320
+		if ($ok) {
321
+
322
+			// Проверка
323
+			if (!$GLOBALS['xoopsSecurity']->check()) {
324
+				redirect_header('instr.php', 3, implode(',', $GLOBALS['xoopsSecurity']->getErrors()));
325
+			}
326
+			// Находим все страницы, пренадлежащие этой инструкции
327
+			$criteria = new CriteriaCompo();
328
+			$criteria->add(new Criteria('instrid', $instrid));
329
+			$ins_page = $inspageHandler->getall($criteria);
330
+			//
331
+			unset($criteria);
332
+			// Перебираем все страницы в данной инструкции
333
+			foreach (array_keys($ins_page) as $i) {
334
+				// Декримент комментов
335
+				// Делает дикримент одного коммента, а не всех в цикле...
336
+				// Удаляем комментарии
337
+				xoops_comment_delete($GLOBALS['xoopsModule']->getVar('mid'), $ins_page[$i]->getVar('pageid'));
338
+				// Декримент страниц (Опционально)
339
+				// ==============================
340
+
341
+				// Удаляем страницу
342
+				// Сделать проверку на удалённость страницы
343
+				// ========================================
344
+				$inspageHandler->delete($ins_page[$i]);
345
+			}
346
+			// Пытаемся удалить инструкцию
347
+			if ($insinstrHandler->delete($objInsinstr)) {
348
+				// Редирект
349
+				redirect_header('instr.php', 3, _AM_INSTRUCTION_INSTRDELETED);
350
+			} else {
351
+				// Редирект
352
+				redirect_header('instr.php', 3, _AM_INSTRUCTION_ERR_DELINSTR);
353
+			}
354
+		} else {
355
+			xoops_cp_header();
356
+
357
+			$adminObject->displayNavigation(basename(__FILE__));
358
+			// Форма
359
+			xoops_confirm(['ok' => 1, 'instrid' => $instrid, 'op' => 'delinstr'], 'instr.php', sprintf(_AM_INSTRUCTION_FORMDELINSTR, $objInsinstr->getVar('title')));
360
+			// Текст внизу админки
361
+			include __DIR__ . '/admin_footer.php';
362
+			// Подвал админки
363
+			xoops_cp_footer();
364
+		}
365
+
366
+		break;
367
+
368
+	// Добавление страницы
369
+	case 'editpage':
370
+
371
+		// Заголовок админки
372
+		xoops_cp_header();
373
+		// Скрипты
374
+		$xoTheme->addScript(XOOPS_URL . '/modules/instruction/assets/js/admin.js');
375
+		// Меню
376
+		$adminObject->displayNavigation(basename(__FILE__));
377
+
378
+		// Если мы редактируем страницу
379
+		if ($pageid) {
380
+			// Получаем объект страницы
381
+			$objInspage = $inspageHandler->get($pageid);
382
+			// ID инструкции
383
+			$instrid = $objInspage->getVar('instrid');
384
+			// Создание новой страницы
385
+		} elseif ($instrid) {
386
+			// Создаём объект страницы
387
+			$objInspage = $inspageHandler->create();
388
+			// Устанавливаем родительскую страницу
389
+			$objInspage->setVar('pid', $pid);
390
+		} else {
391
+			redirect_header('instr.php', 3, _AM_INSTRUCTION_BADREQUEST);
392
+		}
393
+		// Форма
394
+		$form = $objInspage->getForm('instr.php', $instrid);
395
+		// Форма
396
+		echo $form->render();
397
+		// Выводим шаблон
398
+		$GLOBALS['xoopsTpl']->display('db:admin/instruction_admin_editpage.tpl');
399
+
400
+		// Текст внизу админки
401
+		include __DIR__ . '/admin_footer.php';
402
+		// Подвал админки
403
+		xoops_cp_footer();
404
+
405
+		break;
406
+
407
+	// Сохранение страницы
408
+	case 'savepage':
409
+		// Ошибки
410
+		$err         = false;
411
+		$message_err = '';
412
+
413
+		// Проверка сессии
414
+		if (!$GLOBALS['xoopsSecurity']->check()) {
415
+			$err         = true;
416
+			$err_txt     = implode(', ', $GLOBALS['xoopsSecurity']->getErrors());
417
+			$message_err .= $err_txt . '<br>';
418
+		}
419
+
420
+		// Если мы редактируем
421
+		if ($pageid) {
422
+			$objInspage = $inspageHandler->get($pageid);
423
+		} elseif ($instrid) {
424
+			$objInspage = $inspageHandler->create();
425
+			// Если мы создаём страницу необходимо указать к какой инструкции
426
+			$objInspage->setVar('instrid', $instrid);
427
+			// Указываем дату создания
428
+			$objInspage->setVar('datecreated', $time);
429
+			// Указываем пользователя
430
+			$objInspage->setVar('uid', $uid);
431
+		} else {
432
+			redirect_header('instr.php', 3, _AM_INSTRUCTION_BADREQUEST);
433
+		}
434
+
435
+		//
436
+		$page_title    = InstructionUtility::cleanVars($_POST, 'title', '', 'string');
437
+		$page_hometext = InstructionUtility::cleanVars($_POST, 'hometext', '', 'string');
438
+
439
+		// Родительская страница
440
+		$objInspage->setVar('pid', $pid);
441
+		// Дата обновления
442
+		$objInspage->setVar('dateupdated', $time);
443
+		// Название страницы
444
+		$objInspage->setVar('title', $page_title);
445
+		// Вес страницы
446
+		$objInspage->setVar('weight', $weight);
447
+		// Основной текст
448
+		$objInspage->setVar('hometext', $page_hometext);
449
+		// Сноска
450
+		$objInspage->setVar('footnote', InstructionUtility::cleanVars($_POST, 'footnote', '', 'string'));
451
+		// Статус
452
+		$objInspage->setVar('status', InstructionUtility::cleanVars($_POST, 'status', 0, 'int'));
453
+		// Тип
454
+		$objInspage->setVar('type', InstructionUtility::cleanVars($_POST, 'type', 0, 'int'));
455
+		// Мета-теги описания
456
+		$objInspage->setVar('keywords', InstructionUtility::cleanVars($_POST, 'keywords', '', 'string'));
457
+		// Мета-теги ключевых слов
458
+		$objInspage->setVar('description', InstructionUtility::cleanVars($_POST, 'description', '', 'string'));
459
+		//
460
+		$dosmiley = (isset($_POST['dosmiley']) && (int)$_POST['dosmiley'] > 0) ? 1 : 0;
461
+		$doxcode  = (isset($_POST['doxcode']) && (int)$_POST['doxcode'] > 0) ? 1 : 0;
462
+		$dobr     = (isset($_POST['dobr']) && (int)$_POST['dobr'] > 0) ? 1 : 0;
463
+		$dohtml   = (isset($_POST['dohtml']) && (int)$_POST['dohtml'] > 0) ? 1 : 0;
464
+		//$doimage = ( isset( $_POST['doimage'] ) && intval( $_POST['doimage'] ) > 0 ) ? 1 : 0;
465
+		$objInspage->setVar('dohtml', $dohtml);
466
+		$objInspage->setVar('dosmiley', $dosmiley);
467
+		$objInspage->setVar('doxcode', $doxcode);
468
+		//$objInspage->setVar( 'doimage', $doimage );
469
+		$objInspage->setVar('dobr', $dobr);
470
+
471
+		//
472
+		if (!$pageid && !$instrid) {
473
+			$err         = true;
474
+			$message_err .= _AM_INSTRUCTION_ERR_INSTR . '<br>';
475
+		}
476
+		// Проверка веса
477
+		if (0 == $weight) {
478
+			$err         = true;
479
+			$message_err .= _AM_INSTRUCTION_ERR_WEIGHT . '<br>';
480
+		}
481
+		// Проверка родительской страницы
482
+		if ($pageid && ($pageid == $pid)) {
483
+			$err         = true;
484
+			$message_err .= _AM_INSTRUCTION_ERR_PPAGE . '<br>';
485
+		}
486
+		// Проверка названия
487
+		if (!$page_title) {
488
+			$err         = true;
489
+			$message_err .= _AM_INSTR_ERR_TITLE . '<br>';
490
+		}
491
+		// Проверка основного текста
492
+		if (!$page_hometext) {
493
+			$err         = true;
494
+			$message_err .= _AM_INSTR_ERR_HOMETEXT . '<br>';
495
+		}
496
+
497
+		// Если были ошибки
498
+		if (true === $err) {
499
+			xoops_cp_header();
500
+			// Меню страницы
501
+			$adminObject->displayNavigation(basename(__FILE__));
502
+
503
+			$message_err = '<div class="errorMsg" style="text-align: left;">' . $message_err . '</div>';
504
+			// Выводим ошибки в шаблон
505
+			$GLOBALS['xoopsTpl']->assign('insErrorMsg', $message_err);
506
+			// Если небыло ошибок
507
+		} else {
508
+			// Вставляем данные в БД
509
+			if ($inspageHandler->insert($objInspage)) {
510
+				// Ссылка для редиректа
511
+				$redirect_url = 'instr.php?op=viewinstr&amp;instrid=' . $instrid . '#pageid_' . $pid;
512
+				// Получаем ID инструкции
513
+				$instrid = $objInspage->getInstrid();
514
+				// Обновляем в инструкции число страниц и дату
515
+				$insinstrHandler->updatePages($instrid);
516
+				// Если мы редактируем
517
+				if ($pageid) {
518
+					// Редирект
519
+					redirect_header($redirect_url, 3, _AM_INSTRUCTION_PAGEMODIFY);
520
+					// Если мы добавляем
521
+				} else {
522
+					// Инкримент комментов
523
+					$inspageHandler->updateposts($uid, $_POST['status'], 'add');
524
+					// Редирект
525
+					redirect_header($redirect_url, 3, _AM_INSTRUCTION_PAGEADDED);
526
+				}
527
+			}
528
+			xoops_cp_header();
529
+			// Меню страницы
530
+			$adminObject->displayNavigation(basename(__FILE__));
531
+
532
+			// Выводим ошибки в шаблон
533
+			$GLOBALS['xoopsTpl']->assign('insErrorMsg', $objInspage->getHtmlErrors());
534
+		}
535
+		// Скрипты
536
+		$xoTheme->addScript(XOOPS_URL . '/modules/instruction/assets/js/admin.js');
537
+		// Выводим шаблон
538
+		$GLOBALS['xoopsTpl']->display('db:admin/instruction_admin_savepage.tpl');
539
+		// Выводим форму
540
+		$form = $objInspage->getForm('instr.php', $instrid);
541
+		// Форма
542
+		echo $form->render();
543
+		// Текст внизу админки
544
+		include __DIR__ . '/admin_footer.php';
545
+		// Подвал админки
546
+		xoops_cp_footer();
547
+
548
+		break;
549
+
550
+	// Удаление страницы
551
+	case 'delpage':
552
+
553
+		// Проверка на pageid
554
+		// ==================
555
+
556
+		$objInspage = $inspageHandler->get($pageid);
557
+		// Нажали ли мы на кнопку OK
558
+		$ok = isset($_POST['ok']) ? (int)$_POST['ok'] : 0;
559
+		// Если мы нажали на кнопку
560
+		if ($ok) {
561
+
562
+			// Проверка
563
+			if (!$GLOBALS['xoopsSecurity']->check()) {
564
+				redirect_header('instr.php', 3, implode(',', $GLOBALS['xoopsSecurity']->getErrors()));
565
+			}
566
+			// ID инструкции
567
+			$page_instrid = $objInspage->getVar('instrid');
568
+			// Декримент комментов
569
+			$inspageHandler->updateposts($objInspage->getVar('uid'), $objInspage->getVar('status'), 'delete');
570
+			// Пытаемся удалить страницу
571
+			if ($inspageHandler->delete($objInspage)) {
572
+				// Обновляем в инструкции число страниц и дату
573
+				$insinstrHandler->updatePages($page_instrid);
574
+				// Удаляем комментарии
575
+				xoops_comment_delete($GLOBALS['xoopsModule']->getVar('mid'), $pageid);
576
+				//
577
+				redirect_header('instr.php?op=viewinstr&amp;instrid=' . $page_instrid, 3, _AM_INSTRUCTION_PAGEDELETED);
578
+				// Если не смогли удалить страницу
579
+			} else {
580
+				redirect_header('instr.php?op=viewinstr&amp;instrid=' . $page_instrid, 3, _AM_INSTRUCTION_ERR_DELPAGE);
581
+			}
582
+		} else {
583
+
584
+			// Заголовок админки
585
+			xoops_cp_header();
586
+			// Меню
587
+			$adminObject->displayNavigation(basename(__FILE__));
588
+			// Форма
589
+			xoops_confirm(['ok' => 1, 'pageid' => $pageid, 'op' => 'delpage'], 'instr.php', sprintf(_AM_INSTRUCTION_FORMDELPAGE, $objInspage->getVar('title')));
590
+			// Текст внизу админки
591
+			include __DIR__ . '/admin_footer.php';
592
+			// Подвал админки
593
+			xoops_cp_footer();
594
+		}
595
+
596
+		break;
597
+
598
+	// Удаление страницы
599
+	case 'updpage':
600
+
601
+		// Принимаем данные
602
+		$pageids = $_POST['pageids'];
603
+		$weights = $_POST['weights'];
604
+		// Перебираем все значения
605
+		foreach ($pageids as $key => $pageid) {
606
+
607
+			// Объявляем объект
608
+			$objInspage = $inspageHandler->get($pageid);
609
+			// Устанавливаем вес
610
+			$objInspage->setVar('weight', $weights[$key]);
611
+			// Вставляем данные в БД
612
+			$inspageHandler->insert($objInspage);
613
+			// Удаляем объект
614
+			unset($objInspage);
615
+		}
616
+		// Редирект
617
+		redirect_header('instr.php?op=viewinstr&instrid=' . $instrid, 3, _AM_INSTRUCTION_PAGESUPDATE);
618
+
619
+		break;
620 620
 
621 621
 }
Please login to merge, or discard this patch.
instr.php 1 patch
Indentation   +33 added lines, -33 removed lines patch added patch discarded remove patch
@@ -18,8 +18,8 @@  discard block
 block discarded – undo
18 18
 $criteria->add(new Criteria('instrid', $instrid));
19 19
 $criteria->add(new Criteria('status ', '0', '>'));
20 20
 if (0 == $insinstrHandler->getCount($criteria)) {
21
-    redirect_header('index.php', 3, _MD_INSTRUCTION_INSTRNOTEXIST);
22
-    exit();
21
+	redirect_header('index.php', 3, _MD_INSTRUCTION_INSTRNOTEXIST);
22
+	exit();
23 23
 }
24 24
 //
25 25
 unset($criteria);
@@ -41,8 +41,8 @@  discard block
 block discarded – undo
41 41
 // Права на просмотр инструкции
42 42
 $categories = InstructionUtility::getItemIds();
43 43
 if (!in_array($objInsinstr->getVar('cid'), $categories)) {
44
-    redirect_header(XOOPS_URL . '/modules/' . $moduleDirName . '/', 3, _NOPERM);
45
-    exit();
44
+	redirect_header(XOOPS_URL . '/modules/' . $moduleDirName . '/', 3, _NOPERM);
45
+	exit();
46 46
 }
47 47
 
48 48
 // Массив данных об инструкции
@@ -55,29 +55,29 @@  discard block
 block discarded – undo
55 55
 $instrs['description'] = $objInsinstr->getVar('description');
56 56
 // Если админ, рисуем админлинк
57 57
 if (is_object($GLOBALS['xoopsUser']) && $GLOBALS['xoopsUser']->isAdmin($GLOBALS['xoopsModule']->mid())) {
58
-    $instrs['adminlink'] = '&nbsp;<a href="'
59
-                           . XOOPS_URL
60
-                           . '/modules/'
61
-                           . $moduleDirName
62
-                           . '/admin/instr.php?op=editinstr&instrid='
63
-                           . $instrid
64
-                           . '"><img style="width:16px;" src="./assets/icons/edit_mini.png" alt='
65
-                           . _EDIT
66
-                           . ' title='
67
-                           . _EDIT
68
-                           . '></a>&nbsp;<a href="'
69
-                           . XOOPS_URL
70
-                           . '/modules/'
71
-                           . $moduleDirName
72
-                           . '/admin/instr.php?op=delinstr&instrid='
73
-                           . $instrid
74
-                           . '"><img style="width:16px;" src="./assets/icons/delete_mini.png" alt='
75
-                           . _DELETE
76
-                           . ' title='
77
-                           . _DELETE
78
-                           . '></a>&nbsp;';
58
+	$instrs['adminlink'] = '&nbsp;<a href="'
59
+						   . XOOPS_URL
60
+						   . '/modules/'
61
+						   . $moduleDirName
62
+						   . '/admin/instr.php?op=editinstr&instrid='
63
+						   . $instrid
64
+						   . '"><img style="width:16px;" src="./assets/icons/edit_mini.png" alt='
65
+						   . _EDIT
66
+						   . ' title='
67
+						   . _EDIT
68
+						   . '></a>&nbsp;<a href="'
69
+						   . XOOPS_URL
70
+						   . '/modules/'
71
+						   . $moduleDirName
72
+						   . '/admin/instr.php?op=delinstr&instrid='
73
+						   . $instrid
74
+						   . '"><img style="width:16px;" src="./assets/icons/delete_mini.png" alt='
75
+						   . _DELETE
76
+						   . ' title='
77
+						   . _DELETE
78
+						   . '></a>&nbsp;';
79 79
 } else {
80
-    $instrs['adminlink'] = '';
80
+	$instrs['adminlink'] = '';
81 81
 }
82 82
 
83 83
 // Выводим в шаблон
@@ -101,7 +101,7 @@  discard block
 block discarded – undo
101 101
 $nav_parent_id = array_reverse($nav_parent_id);
102 102
 $navigation    = '<a href="' . XOOPS_URL . '/modules/' . $moduleDirName . '/">' . $GLOBALS['xoopsModule']->name() . '</a>&nbsp;:&nbsp;';
103 103
 foreach (array_keys($nav_parent_id) as $i) {
104
-    $navigation .= '<a href="' . XOOPS_URL . '/modules/' . $moduleDirName . '/index.php?cid=' . $nav_parent_id[$i]->getVar('cid') . '">' . $nav_parent_id[$i]->getVar('title') . '</a>&nbsp;:&nbsp;';
104
+	$navigation .= '<a href="' . XOOPS_URL . '/modules/' . $moduleDirName . '/index.php?cid=' . $nav_parent_id[$i]->getVar('cid') . '">' . $nav_parent_id[$i]->getVar('title') . '</a>&nbsp;:&nbsp;';
105 105
 }
106 106
 $navigation .= '<a href="' . XOOPS_URL . '/modules/' . $moduleDirName . '/index.php?cid=' . $objInscat->getVar('cid') . '">' . $objInscat->getVar('title') . '</a>&nbsp;:&nbsp;';
107 107
 $navigation .= $objInsinstr->getVar('title');
@@ -128,18 +128,18 @@  discard block
 block discarded – undo
128 128
 
129 129
 // Теги
130 130
 if (xoops_getModuleOption('usetag', 'instruction')) {
131
-    include_once $GLOBALS['xoops']->path('modules/tag/include/tagbar.php');
132
-    $xoopsTpl->assign('tags', true);
133
-    $xoopsTpl->assign('tagbar', tagBar($instrid, 0));
131
+	include_once $GLOBALS['xoops']->path('modules/tag/include/tagbar.php');
132
+	$xoopsTpl->assign('tags', true);
133
+	$xoopsTpl->assign('tagbar', tagBar($instrid, 0));
134 134
 } else {
135
-    $xoopsTpl->assign('tags', false);
135
+	$xoopsTpl->assign('tags', false);
136 136
 }
137 137
 
138 138
 // Рейтинг
139 139
 if (xoops_getModuleOption('userat', 'instruction')) {
140
-    $xoopsTpl->assign('insUserat', true);
140
+	$xoopsTpl->assign('insUserat', true);
141 141
 } else {
142
-    $xoopsTpl->assign('insUserat', false);
142
+	$xoopsTpl->assign('insUserat', false);
143 143
 }
144 144
 
145 145
 // Подвал
Please login to merge, or discard this patch.
include/search.inc.php 1 patch
Indentation   +38 added lines, -38 removed lines patch added patch discarded remove patch
@@ -4,45 +4,45 @@
 block discarded – undo
4 4
 
5 5
 function instruction_search($queryarray, $andor, $limit, $offset, $userid)
6 6
 {
7
-    // Подключаем функции
8
-    include_once $GLOBALS['xoops']->path('modules/' . $moduleDirName . '/class/utility.php');
7
+	// Подключаем функции
8
+	include_once $GLOBALS['xoops']->path('modules/' . $moduleDirName . '/class/utility.php');
9 9
 
10
-    $sql = 'SELECT p.pageid, p.title, p.uid, p.datecreated, i.title FROM ' . $GLOBALS['xoopsDB']->prefix('instruction_page') . ' p, ' . $GLOBALS['xoopsDB']->prefix('instruction_instr') . ' i WHERE i.instrid = p.instrid AND i.status > 0 AND p.status > 0 AND p.type > 0';
11
-    if (0 != $userid) {
12
-        $sql .= ' AND p.uid = ' . (int)$userid . ' ';
13
-        //return NULL;
14
-    }
10
+	$sql = 'SELECT p.pageid, p.title, p.uid, p.datecreated, i.title FROM ' . $GLOBALS['xoopsDB']->prefix('instruction_page') . ' p, ' . $GLOBALS['xoopsDB']->prefix('instruction_instr') . ' i WHERE i.instrid = p.instrid AND i.status > 0 AND p.status > 0 AND p.type > 0';
11
+	if (0 != $userid) {
12
+		$sql .= ' AND p.uid = ' . (int)$userid . ' ';
13
+		//return NULL;
14
+	}
15 15
 
16
-    // Права на просмотр
17
-    $categories = InstructionUtility::getItemIds();
18
-    if (is_array($categories) && count($categories) > 0) {
19
-        $sql .= ' AND i.cid IN ( ' . implode(', ', $categories) . ' ) ';
20
-        // Если пользователь не имеет прав просмотра ни одной категории
21
-    } else {
22
-        return null;
23
-    }
16
+	// Права на просмотр
17
+	$categories = InstructionUtility::getItemIds();
18
+	if (is_array($categories) && count($categories) > 0) {
19
+		$sql .= ' AND i.cid IN ( ' . implode(', ', $categories) . ' ) ';
20
+		// Если пользователь не имеет прав просмотра ни одной категории
21
+	} else {
22
+		return null;
23
+	}
24 24
 
25
-    // Добавляем в условие ключевые слова поиска
26
-    if (is_array($queryarray) && $count = count($queryarray)) {
27
-        $sql .= " AND ( ( p.title LIKE '%$queryarray[0]%' OR p.hometext LIKE '%$queryarray[0]%' )";
28
-        for ($i = 1; $i < $count; $i++) {
29
-            $sql .= " $andor ";
30
-            $sql .= "( p.title LIKE '%$queryarray[$i]%' OR p.hometext LIKE '%$queryarray[$i]%' )";
31
-        }
32
-        $sql .= ' ) ';
33
-    }
34
-    //$sql .= "ORDER BY date DESC";
35
-    $result = $GLOBALS['xoopsDB']->query($sql, $limit, $offset);
36
-    $ret    = [];
37
-    $i      = 0;
38
-    // Перебираем все результаты
39
-    while (list($pageid, $ptitle, $puid, $pdatecreated, $ititle) = $GLOBALS['xoopsDB']->fetchRow($result)) {
40
-        $ret[$i]['image'] = 'assets/images/size2.gif';
41
-        $ret[$i]['link']  = 'page.php?id=' . $pageid;
42
-        $ret[$i]['title'] = $ititle . ': ' . $ptitle;
43
-        $ret[$i]['time']  = $pdatecreated;
44
-        $ret[$i]['uid']   = $puid;
45
-        $i++;
46
-    }
47
-    return $ret;
25
+	// Добавляем в условие ключевые слова поиска
26
+	if (is_array($queryarray) && $count = count($queryarray)) {
27
+		$sql .= " AND ( ( p.title LIKE '%$queryarray[0]%' OR p.hometext LIKE '%$queryarray[0]%' )";
28
+		for ($i = 1; $i < $count; $i++) {
29
+			$sql .= " $andor ";
30
+			$sql .= "( p.title LIKE '%$queryarray[$i]%' OR p.hometext LIKE '%$queryarray[$i]%' )";
31
+		}
32
+		$sql .= ' ) ';
33
+	}
34
+	//$sql .= "ORDER BY date DESC";
35
+	$result = $GLOBALS['xoopsDB']->query($sql, $limit, $offset);
36
+	$ret    = [];
37
+	$i      = 0;
38
+	// Перебираем все результаты
39
+	while (list($pageid, $ptitle, $puid, $pdatecreated, $ititle) = $GLOBALS['xoopsDB']->fetchRow($result)) {
40
+		$ret[$i]['image'] = 'assets/images/size2.gif';
41
+		$ret[$i]['link']  = 'page.php?id=' . $pageid;
42
+		$ret[$i]['title'] = $ititle . ': ' . $ptitle;
43
+		$ret[$i]['time']  = $pdatecreated;
44
+		$ret[$i]['uid']   = $puid;
45
+		$i++;
46
+	}
47
+	return $ret;
48 48
 }
Please login to merge, or discard this patch.
blocks/instr_lastinstr.php 1 patch
Indentation   +49 added lines, -49 removed lines patch added patch discarded remove patch
@@ -6,65 +6,65 @@
 block discarded – undo
6 6
 function b_instr_lastinstr_show($options = [])
7 7
 {
8 8
 
9
-    // Подключаем функции
9
+	// Подключаем функции
10 10
 //    $moduleDirName = dirname(__DIR__);
11
-    $moduleDirName = basename(dirname(__DIR__));
12
-    include_once $GLOBALS['xoops']->path('modules/' . $moduleDirName . '/class/utility.php');
13
-    //
14
-    $myts = MyTextSanitizer::getInstance();
15
-    //
16
-    $insinstrHandler = xoops_getModuleHandler('instruction', 'instruction');
11
+	$moduleDirName = basename(dirname(__DIR__));
12
+	include_once $GLOBALS['xoops']->path('modules/' . $moduleDirName . '/class/utility.php');
13
+	//
14
+	$myts = MyTextSanitizer::getInstance();
15
+	//
16
+	$insinstrHandler = xoops_getModuleHandler('instruction', 'instruction');
17 17
 
18
-    // Добавляем стили
19
-    //global $xoTheme;
20
-    //$xoTheme->addStylesheet( XOOPS_URL . '/modules/instruction/css/blocks.css' );
18
+	// Добавляем стили
19
+	//global $xoTheme;
20
+	//$xoTheme->addStylesheet( XOOPS_URL . '/modules/instruction/css/blocks.css' );
21 21
 
22
-    // Опции
23
-    // Количество страниц
24
-    $limit = $options[0];
25
-    // Количество символов
26
-    $numchars = $options[1];
22
+	// Опции
23
+	// Количество страниц
24
+	$limit = $options[0];
25
+	// Количество символов
26
+	$numchars = $options[1];
27 27
 
28
-    // Права на просмотр
29
-    $cat_view = InstructionUtility::getItemIds();
30
-    // Массив выходных данных
31
-    $block = [];
28
+	// Права на просмотр
29
+	$cat_view = InstructionUtility::getItemIds();
30
+	// Массив выходных данных
31
+	$block = [];
32 32
 
33
-    // Если есть категории для прасмотра
34
-    if (is_array($cat_view) && count($cat_view) > 0) {
33
+	// Если есть категории для прасмотра
34
+	if (is_array($cat_view) && count($cat_view) > 0) {
35 35
 
36
-        // Находим последние инструкции
37
-        $sql = "SELECT `instrid`, `cid`, `title`, `pages`, `dateupdated` FROM {$insinstrHandler->table} WHERE `cid` IN (" . implode(', ', $cat_view) . ') AND `status` > 0 ORDER BY `dateupdated` DESC';
38
-        // Лимит запроса
39
-        $result = $GLOBALS['xoopsDB']->query($sql, $limit);
40
-        // Перебираем все значения
41
-        $i = 0;
42
-        while (list($instrid, $cid, $ititle, $pages, $dateupdated) = $GLOBALS['xoopsDB']->fetchRow($result)) {
43
-            // ID инструкции
44
-            $block[$i]['instrid'] = $instrid;
45
-            // ID категории
46
-            $block[$i]['cid'] = $cid;
47
-            // Название инструкции
48
-            $block[$i]['ititle'] = $myts->htmlSpecialChars($ititle);
49
-            // Число страниц
50
-            $block[$i]['pages'] = $pages;
51
-            // Дата обновления инструкции
52
-            $block[$i]['dateupdated'] = formatTimeStamp($dateupdated, 's');
53
-            // Инкримент
54
-            $i++;
55
-        }
56
-    }
57
-    // Возвращаем массив
58
-    return $block;
36
+		// Находим последние инструкции
37
+		$sql = "SELECT `instrid`, `cid`, `title`, `pages`, `dateupdated` FROM {$insinstrHandler->table} WHERE `cid` IN (" . implode(', ', $cat_view) . ') AND `status` > 0 ORDER BY `dateupdated` DESC';
38
+		// Лимит запроса
39
+		$result = $GLOBALS['xoopsDB']->query($sql, $limit);
40
+		// Перебираем все значения
41
+		$i = 0;
42
+		while (list($instrid, $cid, $ititle, $pages, $dateupdated) = $GLOBALS['xoopsDB']->fetchRow($result)) {
43
+			// ID инструкции
44
+			$block[$i]['instrid'] = $instrid;
45
+			// ID категории
46
+			$block[$i]['cid'] = $cid;
47
+			// Название инструкции
48
+			$block[$i]['ititle'] = $myts->htmlSpecialChars($ititle);
49
+			// Число страниц
50
+			$block[$i]['pages'] = $pages;
51
+			// Дата обновления инструкции
52
+			$block[$i]['dateupdated'] = formatTimeStamp($dateupdated, 's');
53
+			// Инкримент
54
+			$i++;
55
+		}
56
+	}
57
+	// Возвращаем массив
58
+	return $block;
59 59
 }
60 60
 
61 61
 // Редактирование последних инструкций
62 62
 function b_instr_lastinstr_edit($options = [])
63 63
 {
64
-    $form = '';
65
-    $form .= _MB_INSTR_DISPLAYINSTRC . ' <input name="options[0]" size="5" maxlength="255" value="' . $options[0] . '" type="text" /><br>' . "\n";
66
-    $form .= _MB_INSTR_NUMCHARSC . ' <input name="options[1]" size="5" maxlength="255" value="' . $options[1] . '" type="text" /><br>' . "\n";
64
+	$form = '';
65
+	$form .= _MB_INSTR_DISPLAYINSTRC . ' <input name="options[0]" size="5" maxlength="255" value="' . $options[0] . '" type="text" /><br>' . "\n";
66
+	$form .= _MB_INSTR_NUMCHARSC . ' <input name="options[1]" size="5" maxlength="255" value="' . $options[1] . '" type="text" /><br>' . "\n";
67 67
 
68
-    // Возвращаем форму
69
-    return $form;
68
+	// Возвращаем форму
69
+	return $form;
70 70
 }
Please login to merge, or discard this patch.
blocks/instr_lastpage.php 1 patch
Indentation   +52 added lines, -52 removed lines patch added patch discarded remove patch
@@ -5,68 +5,68 @@
 block discarded – undo
5 5
 function b_instr_lastpage_show($options = [])
6 6
 {
7 7
 
8
-    // Подключаем функции
9
-    $moduleDirName = basename(dirname(__DIR__));
10
-    include_once $GLOBALS['xoops']->path('modules/' . $moduleDirName . '/class/utility.php');
11
-    //
12
-    $myts = MyTextSanitizer::getInstance();
13
-    //
14
-    $insinstrHandler = xoops_getModuleHandler('instruction', 'instruction');
15
-    $inspageHandler  = xoops_getModuleHandler('page', 'instruction');
8
+	// Подключаем функции
9
+	$moduleDirName = basename(dirname(__DIR__));
10
+	include_once $GLOBALS['xoops']->path('modules/' . $moduleDirName . '/class/utility.php');
11
+	//
12
+	$myts = MyTextSanitizer::getInstance();
13
+	//
14
+	$insinstrHandler = xoops_getModuleHandler('instruction', 'instruction');
15
+	$inspageHandler  = xoops_getModuleHandler('page', 'instruction');
16 16
 
17
-    // Добавляем стили
18
-    //global $xoTheme;
19
-    //$xoTheme->addStylesheet( XOOPS_URL . '/modules/instruction/css/blocks.css' );
17
+	// Добавляем стили
18
+	//global $xoTheme;
19
+	//$xoTheme->addStylesheet( XOOPS_URL . '/modules/instruction/css/blocks.css' );
20 20
 
21
-    // Опции
22
-    // Количество страниц
23
-    $limit = $options[0];
24
-    // Количество символов
25
-    $numchars = $options[1];
21
+	// Опции
22
+	// Количество страниц
23
+	$limit = $options[0];
24
+	// Количество символов
25
+	$numchars = $options[1];
26 26
 
27
-    // Права на просмотр
28
-    $cat_view = InstructionUtility::getItemIds();
29
-    // Массив выходных данных
30
-    $block = [];
27
+	// Права на просмотр
28
+	$cat_view = InstructionUtility::getItemIds();
29
+	// Массив выходных данных
30
+	$block = [];
31 31
 
32
-    // Если есть категории для прасмотра
33
-    if (is_array($cat_view) && count($cat_view) > 0) {
32
+	// Если есть категории для прасмотра
33
+	if (is_array($cat_view) && count($cat_view) > 0) {
34 34
 
35
-        // Находим последние страницы
36
-        $sql = "SELECT p.pageid, p.instrid, p.title, p.dateupdated, i.title, i.cid FROM {$inspageHandler->table} p, {$insinstrHandler->table} i WHERE p.instrid = i.instrid AND i.cid IN (" . implode(', ', $cat_view) . ') AND p.status > 0 AND i.status > 0 ORDER BY p.dateupdated DESC';
37
-        // Лимит запроса
38
-        $result = $GLOBALS['xoopsDB']->query($sql, $limit);
39
-        // Перебираем все значения
40
-        $i = 0;
41
-        while (list($pageid, $instrid, $ptitle, $dateupdated, $ititle, $cid) = $GLOBALS['xoopsDB']->fetchRow($result)) {
42
-            // ID страницы
43
-            $block[$i]['pageid'] = $pageid;
44
-            // ID инструкции
45
-            $block[$i]['instrid'] = $instrid;
46
-            // Название страницы
47
-            $block[$i]['ptitle'] = $myts->htmlSpecialChars($ptitle);
48
-            // Название инструкции
49
-            $block[$i]['ititle'] = $myts->htmlSpecialChars($ititle);
50
-            // Дата обновления страницы
51
-            $block[$i]['dateupdated'] = formatTimeStamp($dateupdated, 's');
52
-            // Категория инстркции
53
-            $block[$i]['cid'] = $cid;
54
-            // Инкримент
55
-            $i++;
56
-        }
57
-    }
35
+		// Находим последние страницы
36
+		$sql = "SELECT p.pageid, p.instrid, p.title, p.dateupdated, i.title, i.cid FROM {$inspageHandler->table} p, {$insinstrHandler->table} i WHERE p.instrid = i.instrid AND i.cid IN (" . implode(', ', $cat_view) . ') AND p.status > 0 AND i.status > 0 ORDER BY p.dateupdated DESC';
37
+		// Лимит запроса
38
+		$result = $GLOBALS['xoopsDB']->query($sql, $limit);
39
+		// Перебираем все значения
40
+		$i = 0;
41
+		while (list($pageid, $instrid, $ptitle, $dateupdated, $ititle, $cid) = $GLOBALS['xoopsDB']->fetchRow($result)) {
42
+			// ID страницы
43
+			$block[$i]['pageid'] = $pageid;
44
+			// ID инструкции
45
+			$block[$i]['instrid'] = $instrid;
46
+			// Название страницы
47
+			$block[$i]['ptitle'] = $myts->htmlSpecialChars($ptitle);
48
+			// Название инструкции
49
+			$block[$i]['ititle'] = $myts->htmlSpecialChars($ititle);
50
+			// Дата обновления страницы
51
+			$block[$i]['dateupdated'] = formatTimeStamp($dateupdated, 's');
52
+			// Категория инстркции
53
+			$block[$i]['cid'] = $cid;
54
+			// Инкримент
55
+			$i++;
56
+		}
57
+	}
58 58
 
59
-    // Возвращаем массив
60
-    return $block;
59
+	// Возвращаем массив
60
+	return $block;
61 61
 }
62 62
 
63 63
 // Редактирование последних страниц
64 64
 function b_instr_lastpage_edit($options = [])
65 65
 {
66
-    $form = '';
67
-    $form .= _MB_INSTR_DISPLAYPAGESC . ' <input name="options[0]" size="5" maxlength="255" value="' . $options[0] . '" type="text" /><br>' . "\n";
68
-    $form .= _MB_INSTR_NUMCHARSC . ' <input name="options[1]" size="5" maxlength="255" value="' . $options[1] . '" type="text" /><br>' . "\n";
66
+	$form = '';
67
+	$form .= _MB_INSTR_DISPLAYPAGESC . ' <input name="options[0]" size="5" maxlength="255" value="' . $options[0] . '" type="text" /><br>' . "\n";
68
+	$form .= _MB_INSTR_NUMCHARSC . ' <input name="options[1]" size="5" maxlength="255" value="' . $options[1] . '" type="text" /><br>' . "\n";
69 69
 
70
-    // Возвращаем форму
71
-    return $form;
70
+	// Возвращаем форму
71
+	return $form;
72 72
 }
Please login to merge, or discard this patch.
class/tree.php 1 patch
Indentation   +309 added lines, -309 removed lines patch added patch discarded remove patch
@@ -12,82 +12,82 @@  discard block
 block discarded – undo
12 12
 // Наследник класса XoopsObjectTree
13 13
 class InstructionTree extends XoopsObjectTree
14 14
 {
15
-    public function __construct()
16
-    {
17
-    }
18
-
19
-    public function _makePagesAdminOptions($key, &$ret, $prefix_orig, $objInsinstr, $class = 'odd', $prefix_curr = '')
20
-    {
21
-        if ($key > 0) {
22
-
23
-            //
24
-            $class = ('even' == $class) ? 'odd' : 'even';
25
-            // ID инструкции ( Можно сделать статической )
26
-            $instrid = $objInsinstr->getVar('instrid');
27
-
28
-            // ID страницы
29
-            $pageid = $this->tree[$key]['obj']->getVar('pageid');
30
-            // Название страницы
31
-            $pagetitle = $this->tree[$key]['obj']->getVar('title');
32
-            // Вес
33
-            $pageweight = $this->tree[$key]['obj']->getVar('weight');
34
-            // Статус
35
-            $pagestatus = $this->tree[$key]['obj']->getVar('status');
36
-            // Тип страницы
37
-            $pagetype = $this->tree[$key]['obj']->getVar('type');
38
-
39
-            // Дочернии страницы
40
-            $page_childs = $this->getAllChild($pageid);
41
-            // Число дочерних страниц
42
-            $num_childs = count($page_childs);
43
-
44
-            // Действие - удаление
45
-            $act_del = ($num_childs > 0) ? '<img src="../assets/icons/no_delete_mini.png" alt="' . _AM_INSTR_NODELPAGE . '" title="' . _AM_INSTR_NODELPAGE . '" />' : '<a href="instr.php?op=delpage&pageid='
46
-                                                                                                                                                                      . $pageid
47
-                                                                                                                                                                      . '"><img src="../assets/icons/delete_mini.png" alt="'
48
-                                                                                                                                                                      . _AM_INSTRUCTION_DEL
49
-                                                                                                                                                                      . '" title="'
50
-                                                                                                                                                                      . _AM_INSTRUCTION_DEL
51
-                                                                                                                                                                      . '"></a>';
52
-            //
53
-            $page_link = '<a name="pageid_' . $pageid . '" ' . ($pagetype ? 'href="' . XOOPS_URL . '/modules/' . INST_DIRNAME . '/page.php?id=' . $pageid . '#pagetext"' : '') . '>' . $pagetitle . '</a>';
54
-
55
-            $ret .= '<tr class="' . $class . '">
15
+	public function __construct()
16
+	{
17
+	}
18
+
19
+	public function _makePagesAdminOptions($key, &$ret, $prefix_orig, $objInsinstr, $class = 'odd', $prefix_curr = '')
20
+	{
21
+		if ($key > 0) {
22
+
23
+			//
24
+			$class = ('even' == $class) ? 'odd' : 'even';
25
+			// ID инструкции ( Можно сделать статической )
26
+			$instrid = $objInsinstr->getVar('instrid');
27
+
28
+			// ID страницы
29
+			$pageid = $this->tree[$key]['obj']->getVar('pageid');
30
+			// Название страницы
31
+			$pagetitle = $this->tree[$key]['obj']->getVar('title');
32
+			// Вес
33
+			$pageweight = $this->tree[$key]['obj']->getVar('weight');
34
+			// Статус
35
+			$pagestatus = $this->tree[$key]['obj']->getVar('status');
36
+			// Тип страницы
37
+			$pagetype = $this->tree[$key]['obj']->getVar('type');
38
+
39
+			// Дочернии страницы
40
+			$page_childs = $this->getAllChild($pageid);
41
+			// Число дочерних страниц
42
+			$num_childs = count($page_childs);
43
+
44
+			// Действие - удаление
45
+			$act_del = ($num_childs > 0) ? '<img src="../assets/icons/no_delete_mini.png" alt="' . _AM_INSTR_NODELPAGE . '" title="' . _AM_INSTR_NODELPAGE . '" />' : '<a href="instr.php?op=delpage&pageid='
46
+																																									  . $pageid
47
+																																									  . '"><img src="../assets/icons/delete_mini.png" alt="'
48
+																																									  . _AM_INSTRUCTION_DEL
49
+																																									  . '" title="'
50
+																																									  . _AM_INSTRUCTION_DEL
51
+																																									  . '"></a>';
52
+			//
53
+			$page_link = '<a name="pageid_' . $pageid . '" ' . ($pagetype ? 'href="' . XOOPS_URL . '/modules/' . INST_DIRNAME . '/page.php?id=' . $pageid . '#pagetext"' : '') . '>' . $pagetitle . '</a>';
54
+
55
+			$ret .= '<tr class="' . $class . '">
56 56
       <td>' . $prefix_curr . ' ' . $page_link . '</td>
57 57
       <td align="center" width="50">
58 58
         <input type="text" name="weights[]" size="2" value="' . $pageweight . '" />
59 59
         <input type="hidden" name="pageids[]" value="' . $pageid . '" />
60 60
       </td>
61 61
       <td align="center" width="180">';
62
-            // Просмотре без кэша
63
-            $ret .= ' <a href="' . XOOPS_URL . '/modules/' . INST_DIRNAME . '/page.php?id=' . $pageid . '&amp;nocache=1"><img src="../assets/icons/no_cache.png" alt="' . _AM_INSTR_DISPLAY_NOCACHE . '" title="' . _AM_INSTR_DISPLAY_NOCACHE . '" /></a> ';
64
-            // Добавить подстраницу
65
-            $ret .= ' <a href="instr.php?op=editpage&instrid=' . $instrid . '&pid=' . $pageid . '"><img src="../assets/icons/add_mini.png" alt="' . _AM_INSTRUCTION_ADDSUBPAGE . '" title="' . _AM_INSTRUCTION_ADDSUBPAGE . '" /></a> ';
66
-
67
-            if ($pagestatus) {
68
-                $ret .= ' <img src="../assets/icons/lock_mini.png" alt="' . _AM_INSTRUCTION_LOCK . '" title="' . _AM_INSTRUCTION_LOCK . '"> ';
69
-            } else {
70
-                $ret .= ' <img src="../assets/icons/unlock_mini.png" alt="' . _AM_INSTRUCTION_UNLOCK . '" title="' . _AM_INSTRUCTION_UNLOCK . '"> ';
71
-            }
72
-
73
-            $ret .= ' <a href="instr.php?op=editpage&pageid=' . $pageid . '"><img src="../assets/icons/edit_mini.png" alt="' . _AM_INSTRUCTION_EDIT . '" title="' . _AM_INSTRUCTION_EDIT . '"></a> ' . $act_del . '
62
+			// Просмотре без кэша
63
+			$ret .= ' <a href="' . XOOPS_URL . '/modules/' . INST_DIRNAME . '/page.php?id=' . $pageid . '&amp;nocache=1"><img src="../assets/icons/no_cache.png" alt="' . _AM_INSTR_DISPLAY_NOCACHE . '" title="' . _AM_INSTR_DISPLAY_NOCACHE . '" /></a> ';
64
+			// Добавить подстраницу
65
+			$ret .= ' <a href="instr.php?op=editpage&instrid=' . $instrid . '&pid=' . $pageid . '"><img src="../assets/icons/add_mini.png" alt="' . _AM_INSTRUCTION_ADDSUBPAGE . '" title="' . _AM_INSTRUCTION_ADDSUBPAGE . '" /></a> ';
66
+
67
+			if ($pagestatus) {
68
+				$ret .= ' <img src="../assets/icons/lock_mini.png" alt="' . _AM_INSTRUCTION_LOCK . '" title="' . _AM_INSTRUCTION_LOCK . '"> ';
69
+			} else {
70
+				$ret .= ' <img src="../assets/icons/unlock_mini.png" alt="' . _AM_INSTRUCTION_UNLOCK . '" title="' . _AM_INSTRUCTION_UNLOCK . '"> ';
71
+			}
72
+
73
+			$ret .= ' <a href="instr.php?op=editpage&pageid=' . $pageid . '"><img src="../assets/icons/edit_mini.png" alt="' . _AM_INSTRUCTION_EDIT . '" title="' . _AM_INSTRUCTION_EDIT . '"></a> ' . $act_del . '
74 74
       </td>
75 75
     </tr>';
76 76
 
77
-            // Устанавливаем префикс
78
-            $prefix_curr .= $prefix_orig;
79
-        }
77
+			// Устанавливаем префикс
78
+			$prefix_curr .= $prefix_orig;
79
+		}
80 80
 
81
-        if (isset($this->tree[$key]['child']) && !empty($this->tree[$key]['child'])) {
82
-            foreach ($this->tree[$key]['child'] as $childkey) {
83
-                $this->_makePagesAdminOptions($childkey, $ret, $prefix_orig, $objInsinstr, $class, $prefix_curr);
84
-            }
85
-        }
86
-    }
81
+		if (isset($this->tree[$key]['child']) && !empty($this->tree[$key]['child'])) {
82
+			foreach ($this->tree[$key]['child'] as $childkey) {
83
+				$this->_makePagesAdminOptions($childkey, $ret, $prefix_orig, $objInsinstr, $class, $prefix_curr);
84
+			}
85
+		}
86
+	}
87 87
 
88
-    public function makePagesAdmin(&$objInsinstr, $prefix = '-', $key = 0)
89
-    {
90
-        $ret = '<form name="inspages" action="instr.php" method="post">
88
+	public function makePagesAdmin(&$objInsinstr, $prefix = '-', $key = 0)
89
+	{
90
+		$ret = '<form name="inspages" action="instr.php" method="post">
91 91
   <table width="100%" cellspacing="1" class="outer">
92 92
     <tr>
93 93
       <th align="center" colspan="3">' . sprintf(_AM_INSTRUCTION_LISTPAGESININSTR, $objInsinstr->getVar('title')) . '</th>
@@ -98,10 +98,10 @@  discard block
 block discarded – undo
98 98
       <td class="head" align="center" width="180">' . _AM_INSTRUCTION_ACTION . '</td>
99 99
     </tr>';
100 100
 
101
-        // Выводим все страницы
102
-        $this->_makePagesAdminOptions($key, $ret, $prefix, $objInsinstr);
101
+		// Выводим все страницы
102
+		$this->_makePagesAdminOptions($key, $ret, $prefix, $objInsinstr);
103 103
 
104
-        $ret .= '<tr class="foot">
104
+		$ret .= '<tr class="foot">
105 105
       <td><a href="instr.php?op=editpage&instrid=' . $objInsinstr->getVar('instrid') . '"><img src="../assets/icons/add_mini.png" alt="' . _AM_INSTRUCTION_ADDPAGE . '" title="' . _AM_INSTRUCTION_ADDPAGE . '"></a></td>
106 106
       <td colspan="2">
107 107
         <input type="hidden" name="instrid" value="' . $objInsinstr->getVar('instrid') . '" />
@@ -112,52 +112,52 @@  discard block
 block discarded – undo
112 112
   </table>
113 113
 </form>';
114 114
 
115
-        return $ret;
116
-    }
117
-
118
-    // ==================================
119
-    // === Дерево категорий в админке ===
120
-    // ==================================
121
-
122
-    public function _makeCatsAdminOptions($key, &$ret, $prefix_orig, $cidinstrids = [], &$class = 'odd', $prefix_curr = '')
123
-    {
124
-        if ($key > 0) {
125
-
126
-            //
127
-            $class = ('even' == $class) ? 'odd' : 'even';
128
-
129
-            // ID категории
130
-            $catid = $this->tree[$key]['obj']->getVar('cid');
131
-            // Название категории
132
-            $cattitle = $this->tree[$key]['obj']->getVar('title');
133
-            // Вес
134
-            $catweight = $this->tree[$key]['obj']->getVar('weight');
135
-            // Статус
136
-            $pagestatus = $this->tree[$key]['obj']->getVar('status');
137
-
138
-            // Дочернии категории
139
-            $cat_childs = $this->getAllChild($catid);
140
-            // Число дочерних категорий
141
-            $num_childs = count($cat_childs);
142
-            // Число инструкций
143
-            $num_instrs = isset($cidinstrids[$catid]) ? $cidinstrids[$catid] : 0;
144
-
145
-            // Действие - удаление
146
-            $act_del = (($num_instrs > 0) || ($num_childs > 0)) ? '<img src="../assets/icons/no_delete_mini.png" alt="' . _AM_INSTR_NODELCAT . '" title="' . _AM_INSTR_NODELCAT . '" />' : '<a href="cat.php?op=delcat&cid='
147
-                                                                                                                                                                                           . $catid
148
-                                                                                                                                                                                           . '"><img src="../assets/icons/delete_mini.png" alt="'
149
-                                                                                                                                                                                           . _AM_INSTRUCTION_DEL
150
-                                                                                                                                                                                           . '" title="'
151
-                                                                                                                                                                                           . _AM_INSTRUCTION_DEL
152
-                                                                                                                                                                                           . '" /></a>';
153
-            // Действие - просмотр
154
-            $act_view = ($num_instrs > 0) ? '<a href="instr.php?cid=' . $catid . '"><img src="../assets/icons/view_mini.png" alt="' . _AM_INSTR_VIEWINSTR . '" title="' . _AM_INSTR_VIEWINSTR . '" /></a>' : '<img src="../assets/icons/no_view_mini.png" alt="'
155
-                                                                                                                                                                                                             . _AM_INSTR_NOVIEWINSTR
156
-                                                                                                                                                                                                             . '" title="'
157
-                                                                                                                                                                                                             . _AM_INSTR_NOVIEWINSTR
158
-                                                                                                                                                                                                             . '" />';
159
-
160
-            $ret .= '<tr class="' . $class . '">
115
+		return $ret;
116
+	}
117
+
118
+	// ==================================
119
+	// === Дерево категорий в админке ===
120
+	// ==================================
121
+
122
+	public function _makeCatsAdminOptions($key, &$ret, $prefix_orig, $cidinstrids = [], &$class = 'odd', $prefix_curr = '')
123
+	{
124
+		if ($key > 0) {
125
+
126
+			//
127
+			$class = ('even' == $class) ? 'odd' : 'even';
128
+
129
+			// ID категории
130
+			$catid = $this->tree[$key]['obj']->getVar('cid');
131
+			// Название категории
132
+			$cattitle = $this->tree[$key]['obj']->getVar('title');
133
+			// Вес
134
+			$catweight = $this->tree[$key]['obj']->getVar('weight');
135
+			// Статус
136
+			$pagestatus = $this->tree[$key]['obj']->getVar('status');
137
+
138
+			// Дочернии категории
139
+			$cat_childs = $this->getAllChild($catid);
140
+			// Число дочерних категорий
141
+			$num_childs = count($cat_childs);
142
+			// Число инструкций
143
+			$num_instrs = isset($cidinstrids[$catid]) ? $cidinstrids[$catid] : 0;
144
+
145
+			// Действие - удаление
146
+			$act_del = (($num_instrs > 0) || ($num_childs > 0)) ? '<img src="../assets/icons/no_delete_mini.png" alt="' . _AM_INSTR_NODELCAT . '" title="' . _AM_INSTR_NODELCAT . '" />' : '<a href="cat.php?op=delcat&cid='
147
+																																														   . $catid
148
+																																														   . '"><img src="../assets/icons/delete_mini.png" alt="'
149
+																																														   . _AM_INSTRUCTION_DEL
150
+																																														   . '" title="'
151
+																																														   . _AM_INSTRUCTION_DEL
152
+																																														   . '" /></a>';
153
+			// Действие - просмотр
154
+			$act_view = ($num_instrs > 0) ? '<a href="instr.php?cid=' . $catid . '"><img src="../assets/icons/view_mini.png" alt="' . _AM_INSTR_VIEWINSTR . '" title="' . _AM_INSTR_VIEWINSTR . '" /></a>' : '<img src="../assets/icons/no_view_mini.png" alt="'
155
+																																																			 . _AM_INSTR_NOVIEWINSTR
156
+																																																			 . '" title="'
157
+																																																			 . _AM_INSTR_NOVIEWINSTR
158
+																																																			 . '" />';
159
+
160
+			$ret .= '<tr class="' . $class . '">
161 161
       <td>' . $prefix_curr . ' <a href="' . XOOPS_URL . '/modules/' . INST_DIRNAME . '/index.php?cid=' . $catid . '">' . $cattitle . '</a></td>
162 162
       <td align="center" width="50">' . $catweight . '</td>
163 163
       <td align="center" width="100">' . $num_instrs . '</td>
@@ -168,20 +168,20 @@  discard block
 block discarded – undo
168 168
       </td>
169 169
     </tr>';
170 170
 
171
-            // Устанавливаем префикс
172
-            $prefix_curr .= $prefix_orig;
173
-        }
171
+			// Устанавливаем префикс
172
+			$prefix_curr .= $prefix_orig;
173
+		}
174 174
 
175
-        if (isset($this->tree[$key]['child']) && !empty($this->tree[$key]['child'])) {
176
-            foreach ($this->tree[$key]['child'] as $childkey) {
177
-                $this->_makeCatsAdminOptions($childkey, $ret, $prefix_orig, $cidinstrids, $class, $prefix_curr);
178
-            }
179
-        }
180
-    }
175
+		if (isset($this->tree[$key]['child']) && !empty($this->tree[$key]['child'])) {
176
+			foreach ($this->tree[$key]['child'] as $childkey) {
177
+				$this->_makeCatsAdminOptions($childkey, $ret, $prefix_orig, $cidinstrids, $class, $prefix_curr);
178
+			}
179
+		}
180
+	}
181 181
 
182
-    public function makeCatsAdmin($prefix = '-', $cidinstrids = [], $key = 0)
183
-    {
184
-        $ret = '<table width="100%" cellspacing="1" class="outer">
182
+	public function makeCatsAdmin($prefix = '-', $cidinstrids = [], $key = 0)
183
+	{
184
+		$ret = '<table width="100%" cellspacing="1" class="outer">
185 185
     <tr>
186 186
       <th align="center" colspan="4">' . _AM_INSTR_LISTALLCATS . '</th>
187 187
     </tr>
@@ -192,193 +192,193 @@  discard block
 block discarded – undo
192 192
       <td class="head" align="center" width="150">' . _AM_INSTRUCTION_ACTION . '</td>
193 193
     </tr>';
194 194
 
195
-        // Выводим все страницы
196
-        $this->_makeCatsAdminOptions($key, $ret, $prefix, $cidinstrids);
197
-
198
-        $ret .= '</table>';
199
-
200
-        return $ret;
201
-    }
202
-
203
-    // ======================================
204
-    // Список страниц на стороне пользователя
205
-    // ======================================
206
-
207
-    public function _makePagesUserTree($key, &$ret, $currpageid = 0, &$lastpageids = [], $level = 0)
208
-    {
209
-
210
-        // Сохраняем значение предыдущей страницы
211
-        //static $stat_prevpages;
212
-
213
-        if ($key > 0) {
214
-
215
-            // ID страницы
216
-            $pageid = $this->tree[$key]['obj']->getVar('pageid');
217
-            // Название страницы
218
-            $pagetitle = $this->tree[$key]['obj']->getVar('title');
219
-            // Тип страницы
220
-            $pagetype = $this->tree[$key]['obj']->getVar('type');
221
-
222
-            // Дочернии категории
223
-            $page_childs = $this->getAllChild($pageid);
224
-            // Число дочерних страниц
225
-            $num_childs = count($page_childs);
226
-
227
-            // Генерируем класс
228
-            // InstrTreeNode InstrTreeIsRoot InstrTreeExpandClosed InstrTreeIsLast
229
-            $class = [];
230
-            // Данный класс должен быть у любого узла
231
-            $class[] = 'InstrTreeNode';
232
-            // Если узел нулевого уровня, добавляем InstrTreeIsRoot
233
-            if (0 === $level) {
234
-                $class[] = 'InstrTreeIsRoot';
235
-            }
236
-            // Тип узла InstrTreeExpandClosed|InstrTreeExpandLeaf
237
-            // Если у узла нет потомков - InstrTreeExpandLeaf
238
-            if (0 == $num_childs) {
239
-                $class[] = 'InstrTreeExpandLeaf';
240
-                // Если у искомого элемента есть потомки - открываем список
241
-            } elseif ($currpageid == $pageid) {
242
-                $class[] = 'InstrTreeExpandOpen';
243
-                // Если искомый элемент есть в потомках текущего, то ставим класс InstrTreeExpandOpen
244
-            } elseif (in_array($currpageid, array_keys($page_childs))) {
245
-                $class[] = 'InstrTreeExpandOpen';
246
-                //
247
-            } else {
248
-                $class[] = 'InstrTreeExpandClosed';
249
-            }
250
-
251
-            // Данный класс нужно добавлять последнему узлу в каждом уровне
252
-
253
-            if (isset($lastpageids[$level]) && ($pageid == $lastpageids[$level])) {
254
-                $class[] = 'InstrTreeIsLast';
255
-            }
256
-
257
-            //$class[] = 'InstrTreeIsLast';
258
-
259
-            // Test
260
-            //$ret .= '<div id="' . $pageid . '">';
261
-
262
-            // Создаём запись
263
-            $ret .= '<li class="' . implode(' ', $class) . '">';
264
-            //
265
-            $ret .= '<div class="InstrTreeExpand"></div>';
266
-            //
267
-            $ret .= '<div class="InstrTreeContent">';
268
-
269
-            // Если это лист дерева
270
-            if (0 == $pagetype) {
271
-                $ret .= '<span class="InstrTreeEmptyPage">' . $pagetitle . '</span>';
272
-                //
273
-            } elseif ($currpageid == $pageid) {
274
-                $ret .= $pagetitle;
275
-                //
276
-            } else {
277
-                $ret .= '<a href="' . XOOPS_URL . '/modules/' . INST_DIRNAME . '/page.php?id=' . $pageid . '#pagetext">' . $pagetitle . '</a>';
278
-            }
279
-
280
-            $ret .= '</div>';
281
-
282
-            // Если есть потомки
283
-            if ($num_childs > 0) {
284
-                $ret .= '<ul class="InstrTreeContainer">';
285
-            }
286
-
287
-            // Инкримент уровня
288
-            $level++;
289
-        }
290
-
291
-        // Рекурсия
292
-        if (isset($this->tree[$key]['child']) && !empty($this->tree[$key]['child'])) {
293
-            foreach ($this->tree[$key]['child'] as $childkey) {
294
-                $this->_makePagesUserTree($childkey, $ret, $currpageid, $lastpageids, $level);
295
-            }
296
-        }
297
-
298
-        // Test
299
-        if ($key > 0) {
300
-            // Если есть потомки
301
-            if ($num_childs > 0) {
302
-                $ret .= '</ul>';
303
-            }
304
-            // Конец текущей записи
305
-            $ret .= '</li>';
306
-        }
307
-    }
308
-
309
-    // Находим предыдущую и следующую страницы.
310
-    // Находим последнии страницы на каждом уровне.
311
-    public function _makePagesUserCalc($key, $currpageid = 0, &$prevpages = [], &$nextpages = [], &$lastpageids = [], $level = 0)
312
-    {
313
-
314
-        // Сохраняем значение предыдущей страницы
315
-        static $stat_prevpages;
316
-
317
-        if ($key > 0) {
318
-            // ID страницы
319
-            $pageid = $this->tree[$key]['obj']->getVar('pageid');
320
-            // Название страницы
321
-            $pagetitle = $this->tree[$key]['obj']->getVar('title');
322
-            // Тип страницы
323
-            $pagetype = $this->tree[$key]['obj']->getVar('type');
324
-
325
-            // Если мы передали ID текущей страницы, то находить предыдудую и следующую страницы
326
-            // Не находить предыдущие и следующие для "Пустой страницы"
327
-            if ($currpageid && $pagetype) {
328
-                // Если элемент равен текущей странице
329
-                if (isset($stat_prevpages) && ($currpageid == $pageid)) {
330
-                    // Забиваем массив предыдущей страницы
331
-                    $prevpages['pageid'] = $stat_prevpages['pageid'];
332
-                    $prevpages['title']  = $stat_prevpages['title'];
333
-
334
-                    // Если предыдущий равен текущей странице
335
-                } elseif (isset($stat_prevpages) && ($currpageid == $stat_prevpages['pageid'])) {
336
-                    // Забиваем массив следующей страницы
337
-                    $nextpages['pageid'] = $pageid;
338
-                    $nextpages['title']  = $pagetitle;
339
-                }
340
-                // Заносим текущие данные в массив предыдущей страницы
341
-                $stat_prevpages['pageid'] = $pageid;
342
-                $stat_prevpages['title']  = $pagetitle;
343
-            }
344
-
345
-            // Заносим текущую страницу в массив "последних страний"
346
-            $lastpageids[$level] = $pageid;
347
-
348
-            // Инкримент уровня
349
-            $level++;
350
-        }
351
-
352
-        // Рекурсия
353
-        if (isset($this->tree[$key]['child']) && !empty($this->tree[$key]['child'])) {
354
-            foreach ($this->tree[$key]['child'] as $childkey) {
355
-                $this->_makePagesUserCalc($childkey, $currpageid, $prevpages, $nextpages, $lastpageids, $level);
356
-            }
357
-        }
358
-    }
359
-
360
-    //
361
-
362
-    public function makePagesUser($currpageid = 0, &$prevpages = [], &$nextpages = [], $key = 0)
363
-    {
364
-
365
-        // Массив последней страницы на каждом уровне
366
-        // level => pageid
367
-        $lastpageids = [];
368
-
369
-        // Расчёт
370
-        $this->_makePagesUserCalc($key, $currpageid, $prevpages, $nextpages, $lastpageids);
371
-
372
-        $ret = '<div onclick="instr_tree_toggle(arguments[0])">
195
+		// Выводим все страницы
196
+		$this->_makeCatsAdminOptions($key, $ret, $prefix, $cidinstrids);
197
+
198
+		$ret .= '</table>';
199
+
200
+		return $ret;
201
+	}
202
+
203
+	// ======================================
204
+	// Список страниц на стороне пользователя
205
+	// ======================================
206
+
207
+	public function _makePagesUserTree($key, &$ret, $currpageid = 0, &$lastpageids = [], $level = 0)
208
+	{
209
+
210
+		// Сохраняем значение предыдущей страницы
211
+		//static $stat_prevpages;
212
+
213
+		if ($key > 0) {
214
+
215
+			// ID страницы
216
+			$pageid = $this->tree[$key]['obj']->getVar('pageid');
217
+			// Название страницы
218
+			$pagetitle = $this->tree[$key]['obj']->getVar('title');
219
+			// Тип страницы
220
+			$pagetype = $this->tree[$key]['obj']->getVar('type');
221
+
222
+			// Дочернии категории
223
+			$page_childs = $this->getAllChild($pageid);
224
+			// Число дочерних страниц
225
+			$num_childs = count($page_childs);
226
+
227
+			// Генерируем класс
228
+			// InstrTreeNode InstrTreeIsRoot InstrTreeExpandClosed InstrTreeIsLast
229
+			$class = [];
230
+			// Данный класс должен быть у любого узла
231
+			$class[] = 'InstrTreeNode';
232
+			// Если узел нулевого уровня, добавляем InstrTreeIsRoot
233
+			if (0 === $level) {
234
+				$class[] = 'InstrTreeIsRoot';
235
+			}
236
+			// Тип узла InstrTreeExpandClosed|InstrTreeExpandLeaf
237
+			// Если у узла нет потомков - InstrTreeExpandLeaf
238
+			if (0 == $num_childs) {
239
+				$class[] = 'InstrTreeExpandLeaf';
240
+				// Если у искомого элемента есть потомки - открываем список
241
+			} elseif ($currpageid == $pageid) {
242
+				$class[] = 'InstrTreeExpandOpen';
243
+				// Если искомый элемент есть в потомках текущего, то ставим класс InstrTreeExpandOpen
244
+			} elseif (in_array($currpageid, array_keys($page_childs))) {
245
+				$class[] = 'InstrTreeExpandOpen';
246
+				//
247
+			} else {
248
+				$class[] = 'InstrTreeExpandClosed';
249
+			}
250
+
251
+			// Данный класс нужно добавлять последнему узлу в каждом уровне
252
+
253
+			if (isset($lastpageids[$level]) && ($pageid == $lastpageids[$level])) {
254
+				$class[] = 'InstrTreeIsLast';
255
+			}
256
+
257
+			//$class[] = 'InstrTreeIsLast';
258
+
259
+			// Test
260
+			//$ret .= '<div id="' . $pageid . '">';
261
+
262
+			// Создаём запись
263
+			$ret .= '<li class="' . implode(' ', $class) . '">';
264
+			//
265
+			$ret .= '<div class="InstrTreeExpand"></div>';
266
+			//
267
+			$ret .= '<div class="InstrTreeContent">';
268
+
269
+			// Если это лист дерева
270
+			if (0 == $pagetype) {
271
+				$ret .= '<span class="InstrTreeEmptyPage">' . $pagetitle . '</span>';
272
+				//
273
+			} elseif ($currpageid == $pageid) {
274
+				$ret .= $pagetitle;
275
+				//
276
+			} else {
277
+				$ret .= '<a href="' . XOOPS_URL . '/modules/' . INST_DIRNAME . '/page.php?id=' . $pageid . '#pagetext">' . $pagetitle . '</a>';
278
+			}
279
+
280
+			$ret .= '</div>';
281
+
282
+			// Если есть потомки
283
+			if ($num_childs > 0) {
284
+				$ret .= '<ul class="InstrTreeContainer">';
285
+			}
286
+
287
+			// Инкримент уровня
288
+			$level++;
289
+		}
290
+
291
+		// Рекурсия
292
+		if (isset($this->tree[$key]['child']) && !empty($this->tree[$key]['child'])) {
293
+			foreach ($this->tree[$key]['child'] as $childkey) {
294
+				$this->_makePagesUserTree($childkey, $ret, $currpageid, $lastpageids, $level);
295
+			}
296
+		}
297
+
298
+		// Test
299
+		if ($key > 0) {
300
+			// Если есть потомки
301
+			if ($num_childs > 0) {
302
+				$ret .= '</ul>';
303
+			}
304
+			// Конец текущей записи
305
+			$ret .= '</li>';
306
+		}
307
+	}
308
+
309
+	// Находим предыдущую и следующую страницы.
310
+	// Находим последнии страницы на каждом уровне.
311
+	public function _makePagesUserCalc($key, $currpageid = 0, &$prevpages = [], &$nextpages = [], &$lastpageids = [], $level = 0)
312
+	{
313
+
314
+		// Сохраняем значение предыдущей страницы
315
+		static $stat_prevpages;
316
+
317
+		if ($key > 0) {
318
+			// ID страницы
319
+			$pageid = $this->tree[$key]['obj']->getVar('pageid');
320
+			// Название страницы
321
+			$pagetitle = $this->tree[$key]['obj']->getVar('title');
322
+			// Тип страницы
323
+			$pagetype = $this->tree[$key]['obj']->getVar('type');
324
+
325
+			// Если мы передали ID текущей страницы, то находить предыдудую и следующую страницы
326
+			// Не находить предыдущие и следующие для "Пустой страницы"
327
+			if ($currpageid && $pagetype) {
328
+				// Если элемент равен текущей странице
329
+				if (isset($stat_prevpages) && ($currpageid == $pageid)) {
330
+					// Забиваем массив предыдущей страницы
331
+					$prevpages['pageid'] = $stat_prevpages['pageid'];
332
+					$prevpages['title']  = $stat_prevpages['title'];
333
+
334
+					// Если предыдущий равен текущей странице
335
+				} elseif (isset($stat_prevpages) && ($currpageid == $stat_prevpages['pageid'])) {
336
+					// Забиваем массив следующей страницы
337
+					$nextpages['pageid'] = $pageid;
338
+					$nextpages['title']  = $pagetitle;
339
+				}
340
+				// Заносим текущие данные в массив предыдущей страницы
341
+				$stat_prevpages['pageid'] = $pageid;
342
+				$stat_prevpages['title']  = $pagetitle;
343
+			}
344
+
345
+			// Заносим текущую страницу в массив "последних страний"
346
+			$lastpageids[$level] = $pageid;
347
+
348
+			// Инкримент уровня
349
+			$level++;
350
+		}
351
+
352
+		// Рекурсия
353
+		if (isset($this->tree[$key]['child']) && !empty($this->tree[$key]['child'])) {
354
+			foreach ($this->tree[$key]['child'] as $childkey) {
355
+				$this->_makePagesUserCalc($childkey, $currpageid, $prevpages, $nextpages, $lastpageids, $level);
356
+			}
357
+		}
358
+	}
359
+
360
+	//
361
+
362
+	public function makePagesUser($currpageid = 0, &$prevpages = [], &$nextpages = [], $key = 0)
363
+	{
364
+
365
+		// Массив последней страницы на каждом уровне
366
+		// level => pageid
367
+		$lastpageids = [];
368
+
369
+		// Расчёт
370
+		$this->_makePagesUserCalc($key, $currpageid, $prevpages, $nextpages, $lastpageids);
371
+
372
+		$ret = '<div onclick="instr_tree_toggle(arguments[0])">
373 373
 <div>' . _MD_INSTRUCTION_LISTPAGES . '</div>
374 374
 <div><ul class="InstrTreeContainer">';
375 375
 
376
-        // Генерируем дерево
377
-        $this->_makePagesUserTree($key, $ret, $currpageid, $lastpageids);
376
+		// Генерируем дерево
377
+		$this->_makePagesUserTree($key, $ret, $currpageid, $lastpageids);
378 378
 
379
-        $ret .= '</ul>
379
+		$ret .= '</ul>
380 380
 </div>';
381 381
 
382
-        return $ret;
383
-    }
382
+		return $ret;
383
+	}
384 384
 }
Please login to merge, or discard this patch.
class/category.php 1 patch
Indentation   +169 added lines, -169 removed lines patch added patch discarded remove patch
@@ -11,56 +11,56 @@  discard block
 block discarded – undo
11 11
 
12 12
 class InstructionCategory extends XoopsObject
13 13
 {
14
-    // constructor
15
-    public function __construct()
16
-    {
17
-        //		$this->XoopsObject();
18
-        $this->initVar('cid', XOBJ_DTYPE_INT, null, false, 5);
19
-        $this->initVar('pid', XOBJ_DTYPE_INT, 0, false, 5);
20
-        $this->initVar('title', XOBJ_DTYPE_TXTBOX, '', false);
21
-        $this->initVar('imgurl', XOBJ_DTYPE_TXTBOX, '', false);
22
-        $this->initVar('description', XOBJ_DTYPE_TXTAREA, null, false);
23
-        $this->initVar('weight', XOBJ_DTYPE_INT, 0, false, 11);
24
-        $this->initVar('datecreated', XOBJ_DTYPE_INT, 0, false, 10);
25
-        $this->initVar('dateupdated', XOBJ_DTYPE_INT, 0, false, 10);
26
-        $this->initVar('metakeywords', XOBJ_DTYPE_TXTBOX, '', false);
27
-        $this->initVar('metadescription', XOBJ_DTYPE_TXTBOX, '', false);
28
-    }
29
-
30
-    public function InstructionCategory()
31
-    {
32
-        $this->__construct();
33
-    }
34
-
35
-    public function get_new_enreg()
36
-    {
37
-        $new_enreg = $GLOBALS['xoopsDB']->getInsertId();
38
-        return $new_enreg;
39
-    }
40
-
41
-    // Получаем форму
42
-    public function getForm($action = false)
43
-    {
44
-        //global $xoopsDB, $xoopsModule, $xoopsModuleConfig;
45
-        // Если нет $action
46
-        if (false === $action) {
47
-            $action = xoops_getenv('REQUEST_URI');
48
-        }
49
-        // Подключаем формы
50
-        include_once $GLOBALS['xoops']->path('class/xoopsformloader.php');
51
-
52
-        // Название формы
53
-        $title = $this->isNew() ? sprintf(_AM_INSTRUCTION_FORMADDCAT) : sprintf(_AM_INSTRUCTION_FORMEDITCAT);
54
-
55
-        // Форма
56
-        $form = new XoopsThemeForm($title, 'formcat', $action, 'post', true);
57
-        //$form->setExtra('enctype="multipart/form-data"');
58
-        // Название категории
59
-        $form->addElement(new XoopsFormText(_AM_INSTRUCTION_TITLEC, 'title', 50, 255, $this->getVar('title')), true);
60
-        // Редактор
61
-        $form->addElement(new XoopsFormTextArea(_AM_INSTRUCTION_DSCC, 'description', $this->getVar('description', 'e')), true);
62
-        //image
63
-        /*
14
+	// constructor
15
+	public function __construct()
16
+	{
17
+		//		$this->XoopsObject();
18
+		$this->initVar('cid', XOBJ_DTYPE_INT, null, false, 5);
19
+		$this->initVar('pid', XOBJ_DTYPE_INT, 0, false, 5);
20
+		$this->initVar('title', XOBJ_DTYPE_TXTBOX, '', false);
21
+		$this->initVar('imgurl', XOBJ_DTYPE_TXTBOX, '', false);
22
+		$this->initVar('description', XOBJ_DTYPE_TXTAREA, null, false);
23
+		$this->initVar('weight', XOBJ_DTYPE_INT, 0, false, 11);
24
+		$this->initVar('datecreated', XOBJ_DTYPE_INT, 0, false, 10);
25
+		$this->initVar('dateupdated', XOBJ_DTYPE_INT, 0, false, 10);
26
+		$this->initVar('metakeywords', XOBJ_DTYPE_TXTBOX, '', false);
27
+		$this->initVar('metadescription', XOBJ_DTYPE_TXTBOX, '', false);
28
+	}
29
+
30
+	public function InstructionCategory()
31
+	{
32
+		$this->__construct();
33
+	}
34
+
35
+	public function get_new_enreg()
36
+	{
37
+		$new_enreg = $GLOBALS['xoopsDB']->getInsertId();
38
+		return $new_enreg;
39
+	}
40
+
41
+	// Получаем форму
42
+	public function getForm($action = false)
43
+	{
44
+		//global $xoopsDB, $xoopsModule, $xoopsModuleConfig;
45
+		// Если нет $action
46
+		if (false === $action) {
47
+			$action = xoops_getenv('REQUEST_URI');
48
+		}
49
+		// Подключаем формы
50
+		include_once $GLOBALS['xoops']->path('class/xoopsformloader.php');
51
+
52
+		// Название формы
53
+		$title = $this->isNew() ? sprintf(_AM_INSTRUCTION_FORMADDCAT) : sprintf(_AM_INSTRUCTION_FORMEDITCAT);
54
+
55
+		// Форма
56
+		$form = new XoopsThemeForm($title, 'formcat', $action, 'post', true);
57
+		//$form->setExtra('enctype="multipart/form-data"');
58
+		// Название категории
59
+		$form->addElement(new XoopsFormText(_AM_INSTRUCTION_TITLEC, 'title', 50, 255, $this->getVar('title')), true);
60
+		// Редактор
61
+		$form->addElement(new XoopsFormTextArea(_AM_INSTRUCTION_DSCC, 'description', $this->getVar('description', 'e')), true);
62
+		//image
63
+		/*
64 64
         $downloadscat_img = $this->getVar('imgurl') ? $this->getVar('imgurl') : 'blank.gif';
65 65
         $uploadirectory='/uploads/tdmdownloads/images/cats';
66 66
         $imgtray = new XoopsFormElementTray(_AM_TDMDOWNLOADS_FORMIMG,'<br>');
@@ -79,127 +79,127 @@  discard block
 block discarded – undo
79 79
         $imgtray->addElement($fileseltray);
80 80
         $form->addElement($imgtray);
81 81
         */
82
-        // Родительская категория
83
-        $instructioncatHandler = xoops_getModuleHandler('category', 'instruction');
84
-        $criteria              = new CriteriaCompo();
85
-        // Если мы редактируем, то убрать текущую категорию из списка выбора родительской
86
-        if (!$this->isNew()) {
87
-            $criteria->add(new Criteria('cid', $this->getVar('cid'), '<>'));
88
-        }
89
-        $criteria->setSort('weight ASC, title');
90
-        $criteria->setOrder('ASC');
91
-        $instructioncat_arr = $instructioncatHandler->getall($criteria);
92
-        unset($criteria);
93
-        // Подключаем трей
94
-        include_once $GLOBALS['xoops']->path('class/tree.php');
95
-        $mytree = new XoopsObjectTree($instructioncat_arr, 'cid', 'pid');
96
-
97
-        //        $form->addElement(new XoopsFormLabel(_AM_INSTRUCTION_PCATC, $mytree->makeSelBox('pid', 'title', '--', $this->getVar('pid'), true)));
98
-        $moduleDirName = basename(__DIR__);
99
-        if (false !== ($moduleHelper = Xmf\Module\Helper::getHelper($moduleDirName))) {
100
-        } else {
101
-            $moduleHelper = Xmf\Module\Helper::getHelper('system');
102
-        }
103
-        $module = $moduleHelper->getModule();
104
-
105
-        if (InstructionUtility::checkVerXoops($module, '2.5.9')) {
106
-            $mytree_select = $mytree->makeSelectElement('pid', 'title', '--', $this->getVar('pid'), true, 0, '', _AM_INSTRUCTION_PCATC);
107
-            $form->addElement($mytree_select);
108
-        } else {
109
-            $form->addElement(new XoopsFormLabel(_AM_INSTRUCTION_PCATC, $mytree->makeSelBox('pid', 'title', '--', $this->getVar('pid'), true)));
110
-        }
111
-
112
-        // Вес
113
-        $form->addElement(new XoopsFormText(_AM_INSTRUCTION_WEIGHTC, 'weight', 5, 5, $this->getVar('weight')), true);
114
-        // Мета-теги ключевых слов
115
-        $form->addElement(new XoopsFormText(_AM_INSTRUCTION_METAKEYWORDSC, 'metakeywords', 50, 255, $this->getVar('metakeywords')), false);
116
-        // Мета-теги описания
117
-        $form->addElement(new XoopsFormText(_AM_INSTRUCTION_METADESCRIPTIONC, 'metadescription', 50, 255, $this->getVar('metadescription')), false);
118
-
119
-        // ==========================================================
120
-        // ==========================================================
121
-
122
-        // Права
123
-        $memberHandler = xoops_getHandler('member');
124
-        $group_list    = $memberHandler->getGroupList();
125
-        $gpermHandler  = xoops_getHandler('groupperm');
126
-        $full_list     = array_keys($group_list);
127
-
128
-        // Права на просмотр
129
-        $groups_ids = [];
130
-        // Если мы редактируем
131
-        if (!$this->isNew()) {
132
-            $groups_ids        = $gpermHandler->getGroupIds('instruction_view', $this->getVar('cid'), $GLOBALS['xoopsModule']->getVar('mid'));
133
-            $groups_ids        = array_values($groups_ids);
134
-            $groups_instr_view = new XoopsFormCheckBox(_AM_INSTRUCTION_PERM_VIEW, 'groups_instr_view', $groups_ids);
135
-        } else {
136
-            $groups_instr_view = new XoopsFormCheckBox(_AM_INSTRUCTION_PERM_VIEW, 'groups_instr_view', $full_list);
137
-        }
138
-        $groups_instr_view->addOptionArray($group_list);
139
-        $form->addElement($groups_instr_view);
140
-
141
-        // Права на отправку
142
-        $groups_ids = [];
143
-        if (!$this->isNew()) {
144
-            $groups_ids          = $gpermHandler->getGroupIds('instruction_submit', $this->getVar('cid'), $GLOBALS['xoopsModule']->getVar('mid'));
145
-            $groups_ids          = array_values($groups_ids);
146
-            $groups_instr_submit = new XoopsFormCheckBox(_AM_INSTRUCTION_PERM_SUBMIT, 'groups_instr_submit', $groups_ids);
147
-        } else {
148
-            $groups_instr_submit = new XoopsFormCheckBox(_AM_INSTRUCTION_PERM_SUBMIT, 'groups_instr_submit', $full_list);
149
-        }
150
-        $groups_instr_submit->addOptionArray($group_list);
151
-        $form->addElement($groups_instr_submit);
152
-
153
-        // Права на редактирование
154
-        $groups_ids = [];
155
-        if (!$this->isNew()) {
156
-            $groups_ids        = $gpermHandler->getGroupIds('instruction_edit', $this->getVar('cid'), $GLOBALS['xoopsModule']->getVar('mid'));
157
-            $groups_ids        = array_values($groups_ids);
158
-            $groups_instr_edit = new XoopsFormCheckBox(_AM_INSTRUCTION_PERM_EDIT, 'groups_instr_edit', $groups_ids);
159
-        } else {
160
-            $groups_instr_edit = new XoopsFormCheckBox(_AM_INSTRUCTION_PERM_EDIT, 'groups_instr_edit', $full_list);
161
-        }
162
-        $groups_instr_edit->addOptionArray($group_list);
163
-        $form->addElement($groups_instr_edit);
164
-
165
-        // ==========================================================
166
-        // ==========================================================
167
-
168
-        // Если мы редактируем категорию
169
-        if (!$this->isNew()) {
170
-            $form->addElement(new XoopsFormHidden('cid', $this->getVar('cid')));
171
-            //$form->addElement( new XoopsFormHidden( 'catmodify', true));
172
-        }
173
-        //
174
-        $form->addElement(new XoopsFormHidden('op', 'savecat'));
175
-        // Кнопка
176
-        $button_tray = new XoopsFormElementTray('', '');
177
-        $submit_btn  = new XoopsFormButton('', 'submit', _SUBMIT, 'submit');
178
-        $button_tray->addElement($submit_btn);
179
-        $cancel_btn = new XoopsFormButton('', 'cancel', _CANCEL, 'cancel');
180
-        $cancel_btn->setExtra('onclick="javascript:history.go(-1);"');
181
-        $button_tray->addElement($cancel_btn);
182
-        $form->addElement($button_tray);
183
-
184
-        return $form;
185
-    }
82
+		// Родительская категория
83
+		$instructioncatHandler = xoops_getModuleHandler('category', 'instruction');
84
+		$criteria              = new CriteriaCompo();
85
+		// Если мы редактируем, то убрать текущую категорию из списка выбора родительской
86
+		if (!$this->isNew()) {
87
+			$criteria->add(new Criteria('cid', $this->getVar('cid'), '<>'));
88
+		}
89
+		$criteria->setSort('weight ASC, title');
90
+		$criteria->setOrder('ASC');
91
+		$instructioncat_arr = $instructioncatHandler->getall($criteria);
92
+		unset($criteria);
93
+		// Подключаем трей
94
+		include_once $GLOBALS['xoops']->path('class/tree.php');
95
+		$mytree = new XoopsObjectTree($instructioncat_arr, 'cid', 'pid');
96
+
97
+		//        $form->addElement(new XoopsFormLabel(_AM_INSTRUCTION_PCATC, $mytree->makeSelBox('pid', 'title', '--', $this->getVar('pid'), true)));
98
+		$moduleDirName = basename(__DIR__);
99
+		if (false !== ($moduleHelper = Xmf\Module\Helper::getHelper($moduleDirName))) {
100
+		} else {
101
+			$moduleHelper = Xmf\Module\Helper::getHelper('system');
102
+		}
103
+		$module = $moduleHelper->getModule();
104
+
105
+		if (InstructionUtility::checkVerXoops($module, '2.5.9')) {
106
+			$mytree_select = $mytree->makeSelectElement('pid', 'title', '--', $this->getVar('pid'), true, 0, '', _AM_INSTRUCTION_PCATC);
107
+			$form->addElement($mytree_select);
108
+		} else {
109
+			$form->addElement(new XoopsFormLabel(_AM_INSTRUCTION_PCATC, $mytree->makeSelBox('pid', 'title', '--', $this->getVar('pid'), true)));
110
+		}
111
+
112
+		// Вес
113
+		$form->addElement(new XoopsFormText(_AM_INSTRUCTION_WEIGHTC, 'weight', 5, 5, $this->getVar('weight')), true);
114
+		// Мета-теги ключевых слов
115
+		$form->addElement(new XoopsFormText(_AM_INSTRUCTION_METAKEYWORDSC, 'metakeywords', 50, 255, $this->getVar('metakeywords')), false);
116
+		// Мета-теги описания
117
+		$form->addElement(new XoopsFormText(_AM_INSTRUCTION_METADESCRIPTIONC, 'metadescription', 50, 255, $this->getVar('metadescription')), false);
118
+
119
+		// ==========================================================
120
+		// ==========================================================
121
+
122
+		// Права
123
+		$memberHandler = xoops_getHandler('member');
124
+		$group_list    = $memberHandler->getGroupList();
125
+		$gpermHandler  = xoops_getHandler('groupperm');
126
+		$full_list     = array_keys($group_list);
127
+
128
+		// Права на просмотр
129
+		$groups_ids = [];
130
+		// Если мы редактируем
131
+		if (!$this->isNew()) {
132
+			$groups_ids        = $gpermHandler->getGroupIds('instruction_view', $this->getVar('cid'), $GLOBALS['xoopsModule']->getVar('mid'));
133
+			$groups_ids        = array_values($groups_ids);
134
+			$groups_instr_view = new XoopsFormCheckBox(_AM_INSTRUCTION_PERM_VIEW, 'groups_instr_view', $groups_ids);
135
+		} else {
136
+			$groups_instr_view = new XoopsFormCheckBox(_AM_INSTRUCTION_PERM_VIEW, 'groups_instr_view', $full_list);
137
+		}
138
+		$groups_instr_view->addOptionArray($group_list);
139
+		$form->addElement($groups_instr_view);
140
+
141
+		// Права на отправку
142
+		$groups_ids = [];
143
+		if (!$this->isNew()) {
144
+			$groups_ids          = $gpermHandler->getGroupIds('instruction_submit', $this->getVar('cid'), $GLOBALS['xoopsModule']->getVar('mid'));
145
+			$groups_ids          = array_values($groups_ids);
146
+			$groups_instr_submit = new XoopsFormCheckBox(_AM_INSTRUCTION_PERM_SUBMIT, 'groups_instr_submit', $groups_ids);
147
+		} else {
148
+			$groups_instr_submit = new XoopsFormCheckBox(_AM_INSTRUCTION_PERM_SUBMIT, 'groups_instr_submit', $full_list);
149
+		}
150
+		$groups_instr_submit->addOptionArray($group_list);
151
+		$form->addElement($groups_instr_submit);
152
+
153
+		// Права на редактирование
154
+		$groups_ids = [];
155
+		if (!$this->isNew()) {
156
+			$groups_ids        = $gpermHandler->getGroupIds('instruction_edit', $this->getVar('cid'), $GLOBALS['xoopsModule']->getVar('mid'));
157
+			$groups_ids        = array_values($groups_ids);
158
+			$groups_instr_edit = new XoopsFormCheckBox(_AM_INSTRUCTION_PERM_EDIT, 'groups_instr_edit', $groups_ids);
159
+		} else {
160
+			$groups_instr_edit = new XoopsFormCheckBox(_AM_INSTRUCTION_PERM_EDIT, 'groups_instr_edit', $full_list);
161
+		}
162
+		$groups_instr_edit->addOptionArray($group_list);
163
+		$form->addElement($groups_instr_edit);
164
+
165
+		// ==========================================================
166
+		// ==========================================================
167
+
168
+		// Если мы редактируем категорию
169
+		if (!$this->isNew()) {
170
+			$form->addElement(new XoopsFormHidden('cid', $this->getVar('cid')));
171
+			//$form->addElement( new XoopsFormHidden( 'catmodify', true));
172
+		}
173
+		//
174
+		$form->addElement(new XoopsFormHidden('op', 'savecat'));
175
+		// Кнопка
176
+		$button_tray = new XoopsFormElementTray('', '');
177
+		$submit_btn  = new XoopsFormButton('', 'submit', _SUBMIT, 'submit');
178
+		$button_tray->addElement($submit_btn);
179
+		$cancel_btn = new XoopsFormButton('', 'cancel', _CANCEL, 'cancel');
180
+		$cancel_btn->setExtra('onclick="javascript:history.go(-1);"');
181
+		$button_tray->addElement($cancel_btn);
182
+		$form->addElement($button_tray);
183
+
184
+		return $form;
185
+	}
186 186
 }
187 187
 
188 188
 class InstructionCategoryHandler extends XoopsPersistableObjectHandler
189 189
 {
190
-    public function __construct($db)
191
-    {
192
-        parent::__construct($db, 'instruction_cat', 'InstructionCategory', 'cid', 'title');
193
-    }
194
-
195
-    // Обновление даты обновления категории
196
-    public function updateDateupdated($cid = 0, $time = null)
197
-    {
198
-        // Если не передали время
199
-        $time = null === $time ? time() : (int)$time;
200
-        //
201
-        $sql = sprintf('UPDATE `%s` SET `dateupdated` = %u WHERE `cid` = %u', $this->table, $time, (int)$cid);
202
-        //
203
-        return $this->db->query($sql);
204
-    }
190
+	public function __construct($db)
191
+	{
192
+		parent::__construct($db, 'instruction_cat', 'InstructionCategory', 'cid', 'title');
193
+	}
194
+
195
+	// Обновление даты обновления категории
196
+	public function updateDateupdated($cid = 0, $time = null)
197
+	{
198
+		// Если не передали время
199
+		$time = null === $time ? time() : (int)$time;
200
+		//
201
+		$sql = sprintf('UPDATE `%s` SET `dateupdated` = %u WHERE `cid` = %u', $this->table, $time, (int)$cid);
202
+		//
203
+		return $this->db->query($sql);
204
+	}
205 205
 }
Please login to merge, or discard this patch.
class/instruction.php 1 patch
Indentation   +130 added lines, -130 removed lines patch added patch discarded remove patch
@@ -8,138 +8,138 @@
 block discarded – undo
8 8
 
9 9
 class InstructionInstruction extends XoopsObject
10 10
 {
11
-    // constructor
12
-    public function __construct()
13
-    {
14
-        //		$this->XoopsObject();
15
-        $this->initVar('instrid', XOBJ_DTYPE_INT, null, false, 11);
16
-        $this->initVar('cid', XOBJ_DTYPE_INT, 0, false, 5);
17
-        $this->initVar('uid', XOBJ_DTYPE_INT, 0, false, 11);
18
-        $this->initVar('title', XOBJ_DTYPE_TXTBOX, '', false);
19
-        $this->initVar('status', XOBJ_DTYPE_INT, 0, false, 1);
20
-        $this->initVar('pages', XOBJ_DTYPE_INT, 0, false, 11);
21
-        $this->initVar('description', XOBJ_DTYPE_TXTAREA, null, false);
22
-        $this->initVar('datecreated', XOBJ_DTYPE_INT, 0, false, 10);
23
-        $this->initVar('dateupdated', XOBJ_DTYPE_INT, 0, false, 10);
24
-        $this->initVar('metakeywords', XOBJ_DTYPE_TXTBOX, '', false);
25
-        $this->initVar('metadescription', XOBJ_DTYPE_TXTBOX, '', false);
26
-
27
-        // Нет в таблице
28
-        $this->initVar('dohtml', XOBJ_DTYPE_INT, 1, false);
29
-        $this->initVar('dobr', XOBJ_DTYPE_INT, 0, false);
30
-    }
31
-
32
-    public function InstructionInstruction()
33
-    {
34
-        $this->__construct();
35
-    }
36
-
37
-    public function get_new_enreg()
38
-    {
39
-        $new_enreg = $GLOBALS['xoopsDB']->getInsertId();
40
-        return $new_enreg;
41
-    }
42
-
43
-    // Получаем форму
44
-    public function getForm($action = false)
45
-    {
46
-        global $xoopsDB, $xoopsModule, $xoopsModuleConfig;
47
-        // Если нет $action
48
-        if (false === $action) {
49
-            $action = xoops_getenv('REQUEST_URI');
50
-        }
51
-        // Подключаем формы
52
-        include_once $GLOBALS['xoops']->path('class/xoopsformloader.php');
53
-
54
-        // Название формы
55
-        $title = $this->isNew() ? sprintf(_AM_INSTRUCTION_FORMADDINSTR) : sprintf(_AM_INSTRUCTION_FORMEDITINSTR);
56
-
57
-        // Форма
58
-        $form = new XoopsThemeForm($title, 'forminstr', $action, 'post', true);
59
-        //$form->setExtra('enctype="multipart/form-data"');
60
-        // Название инструкции
61
-        $form->addElement(new XoopsFormText(_AM_INSTRUCTION_TITLEC, 'title', 50, 255, $this->getVar('title')), true);
62
-        // Категория
63
-        $instructioncatHandler = xoops_getModuleHandler('category', 'instruction');
64
-        $criteria              = new CriteriaCompo();
65
-        $criteria->setSort('weight ASC, title');
66
-        $criteria->setOrder('ASC');
67
-        $instructioncat_arr = $instructioncatHandler->getall($criteria);
68
-        unset($criteria);
69
-        // Подключаем трей
70
-        include_once $GLOBALS['xoops']->path('class/tree.php');
71
-        $mytree = new XoopsObjectTree($instructioncat_arr, 'cid', 'pid');
72
-        $form->addElement(new XoopsFormLabel(_AM_INSTRUCTION_CATC, $mytree->makeSelBox('cid', 'title', '--', $this->getVar('cid'), true)));
73
-        // Описание
74
-        $form->addElement(InstructionUtility::getWysiwygForm(_AM_INSTRUCTION_DESCRIPTIONC, 'description', $this->getVar('description', 'e')), true);
75
-        // Статус
76
-        $form->addElement(new XoopsFormRadioYN(_AM_INSTRUCTION_ACTIVEC, 'status', $this->getVar('status')), false);
77
-
78
-        // Теги
79
-        if (is_dir('../../tag') || is_dir('../tag')) {
80
-            $dir_tag_ok = true;
81
-        } else {
82
-            $dir_tag_ok = false;
83
-        }
84
-        // Если влючена поддержка тегов и есть модуль tag
85
-        if (xoops_getModuleOption('usetag', 'instruction') && $dir_tag_ok) {
86
-            $itemIdForTag = $this->isNew() ? 0 : $this->getVar('instrid');
87
-            // Подключаем форму тегов
88
-            include_once $GLOBALS['xoops']->path('modules/tag/include/formtag.php');
89
-            // Добавляем элемент в форму
90
-            $form->addElement(new XoopsFormTag('tag', 60, 255, $itemIdForTag, 0));
91
-        }
92
-
93
-        // Мета-теги ключевых слов
94
-        $form->addElement(new XoopsFormText(_AM_INSTRUCTION_METAKEYWORDSC, 'metakeywords', 50, 255, $this->getVar('metakeywords')), false);
95
-        // Мета-теги описания
96
-        $form->addElement(new XoopsFormText(_AM_INSTRUCTION_METADESCRIPTIONC, 'metadescription', 50, 255, $this->getVar('metadescription')), false);
97
-
98
-        // Если мы редактируем категорию
99
-        if (!$this->isNew()) {
100
-            $form->addElement(new XoopsFormHidden('instrid', $this->getVar('instrid')));
101
-        }
102
-        //
103
-        $form->addElement(new XoopsFormHidden('op', 'saveinstr'));
104
-        // Кнопка
105
-        $form->addElement(new XoopsFormButton('', 'submit', _SUBMIT, 'submit'));
106
-        return $form;
107
-    }
11
+	// constructor
12
+	public function __construct()
13
+	{
14
+		//		$this->XoopsObject();
15
+		$this->initVar('instrid', XOBJ_DTYPE_INT, null, false, 11);
16
+		$this->initVar('cid', XOBJ_DTYPE_INT, 0, false, 5);
17
+		$this->initVar('uid', XOBJ_DTYPE_INT, 0, false, 11);
18
+		$this->initVar('title', XOBJ_DTYPE_TXTBOX, '', false);
19
+		$this->initVar('status', XOBJ_DTYPE_INT, 0, false, 1);
20
+		$this->initVar('pages', XOBJ_DTYPE_INT, 0, false, 11);
21
+		$this->initVar('description', XOBJ_DTYPE_TXTAREA, null, false);
22
+		$this->initVar('datecreated', XOBJ_DTYPE_INT, 0, false, 10);
23
+		$this->initVar('dateupdated', XOBJ_DTYPE_INT, 0, false, 10);
24
+		$this->initVar('metakeywords', XOBJ_DTYPE_TXTBOX, '', false);
25
+		$this->initVar('metadescription', XOBJ_DTYPE_TXTBOX, '', false);
26
+
27
+		// Нет в таблице
28
+		$this->initVar('dohtml', XOBJ_DTYPE_INT, 1, false);
29
+		$this->initVar('dobr', XOBJ_DTYPE_INT, 0, false);
30
+	}
31
+
32
+	public function InstructionInstruction()
33
+	{
34
+		$this->__construct();
35
+	}
36
+
37
+	public function get_new_enreg()
38
+	{
39
+		$new_enreg = $GLOBALS['xoopsDB']->getInsertId();
40
+		return $new_enreg;
41
+	}
42
+
43
+	// Получаем форму
44
+	public function getForm($action = false)
45
+	{
46
+		global $xoopsDB, $xoopsModule, $xoopsModuleConfig;
47
+		// Если нет $action
48
+		if (false === $action) {
49
+			$action = xoops_getenv('REQUEST_URI');
50
+		}
51
+		// Подключаем формы
52
+		include_once $GLOBALS['xoops']->path('class/xoopsformloader.php');
53
+
54
+		// Название формы
55
+		$title = $this->isNew() ? sprintf(_AM_INSTRUCTION_FORMADDINSTR) : sprintf(_AM_INSTRUCTION_FORMEDITINSTR);
56
+
57
+		// Форма
58
+		$form = new XoopsThemeForm($title, 'forminstr', $action, 'post', true);
59
+		//$form->setExtra('enctype="multipart/form-data"');
60
+		// Название инструкции
61
+		$form->addElement(new XoopsFormText(_AM_INSTRUCTION_TITLEC, 'title', 50, 255, $this->getVar('title')), true);
62
+		// Категория
63
+		$instructioncatHandler = xoops_getModuleHandler('category', 'instruction');
64
+		$criteria              = new CriteriaCompo();
65
+		$criteria->setSort('weight ASC, title');
66
+		$criteria->setOrder('ASC');
67
+		$instructioncat_arr = $instructioncatHandler->getall($criteria);
68
+		unset($criteria);
69
+		// Подключаем трей
70
+		include_once $GLOBALS['xoops']->path('class/tree.php');
71
+		$mytree = new XoopsObjectTree($instructioncat_arr, 'cid', 'pid');
72
+		$form->addElement(new XoopsFormLabel(_AM_INSTRUCTION_CATC, $mytree->makeSelBox('cid', 'title', '--', $this->getVar('cid'), true)));
73
+		// Описание
74
+		$form->addElement(InstructionUtility::getWysiwygForm(_AM_INSTRUCTION_DESCRIPTIONC, 'description', $this->getVar('description', 'e')), true);
75
+		// Статус
76
+		$form->addElement(new XoopsFormRadioYN(_AM_INSTRUCTION_ACTIVEC, 'status', $this->getVar('status')), false);
77
+
78
+		// Теги
79
+		if (is_dir('../../tag') || is_dir('../tag')) {
80
+			$dir_tag_ok = true;
81
+		} else {
82
+			$dir_tag_ok = false;
83
+		}
84
+		// Если влючена поддержка тегов и есть модуль tag
85
+		if (xoops_getModuleOption('usetag', 'instruction') && $dir_tag_ok) {
86
+			$itemIdForTag = $this->isNew() ? 0 : $this->getVar('instrid');
87
+			// Подключаем форму тегов
88
+			include_once $GLOBALS['xoops']->path('modules/tag/include/formtag.php');
89
+			// Добавляем элемент в форму
90
+			$form->addElement(new XoopsFormTag('tag', 60, 255, $itemIdForTag, 0));
91
+		}
92
+
93
+		// Мета-теги ключевых слов
94
+		$form->addElement(new XoopsFormText(_AM_INSTRUCTION_METAKEYWORDSC, 'metakeywords', 50, 255, $this->getVar('metakeywords')), false);
95
+		// Мета-теги описания
96
+		$form->addElement(new XoopsFormText(_AM_INSTRUCTION_METADESCRIPTIONC, 'metadescription', 50, 255, $this->getVar('metadescription')), false);
97
+
98
+		// Если мы редактируем категорию
99
+		if (!$this->isNew()) {
100
+			$form->addElement(new XoopsFormHidden('instrid', $this->getVar('instrid')));
101
+		}
102
+		//
103
+		$form->addElement(new XoopsFormHidden('op', 'saveinstr'));
104
+		// Кнопка
105
+		$form->addElement(new XoopsFormButton('', 'submit', _SUBMIT, 'submit'));
106
+		return $form;
107
+	}
108 108
 }
109 109
 
110 110
 class InstructionInstructionHandler extends XoopsPersistableObjectHandler
111 111
 {
112
-    public function __construct($db)
113
-    {
114
-        parent::__construct($db, 'instruction_instr', 'InstructionInstruction', 'instrid', 'title');
115
-    }
116
-
117
-    // Обновление даты обновления инструкций
118
-    public function updateDateupdated($instrid = 0, $time = null)
119
-    {
120
-        // Если не передали время
121
-        $time = null === $time ? time() : (int)$time;
122
-        //
123
-        $sql = sprintf('UPDATE `%s` SET `dateupdated` = %u WHERE `instrid` = %u', $this->table, $time, (int)$instrid);
124
-        //
125
-        return $this->db->query($sql);
126
-    }
127
-
128
-    // Обновление числа страниц
129
-    public function updatePages($instrid = 0)
130
-    {
131
-        $inspageHandler = xoops_getModuleHandler('page', 'instruction');
132
-        // Находим число активных страниц
133
-        $criteria = new CriteriaCompo();
134
-        $criteria->add(new Criteria('instrid', $instrid, '='));
135
-        $criteria->add(new Criteria('status ', '0', '>'));
136
-        // Число страниц
137
-        $pages = $inspageHandler->getCount($criteria);
138
-        unset($criteria);
139
-
140
-        // Сохраняем это число
141
-        $sql = sprintf('UPDATE `%s` SET `pages` = %u, `dateupdated` = %u WHERE `instrid` = %u', $this->table, $pages, time(), $instrid);
142
-        //
143
-        return $this->db->query($sql);
144
-    }
112
+	public function __construct($db)
113
+	{
114
+		parent::__construct($db, 'instruction_instr', 'InstructionInstruction', 'instrid', 'title');
115
+	}
116
+
117
+	// Обновление даты обновления инструкций
118
+	public function updateDateupdated($instrid = 0, $time = null)
119
+	{
120
+		// Если не передали время
121
+		$time = null === $time ? time() : (int)$time;
122
+		//
123
+		$sql = sprintf('UPDATE `%s` SET `dateupdated` = %u WHERE `instrid` = %u', $this->table, $time, (int)$instrid);
124
+		//
125
+		return $this->db->query($sql);
126
+	}
127
+
128
+	// Обновление числа страниц
129
+	public function updatePages($instrid = 0)
130
+	{
131
+		$inspageHandler = xoops_getModuleHandler('page', 'instruction');
132
+		// Находим число активных страниц
133
+		$criteria = new CriteriaCompo();
134
+		$criteria->add(new Criteria('instrid', $instrid, '='));
135
+		$criteria->add(new Criteria('status ', '0', '>'));
136
+		// Число страниц
137
+		$pages = $inspageHandler->getCount($criteria);
138
+		unset($criteria);
139
+
140
+		// Сохраняем это число
141
+		$sql = sprintf('UPDATE `%s` SET `pages` = %u, `dateupdated` = %u WHERE `instrid` = %u', $this->table, $pages, time(), $instrid);
142
+		//
143
+		return $this->db->query($sql);
144
+	}
145 145
 }
Please login to merge, or discard this patch.
class/page.php 1 patch
Indentation   +200 added lines, -200 removed lines patch added patch discarded remove patch
@@ -8,208 +8,208 @@
 block discarded – undo
8 8
 
9 9
 class InstructionPage extends XoopsObject
10 10
 {
11
-    // constructor
12
-    public function __construct()
13
-    {
14
-        //	$this->XoopsObject();
15
-        $this->initVar('pageid', XOBJ_DTYPE_INT, null, false, 11);
16
-        $this->initVar('pid', XOBJ_DTYPE_INT, 0, false, 11);
17
-        $this->initVar('instrid', XOBJ_DTYPE_INT, 0, false, 11);
18
-        $this->initVar('uid', XOBJ_DTYPE_INT, 0, false, 11);
19
-        $this->initVar('title', XOBJ_DTYPE_TXTBOX, '', false, 255);
20
-        $this->initVar('status', XOBJ_DTYPE_INT, 1, false, 1);
21
-        $this->initVar('type', XOBJ_DTYPE_INT, 1, false, 1);
22
-        $this->initVar('hometext', XOBJ_DTYPE_TXTAREA, null, false);
23
-        $this->initVar('footnote', XOBJ_DTYPE_TXTAREA, '', false);
24
-        $this->initVar('weight', XOBJ_DTYPE_INT, 0, false, 11);
25
-        $this->initVar('keywords', XOBJ_DTYPE_TXTBOX, '', false, 255);
26
-        $this->initVar('description', XOBJ_DTYPE_TXTBOX, '', false, 255);
27
-        $this->initVar('comments', XOBJ_DTYPE_INT, 0, false, 11);
28
-        $this->initVar('datecreated', XOBJ_DTYPE_INT, 0, false, 10);
29
-        $this->initVar('dateupdated', XOBJ_DTYPE_INT, 0, false, 10);
30
-        $this->initVar('dohtml', XOBJ_DTYPE_INT, 1, false, 1);
31
-        $this->initVar('dosmiley', XOBJ_DTYPE_INT, 0, false, 1);
32
-        $this->initVar('doxcode', XOBJ_DTYPE_INT, 1, false, 1);
33
-        $this->initVar('dobr', XOBJ_DTYPE_INT, 0, false, 1);
34
-    }
35
-
36
-    public function InstructionPage()
37
-    {
38
-        $this->__construct();
39
-    }
40
-
41
-    public function get_new_enreg()
42
-    {
43
-        $new_enreg = $GLOBALS['xoopsDB']->getInsertId();
44
-        return $new_enreg;
45
-    }
46
-
47
-    // Получаем форму
48
-    public function getForm($action = false, $instrid = 0)
49
-    {
50
-        // Если нет $action
51
-        if (false === $action) {
52
-            $action = xoops_getenv('REQUEST_URI');
53
-        }
54
-
55
-        // Подключаем формы
56
-        include_once $GLOBALS['xoops']->path('class/xoopsformloader.php');
57
-        // Подключаем типы страниц
58
-        $pagetypes = include $GLOBALS['xoops']->path('modules/instruction/include/pagetypes.inc.php');
59
-
60
-        // Название формы
61
-        $title = $this->isNew() ? sprintf(_AM_INSTRUCTION_FORMADDPAGE) : sprintf(_AM_INSTRUCTION_FORMEDITPAGE);
62
-
63
-        // Форма
64
-        $form = new XoopsThemeForm($title, 'instr_form_page', $action, 'post', true);
65
-        // Название
66
-        $form->addElement(new XoopsFormText(_AM_INSTRUCTION_TITLEC, 'title', 50, 255, $this->getVar('title')), true);
67
-
68
-        // Родительская страница
69
-        $inspageHandler = xoops_getModuleHandler('page', 'instruction');
70
-        $criteria       = new CriteriaCompo();
71
-        // ID инструкции в которой данная страница
72
-        $instrid_page = $this->isNew() ? $instrid : $this->getVar('instrid');
73
-        // Находим все страницы данной инструкции
74
-        $criteria->add(new Criteria('instrid', $instrid_page, '='));
75
-        // Если мы редактируем, то убрать текущую страницу из списка выбора родительской
76
-        if (!$this->isNew()) {
77
-            $criteria->add(new Criteria('pageid', $this->getVar('pageid'), '<>'));
78
-        }
79
-        $criteria->setSort('weight');
80
-        $criteria->setOrder('ASC');
81
-        $inspage_arr = $inspageHandler->getall($criteria);
82
-        unset($criteria);
83
-        // Подключаем трей
84
-        include_once $GLOBALS['xoops']->path('class/tree.php');
85
-        $mytree = new XoopsObjectTree($inspage_arr, 'pageid', 'pid');
86
-        $form->addElement(new XoopsFormLabel(_AM_INSTRUCTION_PPAGEC, $mytree->makeSelBox('pid', 'title', '--', $this->getVar('pid'), true)));
87
-
88
-        // Вес
89
-        $form->addElement(new XoopsFormText(_AM_INSTRUCTION_WEIGHTC, 'weight', 5, 5, $this->getVar('weight')), true);
90
-        // Основной текст
91
-        $form->addElement(InstructionUtility::getWysiwygForm(_AM_INSTRUCTION_HOMETEXTC, 'hometext', $this->getVar('hometext', 'e')), true);
92
-        // Сноска
93
-        $form_footnote = new XoopsFormTextArea(_AM_INSTRUCTION_FOOTNOTEC, 'footnote', $this->getVar('footnote', 'e'));
94
-        $form_footnote->setDescription(_AM_INSTRUCTION_FOOTNOTE_DSC);
95
-        $form->addElement($form_footnote, false);
96
-        unset($form_footnote);
97
-        // Статус
98
-        $form->addElement(new XoopsFormRadioYN(_AM_INSTRUCTION_ACTIVEC, 'status', $this->getVar('status')), false);
99
-        // Тип страницы
100
-        $form_type = new XoopsFormSelect(_AM_INSTR_PAGETYPEC, 'type', $this->getVar('type'));
101
-        $form_type->setDescription(_AM_INSTR_PAGETYPEC_DESC);
102
-        $form_type->addOptionArray($pagetypes);
103
-        $form->addElement($form_type, false);
104
-        // Мета-теги ключевых слов
105
-        $form->addElement(new XoopsFormText(_AM_INSTRUCTION_METAKEYWORDSC, 'keywords', 50, 255, $this->getVar('keywords')), false);
106
-        // Мета-теги описания
107
-        $form->addElement(new XoopsFormText(_AM_INSTRUCTION_METADESCRIPTIONC, 'description', 50, 255, $this->getVar('description')), false);
108
-
109
-        // Настройки
110
-        $option_tray = new XoopsFormElementTray(_OPTIONS, '<br>');
111
-        // HTML
112
-        $html_checkbox = new XoopsFormCheckBox('', 'dohtml', $this->getVar('dohtml'));
113
-        $html_checkbox->addOption(1, _AM_INSTR_DOHTML);
114
-        $option_tray->addElement($html_checkbox);
115
-        // Смайлы
116
-        $smiley_checkbox = new XoopsFormCheckBox('', 'dosmiley', $this->getVar('dosmiley'));
117
-        $smiley_checkbox->addOption(1, _AM_INSTR_DOSMILEY);
118
-        $option_tray->addElement($smiley_checkbox);
119
-        // ББ коды
120
-        $xcode_checkbox = new XoopsFormCheckBox('', 'doxcode', $this->getVar('doxcode'));
121
-        $xcode_checkbox->addOption(1, _AM_INSTR_DOXCODE);
122
-        $option_tray->addElement($xcode_checkbox);
123
-        //
124
-        $br_checkbox = new XoopsFormCheckBox('', 'dobr', $this->getVar('dobr'));
125
-        $br_checkbox->addOption(1, _AM_INSTR_DOAUTOWRAP);
126
-        $option_tray->addElement($br_checkbox);
127
-        //
128
-        $form->addElement($option_tray);
129
-
130
-        // Если мы редактируем страницу
131
-        if (!$this->isNew()) {
132
-            $form->addElement(new XoopsFormHidden('pageid', $this->getVar('pageid')));
133
-        } else {
134
-            $form->addElement(new XoopsFormHidden('pageid', 0));
135
-        }
136
-        // ID инструкции
137
-        if ($instrid) {
138
-            $form->addElement(new XoopsFormHidden('instrid', $instrid));
139
-        } else {
140
-            $form->addElement(new XoopsFormHidden('instrid', 0));
141
-        }
142
-        //
143
-        $form->addElement(new XoopsFormHidden('op', 'savepage'));
144
-        // Кнопка
145
-        $button_tray = new XoopsFormElementTray('', '');
146
-        $button_tray->addElement(new XoopsFormButton('', 'submit', _SUBMIT, 'submit'));
147
-        $save_btn = new XoopsFormButton('', 'cancel', _AM_INSTR_SAVEFORM);
148
-        $save_btn->setExtra('onclick="instrSavePage();"');
149
-        $button_tray->addElement($save_btn);
150
-        $form->addElement($button_tray);
151
-
152
-        return $form;
153
-    }
154
-
155
-    //
156
-    public function getInstrid()
157
-    {
158
-        // Возвращаем ID инструкции
159
-        return $this->getVar('instrid');
160
-    }
11
+	// constructor
12
+	public function __construct()
13
+	{
14
+		//	$this->XoopsObject();
15
+		$this->initVar('pageid', XOBJ_DTYPE_INT, null, false, 11);
16
+		$this->initVar('pid', XOBJ_DTYPE_INT, 0, false, 11);
17
+		$this->initVar('instrid', XOBJ_DTYPE_INT, 0, false, 11);
18
+		$this->initVar('uid', XOBJ_DTYPE_INT, 0, false, 11);
19
+		$this->initVar('title', XOBJ_DTYPE_TXTBOX, '', false, 255);
20
+		$this->initVar('status', XOBJ_DTYPE_INT, 1, false, 1);
21
+		$this->initVar('type', XOBJ_DTYPE_INT, 1, false, 1);
22
+		$this->initVar('hometext', XOBJ_DTYPE_TXTAREA, null, false);
23
+		$this->initVar('footnote', XOBJ_DTYPE_TXTAREA, '', false);
24
+		$this->initVar('weight', XOBJ_DTYPE_INT, 0, false, 11);
25
+		$this->initVar('keywords', XOBJ_DTYPE_TXTBOX, '', false, 255);
26
+		$this->initVar('description', XOBJ_DTYPE_TXTBOX, '', false, 255);
27
+		$this->initVar('comments', XOBJ_DTYPE_INT, 0, false, 11);
28
+		$this->initVar('datecreated', XOBJ_DTYPE_INT, 0, false, 10);
29
+		$this->initVar('dateupdated', XOBJ_DTYPE_INT, 0, false, 10);
30
+		$this->initVar('dohtml', XOBJ_DTYPE_INT, 1, false, 1);
31
+		$this->initVar('dosmiley', XOBJ_DTYPE_INT, 0, false, 1);
32
+		$this->initVar('doxcode', XOBJ_DTYPE_INT, 1, false, 1);
33
+		$this->initVar('dobr', XOBJ_DTYPE_INT, 0, false, 1);
34
+	}
35
+
36
+	public function InstructionPage()
37
+	{
38
+		$this->__construct();
39
+	}
40
+
41
+	public function get_new_enreg()
42
+	{
43
+		$new_enreg = $GLOBALS['xoopsDB']->getInsertId();
44
+		return $new_enreg;
45
+	}
46
+
47
+	// Получаем форму
48
+	public function getForm($action = false, $instrid = 0)
49
+	{
50
+		// Если нет $action
51
+		if (false === $action) {
52
+			$action = xoops_getenv('REQUEST_URI');
53
+		}
54
+
55
+		// Подключаем формы
56
+		include_once $GLOBALS['xoops']->path('class/xoopsformloader.php');
57
+		// Подключаем типы страниц
58
+		$pagetypes = include $GLOBALS['xoops']->path('modules/instruction/include/pagetypes.inc.php');
59
+
60
+		// Название формы
61
+		$title = $this->isNew() ? sprintf(_AM_INSTRUCTION_FORMADDPAGE) : sprintf(_AM_INSTRUCTION_FORMEDITPAGE);
62
+
63
+		// Форма
64
+		$form = new XoopsThemeForm($title, 'instr_form_page', $action, 'post', true);
65
+		// Название
66
+		$form->addElement(new XoopsFormText(_AM_INSTRUCTION_TITLEC, 'title', 50, 255, $this->getVar('title')), true);
67
+
68
+		// Родительская страница
69
+		$inspageHandler = xoops_getModuleHandler('page', 'instruction');
70
+		$criteria       = new CriteriaCompo();
71
+		// ID инструкции в которой данная страница
72
+		$instrid_page = $this->isNew() ? $instrid : $this->getVar('instrid');
73
+		// Находим все страницы данной инструкции
74
+		$criteria->add(new Criteria('instrid', $instrid_page, '='));
75
+		// Если мы редактируем, то убрать текущую страницу из списка выбора родительской
76
+		if (!$this->isNew()) {
77
+			$criteria->add(new Criteria('pageid', $this->getVar('pageid'), '<>'));
78
+		}
79
+		$criteria->setSort('weight');
80
+		$criteria->setOrder('ASC');
81
+		$inspage_arr = $inspageHandler->getall($criteria);
82
+		unset($criteria);
83
+		// Подключаем трей
84
+		include_once $GLOBALS['xoops']->path('class/tree.php');
85
+		$mytree = new XoopsObjectTree($inspage_arr, 'pageid', 'pid');
86
+		$form->addElement(new XoopsFormLabel(_AM_INSTRUCTION_PPAGEC, $mytree->makeSelBox('pid', 'title', '--', $this->getVar('pid'), true)));
87
+
88
+		// Вес
89
+		$form->addElement(new XoopsFormText(_AM_INSTRUCTION_WEIGHTC, 'weight', 5, 5, $this->getVar('weight')), true);
90
+		// Основной текст
91
+		$form->addElement(InstructionUtility::getWysiwygForm(_AM_INSTRUCTION_HOMETEXTC, 'hometext', $this->getVar('hometext', 'e')), true);
92
+		// Сноска
93
+		$form_footnote = new XoopsFormTextArea(_AM_INSTRUCTION_FOOTNOTEC, 'footnote', $this->getVar('footnote', 'e'));
94
+		$form_footnote->setDescription(_AM_INSTRUCTION_FOOTNOTE_DSC);
95
+		$form->addElement($form_footnote, false);
96
+		unset($form_footnote);
97
+		// Статус
98
+		$form->addElement(new XoopsFormRadioYN(_AM_INSTRUCTION_ACTIVEC, 'status', $this->getVar('status')), false);
99
+		// Тип страницы
100
+		$form_type = new XoopsFormSelect(_AM_INSTR_PAGETYPEC, 'type', $this->getVar('type'));
101
+		$form_type->setDescription(_AM_INSTR_PAGETYPEC_DESC);
102
+		$form_type->addOptionArray($pagetypes);
103
+		$form->addElement($form_type, false);
104
+		// Мета-теги ключевых слов
105
+		$form->addElement(new XoopsFormText(_AM_INSTRUCTION_METAKEYWORDSC, 'keywords', 50, 255, $this->getVar('keywords')), false);
106
+		// Мета-теги описания
107
+		$form->addElement(new XoopsFormText(_AM_INSTRUCTION_METADESCRIPTIONC, 'description', 50, 255, $this->getVar('description')), false);
108
+
109
+		// Настройки
110
+		$option_tray = new XoopsFormElementTray(_OPTIONS, '<br>');
111
+		// HTML
112
+		$html_checkbox = new XoopsFormCheckBox('', 'dohtml', $this->getVar('dohtml'));
113
+		$html_checkbox->addOption(1, _AM_INSTR_DOHTML);
114
+		$option_tray->addElement($html_checkbox);
115
+		// Смайлы
116
+		$smiley_checkbox = new XoopsFormCheckBox('', 'dosmiley', $this->getVar('dosmiley'));
117
+		$smiley_checkbox->addOption(1, _AM_INSTR_DOSMILEY);
118
+		$option_tray->addElement($smiley_checkbox);
119
+		// ББ коды
120
+		$xcode_checkbox = new XoopsFormCheckBox('', 'doxcode', $this->getVar('doxcode'));
121
+		$xcode_checkbox->addOption(1, _AM_INSTR_DOXCODE);
122
+		$option_tray->addElement($xcode_checkbox);
123
+		//
124
+		$br_checkbox = new XoopsFormCheckBox('', 'dobr', $this->getVar('dobr'));
125
+		$br_checkbox->addOption(1, _AM_INSTR_DOAUTOWRAP);
126
+		$option_tray->addElement($br_checkbox);
127
+		//
128
+		$form->addElement($option_tray);
129
+
130
+		// Если мы редактируем страницу
131
+		if (!$this->isNew()) {
132
+			$form->addElement(new XoopsFormHidden('pageid', $this->getVar('pageid')));
133
+		} else {
134
+			$form->addElement(new XoopsFormHidden('pageid', 0));
135
+		}
136
+		// ID инструкции
137
+		if ($instrid) {
138
+			$form->addElement(new XoopsFormHidden('instrid', $instrid));
139
+		} else {
140
+			$form->addElement(new XoopsFormHidden('instrid', 0));
141
+		}
142
+		//
143
+		$form->addElement(new XoopsFormHidden('op', 'savepage'));
144
+		// Кнопка
145
+		$button_tray = new XoopsFormElementTray('', '');
146
+		$button_tray->addElement(new XoopsFormButton('', 'submit', _SUBMIT, 'submit'));
147
+		$save_btn = new XoopsFormButton('', 'cancel', _AM_INSTR_SAVEFORM);
148
+		$save_btn->setExtra('onclick="instrSavePage();"');
149
+		$button_tray->addElement($save_btn);
150
+		$form->addElement($button_tray);
151
+
152
+		return $form;
153
+	}
154
+
155
+	//
156
+	public function getInstrid()
157
+	{
158
+		// Возвращаем ID инструкции
159
+		return $this->getVar('instrid');
160
+	}
161 161
 }
162 162
 
163 163
 class InstructionPageHandler extends XoopsPersistableObjectHandler
164 164
 {
165
-    public function __construct($db)
166
-    {
167
-        parent::__construct($db, 'instruction_page', 'InstructionPage', 'pageid', 'title');
168
-    }
169
-
170
-    /**
171
-     * Generate function for update user post
172
-     *
173
-     * @ Update user post count after send approve content
174
-     * @ Update user post count after change status content
175
-     * @ Update user post count after delete content
176
-     */
177
-    public function updateposts($uid, $status, $action)
178
-    {
179
-        //
180
-        switch ($action) {
181
-            // Добавление страницы
182
-            case 'add':
183
-                if ($uid && $status) {
184
-                    $user          = new xoopsUser($uid);
185
-                    $memberHandler = xoops_getHandler('member');
186
-                    // Добавялем +1 к комментам
187
-                    $memberHandler->updateUserByField($user, 'posts', $user->getVar('posts') + 1);
188
-                }
189
-                break;
190
-            // Удаление страницы
191
-            case 'delete':
192
-                if ($uid && $status) {
193
-                    $user          = new xoopsUser($uid);
194
-                    $memberHandler = xoops_getHandler('member');
195
-                    // Декримент комментов
196
-                    //$user->setVar( 'posts', $user->getVar( 'posts' ) - 1 );
197
-                    // Сохраняем
198
-                    $memberHandler->updateUserByField($user, 'posts', $user->getVar('posts') - 1);
199
-                }
200
-                break;
201
-
202
-            case 'status':
203
-                if ($uid) {
204
-                    $user          = new xoopsUser($uid);
205
-                    $memberHandler = xoops_getHandler('member');
206
-                    if ($status) {
207
-                        $memberHandler->updateUserByField($user, 'posts', $user->getVar('posts') - 1);
208
-                    } else {
209
-                        $memberHandler->updateUserByField($user, 'posts', $user->getVar('posts') + 1);
210
-                    }
211
-                }
212
-                break;
213
-        }
214
-    }
165
+	public function __construct($db)
166
+	{
167
+		parent::__construct($db, 'instruction_page', 'InstructionPage', 'pageid', 'title');
168
+	}
169
+
170
+	/**
171
+	 * Generate function for update user post
172
+	 *
173
+	 * @ Update user post count after send approve content
174
+	 * @ Update user post count after change status content
175
+	 * @ Update user post count after delete content
176
+	 */
177
+	public function updateposts($uid, $status, $action)
178
+	{
179
+		//
180
+		switch ($action) {
181
+			// Добавление страницы
182
+			case 'add':
183
+				if ($uid && $status) {
184
+					$user          = new xoopsUser($uid);
185
+					$memberHandler = xoops_getHandler('member');
186
+					// Добавялем +1 к комментам
187
+					$memberHandler->updateUserByField($user, 'posts', $user->getVar('posts') + 1);
188
+				}
189
+				break;
190
+			// Удаление страницы
191
+			case 'delete':
192
+				if ($uid && $status) {
193
+					$user          = new xoopsUser($uid);
194
+					$memberHandler = xoops_getHandler('member');
195
+					// Декримент комментов
196
+					//$user->setVar( 'posts', $user->getVar( 'posts' ) - 1 );
197
+					// Сохраняем
198
+					$memberHandler->updateUserByField($user, 'posts', $user->getVar('posts') - 1);
199
+				}
200
+				break;
201
+
202
+			case 'status':
203
+				if ($uid) {
204
+					$user          = new xoopsUser($uid);
205
+					$memberHandler = xoops_getHandler('member');
206
+					if ($status) {
207
+						$memberHandler->updateUserByField($user, 'posts', $user->getVar('posts') - 1);
208
+					} else {
209
+						$memberHandler->updateUserByField($user, 'posts', $user->getVar('posts') + 1);
210
+					}
211
+				}
212
+				break;
213
+		}
214
+	}
215 215
 }
Please login to merge, or discard this patch.