Completed
Push — master ( 37052f...d19713 )
by Michael
02:03
created

submit.php (1 issue)

Upgrade to new PHP Analysis Engine

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

1
<?php
2
use Xmf\Request;
3
4
require_once __DIR__ . '/header.php';
5
6
// Объявляем объекты
7
$insinstr_Handler = xoops_getModuleHandler( 'instruction', 'instruction' );
8
//$inscat_Handler =& xoops_getModuleHandler( 'category', 'instruction' );
9
$inspage_Handler = xoops_getModuleHandler( 'page', 'instruction' );
10
11
//
12
$uid = is_object( $GLOBALS['xoopsUser'] ) ? $GLOBALS['xoopsUser']->getVar('uid') : 0;
13
$time = time();
14
15
// ID инструкции
16
$instrid = isset( $_GET['instrid'] ) ? intval( $_GET['instrid'] ) : 0;
17
$instrid = isset( $_POST['instrid'] ) ? intval( $_POST['instrid'] ) : $instrid;
18
// ID страницы
19
$pageid = isset( $_GET['pageid'] ) ? intval( $_GET['pageid'] ) : 0;
20
$pageid = isset( $_POST['pageid'] ) ? intval( $_POST['pageid'] ) : $pageid;
21
// ID категории
22
$cid = isset( $_POST['cid'] ) ? intval( $_POST['cid'] ) : 0;
23
// Вес
24
$weight = isset( $_POST['weight'] ) ? intval( $_POST['weight'] ) : 0;
25
//
26
$pid = isset( $_POST['pid'] ) ? intval( $_POST['pid'] ) : 0;
27
28
// Права на добавление
29
$cat_submit = instr_MygetItemIds( $moduleDirName . '_submit' );
30
// Права на редактирование
31
$cat_edit = instr_MygetItemIds( $moduleDirName . '_edit' );
32
33
$op = isset($_GET['op']) ? $_GET['op'] : '';
34
$op = isset($_POST['op']) ? $_POST['op'] : $op;
35
36
switch ( $op ) {
37
	
38
	case 'editpage':
39
		
40
		// Задание тайтла
41
		$xoopsOption['xoops_pagetitle'] = '';
42
		// Шаблон
43
    $xoopsOption['template_main'] = $moduleDirName . '_editpage.tpl';
44
		// Заголовок
45
		include_once $GLOBALS['xoops']->path('header.php');
46
		
47
		// Если мы редактируем страницу
48
		if( $pageid ) {
49
			// Получаем объект страницы
50
			$objInspage =& $inspage_Handler->get( $pageid );
51
			// ID инструкции
52
			$instrid = $objInspage->getVar( 'instrid' );
53
			// Объект инструкции
54
			$objInsinstr = $insinstr_Handler->get( $instrid );
55
			// Можно ли редактировать инструкцию в данной категории
56
			if( ! in_array( $objInsinstr->getVar('cid'), $cat_edit ) ) redirect_header( 'index.php', 3, _MD_INSTRUCTION_NOPERM_EDITPAGE );
57
		// Создание новой страницы
58
		} elseif( $instrid ) {
59
			
60
			// Если нельзя добавлять не в одну категорию
61
			//if( ! count( $cat_submit ) ) redirect_header( 'index.php', 3, _MD_INSTRUCTION_NOPERM_SUBMIT_PAGE );
62
			// Создаём объект страницы
63
			$objInspage =& $inspage_Handler->create();
64
			// Объект инструкции
65
			$objInsinstr = $insinstr_Handler->get( $instrid );
66
			// Можно ли добавлять инструкции в данной категории
67
			if( ! in_array( $objInsinstr->getVar('cid'), $cat_submit ) ) redirect_header( 'index.php', 3, _MD_INSTRUCTION_NOPERM_SUBMITPAGE );
68
		} else {
69
			redirect_header( 'index.php', 3, _MD_INSTRUCTION_BADREQUEST );
70
		}
71
		
72
		// Информация об инструкции
73
		
74
		// Массив данных об инструкции
75
		$instrs = array();
76
		// ID инструкции
77
		$instrs['instrid'] = $objInsinstr->getVar( 'instrid' );
78
		// Название страницы
79
		$instrs['title'] = $objInsinstr->getVar( 'title' );
80
		// Описание
81
		$instrs['description'] = $objInsinstr->getVar( 'description' );
82
		
83
		// Выводим в шаблон
84
		$GLOBALS['xoopsTpl']->assign( 'insInstr', $instrs );
85
		
86
		//
87
		
88
		$form =& $objInspage->getForm( 'submit.php', $instrid );
89
		// Форма
90
		$GLOBALS['xoopsTpl']->assign( 'insFormPage', $form->render() );
91
		
92
		
93
		// Подвал
94
		include_once $GLOBALS['xoops']->path('footer.php');
95
		
96
		break;
97
	// Сохранение страницы
98
	case 'savepage':
99
		
100
		// Проверка
101 View Code Duplication
		if ( ! $GLOBALS['xoopsSecurity']->check() ) {
102
			redirect_header( 'index.php', 3, implode( ',', $GLOBALS['xoopsSecurity']->getErrors() ) );
103
		}
104
		
105
		$err = false;
106
		$message_err = '';
107
		
108
		// Если мы редактируем
109
		if ( $pageid ) {
110
			$objInspage = $inspage_Handler->get( $pageid );
111
			// Объект инструкции
112
			$objInsinstr = $insinstr_Handler->get( $objInspage->getVar( 'instrid' ) );
113
			// Можно ли редактировать инструкцию в данной категории
114
			if( ! in_array( $objInsinstr->getVar('cid'), $cat_edit ) ) redirect_header( 'index.php', 3, _MD_INSTRUCTION_NOPERM_EDITPAGE );
115
		} elseif( $instrid ) {
116
			$objInspage =& $inspage_Handler->create();
117
			// Объект инструкции
118
			$objInsinstr = $insinstr_Handler->get( $instrid );
119
			// Можно ли добавлять инструкции в данной категории
120
			if( ! in_array( $objInsinstr->getVar('cid'), $cat_submit ) ) redirect_header( 'index.php', 3, _MD_INSTRUCTION_NOPERM_SUBMITPAGE );
121
			
122
			// Если мы создаём страницу необходимо указать к какой инструкции
123
			$objInspage->setVar( 'instrid', $instrid );
124
			// Указываем дату создания
125
			$objInspage->setVar( 'datecreated', $time );
126
			// Указываем пользователя
127
			$objInspage->setVar( 'uid', $uid );
128
		} else {
129
			redirect_header( 'index.php', 3, _MD_INSTRUCTION_BADREQUEST );
130
		}
131
		
132
		// Родительская страница
133
		$objInspage->setVar( 'pid', $pid );
134
		// Дата обновления
135
		$objInspage->setVar( 'dateupdated', $time );
136
		//
137
		$objInspage->setVar( 'title', $_POST['title'] );
138
		$objInspage->setVar( 'weight', $weight );
139
		$objInspage->setVar( 'hometext', $_POST['hometext'] );
140
		// Сноска
141
		$objInspage->setVar( 'footnote', $_POST['footnote'] );
142
		$objInspage->setVar( 'status', $_POST['status'] );
143
		$objInspage->setVar( 'keywords', $_POST['keywords'] );
144
		$objInspage->setVar( 'description', $_POST['description'] );
145
		
146
		// Проверка категорий
147
		if ( ! $pageid && ! $instrid ) {
148
			$err = true;
149
			$message_err .= _MD_INSTRUCTION_ERR_INSTR . '<br />';
150
		}
151
		// Проверка веса
152
		if ( $weight == 0 ){
153
			$err = true;
154
			$message_err .= _MD_INSTRUCTION_ERR_WEIGHT . '<br />';
155
		}
156
		// Проверка родительской страницы
157
		if ( $pageid && ( $pageid == $pid ) ) {
158
			$err = true;
159
			$message_err .= _MD_INSTRUCTION_ERR_PPAGE . '<br />';
160
		}
161
		// Если были ошибки
162
		if ( $err == true ) {
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like you are loosely comparing two booleans. Considering using the strict comparison === instead.

When comparing two booleans, it is generally considered safer to use the strict comparison operator.

Loading history...
163
			// Задание тайтла
164
			$xoopsOption['xoops_pagetitle'] = '';
165
			// Шаблон
166
			$xoopsOption['template_main'] = $moduleDirName . '_savepage.tpl';
167
			// Заголовок
168
			include_once $GLOBALS['xoops']->path('header.php');
169
			// Сообщение об ошибке
170
			$message_err = '<div class="errorMsg" style="text-align: left;">' . $message_err . '</div>';
171
			// Выводим ошибки в шаблон
172
			$GLOBALS['xoopsTpl']->assign( 'insErrorMsg', $message_err );
173
		// Если небыло ошибок
174
		} else {
175
			// Вставляем данные в БД
176
			if ( $inspage_Handler->insert( $objInspage ) ) {
177
				// Если мы редактируем
178
				if ( $pageid ) {
179
					// Обновление даты
180
					$sql = sprintf( "UPDATE %s SET `dateupdated` = %u WHERE `instrid` = %u", $GLOBALS['xoopsDB']->prefix( $moduleDirName . '_instr' ), $time, $instrid );
181
					$GLOBALS['xoopsDB']->query($sql);
182
					// Запись в лог
183
					xoops_loadLanguage( 'main', 'userslog' );
184
					//userslog_insert( $objInsinstr->getVar('title') . ': ' . $objInspage->getVar('title'), _MD_USERSLOG_MODIFY_PAGE );
185
					//
186
					redirect_header( 'index.php', 3, _MD_INSTRUCTION_PAGEMODIFY );
187
				// Если мы добавляем
188
				} else {
189
					// Инкримент комментов
190
					$inspage_Handler->updateposts( $uid, $_POST['status'], 'add' );
191
					// Инкремент страниц и обновление даты
192
					$sql = sprintf( "UPDATE %s SET `pages` = `pages` + 1, `dateupdated` = %u WHERE `instrid` = %u", $GLOBALS['xoopsDB']->prefix( $moduleDirName . '_instr'), $time, $instrid );
193
					$GLOBALS['xoopsDB']->query($sql);
194
					// Запись в лог
195
					xoops_loadLanguage( 'main', 'userslog' );
196
					//userslog_insert( $objInsinstr->getVar('title') . ': ' . $objInspage->getVar('title'), _MD_USERSLOG_SUBMIT_PAGE );
197
					//
198
					redirect_header( 'index.php', 3, _MD_INSTRUCTION_PAGEADDED );
199
				}
200
			}
201
			
202
			// Задание тайтла
203
			$xoopsOption['xoops_pagetitle'] = '';
204
			// Шаблон
205
			$xoopsOption['template_main'] = $moduleDirName . '_savepage.tpl';
206
			// Заголовок
207
			include_once $GLOBALS['xoops']->path('header.php');
208
			
209
			// Выводим ошибки в шаблон
210
			$GLOBALS['xoopsTpl']->assign( 'insErrorMsg', $objInspage->getHtmlErrors() );
211
		}
212
		// Получаем форму
213
		$form =& $objInspage->getForm( 'submit.php', $instrid );
214
		
215
		// Форма
216
		$GLOBALS['xoopsTpl']->assign( 'insFormPage', $form->render() );
217
		
218
		// Подвал
219
		include_once $GLOBALS['xoops']->path('footer.php');
220
		
221
		break;
222
}
223