<?php
session_start();
require_once("pagemaker.php");
require_once("be/db.php");

$errorMsg = "";

function  IsImageValid($type)
{
    $file_types  = array(   
    'image/pjpeg'     => 'jpg', 
    'image/jpeg'     => 'jpg',
    'image/jpeg'     => 'jpeg',
    'image/gif'     => 'gif',
    'image/X-PNG'    => 'png', 
    'image/PNG'         => 'png', 
    'image/png'     => 'png', 
    'image/x-png'     => 'png', 
    'image/JPG'     => 'jpg',
    'image/GIF'     => 'gif',
    'image/bmp'     => 'bmp',
    'image/bmp'     => 'BMP',
    );
    
    if (!array_key_exists($type, $file_types))
    {
        return false;
    }
    else
    {
        return $file_types[$type];
    }
}

function IsImageSizeValid($name)
{
	list($width, $height) = getimagesize($name);
	if ($width > 96 || $height > 96)
		return false;
	return true;
}

if (isset($_SESSION["user"]) && isset($_POST["username"]))
{   		
    $id = $_SESSION["user"]["id"];
    $name = mysql_escape_string($_POST["username"]);
    Query("UPDATE users SET name='" . $name . "' WHERE id=" . $id);
    $_SESSION["user"]["name"] = $name;

    $pwd = $_POST["pwd"];
    if (strcmp($pwd, "") != "")
    {
        $pwdOld = $_POST["pwdOld"];
        $oldWrong = true;
        if (ereg("[a-zA-Z0-9]+$", $pwdOld))
            if (GetVal("SELECT pwd FROM users WHERE id=" . $id, "") == $pwdOld)
                $oldWrong = false;
                
        if ($oldWrong)
            $errorMsg = "Неверный старый пароль.";            
        else if (!ereg("[a-zA-Z0-9]+$", $pwd))
            $errorMsg = "Пароль должен содержать только симолы 0-9, a-z и A-Z.";
        else if ($pwd != $_POST["pwd2"])
            $errorMsg = "Неверный повтор пароля.";
        else
            Query("UPDATE users SET pwd='" . $pwd . "' WHERE id=" . $id);
    }
        
    $updates = $_POST["updates"];
    if (strcmp($updates, "on") == 0)
        $updates = 1;
    else
        $updates = 0;
    Query("UPDATE users SET receiveupdates=" . $updates . " WHERE id=" . $id);
    $_SESSION["user"]["updates"] = $updates;
    
    if (isset($_FILES["avatar"]))
    {
        if ($_FILES["avatar"]["error"] == UPLOAD_ERR_OK)
        {
			$type = $_FILES["avatar"]["type"];
			if (($type = IsImageValid($type)) === false)
			{
				$errorMsg = "В качестве аватара можно использовать изображения jpeg, gif или png.";
			}
			else if (!IsImageSizeValid($_FILES["avatar"]["tmp_name"]))
			{
				$errorMsg = "В качестве аватара можно использовать изображения размером не более 96x96.";
			}
			else
			{
				$avatarname = "users/avatars/user_" . $id . "_" . microtime() . "." . $type;
			  if (move_uploaded_file($_FILES["avatar"]["tmp_name"], $avatarname))
			  {
					Query("UPDATE users SET avatar='" . $avatarname . "' WHERE id=" . $id);
					$_SESSION["user"]["avatar"] = $avatarname;
				}
			}
        }
        else if ($_FILES["avatar"]["error"] == UPLOAD_ERR_FORM_SIZE)
        {
            $errorMsg = "Размер изображения аватара не должен быть больше чем " . ($_POST["MAX_FILE_SIZE"] / 1024) . " KБ.";
        }
    }   
    
}

class CUserSettings extends CPageMaker
{
    function CUserSettings()
    {
        global $errorMsg;
        $user = $_SESSION["user"];
        CPageMaker::CPageMaker("templ/usersettings.tpl");
        $this->Replace("%ERROR%", $errorMsg);
        $this->Replace("%NAME%", $user["name"]);
        $this->Replace("%AVATAR%", $user["avatar"]);        
        $this->Replace("%UPDATES%", ($user["updates"] == 1 ? "checked='on'" : ""));
    }
}

$Page = new CBodyMaker();
if (!isset($_SESSION["user"]))
    $Page->Replace("%CONTENT%", "К сожалению, вы неизвестны. Скажите, кто вы.");
else
{
    $Settings = new CUserSettings();
    $Page->Replace("%CONTENT%", $Settings->GetPage());
}
$Page->SetTitle("Ваши настройки");

echo $Page->GetPage();

?>
