Source for file usuario.classe.php

Documentation is available at usuario.classe.php

  1. <?php
  2.  
  3.     /**
  4.      * usuario.classe.php
  5.      * 
  6.      * Mantém as propriedades e métodos básicos de usuário
  7.      *
  8.      * @copyright 2008 Soomp
  9.      * @author Marcio Merlone <mmerlone@gmail.com>
  10.      * @version 1.0
  11.      * @since 15/12/2006
  12.      * @package Soomp
  13.      */
  14.     /* $Id: usuario.classe.php,v 1.26 2007/05/29 20:39:47 mmerlone Exp $ */
  15.  
  16.     require_once(CFG_LOCAL_FRAMEWORK.'model.classe.php');
  17.     /**
  18.      * Define um usuário no sistema
  19.      */
  20.     class usuario extends model{
  21.  
  22.         /**
  23.          * @var string $_strTable nome da tabela com os dados
  24.          */
  25.         protected $_strTable = CFG_USUARIO_DB_TABLE;
  26.         /**
  27.          * @var string $_strFldPk nome do campo com o pk
  28.          */
  29.         protected $_strFldPk = CFG_USUARIO_DB_PK;
  30.         /**
  31.          * @var string $_strFldNo nome do campo com o nome
  32.          */
  33.         protected $_strFldNo = CFG_USUARIO_DB_USERNAME;
  34.         /**
  35.          * @var boolean $_boolUserDb define se deve-se utilizar a conexão db de usuários
  36.          */
  37.         protected $_boolUserDb = true;
  38.         /**
  39.          * @var string $strOrdCampo campo padrão de ordenação
  40.          */
  41.         public $strOrdCampo = CFG_USUARIO_DB_NOME;
  42.         /**
  43.          * @var array $grupos Array cujos valores são os FK dos grupos a que o
  44.          *  usuário pertence.
  45.          */
  46.         public $grupos = array();
  47.         /**
  48.          * @var string $ip Armazena o endereço ip donde foi realizado o login
  49.          */
  50.         private $ip;
  51.  
  52.         /**
  53.          * Construtor
  54.          * @param object $objDb objeto banco de dados do adodb
  55.          */
  56.         public function __construct(){
  57.             $this->grupos = array();
  58.             parent::__construct();
  59.         }
  60.  
  61.         /**
  62.          * Overload de propriedades privadas
  63.          * @param string $var nome da propriedade
  64.          * @param mixed $value valor da propriedade
  65.          */
  66.         private function __set($var$value){
  67.             $this->$var $value;
  68.         }
  69.         
  70.         /**
  71.          * Overload de propriedades privadas
  72.          * @param string $var nome da propriedade
  73.          * @return mixed valor da propriedade
  74.          */
  75.         private function __get($var){
  76.             return $this->$var;
  77.         }
  78.  
  79.         /**
  80.          * Autentica o formulário de login
  81.          * @param string $senha senha informada no formulário de login
  82.          * @return boolean [true|false]
  83.          */
  84.         public function Auth($senha){
  85.             $senha $this->_getSenha($senha);
  86.             if(property_exists($thisCFG_USUARIO_DB_SENHA&& $senha && $senha == $this->{CFG_USUARIO_DB_SENHA}){
  87.                 return true;
  88.             }else{
  89.                 return false;
  90.             }
  91.         }
  92.  
  93.         /**
  94.          * Carrega os dados do usuário
  95.          * @param mixed $who pk ou username a ser carregado
  96.          */
  97.         function Load($who){
  98.             if(parent::Load($who)){
  99.                 return $this->LoadGrupos();
  100.             }
  101.             return false;
  102.         }
  103.  
  104.         /**
  105.          * Carrega os grupos a que pertence um usuário
  106.          */
  107.         public function loadGrupos(){
  108.             if(($this->{CFG_USUARIO_DB_PK|| $this->{CFG_USUARIO_DB_PK=== "0"&& $db &$this->getDb(true)){
  109.  
  110.                 $qry 'SELECT '.CFG_USUARIO_GRUPO_DB_FK_GRUPO.
  111.                         ' FROM '.CFG_USUARIO_GRUPO_DB_TABLE.
  112.                         ' WHERE '.CFG_USUARIO_GRUPO_DB_FK_USUARIO.'="'.$this->{CFG_USUARIO_DB_PK}.'"';
  113.                 $rels $db->GetCol($qry);
  114.  
  115.                 require_once(CFG_LOCAL_FRAMEWORK.'grupo.classe.php');
  116.                 $g new grupo();
  117.                 $gs $g->Find($rels);
  118.                 $this->grupos $gs $gs array();
  119.                 return true;
  120.             }
  121.         }
  122.  
  123.         /**
  124.          * Define os grupos do objeto usuário
  125.          * @param array $arrGrupos array simples com os pks dos grupos
  126.          */
  127.         public function setGrupos($arrGrupos){
  128.             $db &$this->getDb();
  129.             $this->grupos array();
  130.             foreach($arrGrupos as $intGrupo){
  131.                 $g new grupo();
  132.                 $g->Load($intGrupo);
  133.                 $this->grupos[$g;
  134.             }
  135.         }
  136.  
  137.         /**
  138.          * Overload do método original do adodb para salvar grupos relacionados
  139.          */
  140.         public function Save(){
  141.             if($ok parent::Save()){
  142.                 $ok $ok && $this->_deleteGrupos();
  143.                 $ok $ok && $this->_insertGrupos();
  144.             }
  145.             return $ok;
  146.         }
  147.  
  148.         /**
  149.          * Apaga os grupos a que pertence um usuário no banco de dados
  150.          * @return boolean [true|false]
  151.          */
  152.         private function _deleteGrupos(){
  153.             $db &$this->getDb();
  154.             $sql 'DELETE FROM '.CFG_USUARIO_GRUPO_DB_TABLE.' WHERE '.CFG_USUARIO_GRUPO_DB_FK_USUARIO.'='.$db->qstr($this->{CFG_USUARIO_DB_PK});
  155.             return $db->Execute($sql);
  156.         }
  157.  
  158.         /**
  159.          * Armazena os grupos a que pertence um usuário no banco de dados
  160.          * @return boolean [true|false]
  161.          * @link http://phplens.com/adodb/reference.functions.execute.html - Bulk binding
  162.          */
  163.         private function _insertGrupos(){
  164.             $db &$this->getDb();
  165.             $ok true;
  166.             foreach($this->grupos as $g){
  167.                 $sql 'INSERT INTO '.CFG_USUARIO_GRUPO_DB_TABLE.' ('.CFG_USUARIO_GRUPO_DB_FK_USUARIO.', '.CFG_USUARIO_GRUPO_DB_FK_GRUPO.')'.
  168.                         'VALUES ('.$db->qstr($this->{CFG_USUARIO_DB_PK}).', '.$db->qstr($g->{CFG_GRUPO_DB_PK}).')';
  169.                 $ok $ok && $db->Execute($sql);
  170.             }
  171.             return $ok;
  172.         }
  173.  
  174.         /**
  175.          * Codifica uma string conforme CFG_USUARIO_SENHA_TIPO
  176.          * @param string $senha 
  177.          * @return string $senha codificada
  178.          * @uses CFG_USUARIO_SENHA_TIPO
  179.          */
  180.         private function _getSenha($senha){
  181.             switch(CFG_USUARIO_SENHA_TIPO){
  182.                 case 'PLAIN':
  183.                     $senha $senha;
  184.                     break;
  185.                 case 'MD5':
  186.                     $senha md5($senha);
  187.                     break;
  188.                 case 'CRYPT':
  189.                     $senha crypt($senha$this->senha);
  190.                     break;
  191.                 default:
  192.                     $senha $senha;
  193.                     break;
  194.             }
  195.             return $senha;
  196.         }
  197.     }
  198. ?>

Documentation generated on Sun, 09 Mar 2008 23:53:42 -0300 by phpDocumentor 1.4.0

SourceForge.net Logo Support This Project