Página principal | Lista alfabética | Lista de componentes | Lista de archivos | Miembros de las clases

Sistema.php

Ir a la documentación de este archivo.
00001 <?php
00002 // vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4:
00003 // +----------------------------------------------------------------------+
00004 // | PHP Version 4                                                        |
00005 // +----------------------------------------------------------------------+
00006 // | Copyright (c) 1997-2003 The PHP Group                                |
00007 // +----------------------------------------------------------------------+
00008 // | This source file is subject to version 2.02 of the PHP license,      |
00009 // | that is bundled with this package in the file LICENSE, and is        |
00010 // | available at through the world-wide-web at                           |
00011 // | http://www.php.net/license/2_02.txt.                                 |
00012 // | If you did not receive a copy of the PHP license and are unable to   |
00013 // | obtain it through the world-wide-web, please send a note to          |
00014 // | license@php.net so we can mail you a copy immediately.               |
00015 // +----------------------------------------------------------------------+
00016 // | Created: Tue May 27 11:20:04 2003
00017 // | Author:  Martin Marrese - Myrna Degano <mmarre@mecon.gov.ar - mdegan@mecon.gov.ar>
00018 // +----------------------------------------------------------------------+
00019 //
00020 // $Id: Sistema.php 26 2003-07-07 22:45:35Z mmarre $
00021 // $Author: mmarre $
00022 // $URL: http://portal.mecon.ar/svn/samurai/tronco/lib/SAMURAI/Sistema.php $
00023 // $Date: 2003-07-07 19:45:35 -0300 (Mon, 07 Jul 2003) $
00024 // $Rev: 26 $
00025 //
00026 
00027 require_once 'PEAR.php';
00028 require_once 'Samurai_DB.php';
00029 require_once 'Date.php';
00030 
00031 // +X2C Class 209 :SAMURAI_Sistema
00037 class SAMURAI_Sistema {
00044     var $_id;
00045 
00052     var $_nombre;
00053 
00060     var $_descripcion;
00061 
00068     var $_fecha_inicio;
00069 
00076     var $_fecha_fin;
00077 
00084     var $_fecha_implementacion;
00085 
00092     var $_contacto;
00093 
00100     var $_db;
00101 
00108     var $_responsable;
00109 
00116     var $_permisos;
00117 
00124     var $_asociaciones;
00125 
00132     function getAsociaciones()
00133     {
00134         return $this->_asociaciones;
00135     }
00144     function setAsociaciones($asociaciones)
00145     {
00146         $this->_asociaciones = $asociaciones;
00147     }
00148 
00149     // ~X2C
00150 
00151     // +X2C Operation 243
00161     function SAMURAI_Sistema(&$db, $id = null) // ~X2C
00162     {
00163         $this->_db =& $db;
00164         $this->_id = $id;
00165         if (!is_null($id)) {
00166             $this->_obtenerDatosDb();
00167         }
00168         else {
00169             $this->setNombre();
00170             $this->setDescripcion(); 
00171             $this->setFechaInicio();
00172             $this->setFechaFin();
00173             $this->setFechaImplementacion();
00174             $this->setContacto();
00175             $this->setResponsable();
00176             $this->setPermisos();
00177         }
00178     }
00179     // -X2C
00180 
00181     // +X2C Operation 244
00188     function getId() // ~X2C
00189     {
00190         return $this->_id;
00191     }
00192     // -X2C
00193 
00194     // +X2C Operation 245
00201     function getNombre() // ~X2C
00202     {
00203         return $this->_nombre;
00204     }
00205     // -X2C
00206 
00207     // +X2C Operation 246
00214     function getDescripcion() // ~X2C
00215     {
00216         return $this->_descripcion;
00217     }
00218     // -X2C
00219 
00220     // +X2C Operation 247
00227     function &getFechaInicio() // ~X2C
00228     {        
00229         if ($this->_fecha_inicio) {
00230             return new Date ($this->_fecha_inicio.' 00:00:00');
00231         }
00232         else {
00233             return null;
00234         }
00235     }
00236     // -X2C
00237 
00238     // +X2C Operation 248
00245     function &getFechaFin() // ~X2C
00246     {
00247         if ($this->_fecha_fin) {
00248             return new Date ($this->_fecha_fin.' 00:00:00');
00249         }
00250         else {
00251             return null;
00252         }
00253     }
00254     // -X2C
00255 
00256     // +X2C Operation 249
00263     function &getFechaImplementacion() // ~X2C
00264     {
00265         if ($this->_fecha_implementacion) {
00266             return new Date ($this->_fecha_implementacion.' 00:00:00');
00267         }
00268         else {
00269             return null;
00270         }
00271     }
00272     // -X2C
00273 
00274     // +X2C Operation 250
00281     function getContacto() // ~X2C
00282     {
00283         return $this->_contacto;
00284     }
00285     // -X2C
00286 
00287     // +X2C Operation 251
00296     function setNombre($nombre = null) // ~X2C
00297     {
00298         $this->_nombre = $nombre;
00299     }
00300     // -X2C
00301 
00302     // +X2C Operation 252
00311     function setDescripcion($descripcion = null) // ~X2C
00312     {
00313         $this->_descripcion = $descripcion;
00314     }
00315     // -X2C
00316 
00317     // +X2C Operation 253
00326     function setFechaInicio($fecha = null) // ~X2C
00327     {
00328         if ($fecha && $fecha != '0000-00-00') {
00329             $this->_fecha_inicio = $fecha;
00330         }
00331         else {
00332             $this->_fecha_inicio = null;
00333         }
00334     }
00335     // -X2C
00336 
00337     // +X2C Operation 254
00346     function setFechaFin($fecha = null) // ~X2C
00347     {
00348         if ($fecha && $fecha != '0000-00-00') {
00349             $this->_fecha_fin = $fecha;
00350         }
00351         else {
00352             $this->_fecha_fin = null;
00353         }
00354     }
00355     // -X2C
00356 
00357     // +X2C Operation 255
00366     function setFechaImplementacion($fecha = null) // ~X2C
00367     {
00368         if ($fecha && $fecha != '0000-00-00') {
00369             $this->_fecha_implementacion = $fecha;
00370         }
00371         else {
00372             $this->_fecha_implementacion = null;
00373         }
00374 
00375     }
00376     // -X2C
00377 
00378     // +X2C Operation 256
00387     function setContacto($contacto = null) // ~X2C
00388     {
00389         $this->_contacto = $contacto;
00390     }
00391     // -X2C
00392 
00393     // +X2C Operation 263
00400     function _obtenerDatosDb() // ~X2C
00401     {
00402         $sql = parse_ini_file(dirname(__FILE__) . '/Sistema/consultas.ini', true);
00403         $tmp = $sql['obtener_datos_sistema'].$sql['obtener_datos_sistema2'];
00404         $dbh = $this->_db->prepare($tmp);
00405         $tmp = array ($this->getId());
00406         $res = $this->_db->execute($dbh,$tmp);        
00407 
00408         if ($re  = $res->fetchRow(DB_FETCHMODE_ASSOC)) {
00409             if (isset($re['nombre_sistema'])) {
00410                 $this->setNombre($re['nombre_sistema']);
00411             }
00412             else {
00413                 $this->setNombre();
00414             }
00415             if (isset($re['desc_sistema'])) {
00416                $this->setDescripcion($re['desc_sistema']);
00417             }
00418             else {
00419                 $this->setDescripcion();
00420             }
00421             if (isset($re['fecha_inicio'])) {
00422                 $this->setFechaInicio($re['fecha_inicio']);
00423             }
00424             else {
00425                 $this->setFechaInicio();
00426             }
00427             if (isset($re['fecha_fin'])) {
00428                 $this->setFechaFin($re['fecha_fin']);
00429             }
00430             else {
00431                 $this->setFechaFin();
00432             }
00433             if (isset($re['fecha_implementacion'])) {
00434                 $this->setFechaImplementacion($re['fecha_implementacion']);
00435             }
00436             else {
00437                 $this->setFechaImplementacion();
00438             }
00439             if (isset($re['contacto'])) {
00440                 $this->setContacto($re['contacto']);
00441             }
00442             else {
00443                 $this->setContacto();
00444             }
00445             if (isset($re['responsable'])) {
00446                 $this->setResponsable($re['responsable']);
00447             }
00448             else {
00449                 $this->setResponsable();
00450             }
00451         }
00452         $tmp = $sql['obtener_permisos'];
00453         $tmp.= $sql['borrar_permisos2'];
00454         $dbh = $this->_db->prepare($tmp);
00455         $tmp = array ($this->getId(),'');
00456         $res = $this->_db->execute($dbh,$tmp);
00457         $tmp  = array();
00458         $i = 0;
00459         while ($re = $res->fetchRow(DB_FETCHMODE_ORDERED)) {
00460             $tmp[] = $re['0'];
00461             $i++;
00462         }
00463         $this->_permisos = $tmp;
00464         $tmp = $sql['obtener_permisos'];
00465         $tmp.= $sql['obtener_permisos2'];
00466         $dbh = $this->_db->prepare($tmp);
00467         $tmp = array ($this->getId());
00468         $res = $this->_db->execute($dbh,$tmp);        
00469         $tmp  = array();
00470         $i = 0;
00471         while ($re = $res->fetchRow(DB_FETCHMODE_ORDERED)) {
00472             $tmp[$i]['id']  = $re['0'];
00473             $tmp[$i]['obs'] = $re['1'];
00474             $i++;
00475         }
00476         $this->_asociaciones = $tmp;
00477     }
00478     // -X2C
00479 
00480     // +X2C Operation 288
00489     function guardarDatos($accion = grabar) // ~X2C
00490     {
00491         $accion = strtolower($accion);
00492         switch ($accion)  {
00493             case 'grabar':
00494                 $res = $this->_grabarDb();        
00495                 break; 
00496             case 'modificar':
00497                 $res = $this->_modificarDb();
00498                 break;
00499             case 'eliminar':
00500                 $res = $this->_borrarDb();
00501                 break;
00502         }
00503         return $res;
00504     }
00505     // -X2C
00506 
00507     // +X2C Operation 290
00514     function getResponsable() // ~X2C
00515     {
00516         return $this->_responsable;
00517     }
00518     // -X2C
00519 
00520     // +X2C Operation 291
00529     function setResponsable($responsable = null) // ~X2C
00530     {
00531         $this->_responsable = $responsable;
00532     }
00533     // -X2C
00534 
00535     // +X2C Operation 301
00542     function getIdPermisos() // ~X2C
00543     {
00544         return $this->_permisos;
00545     }
00546     // -X2C
00547 
00548     // +X2C Operation 302
00557     function setPermisos($permisos = null) // ~X2C
00558     {
00559         $this->_permisos = $permisos;
00560     }
00561     // -X2C
00562 
00563     // +X2C Operation 303
00568     function getMaxIdSistema() // ~X2C
00569     {
00570         $sql = parse_ini_file(dirname(__FILE__) . '/Sistema/consultas.ini', true);
00571         $dbh = $this->_db->prepare($sql['obtener_max_id_sistemas']);
00572         $res = $this->_db->execute($dbh);
00573         $re = $res->fetchrow(DB_FETCHMODE_ASSOC);
00574         $res->free();
00575         return $re['id_sistema']; 
00576     }
00577     // -X2C
00578 
00579     // +X2C Operation 304
00586     function _grabarDb() // ~X2C
00587     {
00588         $idSistema = $this->_db->nextId('sistema');
00589         $fecha_inicio         = $this->getFechaInicio();
00590         $fecha_fin            = $this->getFechaFin();
00591         $fecha_implementacion = $this->getFechaImplementacion();
00592         //USO SECUENCIAS Y AUTOEXECUTE
00593         //Grabo el sistema        
00594         $datos = array(  
00595                     'id_sistema'            => $idSistema,
00596                     'nombre_sistema'        => $this->getNombre(),
00597                     'desc_sistema'          => $this->getDescripcion(),
00598                     'fecha_inicio'          => $fecha_inicio         ? $fecha_inicio->format("%Y-%m-%d")         : null, 
00599                     'fecha_fin'             => $fecha_fin            ? $fecha_fin->format("%Y-%m-%d")            : null, 
00600                     'fecha_implementacion'  => $fecha_implementacion ? $fecha_implementacion->format("%Y-%m-%d") : null,
00601                     'contacto'              => $this->getContacto(),
00602                     'responsable'           => $this->getResponsable(),
00603                     'estado'                => 1
00604                 );                
00605         $res = $this->_db->autoExecute('sistema', $datos, DB_AUTOQUERY_INSERT);
00606         
00607         if (PEAR::isError($res)) {
00608             return $res;
00609         }
00610         //Grabo los permisos
00611         $res = $this->_grabarPermisosDb($idSistema);
00612         if (PEAR::isError($res)) {
00613             return $res;
00614         }
00615     }
00616     // -X2C
00617 
00618     // +X2C Operation 305
00625     function _borrarDb() // ~X2C
00626     {
00627         $idSistema   = $this->getId();
00628         $responsable = $this->getResponsable();
00629         //Cambio el estado al sistema
00630         $datos = array( 'responsable' => $responsable,
00631                         'estado'      => 0
00632                 );                
00633         $res = $this->_db->autoExecute('sistema', $datos, DB_AUTOQUERY_UPDATE, 'id_sistema = '.$idSistema);
00634         if (PEAR::isError($res)) {
00635             return $res;
00636         }
00637         //Borro los permisos que tiene asignado el sistema
00638         //Borro absolutamente todos los permisos que tiene asociado -> No hay vuelta a atras
00639         $res = $this->_borrarPermisosDb($idSistema);
00640         if (PEAR::isError($res)) {
00641             return $res;
00642         }
00643     }
00644     // -X2C
00645 
00646     // +X2C Operation 306
00653     function _modificarDb() // ~X2C
00654     {
00655         //Grabo las modificaciones al sistema
00656         $idSistema            = $this->getId();
00657         $fecha_inicio         = $this->getFechaInicio();
00658         $fecha_fin            = $this->getFechaFin();
00659         $fecha_implementacion = $this->getFechaImplementacion();
00660         //USO SECUENCIAS Y AUTOEXECUTE
00661         //Grabo el sistema        
00662         $datos = array(  
00663                     'nombre_sistema'        => $this->getNombre(),
00664                     'desc_sistema'          => $this->getDescripcion(),
00665                     'fecha_inicio'          => $fecha_inicio         ? $fecha_inicio->format("%Y-%m-%d")         : null, 
00666                     'fecha_fin'             => $fecha_fin            ? $fecha_fin->format("%Y-%m-%d")            : null, 
00667                     'fecha_implementacion'  => $fecha_implementacion ? $fecha_implementacion->format("%Y-%m-%d") : null,
00668                     'contacto'              => $this->getContacto(),
00669                     'responsable'           => $this->getResponsable(),
00670                 );                
00671         $res = $this->_db->autoExecute('sistema', $datos, DB_AUTOQUERY_UPDATE, 'id_sistema = '.$idSistema);
00672         if (PEAR::isError($res)) {
00673             return $res;
00674         }
00675         //Borro los permisos que no tengan observaciones
00676         $res = $this->_borrarPermisosDb($idSistema, '');
00677         if (PEAR::isError($res)) {
00678             return $res;
00679         }
00680         //Grabo los permisos que selecciono
00681         $res = $this->_grabarPermisosDb($idSistema);
00682         if (PEAR::isError($res)) {
00683             return $res;
00684         }
00685     }
00686     // -X2C
00687 
00688 
00689     // +X2C Operation 308
00698     function _grabarPermisosDb($idSistema) // ~X2C
00699     {
00700         $datos = array ('id_permiso','id_sistema','responsable');
00701         $re = $this->_db->autoPrepare('perm_sist', $datos, DB_AUTOQUERY_INSERT);
00702         if (isset($this->_permisos)) {
00703             foreach ($this->_permisos as $permiso) {
00704                 $datos = array ($permiso['0'], $idSistema, $this->getResponsable());
00705                 $res = $this->_db->execute($re, $datos);
00706                 if (PEAR::isError($res)) {
00707                     return $res;
00708                 }
00709             }
00710         }
00711         
00712     }
00713     // -X2C
00714 
00715     // +X2C Operation 309
00726     function _borrarPermisosDb($idSistema, $observaciones = null, $idPermiso = null) // ~X2C
00727     {
00728         $sql = parse_ini_file(dirname(__FILE__) . '/Sistema/consultas.ini', true);
00729         $datos[] = $idSistema;
00730         $tmp = $sql['borrar_permisos']; 
00731         if (isset($observaciones)) {
00732             $tmp.= $sql['borrar_permisos2'];
00733             $datos[] = $observaciones;
00734         }
00735         if (isset($idPermiso)) {
00736             $tmp.= $sql['borrar_permisos3'];
00737             $datos[] = $idPermiso;
00738         }
00739         $dbh = $this->_db->prepare($tmp);
00740         $res = $this->_db->execute($dbh, $datos);
00741         if (PEAR::isError($res)) {
00742             return $res;
00743         }
00744     }
00745     // -X2C
00746 
00747 
00748     // +X2C Operation 312
00758     function guardarAsociacion($idPermiso, $observacion = '') // ~X2C
00759     {
00760         $error = true;
00761         if (!$this->_existeAsociacion($idPermiso, $observacion)) {    
00762             //Guardo la asociacion
00763             //Grabo el sistema        
00764             $datos = array(  
00765                         'id_permiso'    => $idPermiso,
00766                         'id_sistema'    => $this->getId(),
00767                         'observaciones' => $observacion,
00768                         'responsable'   => $this->getResponsable(),
00769                     );                
00770             $res = $this->_db->autoExecute('perm_sist', $datos, DB_AUTOQUERY_INSERT);
00771             //Recargo los datos del sistema
00772             $this->_obtenerDatosDb();
00773             $error = false;
00774         }
00775         return $error;
00776     }
00777     // -X2C
00778 
00779     // +X2C Operation 313
00789     function eliminarAsociacion($idPermiso, $observacion = '') // ~X2C
00790     {
00791         $error = false;
00792         //Elimino la asociacion
00793         $this->_borrarPermisosDb($this->getId(), $observacion, $idPermiso);
00794         //Recargo los datos del sistema
00795         $this->_obtenerDatosDb();
00796         return $error;
00797     }
00798     // -X2C
00799 
00800     // +X2C Operation 314
00812     function modificarAsociacion($idPermiso, $idPermiso_ant, $observacion = '', $obs_ant = '') // ~X2C
00813     {
00814         $error = true;
00815         //Busco la nueva asociacion
00816         if (!$this->_existeAsociacion($idPermiso, $observacion)) {    
00817             //Actualizo la asociacion
00818              $datos = array(  
00819                         'id_permiso'    => $idPermiso,
00820                         'id_sistema'    => $this->getId(),
00821                         'observaciones' => $observacion,
00822                         'responsable'   => $this->getResponsable(),
00823                     );                
00824             $this->_db->autoExecute('perm_sist', 
00825                                     $datos, 
00826                                     DB_AUTOQUERY_UPDATE, 
00827                                     'id_sistema = '.$this->getId().' AND id_permiso = '.$idPermiso_ant.' AND observaciones =\''.$obs_ant.'\'');
00828 
00829             //Recargo los datos del sistema
00830             $this->_obtenerDatosDb();
00831             $error = false;
00832         }
00833         return $error;
00834     }
00835     // -X2C
00836 
00837     // +X2C Operation 315
00847     function _existeAsociacion($idPermiso, $observacion) // ~X2C
00848     {
00849         $sql = parse_ini_file(dirname(__FILE__) . '/Sistema/consultas.ini', true);
00850         $tmp = $sql['obtener_permisos'].$sql['obtener_permisos3'].$sql['obtener_permisos4'];
00851         $dbh = $this->_db->prepare($tmp);
00852         $tmp = array ($this->getId(),$idPermiso,$observacion);
00853         $res = $this->_db->execute($dbh,$tmp);
00854         $re  = $res->fetchRow();      
00855 
00856         if (is_null($re)) {
00857             return false;
00858         }
00859         else {
00860             return true;
00861         }
00862     }
00863     // -X2C
00864 
00865     // +X2C Operation 341
00875     function getSistemas(&$db) // ~X2C
00876     {
00877         $rta = array ();
00878         foreach (SAMURAI_Sistema::_getIdSistemas($db) as $id) {
00879             $tmp = new SAMURAI_Sistema($db,$id);
00880             array_push($rta, $tmp);
00881         }
00882         return $rta;
00883     }
00884     // -X2C
00885 
00886     // +X2C Operation 342
00896     function _getIdSistemas(&$db) // ~X2C
00897     {
00898         //OBTENGO LOS ID DE LA BASE
00899         $rta = array();
00900         $sql = parse_ini_file(dirname(__FILE__) . '/Sistema/consultas.ini', true);
00901         $dbh = $db->prepare($sql['obtener_datos_sistema'].$sql['obtener_datos_sistema3']);
00902         $res = $db->execute($dbh);
00903         while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) {
00904             array_push($rta,$re['id_sistema']);
00905         }        
00906         $res->free();
00907         return $rta;
00908     }
00909     // -X2C
00910 
00911     // +X2C Operation 343
00921     function getArraySistemas(&$db) // ~X2C
00922     {
00923         $rta = array ();
00924         foreach (SAMURAI_Sistema::getSistemas($db) as $sistema) {
00925             $rta[$sistema->getId()] = $sistema->getNombre();
00926         }
00927         return $rta;
00928     }
00929     // -X2C
00930 
00931 } // -X2C Class :SAMURAI_Sistema
00932 
00933 ?>

Generado el Tue Jul 8 11:36:21 2003 para SAMURAI por doxygen 1.3.2