<?php
/**
* Ant0ha's project
*
* @package
* @author Anton Pisarenko <[email protected]>
* @copyright Copyright (c) 2006 - 2010, Anton Pisarenko
* @license http://ant0ha.ru/license.txt
* @link http://ant0ha.ru
*/
defined('IN_SYSTEM') or die('<b>403<br />Запрет доступа!</b>');
//---------------------------------------------
/**
* Контроллер профайла пользователей
*/
class User_Profile_Controller extends Controller {
/**
* Уровень пользовательского доступа
*/
public $access_level = 5;
/**
* Конструктор
*/
public function __construct() {
parent::__construct();
# Получаем id пользователя
if((ROUTE_ACTION == 'view' || ROUTE_ACTION == 'index') && is_numeric($_GET['user_id']))
$user_id = intval($_GET['user_id']);
else
$user_id = USER_ID;
# Получаем профайл пользователя
if($user_id == -1) a_notice("Это гость, у него нет анкеты", URL);
if(!$this->profile = $this->db->get_row("SELECT * FROM #__users_profiles JOIN #__users USING(user_id) WHERE user_id = '". $user_id ."'"))
a_error("Профайл не найден!");
}
/**
* Метод по умолчанию
*/
public function action_index() {
$this->action_cabinet();
}
/**
* Просмотр анкеты
*/
public function action_view() {
# Количество сообщений в чате
if(modules::is_active_module('chat'))
$this->profile['chat_messages'] = $this->db->get_one("SELECT COUNT(*) FROM #__chat_messages WHERE user_id = '". $this->profile['user_id'] ."'");
# Количество сообщений в форуме
if(modules::is_active_module('forum'))
$this->profile['forum_messages'] = $this->db->get_one("SELECT COUNT(*) FROM #__forum_messages WHERE user_id = '". $this->profile['user_id'] ."'");
# Количество сообщений в гостевой
if(modules::is_active_module('guestbook'))
$this->profile['guestbook_messages'] = $this->db->get_one("SELECT COUNT(*) FROM #__guestbook WHERE user_id = '". $this->profile['user_id'] ."'");
$this->tpl->assign(array(
'profile' => $this->profile
));
$this->tpl->display('profile_view');
}
/**
* Кабинет пользователя
*/
public function action_cabinet() {
$this->tpl->assign(array(
'error' => $this->error,
'info' => $info
));
$this->tpl->display('profile_cabinet');
}
/**
* Редактирование профиля
*/
public function action_edit() {
if(!class_exists('main_form')) a_import('modules/main/helpers/main_form');
if(isset($_POST['submit'])) {
if(!empty($_POST['birthday_day'])) {
if($_POST['birthday_day'] < 1 || $_POST['birthday_day'] > 31 || !is_numeric($_POST['birthday_day'])) {
$this->error .= 'Неверно указан день даты рождения (от 1 до 31)<br />';
}
if($_POST['birthday_month'] < 1 || $_POST['birthday_month'] > 12 || !is_numeric($_POST['birthday_month'])) {
$this->error .= 'Неверно указан месяц даты рождения (от 1 до 12)<br />';
}
if($_POST['birthday_year'] < 1900 || $_POST['birthday_year'] > 2010 || !is_numeric($_POST['birthday_year'])) {
$this->error .= 'Неверно указан год даты рождения (от 1900 до 2010)<br />';
}
}
if(!empty($_POST['uin'])) {
if(!is_numeric($_POST['uin']) or $_POST['uin'] < 10000 or $_POST['uin'] > 999999999) {
$this->error .= 'Неверный номер ICQ, только цифры, от 5ти до 9ти цифр<br />';
}
}
if(!empty($_POST['homepage'])) {
# Проверяем домашнюю страницу
$homepage = str_replace('http://', '', $_POST['homepage']);
$homepage_contents = @file_get_contents('http://'. $homepage);
if(empty($homepage_contents)) {
$this->error .= 'Домашняя страница не найдена, либо в данный момент она не доступна<br />';
}
}
if(!$this->error) {
# Работа с авой
if(!empty($_FILES['avatar']['tmp_name'])) {
if(!strstr($_FILES['avatar']['type'], 'image/')) a_error("Неверный формат файла аватара! Разрешены только gif, jpg и png");
# Копируем аватар 100х100
main::image_resize($_FILES['avatar']['tmp_name'], ROOT .'files/avatars/'. USER_ID .'_100.jpg', 100, 100, 90);
# Копируем аватар 32х32
main::image_resize($_FILES['avatar']['tmp_name'], ROOT .'files/avatars/'. USER_ID .'_32.jpg', 32, 32, 90);
$this->profile['avatar'] = 1;
}
# Генерируем время рождения
$birthday_time = mktime(0, 0, 0, $_POST['birthday_month'], $_POST['birthday_day'], $_POST['birthday_year']);
# Сохраняем данные
$this->db->query("UPDATE #__users_profiles SET
birthday_time = '$birthday_time',
real_name = '". a_safe($_POST['real_name']) ."',
about = '". a_safe($_POST['about']) ."',
avatar = '". $this->profile['avatar'] ."',
uin = '". a_safe($_POST['uin']) ."',
homepage = '". a_safe($homepage) ."'
WHERE user_id = '". USER_ID ."'
");
a_notice("Данные сохранены!", a_url('user/profile'));
}
}
if(!isset($_POST['submit']) || $this->error) {
$select_date_birthday = array(
'prefix' => 'birthday_',
'field_order' => 'DMY',
'start_year' => 1900,
'time' => $this->profile['birthday_time'] > 0 ? $this->profile['birthday_time'] : 0
);
$this->tpl->assign(array(
'error' => $this->error,
'select_date_birthday' => $select_date_birthday,
'profile' => $this->profile
));
$this->tpl->display('profile_edit');
}
}
}
?>