Skip to content

Commit c1bbb7a

Browse files
committed
Update to Beta 1.3
- Добавлена сортировка статических страниц в ПУ по ID, названию и привилегии - Добавлена сортировка серверов мониторинга в ПУ по ID, названию и адресу - Добавлена сортировка лога действий в ПУ по ID, пользователю, действию и дате - Добавлена сортировка новостей в ПУ по ID, названию и категории - Добавлена сортировка категорий новостей в ПУ по ID и названию - Добавлена сортировка комментариев в ПУ по ID, названию новости и сообщению комментария - Добавлена сортировка просмотров в ПУ по ID, названию новости, пользователю и дате - Добавлена сортировка голосов в ПУ по ID, названию новости, пользователю, значению и дате - Добавлена сортировка пользователей в ПУ по ID, логину, группе, E-Mail'у и IP адресу - Добавлена сортировка групп пользователей в ПУ по ID, названию и описанию - Добавлена сортировка привилегий в ПУ по ID, названию и значению - Добавлена сортировка меню сайта в ПУ по ID, названию и родителю - Добавлена сортировка меню админки в ПУ по ID, названию и группе - Добавлена сортировка групп меню в ПУ по ID, названию и привилегии - Добавлена сортировка иконок в ПУ по ID и названию - Исправлено выпадающее меню новостей за пределы страницы - Исправлено удаление меню сайта - Изменено расположение js скриптов панели управления - В класс core добавлен метод colorize(), который преобразовывает строку в строку с измененным цветом - Добавлена смена цвета групп и отдельных пользователей - В раздел "Комментарии" в ПУ добавлен вывод логина пользователя, добавившего комментарий и сортировка по пользователю - В класс user добавлены свойства login_v2 и group_v2, аналогичные свойствам login и group (соответственно) с обработкой цвета логина и группы
1 parent 934c767 commit c1bbb7a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+719
-161
lines changed

upload/engine/core.class.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,11 @@ public function notify($title='', $text='', $type=2, $url='', $out=false){
165165
exit;
166166
}
167167

168+
public function colorize($str, $color, $format='<font color="{COLOR}">{STRING}</font>'){
169+
170+
return str_replace(array('{COLOR}', '{STRING}'), array($color, $str), $format);
171+
}
172+
168173
/**
169174
* Адрес сайта по умолчанию
170175
* @return String - адрес сайта

upload/engine/user.class.php

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class user{
55
private $core, $db, $config, $lng;
66

77
// Set default user vars
8-
public $email, $login, $group, $group_desc, $password, $salt, $tmp, $ip, $ip_create, $data, $permissions, $permissions_v2, $gender;
8+
public $email, $login, $login_v2, $group, $group_v2, $group_desc, $password, $salt, $tmp, $ip, $ip_create, $data, $permissions, $permissions_v2, $gender;
99

1010
public $id = 0;
1111

@@ -56,8 +56,9 @@ public function __construct($core){
5656
$uid = intval($cookie[0]);
5757
$hash = $cookie[1];
5858

59-
$query = $this->db->query("SELECT `u`.gid, `u`.login, `u`.email, `u`.password, `u`.`salt`, `u`.`tmp`, `u`.ip_create, `u`.`data`, `u`.`is_skin`, `u`.`is_cloak`,
60-
`g`.title, `g`.`description`, `g`.`permissions`, `i`.`money`, `i`.realmoney, `i`.bank
59+
$query = $this->db->query("SELECT `u`.gid, `u`.login, `u`.email, `u`.password, `u`.`salt`, `u`.`tmp`, `u`.ip_create, `u`.`data`, `u`.`is_skin`, `u`.`is_cloak`, `u`.`color`,
60+
`g`.title, `g`.`description`, `g`.`permissions`, `g`.`color` AS `gcolor`,
61+
`i`.`money`, `i`.realmoney, `i`.bank
6162
FROM `mcr_users` AS `u`
6263
INNER JOIN `mcr_groups` AS `g`
6364
ON `g`.id=`u`.gid
@@ -79,14 +80,25 @@ public function __construct($core){
7980
// Check security auth
8081
if($_COOKIE['mcr_user'] !== $ar_hash){ $this->set_unauth(); $this->core->notify(); }
8182

83+
$login = $this->db->HSC($ar['login']);
84+
85+
$color = (!empty($ar['color'])) ? $this->db->HSC($ar['color']) : $this->db->HSC($ar['gcolor']);
86+
87+
$group = $this->db->HSC($ar['title']);
88+
89+
$gcolor = $this->db->HSC($ar['gcolor']);
90+
8291
// Identificator
8392
$this->id = $uid;
8493

8594
// Group identificator
8695
$this->gid = intval($ar['gid']);
8796

8897
// Username
89-
$this->login = $this->db->HSC($ar['login']);
98+
$this->login = $login;
99+
100+
// Username
101+
$this->login_v2 = $this->core->colorize($login, $color);
90102

91103
// E-Mail
92104
$this->email = $this->db->HSC($ar['email']);
@@ -107,7 +119,10 @@ public function __construct($core){
107119
$this->data = json_decode($ar['data']);
108120

109121
// Group title
110-
$this->group = $this->db->HSC($ar['title']);
122+
$this->group = $group;
123+
124+
// Group title with colorize
125+
$this->group_v2 = $this->core->colorize($group, $gcolor);
111126

112127
// Group description
113128
$this->group_desc = $this->db->HSC($ar['description']);

upload/install/tables.sql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ CREATE TABLE IF NOT EXISTS `mcr_groups` (
2323
`id` int(10) NOT NULL AUTO_INCREMENT,
2424
`title` varchar(32) NOT NULL,
2525
`description` varchar(255) NOT NULL,
26+
`color` varchar(24) NOT NULL,
2627
`permissions` text NOT NULL,
2728
PRIMARY KEY (`id`)
2829
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
@@ -362,6 +363,7 @@ CREATE TABLE IF NOT EXISTS `mcr_users` (
362363
`is_cloak` tinyint(1) NOT NULL DEFAULT '0',
363364
`ip_create` varchar(15) CHARACTER SET latin1 NOT NULL DEFAULT '127.0.0.1',
364365
`ip_last` varchar(15) CHARACTER SET latin1 NOT NULL DEFAULT '127.0.0.1',
366+
`color` varchar(24) NOT NULL,
365367
`data` text NOT NULL,
366368
`ban_server` tinyint(1) NOT NULL DEFAULT '0',
367369
PRIMARY KEY (`id`),

upload/language/ru_RU/admin.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
'com_not_exist' => 'Нет доступных комментариев',
2525
'com_col_comment' => 'Комментарий',
2626
'com_col_news' => 'Новость',
27+
'com_col_user' => 'Пользователь',
2728
'com_action' => 'Действие с комментариями',
2829
'com_accept' => 'Вы уверены, что хотите удалить выбранные комментарии',
2930
'com_text' => 'Текст комментария',
@@ -45,6 +46,7 @@
4546
'grp_edit_success' => 'Группа пользователей успешно изменена',
4647
'grp_edit_page_name' => 'Редактирование группы',
4748
'grp_edit_btn' => 'Сохранить',
49+
'grp_e_color_format' => 'Неверный формат цвета',
4850
'grp_empty' => 'Нет доступных групп пользователей',
4951
'grp_field_name' => 'Название',
5052
'grp_field_desc' => 'Описание',
@@ -433,6 +435,7 @@
433435
'user_edit_page_name' => 'Редактирование пользователя',
434436
'user_edit_btn' => 'Сохранить',
435437
'user_add_btn' => 'Добавить',
438+
'user_e_color_format' => 'Неверный формат цвета',
436439
'user_success' => 'Выбранные пользователи успешно',
437440
'user_not_found' => 'Пользователи не найдены',
438441
'user_e_incorrect_fname' => 'Имя может состоять только из букв',

upload/language/ru_RU/system.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@
9090
"email" => "E-Mail",
9191
"pass" => "Пароль",
9292
"group" => "Группа",
93+
"color" => "Цвет",
9394
"firstname" => "Имя",
9495
"lastname" => "Фамилия",
9596
"date_reg" => "Дата регистрации",

upload/modules/admin.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ public function __construct($core){
1919

2020
$this->core->bc = $this->core->gen_bc($bc);
2121

22-
$this->core->header .= '<script src="'.STYLE_URL.'js/admin/global.js"></script>';
22+
$this->core->header .= '<link href="'.STYLE_URL.'css/modules/admin/global.css" rel="stylesheet">';
23+
$this->core->header .= '<script src="'.STYLE_URL.'js/modules/admin/global.js"></script>';
2324
}
2425

2526
public function content(){

upload/modules/admin/comments.class.php

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,37 @@ private function comment_array(){
2828
$end = $this->config->pagin['adm_comments']; // Set end pagination
2929

3030
$where = "";
31+
$sort = "`c`.id";
32+
$sortby = "DESC";
33+
34+
if(isset($_GET['sort']) && !empty($_GET['sort'])){
35+
$expl = explode(' ', $_GET['sort']);
36+
37+
$sortby = ($expl[0]=='asc') ? "ASC" : "DESC";
38+
39+
switch(@$expl[1]){
40+
case 'comment': $sort = "`c`.text_html"; break;
41+
case 'news': $sort = "`n`.title"; break;
42+
case 'user': $sort = "`u`.login"; break;
43+
}
44+
}
3145

3246
if(isset($_GET['search']) && !empty($_GET['search'])){
3347
$search = $this->db->safesql(urldecode($_GET['search']));
3448
$where = "WHERE `c`.text_html LIKE '%$search%'";
3549
}
3650

37-
$query = $this->db->query("SELECT `c`.id, `c`.nid, `c`.text_html, `n`.title AS `new`
51+
$query = $this->db->query("SELECT `c`.id, `c`.nid, `c`.text_html, `n`.title AS `new`,
52+
`u`.login, `u`.`color`, `g`.`color` AS `gcolor`
3853
FROM `mcr_comments` AS `c`
3954
LEFT JOIN `mcr_news` AS `n`
4055
ON `n`.id=`c`.nid
56+
LEFT JOIN `mcr_users` AS `u`
57+
ON `u`.id=`c`.uid
58+
LEFT JOIN `mcr_groups` AS `g`
59+
ON `g`.id=`u`.gid
4160
$where
42-
ORDER BY `c`.id DESC
61+
ORDER BY $sort $sortby
4362
LIMIT $start, $end");
4463

4564
if(!$query || $this->db->num_rows($query)<=0){ return $this->core->sp(MCR_THEME_MOD."admin/comments/com-none.html"); }
@@ -54,11 +73,16 @@ private function comment_array(){
5473

5574
$new = (empty($ar['new'])) ? 'Новость удалена' : $this->db->HSC($ar['new']);
5675

76+
$login = (is_null($ar['login'])) ? 'Пользователь удален' : $this->db->HSC($ar['login']);
77+
78+
$color = (empty($ar['color'])) ? $this->db->HSC($ar['gcolor']) : $this->db->HSC($ar['color']);
79+
5780
$page_data = array(
5881
"ID" => intval($ar['id']),
5982
"NID" => intval($ar['nid']),
6083
"NEW" => $new,
61-
"TEXT" => $text
84+
"TEXT" => $text,
85+
"LOGIN" => $this->core->colorize($login, $color),
6286
);
6387

6488
echo $this->core->sp(MCR_THEME_MOD."admin/comments/com-id.html", $page_data);
@@ -70,13 +94,17 @@ private function comment_array(){
7094
private function comment_list(){
7195

7296
$sql = "SELECT COUNT(*) FROM `mcr_comments`";
73-
$page = "?mode=admin&do=comments&pid=";
97+
$page = "?mode=admin&do=comments";
7498

7599
if(isset($_GET['search']) && !empty($_GET['search'])){
76100
$search = $this->db->safesql(urldecode($_GET['search']));
77101
$sql = "SELECT COUNT(*) FROM `mcr_comments` WHERE text_html LIKE '%$search%'";
78102
$search = $this->db->HSC(urldecode($_GET['search']));
79-
$page = "?mode=admin&do=comments&search=$search&pid=";
103+
$page = "?mode=admin&do=comments&search=$search";
104+
}
105+
106+
if(isset($_GET['sort']) && !empty($_GET['sort'])){
107+
$page .= '&sort='.$this->db->HSC(urlencode($_GET['sort']));
80108
}
81109

82110
$query = $this->db->query($sql);
@@ -86,7 +114,7 @@ private function comment_list(){
86114
$ar = $this->db->fetch_array($query);
87115

88116
$data = array(
89-
"PAGINATION" => $this->core->pagination($this->config->pagin['adm_comments'], $page, $ar[0]),
117+
"PAGINATION" => $this->core->pagination($this->config->pagin['adm_comments'], $page.'&pid=', $ar[0]),
90118
"COMMENTS" => $this->comment_array()
91119
);
92120

upload/modules/admin/groups.class.php

Lines changed: 38 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,29 @@ private function group_array(){
2828
$end = $this->config->pagin['adm_groups']; // Set end pagination
2929

3030
$where = "";
31+
$sort = "id";
32+
$sortby = "DESC";
3133

3234
if(isset($_GET['search']) && !empty($_GET['search'])){
3335
$search = $this->db->safesql(urldecode($_GET['search']));
3436
$where = "WHERE title LIKE '%$search%'";
3537
}
3638

37-
$query = $this->db->query("SELECT id, title, description
39+
if(isset($_GET['sort']) && !empty($_GET['sort'])){
40+
$expl = explode(' ', $_GET['sort']);
41+
42+
$sortby = ($expl[0]=='asc') ? "ASC" : "DESC";
43+
44+
switch(@$expl[1]){
45+
case 'title': $sort = "title"; break;
46+
case 'desc': $sort = "description"; break;
47+
}
48+
}
49+
50+
$query = $this->db->query("SELECT id, title, `color`, description
3851
FROM `mcr_groups`
3952
$where
40-
ORDER BY id DESC
53+
ORDER BY $sort $sortby
4154
LIMIT $start, $end");
4255

4356
if(!$query || $this->db->num_rows($query)<=0){ return $this->core->sp(MCR_THEME_MOD."admin/groups/group-none.html"); }
@@ -46,9 +59,11 @@ private function group_array(){
4659

4760
while($ar = $this->db->fetch_assoc($query)){
4861

62+
$color = $this->db->HSC($ar['color']);
63+
4964
$page_data = array(
5065
"ID" => intval($ar['id']),
51-
"TITLE" => $this->db->HSC($ar['title']),
66+
"TITLE" => $this->core->colorize($this->db->HSC($ar['title']), $color),
5267
"TEXT" => $this->db->HSC($ar['description']),
5368
);
5469

@@ -61,13 +76,17 @@ private function group_array(){
6176
private function group_list(){
6277

6378
$sql = "SELECT COUNT(*) FROM `mcr_groups`";
64-
$page = "?mode=admin&do=groups&pid=";
79+
$page = "?mode=admin&do=groups";
6580

6681
if(isset($_GET['search']) && !empty($_GET['search'])){
6782
$search = $this->db->safesql(urldecode($_GET['search']));
6883
$sql = "SELECT COUNT(*) FROM `mcr_groups` WHERE title LIKE '%$search%'";
6984
$search = $this->db->HSC(urldecode($_GET['search']));
70-
$page = "?mode=admin&do=groups&search=$search&pid=";
85+
$page = "?mode=admin&do=groups&search=$search";
86+
}
87+
88+
if(isset($_GET['sort']) && !empty($_GET['sort'])){
89+
$page .= '&sort='.$this->db->HSC(urlencode($_GET['sort']));
7190
}
7291

7392
$query = $this->db->query($sql);
@@ -77,7 +96,7 @@ private function group_list(){
7796
$ar = $this->db->fetch_array($query);
7897

7998
$data = array(
80-
"PAGINATION" => $this->core->pagination($this->config->pagin['adm_groups'], $page, $ar[0]),
99+
"PAGINATION" => $this->core->pagination($this->config->pagin['adm_groups'], $page.'&pid=', $ar[0]),
81100
"GROUPS" => $this->group_array()
82101
);
83102

@@ -192,20 +211,23 @@ private function add(){
192211
if($_SERVER['REQUEST_METHOD']=='POST'){
193212
$title = $this->db->safesql(@$_POST['title']);
194213
$text = $this->db->safesql(@$_POST['text']);
214+
$color = $this->db->safesql(@$_POST['color']);
195215
$permissions = $this->db->safesql(@$_POST['permissions']);
196216

217+
if(!empty($color) && !preg_match("/^\#[a-f0-9]{6}|[a-f0-9]{3}$/i", $color)){ $this->core->notify($this->core->lng["e_msg"], $this->lng["grp_e_color_format"], 2, '?mode=admin&do=groups&op=add'); }
218+
197219
$perm_data = $_POST;
198220

199221
unset($perm_data['submit'], $perm_data['mcr_secure'], $perm_data['title'], $perm_data['text']);
200222

201223
$new_permissions = $this->db->safesql($this->gen_permissions($perm_data));
202224

203225
$insert = $this->db->query("INSERT INTO `mcr_groups`
204-
(title, description, `permissions`)
226+
(title, description, `color`, `permissions`)
205227
VALUES
206-
('$title', '$text', '$new_permissions')");
228+
('$title', '$text', '$color', '$new_permissions')");
207229

208-
if(!$insert){ $this->core->notify($this->core->lng["e_msg"], $this->core->lng["e_sql_critical"], 2, '?mode=admin&do=groups'); }
230+
if(!$insert){ $this->core->notify($this->core->lng["e_msg"], $this->core->lng["e_sql_critical"], 2, '?mode=admin&do=groups&op=add'); }
209231

210232
$id = $this->db->insert_id();
211233

@@ -222,6 +244,7 @@ private function add(){
222244
"PAGE" => $this->lng['grp_add_page_name'],
223245
"TITLE" => '',
224246
"TEXT" => '',
247+
"COLOR" => '',
225248
"PERMISSIONS" => $this->perm_list(),
226249
"BUTTON" => $this->lng['grp_add_btn']
227250
);
@@ -234,7 +257,7 @@ private function edit(){
234257

235258
$id = intval($_GET['id']);
236259

237-
$query = $this->db->query("SELECT title, `description`, `permissions`
260+
$query = $this->db->query("SELECT title, `description`, `color`, `permissions`
238261
FROM `mcr_groups`
239262
WHERE id='$id'");
240263

@@ -253,16 +276,19 @@ private function edit(){
253276
if($_SERVER['REQUEST_METHOD']=='POST'){
254277
$title = $this->db->safesql(@$_POST['title']);
255278
$text = $this->db->safesql(@$_POST['text']);
279+
$color = $this->db->safesql(@$_POST['color']);
256280
$permissions = $this->db->safesql(@$_POST['permissions']);
257281

282+
if(!empty($color) && !preg_match("/^\#[a-f0-9]{6}|[a-f0-9]{3}$/i", $color)){ $this->core->notify($this->core->lng["e_msg"], $this->lng["grp_e_color_format"], 2, '?mode=admin&do=groups&op=edit&id='.$id); }
283+
258284
$perm_data = $_POST;
259285

260286
unset($perm_data['submit'], $perm_data['mcr_secure'], $perm_data['title'], $perm_data['text']);
261287

262288
$new_permissions = $this->db->safesql($this->gen_permissions($perm_data));
263289

264290
$update = $this->db->query("UPDATE `mcr_groups`
265-
SET title='$title', description='$text', `permissions`='$new_permissions'
291+
SET title='$title', `color`='$color', description='$text', `permissions`='$new_permissions'
266292
WHERE id='$id'");
267293

268294
if(!$update){ $this->core->notify($this->core->lng["e_msg"], $this->core->lng["e_sql_critical"], 2, '?mode=admin&do=groups&op=edit&id='.$id); }
@@ -279,6 +305,7 @@ private function edit(){
279305
$data = array(
280306
"PAGE" => $this->lng['grp_edit_page_name'],
281307
"TITLE" => $this->db->HSC($ar['title']),
308+
"COLOR" => $this->db->HSC($ar['color']),
282309
"TEXT" => $this->db->HSC($ar['description']),
283310
"PERMISSIONS" => $this->perm_list($ar['permissions']),
284311
"BUTTON" => $this->lng['grp_edit_btn']

upload/modules/admin/info.class.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public function __construct($core){
2525
private function main(){
2626

2727
$this->core->header .= '<script src="'.LANG_URL.'js/modules/info-main.js"></script>';
28-
$this->core->header .= '<script src="'.STYLE_URL.'js/admin/info-main.js"></script>';
28+
$this->core->header .= '<script src="'.STYLE_URL.'js/modules/admin/info-main.js"></script>';
2929

3030
return $this->core->sp(MCR_THEME_MOD."admin/info/main.html");
3131
}
@@ -98,7 +98,7 @@ private function stats(){
9898

9999
private function extensions(){
100100
$this->core->header .= '<script src="'.LANG_URL.'js/modules/info-extensions.js"></script>';
101-
$this->core->header .= '<script src="'.STYLE_URL.'js/admin/info-extensions.js"></script>';
101+
$this->core->header .= '<script src="'.STYLE_URL.'js/modules/admin/info-extensions.js"></script>';
102102

103103
return $this->core->sp(MCR_THEME_MOD."admin/info/extensions.html");
104104
}

0 commit comments

Comments
 (0)