2 // vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4:
3 // +----------------------------------------------------------------------+
5 // +----------------------------------------------------------------------+
6 // | Copyright (c) 1997-2003 The PHP Group |
7 // +----------------------------------------------------------------------+
8 // | This source file is subject to version 2.02 of the PHP license, |
9 // | that is bundled with this package in the file LICENSE, and is |
10 // | available at through the world-wide-web at |
11 // | http://www.php.net/license/2_02.txt. |
12 // | If you did not receive a copy of the PHP license and are unable to |
13 // | obtain it through the world-wide-web, please send a note to |
14 // | license@php.net so we can mail you a copy immediately. |
15 // +----------------------------------------------------------------------+
16 // | Created: Tue May 27 11:20:04 2003
17 // | Author: Martin Marrese - Myrna Degano <mmarre@mecon.gov.ar - mdegan@mecon.gov.ar>
18 // +----------------------------------------------------------------------+
27 #require_once 'PEAR.php';
28 require_once 'Samurai_DB.php';
29 require_once 'Date.php';
31 // +X2C Class 209 :Sistema
33 * Clase para el manejo de los sistemas.
39 * Identificador del sistema.
55 * Descripcion del sistema.
57 * @var string $descripcion
63 * Fecha en la cual se inicio el sistema.
65 * @var date $fecha_inicio
71 * Fecha en la cual se dio por terminado el desarrollo del sistema.
73 * @var date $fecha_fin
79 * Fecha de implementacion del sistema.
81 * @var date $fecha_implementacion
84 var $_fecha_implementacion;
87 * Texto con los datos del o de los contacto/s en el area usuario.
89 * @var string $contacto
103 * Login del responsable de los ultimos cambios del sistema.
105 * @var string $responsable
111 * Array asociativo (id - descripcion) con los permisos asociados al sistema.
113 * @var array $permisos
120 // +X2C Operation 243
122 * Constructor. Si recibe como parametro el identificador busca en la DB los datos.
124 * @param Samurai_DB &$db Objeto Conexion
125 * @param int $id Identificador del sistema
130 function Sistema(&$db, $id = null)// ~X2C
135 $this->_obtenerDatosDb();
139 $this->setDescripcion();
140 $this->setFechaInicio();
141 $this->setFechaFin();
142 $this->setFechaImplementacion();
143 $this->setContacto();
144 $this->setResponsable();
145 $this->setPermisos();
150 // +X2C Operation 244
152 * Devuelve el identificador del sistema.
157 function getId()// ~X2C
163 // +X2C Operation 245
165 * Devuelve el nombre del sistema.
170 function getNombre()// ~X2C
172 return $this->_nombre;
176 // +X2C Operation 246
178 * Devuelve la descrpcion del sistema.
183 function getDescripcion()// ~X2C
185 return $this->_descripcion;
189 // +X2C Operation 247
191 * Devuelve la fecha de inicio del sistema.
196 function &getFechaInicio()// ~X2C
198 if ($this->_fecha_inicio) {
199 return new Date ($this->_fecha_inicio.' 00:00:00');
207 // +X2C Operation 248
209 * Devuelve la fecha de finalizacion del sistema.
214 function &getFechaFin()// ~X2C
216 if ($this->_fecha_fin) {
217 return new Date ($this->_fecha_fin.' 00:00:00');
225 // +X2C Operation 249
227 * Devuelve la fecha de implementacion del sistema.
232 function &getFechaImplementacion()// ~X2C
234 if ($this->_fecha_implementacion) {
235 return new Date ($this->_fecha_implementacion.' 00:00:00');
243 // +X2C Operation 250
245 * Devuelve el contacto del sistema.
250 function getContacto()// ~X2C
252 return $this->_contacto;
256 // +X2C Operation 251
258 * Setea el nombre del sistema.
260 * @param string $nombre Nombre del sistema.
265 function setNombre($nombre = null)// ~X2C
267 $this->_nombre = $nombre;
271 // +X2C Operation 252
273 * Setea la descripcion del sistema.
275 * @param string $descripcion Descripcion del sistema.
280 function setDescripcion($descripcion = null)// ~X2C
282 $this->_descripcion = $descripcion;
286 // +X2C Operation 253
288 * Setea la fecha de inicio del sistema.
290 * @param date $fecha Fecha de inicio del sistema
295 function setFechaInicio($fecha = null)// ~X2C
297 if ($fecha && $fecha != '0000-00-00') {
298 $this->_fecha_inicio = $fecha;
301 $this->_fecha_inicio = null;
306 // +X2C Operation 254
308 * Setea la fecha de finalizacion del sistema.
310 * @param date $fecha Fecha de finalizacion del sistema.
315 function setFechaFin($fecha = null)// ~X2C
317 if ($fecha && $fecha != '0000-00-00') {
318 $this->_fecha_fin = $fecha;
321 $this->_fecha_fin = null;
326 // +X2C Operation 255
328 * Setea la fecha de implementacion del sistema.
330 * @param date $fecha Fecha de implementacion del sistema.
335 function setFechaImplementacion($fecha = null)// ~X2C
337 if ($fecha && $fecha != '0000-00-00') {
338 $this->_fecha_implementacion = $fecha;
341 $this->_fecha_implementacion = null;
347 // +X2C Operation 256
349 * Setea el contacto del sistema.
351 * @param string $contacto Texto con la informacion del contacto.
356 function setContacto($contacto = null)// ~X2C
358 $this->_contacto = $contacto;
362 // +X2C Operation 263
364 * Obtiene los datos del sistema de la DB.
369 function _obtenerDatosDb()// ~X2C
371 $sql = include 'Sistema/consultas.php'; //Incluyo las consultas de este objeto nada mas.
372 $tmp = $sql['obtener_datos_sistema'].$sql['obtener_datos_sistema2'];
373 $dbh = $this->_db->prepare($tmp);
374 $tmp = array ($this->getId());
375 $res = $this->_db->execute($dbh,$tmp);
377 if ($re = $res->fetchRow(DB_FETCHMODE_ASSOC)) {
378 if (isset($re['nombre_sistema'])) {
379 $this->setNombre($re['nombre_sistema']);
384 if (isset($re['desc_sistema'])) {
385 $this->setDescripcion($re['desc_sistema']);
388 $this->setDescripcion();
390 if (isset($re['fecha_inicio'])) {
391 $this->setFechaInicio($re['fecha_inicio']);
394 $this->setFechaInicio();
396 if (isset($re['fecha_fin'])) {
397 $this->setFechaFin($re['fecha_fin']);
400 $this->setFechaFin();
402 if (isset($re['fecha_implementacion'])) {
403 $this->setFechaImplementacion($re['fecha_implementacion']);
406 $this->setFechaImplementacion();
408 if (isset($re['contacto'])) {
409 $this->setContacto($re['contacto']);
412 $this->setContacto();
414 if (isset($re['responsable'])) {
415 $this->setResponsable($re['responsable']);
418 $this->setResponsable();
421 $tmp = $sql['obtener_permisos'];
422 $dbh = $this->_db->prepare($tmp);
423 $tmp = array ($this->getId());
424 $res = $this->_db->execute($dbh,$tmp);
426 while ($re = $res->fetchRow(DB_FETCHMODE_ORDERED)) {
429 $this->_permisos = $tmp;
433 // +X2C Operation 288
435 * Guarda la informacion del sistema en la base.
437 * @param string $accion Accion a realizar. Grabar, modificar o eliminar
442 function guardarDatos($accion = grabar)// ~X2C
444 $accion = strtolower($accion);
450 $this->_modificarDb();
459 // +X2C Operation 290
461 * Devuelve el login del responsable de los ultimos cambios
466 function getResponsable()// ~X2C
468 return $this->_responsable;
472 // +X2C Operation 291
474 * Setea el login del responsable de los ultimos cambios del sistema
476 * @param string $responsable String con el login del responsable del cambio
481 function setResponsable($responsable = null)// ~X2C
483 $this->_responsable = $responsable;
487 // +X2C Operation 301
489 * Devuelve un array asociativo con los identificadores de los permisos
494 function getIdPermisos()// ~X2C
496 return $this->_permisos;
500 // +X2C Operation 302
502 * Setea los permisos de un sistema
504 * @param int $permisos Array asociativo con los permisos
509 function setPermisos($permisos = null)// ~X2C
511 $this->_permisos = $permisos;
515 // +X2C Operation 303
520 function getMaxIdSistema()// ~X2C
522 $sql = include 'Sistema/consultas.php';
523 $dbh = $this->_db->prepare($sql['obtener_max_id_sistemas']);
524 $res = $this->_db->execute($dbh);
525 $re = $res->fetchrow(DB_FETCHMODE_ASSOC);
527 return $re['id_sistema'];
531 // +X2C Operation 304
533 * Graba los datos en la Base de Datos
538 function _grabarDb()// ~X2C
540 $idSistema = $this->_db->nextId('sistema');
541 $fecha_inicio = $this->getFechaInicio();
542 $fecha_fin = $this->getFechaFin();
543 $fecha_implementacion = $this->getFechaImplementacion();
544 //USO SECUENCIAS Y AUTOEXECUTE
547 'id_sistema' => $idSistema,
548 'nombre_sistema' => $this->getNombre(),
549 'desc_sistema' => $this->getDescripcion(),
550 'fecha_inicio' => $fecha_inicio ? $fecha_inicio->format("%Y-%m-%d") : null,
551 'fecha_fin' => $fecha_fin ? $fecha_fin->format("%Y-%m-%d") : null,
552 'fecha_implementacion' => $fecha_implementacion ? $fecha_implementacion->format("%Y-%m-%d") : null,
553 'contacto' => $this->getContacto(),
554 'responsable' => $this->getResponsable(),
557 $res = $this->_db->autoExecute('sistema', $datos, DB_AUTOQUERY_INSERT);
559 if (DB::isError($res)) {
560 trigger_error('Error al tratar de insertar el sistema -> '.$res, E_USER_ERROR);
564 $this->_grabarPermisosDb($idSistema);
568 // +X2C Operation 305
570 * Borra los datos de la base de datos
575 function _borrarDb()// ~X2C
577 $idSistema = $this->getId();
578 $responsable = $this->getResponsable();
579 //Cambio el estado al sistema
580 $datos = array( 'responsable' => $responsable,
584 $res = $this->_db->autoExecute('sistema', $datos, DB_AUTOQUERY_UPDATE, 'id_sistema = '.$idSistema);
585 if (DB::isError($res)) {
586 trigger_error('Error en sistema -> '.$res, E_USER_ERROR);
589 //Borro los permisos que tiene asignado el sistema
590 //Borro absolutamente todos los permisos que tiene asociado -> No hay vuelta a atras
591 $this->_borrarPermisosDb($idSistema, false);
595 // +X2C Operation 306
597 * Modifica los datos en base
602 function _modificarDb()// ~X2C
604 //Grabo las modificaciones al sistema
605 $idSistema = $this->getId();
606 $fecha_inicio = $this->getFechaInicio();
607 $fecha_fin = $this->getFechaFin();
608 $fecha_implementacion = $this->getFechaImplementacion();
609 //USO SECUENCIAS Y AUTOEXECUTE
612 'nombre_sistema' => $this->getNombre(),
613 'desc_sistema' => $this->getDescripcion(),
614 'fecha_inicio' => $fecha_inicio ? $fecha_inicio->format("%Y-%m-%d") : null,
615 'fecha_fin' => $fecha_fin ? $fecha_fin->format("%Y-%m-%d") : null,
616 'fecha_implementacion' => $fecha_implementacion ? $fecha_implementacion->format("%Y-%m-%d") : null,
617 'contacto' => $this->getContacto(),
618 'responsable' => $this->getResponsable(),
620 $res = $this->_db->autoExecute('sistema', $datos, DB_AUTOQUERY_UPDATE, 'id_sistema = '.$idSistema);
622 if (DB::isError($res)) {
623 trigger_error('Error al tratar de insertar el sistema -> '.var_dump($res), E_USER_ERROR);
625 //Borro los permisos que no tengan observaciones
626 $this->_borrarPermisosDb($idSistema, true);
627 //Grabo los permisos que selecciono
628 $this->_grabarPermisosDb($idSistema);
633 // +X2C Operation 308
635 * Graba los permisos del sistema en perm_sist
637 * @param int $idSistema Identificador del sistema
642 function _grabarPermisosDb($idSistema)// ~X2C
644 $datos = array ('id_permiso','id_sistema','responsable');
645 $re = $this->_db->autoPrepare('perm_sist', $datos, DB_AUTOQUERY_INSERT);
646 if (isset($this->_permisos)) {
647 foreach ($this->_permisos as $permiso) {
648 $datos = array ($permiso['0'], $idSistema, $this->getResponsable());
649 $res = $this->_db->execute($re, $datos);
650 if (DB::isError($res)) {
651 trigger_error('Error en perm_sist -> '.$res, E_USER_ERROR);
659 // +X2C Operation 309
661 * Borra los permisos que tenga asociado el sistema segun el criterio de observaciones
663 * @param int $idSistema Identificador del sistema
664 * @param bool $observaciones Si es false borra todas las asociaciones que tenga el sistema. Si es true borra solo aquellas que tengan observaciones = ''
669 function _borrarPermisosDb($idSistema, $observaciones)// ~X2C
671 $sql = include 'Sistema/consultas.php';
672 $datos[] = $idSistema;
673 $tmp = $sql['borrar_permisos'];
674 if ($observaciones) {
675 $tmp.= $sql['borrar_permisos2'];
678 $dbh = $this->_db->prepare($tmp);
679 $res = $this->_db->execute($dbh, $datos);
683 } // -X2C Class :Sistema