- 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;
}
}
"Вы забанены! Бан истекает: -32140632 секунд назад"
Т.е. давным-давно разбанили?
12 месяцев по 31 дню за вычетом 2 минут 48 секунд... Типа на год.
+1. Все мелкие сайты как под копирку. "Модно, молодёжно, как у твиттера!"
З.Ы. Ну, к слову, на безрыбье, когда дизайнера с версталой под рукой нет - и бутстрап сойдёт. Всё лучше, чем очередной уёбищный говнодизайн-от-программиста.
Особенно учитывая, что сам "Twitter" не использовал ни код своего фреймворка, ни его визуальные решения.
Ну вот кстати я его довольно часто использую для всяких внутренних инструментов с веб-интерфейсом, когда нужно сбацать что-нибудь полезное за пару дней.
А теперь мысленно перенеси это всё на десктоп: "ой, да я стандартные контролы использую только когда дизайнера под рукой нет".
Глупо звучит, правда?
да какие угодно
Я же говорю: респонсивненько сверстать чтобы оно работало и под iPhone и под 30" моник -- это не баран чихнул, нужен действительно качественный верстун (а их мало, кстати). Бутстрап это СИЛЬНО упрощает.
Какое точное и понятное название! И ведь не соврал же.
> $_SERVER['REQUEST_URI'] != '/user/ban'
Для "PHP" магические строки - это нормально?
Зашёл в гостевую: анимированные жёлтые смайлики-шарики, гифки, блёстки-звёздочки... Спасибо, вернули 2002.
Только бутстрап там не в тему. Должен быть HTML 4.01 в ВЕРХНЕМРЕГИСТРЕ, табличная верстка и BGSOUND
@
frameset rows
Netscape is love, netscape is life.
Меню в левом фрейме, тело -- в правом, и target у a чтобы в главном фрейме открывалось.
Фремы были прокляты и забыты еще на излёте 90х.
Может быть вы еще и SSI помните?
Зачем мне двачеры?
Мне в 2008м было уже не до сосачей ваших
> > 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