- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
class UserModel extends Base {
function index($id) {
$row = DB::run("SELECT `users`.*, (SELECT COUNT(*) FROM `guest` WHERE `guest`.`id_user`=`users`.`id`) AS `guest`,
(SELECT COUNT(*) FROM `files` WHERE `files`.`id_user`=`users`.`id`) AS `download`,
(SELECT COUNT(*) FROM `blog` WHERE `blog`.`id_user`=`users`.`id`) AS `blog`,
(SELECT COUNT(*) FROM `news_comments` WHERE `news_comments`.`id_user`=`users`.`id`) AS `news_comments`,
(SELECT COUNT(*) FROM `files_comments` WHERE `files_comments`.`id_user`=`users`.`id`) AS `files_comments`,
(SELECT COUNT(*) FROM `blog_comments` WHERE `blog_comments`.`id_user`=`users`.`id`) AS `blog_comments` FROM `users` WHERE `id`='" . $id . "'")->fetch(PDO::FETCH_ASSOC);
SmartySingleton::instance()->assign(array(
'row' => $row,
'friends' => DB::run("SELECT COUNT(*) FROM `friends` WHERE `id_user`='" . $this->user['id'] . "' AND `user_id`='" . $row['id'] . "' OR `id_user`='" . $row['id'] . "' AND `user_id`='" . $this->user['id'] . "'")->fetchColumn(),
'blacklist' => DB::run("SELECT COUNT(*) FROM `blacklist` WHERE `id_user`='" . $this->user['id'] . "' AND `user_id`='" . $row['id'] . "'")->fetchColumn()
));
SmartySingleton::instance()->display(SMARTY_TEMPLATE_LOAD . '/templates/modules/user/index.tpl');
}
// и еще пачка методов
}
// базовая модель.
class Base {
function __construct() {
$this->user = User::auth();
$this->page = isset($_REQUEST['page']) ? intval($_REQUEST['page']) : 0;
if ($this->user['id']) {
$this->message = $this->user['message'];
} else {
$this->message = Cms::setup('message');
}
//если забанен
if ($this->user['ban'] == 1 && $this->user['bantime'] > Cms::realtime() && $_SERVER['REQUEST_URI'] != '/user/ban' && $_SERVER['REQUEST_URI'] != '/user/exit') {
Functions::redirect(Cms::setup('home') . '/user/ban');
}
}
}
// user auth метод самый сок. или (почему у меня лагает???)
class User {
public static $user = array();
public static function auth() {
/* Авторизация */
if (isset($_COOKIE['id_user']) && isset($_COOKIE['hashcode']) && $_COOKIE['id_user'] != NULL && $_COOKIE['hashcode'] != NULL) {
$userdata = DB::run("SELECT * FROM `users` WHERE `id` = " . abs(intval($_COOKIE['id_user'])) . " AND `hashcode` = '" . Cms::Input($_COOKIE['hashcode']) . "' LIMIT 1")->fetch(PDO::FETCH_ASSOC);
if ($userdata['id']) {
/* записываем последнее посещение */
DB::run("UPDATE `users` SET `date_last`='" . Cms::realtime() . "' WHERE `id`='" . $userdata['id'] . "'");
/* онлайн */
if (DB::run("SELECT COUNT(*) FROM `online` WHERE `id_user`='" . $userdata['id'] . "'")->fetchColumn() > 0) {
DB::run("UPDATE `online` SET `time`='" . Cms::realtime() . "', `referer`='" . Cms::Input(Cms::setup('home') . '' . Functions::GET_PATH_INFO()) . "' WHERE `id_user`='" . $userdata['id'] . "'");
} else {
DB::run("INSERT INTO `online` SET
`id_user`='" . $userdata['id'] . "',
`ip`='" . Recipe::getClientIP() . "',
`browser`='" . Recipe::getBrowser() . "',
`referer`='" . Cms::Input(Cms::setup('home') . '' . Functions::GET_PATH_INFO()) . "',
`time`='" . Cms::realtime() . "'");
}
SmartySingleton::instance()->assign(array(
'newnotice' => DB::run("SELECT COUNT(*) FROM `notice` WHERE `id_user`='" . $userdata['id'] . "' AND `status`='1'")->fetchColumn(),
'newmail' => DB::run("SELECT COUNT(*) FROM `mail` WHERE `user_id`= '" . $userdata['id'] . "' AND `read`='0'")->fetchColumn()
));
self::$user = $userdata;
return self::$user;
}
} else {
setcookie('id_user', '', 0, '/');
setcookie('hashcode', '', 0, '/');
session_destroy();
/* онлайн для гостей */
if (DB::run("SELECT COUNT(*) FROM `online` WHERE `ip`='" . Recipe::getClientIP() . "' AND `type` = '2'")->fetchColumn() > 0) {
DB::run("UPDATE `online` SET `time`='" . Cms::realtime() . "', `referer`='" . Cms::Input(Cms::setup('home') . '' . Functions::GET_PATH_INFO()) . "' WHERE `ip`='" . Recipe::getClientIP() . "' AND `type` = '2'");
} else {
DB::run("INSERT INTO `online` SET
`ip`='" . Recipe::getClientIP() . "',
`browser`='" . Recipe::getBrowser() . "',
`referer`='" . Cms::Input(Cms::setup('home') . '' . Functions::GET_PATH_INFO()) . "',
`type` = '2',
`time`='" . Cms::realtime() . "'");
}
}
}
function data($table) {
$array = "(SELECT `login` FROM `users` WHERE `users`.`id`=`$table`.`id_user`) AS `login`,
(SELECT `avatar` FROM `users` WHERE `users`.`id`=`$table`.`id_user`) AS `avatar`,
(SELECT `level` FROM `users` WHERE `users`.`id`=`$table`.`id_user`) AS `level`";
return $array;
}
}
huge_cock 15.01.2017 13:14 # +4
huge_cock 15.01.2017 13:22 # +1
huge_cock 15.01.2017 13:33 # +1
"Вы забанены! Бан истекает: -32140632 секунд назад"
bormand 15.01.2017 13:34 # +2
Т.е. давным-давно разбанили?
huge_cock 15.01.2017 13:35 # 0
bormand 15.01.2017 13:36 # +2
12 месяцев по 31 дню за вычетом 2 минут 48 секунд... Типа на год.
bormand 15.01.2017 13:26 # +5
+1. Все мелкие сайты как под копирку. "Модно, молодёжно, как у твиттера!"
З.Ы. Ну, к слову, на безрыбье, когда дизайнера с версталой под рукой нет - и бутстрап сойдёт. Всё лучше, чем очередной уёбищный говнодизайн-от-программиста.
huge_cock 15.01.2017 13:32 # 0
Особенно учитывая, что сам "Twitter" не использовал ни код своего фреймворка, ни его визуальные решения.
roman-kashitsyn 16.01.2017 15:45 # 0
Ну вот кстати я его довольно часто использую для всяких внутренних инструментов с веб-интерфейсом, когда нужно сбацать что-нибудь полезное за пару дней.
barop 16.01.2017 15:50 # +1
А теперь мысленно перенеси это всё на десктоп: "ой, да я стандартные контролы использую только когда дизайнера под рукой нет".
Глупо звучит, правда?
barop 16.01.2017 15:25 # −1
defecate-plusplus 16.01.2017 15:46 # −1
да какие угодно
barop 16.01.2017 15:56 # 0
Я же говорю: респонсивненько сверстать чтобы оно работало и под iPhone и под 30" моник -- это не баран чихнул, нужен действительно качественный верстун (а их мало, кстати). Бутстрап это СИЛЬНО упрощает.
gost 16.01.2017 23:04 # +4
Какое точное и понятное название! И ведь не соврал же.
> $_SERVER['REQUEST_URI'] != '/user/ban'
Для "PHP" магические строки - это нормально?
Зашёл в гостевую: анимированные жёлтые смайлики-шарики, гифки, блёстки-звёздочки... Спасибо, вернули 2002.
barop 16.01.2017 23:19 # +2
Только бутстрап там не в тему. Должен быть HTML 4.01 в ВЕРХНЕМРЕГИСТРЕ, табличная верстка и BGSOUND
bormand 16.01.2017 23:21 # +2
barop 16.01.2017 23:22 # +1
CHayT 17.01.2017 00:53 # +1
@
frameset rows
Netscape is love, netscape is life.
barop 17.01.2017 00:59 # +1
Меню в левом фрейме, тело -- в правом, и target у a чтобы в главном фрейме открывалось.
Фремы были прокляты и забыты еще на излёте 90х.
Может быть вы еще и SSI помните?
huesto 17.01.2017 01:42 # +1
barop 17.01.2017 01:46 # 0
Зачем мне двачеры?
huesto 17.01.2017 02:15 # +2
barop 17.01.2017 03:06 # 0
Мне в 2008м было уже не до сосачей ваших
bormand 17.01.2017 06:59 # +1
dm_fomenok 17.01.2017 19:44 # −3
> > Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'LOW_PRIORITY `online` SET `ip`='93.125.45.63', ' at line 1' in /var/www/maisosu/data/www/vcms.su/app/core/classes/DB.php:47 Stack trace: #0 /var/www/maisosu/data/www/vcms.su/app/core/classes/DB.php(47): PDOStatement->execute(Array) #1 /var/www/maisosu/data/www/vcms.su/app/core/classes/User.php(47): DB::run('INSERT INTO LOW...') #2 /var/www/maisosu/data/www/vcms.su/app/core/core.php(26): User::auth() #3 /var/www/maisosu/data/www/vcms.su/index.php(15): require_once('/var/www/maisos...') #4 {main} thrown in /var/www/maisosu/data/www/vcms.su/app/core/classes/DB.php on line 47
guestinho 17.01.2017 21:18 # −1
huge_cock 17.01.2017 21:34 # +2