00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 require_once 'PEAR.php';
00028 require_once 'Samurai_DB.php';
00029 require_once 'Date.php';
00030
00031
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
00150
00151
00161 function SAMURAI_Sistema(&$db, $id = null)
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
00180
00181
00188 function getId()
00189 {
00190 return $this->_id;
00191 }
00192
00193
00194
00201 function getNombre()
00202 {
00203 return $this->_nombre;
00204 }
00205
00206
00207
00214 function getDescripcion()
00215 {
00216 return $this->_descripcion;
00217 }
00218
00219
00220
00227 function &getFechaInicio()
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
00237
00238
00245 function &getFechaFin()
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
00255
00256
00263 function &getFechaImplementacion()
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
00273
00274
00281 function getContacto()
00282 {
00283 return $this->_contacto;
00284 }
00285
00286
00287
00296 function setNombre($nombre = null)
00297 {
00298 $this->_nombre = $nombre;
00299 }
00300
00301
00302
00311 function setDescripcion($descripcion = null)
00312 {
00313 $this->_descripcion = $descripcion;
00314 }
00315
00316
00317
00326 function setFechaInicio($fecha = null)
00327 {
00328 if ($fecha && $fecha != '0000-00-00') {
00329 $this->_fecha_inicio = $fecha;
00330 }
00331 else {
00332 $this->_fecha_inicio = null;
00333 }
00334 }
00335
00336
00337
00346 function setFechaFin($fecha = null)
00347 {
00348 if ($fecha && $fecha != '0000-00-00') {
00349 $this->_fecha_fin = $fecha;
00350 }
00351 else {
00352 $this->_fecha_fin = null;
00353 }
00354 }
00355
00356
00357
00366 function setFechaImplementacion($fecha = null)
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
00377
00378
00387 function setContacto($contacto = null)
00388 {
00389 $this->_contacto = $contacto;
00390 }
00391
00392
00393
00400 function _obtenerDatosDb()
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
00479
00480
00489 function guardarDatos($accion = grabar)
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
00506
00507
00514 function getResponsable()
00515 {
00516 return $this->_responsable;
00517 }
00518
00519
00520
00529 function setResponsable($responsable = null)
00530 {
00531 $this->_responsable = $responsable;
00532 }
00533
00534
00535
00542 function getIdPermisos()
00543 {
00544 return $this->_permisos;
00545 }
00546
00547
00548
00557 function setPermisos($permisos = null)
00558 {
00559 $this->_permisos = $permisos;
00560 }
00561
00562
00563
00568 function getMaxIdSistema()
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
00578
00579
00586 function _grabarDb()
00587 {
00588 $idSistema = $this->_db->nextId('sistema');
00589 $fecha_inicio = $this->getFechaInicio();
00590 $fecha_fin = $this->getFechaFin();
00591 $fecha_implementacion = $this->getFechaImplementacion();
00592
00593
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
00611 $res = $this->_grabarPermisosDb($idSistema);
00612 if (PEAR::isError($res)) {
00613 return $res;
00614 }
00615 }
00616
00617
00618
00625 function _borrarDb()
00626 {
00627 $idSistema = $this->getId();
00628 $responsable = $this->getResponsable();
00629
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
00638
00639 $res = $this->_borrarPermisosDb($idSistema);
00640 if (PEAR::isError($res)) {
00641 return $res;
00642 }
00643 }
00644
00645
00646
00653 function _modificarDb()
00654 {
00655
00656 $idSistema = $this->getId();
00657 $fecha_inicio = $this->getFechaInicio();
00658 $fecha_fin = $this->getFechaFin();
00659 $fecha_implementacion = $this->getFechaImplementacion();
00660
00661
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
00676 $res = $this->_borrarPermisosDb($idSistema, '');
00677 if (PEAR::isError($res)) {
00678 return $res;
00679 }
00680
00681 $res = $this->_grabarPermisosDb($idSistema);
00682 if (PEAR::isError($res)) {
00683 return $res;
00684 }
00685 }
00686
00687
00688
00689
00698 function _grabarPermisosDb($idSistema)
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
00714
00715
00726 function _borrarPermisosDb($idSistema, $observaciones = null, $idPermiso = null)
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
00746
00747
00748
00758 function guardarAsociacion($idPermiso, $observacion = '')
00759 {
00760 $error = true;
00761 if (!$this->_existeAsociacion($idPermiso, $observacion)) {
00762
00763
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
00772 $this->_obtenerDatosDb();
00773 $error = false;
00774 }
00775 return $error;
00776 }
00777
00778
00779
00789 function eliminarAsociacion($idPermiso, $observacion = '')
00790 {
00791 $error = false;
00792
00793 $this->_borrarPermisosDb($this->getId(), $observacion, $idPermiso);
00794
00795 $this->_obtenerDatosDb();
00796 return $error;
00797 }
00798
00799
00800
00812 function modificarAsociacion($idPermiso, $idPermiso_ant, $observacion = '', $obs_ant = '')
00813 {
00814 $error = true;
00815
00816 if (!$this->_existeAsociacion($idPermiso, $observacion)) {
00817
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
00830 $this->_obtenerDatosDb();
00831 $error = false;
00832 }
00833 return $error;
00834 }
00835
00836
00837
00847 function _existeAsociacion($idPermiso, $observacion)
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
00864
00865
00875 function getSistemas(&$db)
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
00885
00886
00896 function _getIdSistemas(&$db)
00897 {
00898
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
00910
00911
00921 function getArraySistemas(&$db)
00922 {
00923 $rta = array ();
00924 foreach (SAMURAI_Sistema::getSistemas($db) as $sistema) {
00925 $rta[$sistema->getId()] = $sistema->getNombre();
00926 }
00927 return $rta;
00928 }
00929
00930
00931 }
00932
00933 ?>