------------------------------------------------------------------------------- $Id$ -----------------------------------------------------------------------------*/ require_once 'MECON/DBO.php'; require_once 'PEAR.php'; require_once 'SAMURAI/Perm.php'; /** * Clase para el manejo de las cuotas especiales. * * @access public */ class YATTA_CuotaDB extends MECON_DBO { /** * Login del usuario. * * @var string $login * @access public */ var $login = null; /** * Cuota del usuario. * * @var int $cuota * @access public */ var $cuota = null; /** * Carga el objeto con los datos que se pasan por parametro. * * @param DB $db DB o DB_Result a usar para la carga. * * @return mixed * @access public */ function cargar($db = null) { // Si es un resultado, obtengo los elemento. if (is_a($db, 'db_result')) { $this->predefinirAtributos(); $res = $db->fetchRow(DB_FETCHMODE_ASSOC); // Si hay error lo devuelve. if (DB::isError($res)) { return $res; } elseif (!$res) { return false; } $this->login = $res['login']; $this->cuota = $res['cuota']; return true; } return false; } /** * Borra el objeto de una base de datos. * * @param DB $db Base de datos de donde borrar el objeto. * * @return mixed * @access public */ function borrar($db = null) { return $db->query ("DELETE FROM yatta.cuotas WHERE login = ". $db->quote($this->login)); } /** * Busca los datos en la base. * * @param DB $db Conexion a la base de datos. * @param string $operador Indica como deben concatenarse las condiciones de busqueda * @param string $orden Indica de que manera deben ordenarse los resultados de la busqueda * * @return mixed * @access public */ function buscar($db = null, $operador = MECON_DBO_OR, $orden = null) { // Armo el WHERE. $where = array(); if (!is_null($this->login)) { $where[] = 'c.login LIKE '. $db->quote("%$this->login%"); } if (!is_null($this->cuota)) { $where[] = 'c.cuota = '. $this->cuota; } if ($where) { $where = 'WHERE '. join ("$operador", $where); } else { $where = ''; } // Armo el ORDER BY. if (is_string($orden)) { $orden = array($orden); } if ($orden) { $orden = 'ORDER BY '.join(',',$orden); } else { $orden = ''; } return $db->query( "SELECT c.login AS login, c.cuota AS cuota FROM yatta.cuotas AS c $where $orden"); } /** * Guarda los datos en la base. * * @param DB $db Conexion a la base de datos. * @param bool $nuevo Indica si se trata de un nuevo registro en la base. * * @return mixed * @access public */ function guardar($db = null, $nuevo = true) { //Debo verificar que el login que me pasaron tenga permisos en samurai. $tmp =& new SAMURAI_Perm ($this->login, YATTA_PERM, $db); if (!$tmp->tiene()) { return new PEAR_Error ( 'El usuario tiene que tener permisos en yatta.' ); } if ($nuevo) { $datos = array ( 'login' => $this->login, 'cuota' => $this->cuota ); return $db->autoExecute('yatta.cuotas', $datos, DB_AUTOQUERY_INSERT); } else { $datos = array ( 'login' => $this->login, 'cuota' => $this->cuota ); return $db->autoExecute('yatta.cuotas', $datos, DB_AUTOQUERY_UPDATE, 'login = '. $db->quote($this->login)); } } /** * Hace un reset de los atributos. * * @return void * @access public */ function predefinirAtributos() { $this->login = null; $this->cuota = null; } } ?>