]> git.llucax.com Git - mecon/meconlib.git/blob - test/DBO.php
Se hace un primer (y fallido) intento de deshardcodear la DB.
[mecon/meconlib.git] / test / DBO.php
1 <?
2
3 require_once 'DB.php';
4 require_once 'Date.php';
5 require_once '../lib/MECON/DBO.php';
6
7 class Agente extends MECON_DBO {
8
9     // DSN por default.
10     var $dsn = 'mysql://intranet:intranet@bal747f.mecon.ar/novedades';
11     var $dni;
12     var $nombre;
13     var $dep;
14     // Date.
15     var $nac;
16
17     function Agente($dni) {
18         $this->dni = $dni;
19     }
20
21     function limpiar() {
22         $this->dni = null;
23         $this->nombre = null;
24         $this->dep = null;
25         $this->nac = null;
26     }
27
28     function cargar($db = null) {
29         // Si no me pasan la DB, creo una.
30         if (is_null($db)) {
31             $db = DB::connect($this->dsn);
32             // Si hay error lo devuelve.
33             if (DB::isError($db)) {
34                 return $db;
35             }
36         }
37         // Si es un resultado, obtengo los elemento.
38         if (is_a($db, 'db_result')) {
39             $res = $db->fetchRow(DB_FETCHMODE_ASSOC);
40             // Si hay error lo devuelve.
41             if (DB::isError($res)) {
42                 return $res;
43             }
44         // Si no es un resultado, obtengo el elemento.
45         } else {
46             $res = $db->getRow(
47                 'SELECT nrodoc, nombre, dependencia, fecha_nac
48                     FROM novedades.web003
49                     WHERE nrodoc = ' . $db->quote($this->dni),
50                 null,
51                 DB_FETCHMODE_ASSOC
52             );
53             // Si hay error lo devuelve.
54             if (DB::isError($res)) {
55                 return $res;
56             }
57         }
58         // Si no hay resultados devuelve false.
59         if (!$res) {
60             return false;
61         }
62         // Si tenemos resultados, cargamos los datos.
63         $this->dni = $res['nrodoc'];
64         $this->nombre = ucwords(strtolower($res['nombre']));
65         $this->dep = ucwords(strtolower($res['dependencia']));
66         preg_match('/(\d{2})(\d{2})(\d{4})/', $res['fecha_nac'], $m);
67         $this->nac = new Date("$m[3]-$m[2]-$m[1] 00:00:00");
68         return true;
69     }
70
71     function buscar($db = null, $operador = MECON_DBO_OR, $orden = 'nombre ASC') {
72         // Si no me pasan la DB, creo una.
73         if (is_null($db)) {
74             $db = DB::connect($this->dsn);
75             // Si hay error lo devuelve.
76             if (DB::isError($db)) {
77                 return $db;
78             }
79         }
80         // Armo el WHERE.
81         $where = array();
82         // Si tiene nombre, agrego a la búsqueda.
83         if (!is_null($this->nombre)) {
84             $where[] = 'W.nombre LIKE ' . $db->quote("%$this->nombre%");
85         }
86         // Si tiene dep, agrego a la búsqueda.
87         if (!is_null($this->dep)) {
88             $where[] = 'W.dependencia LIKE ' . $db->quote("%$this->dep%");
89         }
90         // Si tiene nac, agrego a la búsqueda.
91         if (!is_null($this->nac)) {
92             $where[] = 'W.fecha_nac LIKE '
93                 . $db->quote('%' . $this->nac->format('%d%m%Y') . '%');
94         }
95         if ($where) {
96             $where = 'WHERE ' . join (" $operador ", $where);
97         } else {
98             $where = '';
99         }
100         // Armo el ORDER BY.
101         if (is_string($orden)) {
102             $orden = array($orden);
103         }
104         if ($orden) {
105             $orden = 'ORDER BY ' . join(', ', $orden);
106         }
107         return $db->query(
108             "SELECT nrodoc, nombre, dependencia, fecha_nac
109                 FROM novedades.web003 as W $where $orden");
110     }
111
112 }
113
114 $agente = new Agente(27215947);
115 echo 'Carga: '; var_dump($e = $agente->cargar()); echo "\n";
116 if (PEAR::isError($e)) {
117     die('Error: ' . $e->getMessage() . "\n");
118 }
119 echo '  '; var_dump($agente); echo "\n";
120 $agente->limpiar();
121 $agente->nombre = 'sklar';
122 echo 'Búsqueda: '; var_dump(is_a($res = $agente->buscar(), 'db_result')); echo "\n";
123 if (PEAR::isError($res)) {
124     die('Error: ' . $res->getMessage() . "\n");
125 }
126 while ($e = $agente->cargar($res)) {
127     if (PEAR::isError($e)) {
128         die('Error: ' . $e->getMessage() . "\n");
129     }
130     echo '  Agente: '; var_dump($agente); echo "\n";
131 }
132
133 ?>