Сделал класс для авторизации под modx

Redjik

Джедай-мастер
сабж - > почему получилось такое говно? =)

PHP:
class Loginer
{
	
	private $dbase;
	private $table_prefix;
	private $dbvalues;
	private $modx;
	public $errors = array();
	
	function __construct($modx)
	{
		$this->modx = $modx;
		$this->dbase = $modx->dbConfig['dbase'];
		$this->table_prefix = $modx->dbConfig['table_prefix'];
		if (isset($_COOKIE[md5('webUserLog')]) && $this->isLogged() == false)
		{
			$sql = "SELECT * FROM $this->dbase.`".$this->table_prefix."web_user_attributes` WHERE sessionid='".$_COOKIE[md5('webUserLog')]."'";
    		$ds = $modx->db->query($sql);
			$this->dbvalues = $modx->db->getRow($ds);
			if ($this->dbvalues['id'])
				$this->UserSession();
	
		};
		
			
	}
	
	private function UserSession()
	{
		session_start();
		$_SESSION['webShortname']=$this->dbvalues['email'];
    	$_SESSION['webFullname']=$this->dbvalues['fullname'];
    	$_SESSION['webEmail']=$this->dbvalues['email'];
    	$_SESSION['webValidated']=1;
    	$_SESSION['webUser']=$this->dbvalues['email'];
    	$_SESSION['webLastlogin']=$this->dbvalues['lastlogin'];
		$_SESSION['userId'] = $this->dbvalues['id'];
    	
		setcookie(md5('webUserLog'),session_id(),time()+60*60*24*90);
		$sql = "UPDATE $this->dbase.`".$this->table_prefix."web_user_attributes` SET sessionid='".session_id()."', lastlogin = '".time()."' WHERE id =".$this->dbvalues['id'];
    	$this->modx->db->query($sql);
    	
			
	}
	
	
	public function isLogged()
	{
		
		if (isset($_SESSION['webValidated']))
			return true;
		else
			return false;	
		
	}
	
	public function login($user,$pass)
	{
		$error_mail = filter_var($user, FILTER_VALIDATE_EMAIL);
		if ($error_mail == false)
			array_push($this->errors,'Введен неверный формат электронной почты');
			
		
		$sql = "SELECT * FROM $this->dbase.`".$this->table_prefix."web_users` WHERE username LIKE '%".mysql_real_escape_string($user)."%'";
    	$ds = $this->modx->db->query($sql);
		$tables = $this->modx->db->getRow($ds);
		if ($tables['password'] === $pass)
		{
			$sql = "SELECT * FROM $this->dbase.`".$this->table_prefix."web_user_attributes` WHERE email LIKE '%".mysql_real_escape_string($user)."%'";
    		$ds = $this->modx->db->query($sql);
			$this->dbvalues = $this->modx->db->getRow($ds);
			if ($this->dbvalues['id'])
				$this->UserSession();
		}
		else
		{
			array_push($this->errors,'Введен неверный пароль или электронная почта');	
		}
		
		if (count($this->errors) > 0)
			return false;
		else
			return true;	
	}
	
	public function register ($user,$pass)
	{
		$error_mail = filter_var($user, FILTER_VALIDATE_EMAIL);
		if ($error_mail == false)
			array_push($this->errors,'Введен неверный формат электронной почты');
		$sql = "SELECT * FROM $this->dbase.`".$this->table_prefix."web_users` WHERE username LIKE '%".mysql_real_escape_string($user)."%'";
    	$ds = $this->modx->db->query($sql);
		$tables = $this->modx->db->getRow($ds);
		
		if ($tables)
			array_push($this->errors,'Адрес электронной почты уже зарегестрирован');
				
		if (strlen($pass)<6)
			array_push($this->errors,'Проль должен содержать больше 6 символов');
			
		if (!preg_match('`[A-Za-z0-9]`',$pass))
			array_push($this->errors,'Пароль может содержать только англйские буквы и цифры');	
			
		
		if (count($this->errors) > 0)
		{
			return false;
		}
		else
		{
			$sql = "INSERT INTO $this->dbase.`".$this->table_prefix."web_users` (username,password) VALUES ('".mysql_real_escape_string($user)."','".mysql_real_escape_string($pass)."')";
			$ds = $this->modx->db->query($sql);
			
			$sql = "INSERT INTO $this->dbase.`".$this->table_prefix."web_user_attributes` (email) VALUES ('".mysql_real_escape_string($user)."')";
			$ds = $this->modx->db->query($sql);
			
			$sql = "SELECT * FROM $this->dbase.`".$this->table_prefix."web_user_attributes` WHERE email LIKE '%".mysql_real_escape_string($user)."%'";
    		$ds = $this->modx->db->query($sql);
			$this->dbvalues = $this->modx->db->getRow($ds);
			
			if ($this->dbvalues['id'])
				$this->UserSession();
			
			return true;
		}
				
	}
	
	
	
	public function logOut()
	{
		setcookie (md5('webUserLog'), "", time() - 3600);
		session_destroy();		
	}
Все как бе отлично работает, но не нравиться мне он ...
Поэтому и искал что-нибудь готовое... поучиться.

ЗЫ. познав прелесть Active Record - очень мучаюсь с sql запросами ...
 
Сверху