X-Git-Url: https://git.llucax.com/mecon/samurai.git/blobdiff_plain/d0ae155a8be2168110755cce58865068b34bfe91..e3f1a9e49399986f8071b55d63a0425f5a60ca68:/lib/SAMURAI/Sistema.php diff --git a/lib/SAMURAI/Sistema.php b/lib/SAMURAI/Sistema.php index 7a8ee4c..f7102df 100644 --- a/lib/SAMURAI/Sistema.php +++ b/lib/SAMURAI/Sistema.php @@ -25,10 +25,9 @@ // require_once 'PEAR.php'; -require_once 'Samurai_DB.php'; +require_once 'SAMURAI/DB.php'; require_once 'Date.php'; -// +X2C Class 209 :SAMURAI_Sistema /** * Clase para el manejo de los sistemas. * @@ -41,7 +40,7 @@ class SAMURAI_Sistema { * @var int $id * @access protected */ - var $_id; + var $_id = null; /** * Nombre del sistema. @@ -49,7 +48,7 @@ class SAMURAI_Sistema { * @var string $nombre * @access protected */ - var $_nombre; + var $_nombre = null; /** * Descripcion del sistema. @@ -57,7 +56,7 @@ class SAMURAI_Sistema { * @var string $descripcion * @access protected */ - var $_descripcion; + var $_descripcion = null; /** * Fecha en la cual se inicio el sistema. @@ -65,7 +64,7 @@ class SAMURAI_Sistema { * @var date $fecha_inicio * @access protected */ - var $_fecha_inicio; + var $_fecha_inicio = null; /** * Fecha en la cual se dio por terminado el desarrollo del sistema. @@ -73,7 +72,7 @@ class SAMURAI_Sistema { * @var date $fecha_fin * @access protected */ - var $_fecha_fin; + var $_fecha_fin = null; /** * Fecha de implementacion del sistema. @@ -81,7 +80,7 @@ class SAMURAI_Sistema { * @var date $fecha_implementacion * @access protected */ - var $_fecha_implementacion; + var $_fecha_implementacion = null; /** * Texto con los datos del o de los contacto/s en el area usuario. @@ -89,7 +88,7 @@ class SAMURAI_Sistema { * @var string $contacto * @access protected */ - var $_contacto; + var $_contacto = null; /** * Objeto Samurai_DB @@ -105,7 +104,7 @@ class SAMURAI_Sistema { * @var string $responsable * @access protected */ - var $_responsable; + var $_responsable = null; /** * Array asociativo (id - descripcion) con los permisos asociados al sistema. @@ -113,7 +112,7 @@ class SAMURAI_Sistema { * @var array $permisos * @access protected */ - var $_permisos; + var $_permisos = null; /** * Array con los permisos asociados al sistema @@ -121,7 +120,15 @@ class SAMURAI_Sistema { * @var array $asociaciones * @access protected */ - var $_asociaciones; + var $_asociaciones = null; + + /** + * indica si el sistema esta activo o no. + * + * @var int $estado + * @access protected + */ + var $_estado = 1; /** * Gets Asociaciones. @@ -133,6 +140,7 @@ class SAMURAI_Sistema { { return $this->_asociaciones; } + /** * Sets Asociaciones. * @@ -146,9 +154,30 @@ class SAMURAI_Sistema { $this->_asociaciones = $asociaciones; } - // ~X2C + /** + * Gets Estado. + * + * @return int + * @access public + */ + function getEstado() + { + return $this->_estado; + } + + /** + * Sets Estado. + * + * @param int $estado Estado. + * + * @return void + * @access public + */ + function setEstado($estado) + { + $this->_estado = $estado; + } - // +X2C Operation 243 /** * Constructor. Si recibe como parametro el identificador busca en la DB los datos. * @@ -158,73 +187,55 @@ class SAMURAI_Sistema { * @return void * @access public */ - function SAMURAI_Sistema(&$db, $id = null) // ~X2C + function SAMURAI_Sistema(&$db, $id = null) { $this->_db =& $db; $this->_id = $id; if (!is_null($id)) { $this->_obtenerDatosDb(); } - else { - $this->setNombre(); - $this->setDescripcion(); - $this->setFechaInicio(); - $this->setFechaFin(); - $this->setFechaImplementacion(); - $this->setContacto(); - $this->setResponsable(); - $this->setPermisos(); - } } - // -X2C - // +X2C Operation 244 /** * Devuelve el identificador del sistema. * * @return int * @access public */ - function getId() // ~X2C + function getId() { return $this->_id; } - // -X2C - // +X2C Operation 245 /** * Devuelve el nombre del sistema. * * @return string * @access public */ - function getNombre() // ~X2C + function getNombre() { return $this->_nombre; } - // -X2C - // +X2C Operation 246 /** * Devuelve la descrpcion del sistema. * * @return string * @access public */ - function getDescripcion() // ~X2C + function getDescripcion() { return $this->_descripcion; } - // -X2C - - // +X2C Operation 247 + /** * Devuelve la fecha de inicio del sistema. * * @return &date * @access public */ - function &getFechaInicio() // ~X2C + function &getFechaInicio() { if ($this->_fecha_inicio) { return new Date ($this->_fecha_inicio.' 00:00:00'); @@ -233,16 +244,14 @@ class SAMURAI_Sistema { return null; } } - // -X2C - - // +X2C Operation 248 + /** * Devuelve la fecha de finalizacion del sistema. * * @return &date * @access public */ - function &getFechaFin() // ~X2C + function &getFechaFin() { if ($this->_fecha_fin) { return new Date ($this->_fecha_fin.' 00:00:00'); @@ -251,16 +260,14 @@ class SAMURAI_Sistema { return null; } } - // -X2C - - // +X2C Operation 249 + /** * Devuelve la fecha de implementacion del sistema. * * @return &date * @access public */ - function &getFechaImplementacion() // ~X2C + function &getFechaImplementacion() { if ($this->_fecha_implementacion) { return new Date ($this->_fecha_implementacion.' 00:00:00'); @@ -269,22 +276,18 @@ class SAMURAI_Sistema { return null; } } - // -X2C - - // +X2C Operation 250 + /** * Devuelve el contacto del sistema. * * @return string * @access public */ - function getContacto() // ~X2C + function getContacto() { return $this->_contacto; } - // -X2C - - // +X2C Operation 251 + /** * Setea el nombre del sistema. * @@ -293,13 +296,11 @@ class SAMURAI_Sistema { * @return void * @access public */ - function setNombre($nombre = null) // ~X2C + function setNombre($nombre = null) { $this->_nombre = $nombre; } - // -X2C - - // +X2C Operation 252 + /** * Setea la descripcion del sistema. * @@ -308,13 +309,11 @@ class SAMURAI_Sistema { * @return void * @access public */ - function setDescripcion($descripcion = null) // ~X2C + function setDescripcion($descripcion = null) { $this->_descripcion = $descripcion; } - // -X2C - - // +X2C Operation 253 + /** * Setea la fecha de inicio del sistema. * @@ -323,7 +322,7 @@ class SAMURAI_Sistema { * @return void * @access public */ - function setFechaInicio($fecha = null) // ~X2C + function setFechaInicio($fecha = null) { if ($fecha && $fecha != '0000-00-00') { $this->_fecha_inicio = $fecha; @@ -332,9 +331,7 @@ class SAMURAI_Sistema { $this->_fecha_inicio = null; } } - // -X2C - - // +X2C Operation 254 + /** * Setea la fecha de finalizacion del sistema. * @@ -343,7 +340,7 @@ class SAMURAI_Sistema { * @return void * @access public */ - function setFechaFin($fecha = null) // ~X2C + function setFechaFin($fecha = null) { if ($fecha && $fecha != '0000-00-00') { $this->_fecha_fin = $fecha; @@ -352,9 +349,7 @@ class SAMURAI_Sistema { $this->_fecha_fin = null; } } - // -X2C - - // +X2C Operation 255 + /** * Setea la fecha de implementacion del sistema. * @@ -363,7 +358,7 @@ class SAMURAI_Sistema { * @return void * @access public */ - function setFechaImplementacion($fecha = null) // ~X2C + function setFechaImplementacion($fecha = null) { if ($fecha && $fecha != '0000-00-00') { $this->_fecha_implementacion = $fecha; @@ -373,9 +368,7 @@ class SAMURAI_Sistema { } } - // -X2C - - // +X2C Operation 256 + /** * Setea el contacto del sistema. * @@ -384,22 +377,20 @@ class SAMURAI_Sistema { * @return void * @access public */ - function setContacto($contacto = null) // ~X2C + function setContacto($contacto = null) { $this->_contacto = $contacto; } - // -X2C - - // +X2C Operation 263 + /** * Obtiene los datos del sistema de la DB. * * @return void * @access protected */ - function _obtenerDatosDb() // ~X2C + function _obtenerDatosDb() { - $sql = include 'Sistema/consultas.php'; //Incluyo las consultas de este objeto nada mas. + $sql = parse_ini_file(dirname(__FILE__) . '/Sistema/consultas.ini', true); $tmp = $sql['obtener_datos_sistema'].$sql['obtener_datos_sistema2']; $dbh = $this->_db->prepare($tmp); $tmp = array ($this->getId()); @@ -409,44 +400,26 @@ class SAMURAI_Sistema { if (isset($re['nombre_sistema'])) { $this->setNombre($re['nombre_sistema']); } - else { - $this->setNombre(); - } if (isset($re['desc_sistema'])) { $this->setDescripcion($re['desc_sistema']); } - else { - $this->setDescripcion(); - } if (isset($re['fecha_inicio'])) { $this->setFechaInicio($re['fecha_inicio']); } - else { - $this->setFechaInicio(); - } if (isset($re['fecha_fin'])) { $this->setFechaFin($re['fecha_fin']); } - else { - $this->setFechaFin(); - } if (isset($re['fecha_implementacion'])) { $this->setFechaImplementacion($re['fecha_implementacion']); } - else { - $this->setFechaImplementacion(); - } if (isset($re['contacto'])) { $this->setContacto($re['contacto']); } - else { - $this->setContacto(); - } if (isset($re['responsable'])) { $this->setResponsable($re['responsable']); } - else { - $this->setResponsable(); + if (isset($re['estado'])) { + $this->setEstado($re['estado']); } } $tmp = $sql['obtener_permisos']; @@ -469,15 +442,14 @@ class SAMURAI_Sistema { $tmp = array(); $i = 0; while ($re = $res->fetchRow(DB_FETCHMODE_ORDERED)) { - $tmp[$i]['id'] = $re['0']; - $tmp[$i]['obs'] = $re['1']; + $tmp[$i]['id'] = $re['0']; + $tmp[$i]['obs'] = $re['1']; + $tmp[$i]['desc'] = $re['2']; $i++; } $this->_asociaciones = $tmp; } - // -X2C - - // +X2C Operation 288 + /** * Guarda la informacion del sistema en la base. * @@ -486,7 +458,7 @@ class SAMURAI_Sistema { * @return void * @access public */ - function guardarDatos($accion = grabar) // ~X2C + function guardarDatos($accion = 'grabar') { $accion = strtolower($accion); switch ($accion) { @@ -502,22 +474,18 @@ class SAMURAI_Sistema { } return $res; } - // -X2C - - // +X2C Operation 290 + /** * Devuelve el login del responsable de los ultimos cambios * * @return string * @access public */ - function getResponsable() // ~X2C + function getResponsable() { return $this->_responsable; } - // -X2C - - // +X2C Operation 291 + /** * Setea el login del responsable de los ultimos cambios del sistema * @@ -526,26 +494,22 @@ class SAMURAI_Sistema { * @return void * @access public */ - function setResponsable($responsable = null) // ~X2C + function setResponsable($responsable = null) { $this->_responsable = $responsable; } - // -X2C - - // +X2C Operation 301 + /** * Devuelve un array asociativo con los identificadores de los permisos * * @return array * @access public */ - function getIdPermisos() // ~X2C + function getIdPermisos() { return $this->_permisos; } - // -X2C - - // +X2C Operation 302 + /** * Setea los permisos de un sistema * @@ -554,36 +518,32 @@ class SAMURAI_Sistema { * @return void * @access public */ - function setPermisos($permisos = null) // ~X2C + function setPermisos($permisos = null) { $this->_permisos = $permisos; } - // -X2C - - // +X2C Operation 303 + /** * @return int * @access public */ - function getMaxIdSistema() // ~X2C + function getMaxIdSistema() { - $sql = include 'Sistema/consultas.php'; + $sql = parse_ini_file(dirname(__FILE__) . '/Sistema/consultas.ini', true); $dbh = $this->_db->prepare($sql['obtener_max_id_sistemas']); $res = $this->_db->execute($dbh); $re = $res->fetchrow(DB_FETCHMODE_ASSOC); $res->free(); return $re['id_sistema']; } - // -X2C - - // +X2C Operation 304 + /** * Graba los datos en la Base de Datos * * @return void * @access protected */ - function _grabarDb() // ~X2C + function _grabarDb() { $idSistema = $this->_db->nextId('sistema'); $fecha_inicio = $this->getFechaInicio(); @@ -600,9 +560,9 @@ class SAMURAI_Sistema { 'fecha_implementacion' => $fecha_implementacion ? $fecha_implementacion->format("%Y-%m-%d") : null, 'contacto' => $this->getContacto(), 'responsable' => $this->getResponsable(), - 'estado' => 1 + 'estado' => $this->getEstado() ); - $res = $this->_db->autoExecute('sistema', $datos, DB_AUTOQUERY_INSERT); + $res = $this->_db->autoExecute('samurai.sistema', $datos, DB_AUTOQUERY_INSERT); if (PEAR::isError($res)) { return $res; @@ -612,17 +572,16 @@ class SAMURAI_Sistema { if (PEAR::isError($res)) { return $res; } + $this->_id = $idSistema; } - // -X2C - - // +X2C Operation 305 + /** * Borra los datos de la base de datos * * @return void * @access protected */ - function _borrarDb() // ~X2C + function _borrarDb() { $idSistema = $this->getId(); $responsable = $this->getResponsable(); @@ -630,27 +589,23 @@ class SAMURAI_Sistema { $datos = array( 'responsable' => $responsable, 'estado' => 0 ); - $res = $this->_db->autoExecute('sistema', $datos, DB_AUTOQUERY_UPDATE, 'id_sistema = '.$idSistema); + $res = $this->_db->autoExecute('samurai.sistema', $datos, DB_AUTOQUERY_UPDATE, 'id_sistema = '.$idSistema); if (PEAR::isError($res)) { return $res; } - //Borro los permisos que tiene asignado el sistema - //Borro absolutamente todos los permisos que tiene asociado -> No hay vuelta a atras - $res = $this->_borrarPermisosDb($idSistema); - if (PEAR::isError($res)) { - return $res; + + if ($idSistema == @$_SESSION['samurai']['id_sistema']){ + $_SESSION['samurai']['id_sistema'] = ''; } } - // -X2C - - // +X2C Operation 306 + /** * Modifica los datos en base * * @return void * @access protected */ - function _modificarDb() // ~X2C + function _modificarDb() { //Grabo las modificaciones al sistema $idSistema = $this->getId(); @@ -667,8 +622,9 @@ class SAMURAI_Sistema { 'fecha_implementacion' => $fecha_implementacion ? $fecha_implementacion->format("%Y-%m-%d") : null, 'contacto' => $this->getContacto(), 'responsable' => $this->getResponsable(), + 'estado' => $this->getEstado() ); - $res = $this->_db->autoExecute('sistema', $datos, DB_AUTOQUERY_UPDATE, 'id_sistema = '.$idSistema); + $res = $this->_db->autoExecute('samurai.sistema', $datos, DB_AUTOQUERY_UPDATE, 'id_sistema = '.$idSistema); if (PEAR::isError($res)) { return $res; } @@ -683,10 +639,7 @@ class SAMURAI_Sistema { return $res; } } - // -X2C - - // +X2C Operation 308 /** * Graba los permisos del sistema en perm_sist * @@ -695,13 +648,13 @@ class SAMURAI_Sistema { * @return void * @access protected */ - function _grabarPermisosDb($idSistema) // ~X2C + function _grabarPermisosDb($idSistema) { $datos = array ('id_permiso','id_sistema','responsable'); - $re = $this->_db->autoPrepare('perm_sist', $datos, DB_AUTOQUERY_INSERT); + $re = $this->_db->autoPrepare('samurai.perm_sist', $datos, DB_AUTOQUERY_INSERT); if (isset($this->_permisos)) { foreach ($this->_permisos as $permiso) { - $datos = array ($permiso['0'], $idSistema, $this->getResponsable()); + $datos = array ($permiso, $idSistema, $this->getResponsable()); $res = $this->_db->execute($re, $datos); if (PEAR::isError($res)) { return $res; @@ -710,9 +663,7 @@ class SAMURAI_Sistema { } } - // -X2C - - // +X2C Operation 309 + /** * Borra los permisos que tenga asociado el sistema segun el criterio de observaciones * @@ -723,9 +674,9 @@ class SAMURAI_Sistema { * @return void * @access protected */ - function _borrarPermisosDb($idSistema, $observaciones = null, $idPermiso = null) // ~X2C + function _borrarPermisosDb($idSistema, $observaciones = null, $idPermiso = null) { - $sql = include 'Sistema/consultas.php'; + $sql = parse_ini_file(dirname(__FILE__) . '/Sistema/consultas.ini', true); $datos[] = $idSistema; $tmp = $sql['borrar_permisos']; if (isset($observaciones)) { @@ -742,10 +693,7 @@ class SAMURAI_Sistema { return $res; } } - // -X2C - - - // +X2C Operation 312 + /** * Guarda en base las nuevas asociaciones que se van cargando y actualiza los datos del sistema. * @@ -755,9 +703,8 @@ class SAMURAI_Sistema { * @return bool * @access public */ - function guardarAsociacion($idPermiso, $observacion = '') // ~X2C + function guardarAsociacion($idPermiso, $observacion = '') { - $error = true; if (!$this->_existeAsociacion($idPermiso, $observacion)) { //Guardo la asociacion //Grabo el sistema @@ -767,16 +714,16 @@ class SAMURAI_Sistema { 'observaciones' => $observacion, 'responsable' => $this->getResponsable(), ); - $res = $this->_db->autoExecute('perm_sist', $datos, DB_AUTOQUERY_INSERT); + $res = $this->_db->autoExecute('samurai.perm_sist', $datos, DB_AUTOQUERY_INSERT); //Recargo los datos del sistema $this->_obtenerDatosDb(); - $error = false; + return null; + } + else { + return new PEAR_Error('La Asociacion ya existe.'); } - return $error; } - // -X2C - - // +X2C Operation 313 + /** * Elimina una asociacion de la base, y actualiza los datos del sistema. * @@ -786,32 +733,90 @@ class SAMURAI_Sistema { * @return bool * @access public */ - function eliminarAsociacion($idPermiso, $observacion = '') // ~X2C + function eliminarAsociacion($idPermiso, $observacion = '') { - $error = false; - //Elimino la asociacion - $this->_borrarPermisosDb($this->getId(), $observacion, $idPermiso); + //TODO Arreglar el asco este + $sql = parse_ini_file(dirname(__FILE__) . '/Sistema/consultas.ini', true); + $res = ''; + //Obtengo los id de los perfiles del permiso en el sistema + $tmp = $sql['ea_obt_idperfil']; + $dbh = $this->_db->prepare($tmp); + $res = $this->_db->execute($dbh, array ($idPermiso, $observacion, $this->getId())); + if (PEAR::isError($res)) { + return $res; + } + $i = 0; + $tmp = ''; + while ($re = $res->fetchRow(DB_FETCHMODE_ORDERED)) { + $tmp[] = $re['0']; + $i++; + } + $PERFILES = $tmp; + //Borro el permiso de los perfiles del sistema + $tmp = $sql['ea_del_perm_perfil_sist']; + $dbh = $this->_db->prepare($tmp); + $res = $this->_db->execute($dbh, array ($idPermiso, $observacion, $this->getId())); + if (PEAR::isError($res)) { + return $res; + } + //Verifico si era el unico permiso de cada uno de los perfiles en los que estaba asignado + if (@$PERFILES) { + foreach ($PERFILES as $perfil) { + //Cuento + $tmp = $sql['ea_obt_cuenta_perfil']; + $dbh = $this->_db->prepare($tmp); + $res = $this->_db->execute($dbh, array ($perfil, $this->getId())); + if (($re = $res->fetchRow(DB_FETCHMODE_ASSOC)) && $re['cuenta'] == 0) { + //Borro perfil_sist + $tmp = $sql['ea_del_perfil_sist']; + $dbh = $this->_db->prepare($tmp); + $res = $this->_db->execute($dbh, array ($perfil, $this->getId())); + if (PEAR::isError($res)) { + return $res; + } + //Borro perfil_sist_usuario + $tmp = $sql['ea_del_perfil_sist_usuario']; + $dbh = $this->_db->prepare($tmp); + $res = $this->_db->execute($dbh, array ($perfil, $this->getId())); + if (PEAR::isError($res)) { + return $res; + } + //Verifico si hay otro sistema usando este perfil + $tmp = $sql['ea_obt_cuenta_perfil_sist']; + $dbh = $this->_db->prepare($tmp); + $res = $this->_db->execute($dbh, array ($perfil)); + if (($re = $res->fetchRow(DB_FETCHMODE_ASSOC)) && $re['cuenta'] == 0){ + $tmp = $sql['ea_del_perfil']; + $dbh = $this->_db->prepare($tmp); + $res = $this->_db->execute($dbh, array ($perfil)); + if (PEAR::isError($res)) { + return $res; + } + } + } + } + } + //Borro la asociacion perm_sist + $res = $this->_borrarPermisosDb($this->getId(), $observacion, $idPermiso); + if (PEAR::isError($res)) { + return $res; + } //Recargo los datos del sistema $this->_obtenerDatosDb(); - return $error; } - // -X2C - - // +X2C Operation 314 + /** * Actualiza los datos de la asociacion en la base de datos. * * @param int $idPermiso Identificador del permiso - * @param int $idPermiso_ant Identificador del permiso anterior * @param string $observacion Observacion a insertar * @param string $obs_ant Observacion anterior * * @return bool * @access public */ - function modificarAsociacion($idPermiso, $idPermiso_ant, $observacion = '', $obs_ant = '') // ~X2C + function modificarAsociacion($idPermiso, $observacion = '', $obs_ant = '') { - $error = true; //Busco la nueva asociacion if (!$this->_existeAsociacion($idPermiso, $observacion)) { //Actualizo la asociacion @@ -821,20 +826,20 @@ class SAMURAI_Sistema { 'observaciones' => $observacion, 'responsable' => $this->getResponsable(), ); - $this->_db->autoExecute('perm_sist', + $this->_db->autoExecute('samurai.perm_sist', $datos, DB_AUTOQUERY_UPDATE, - 'id_sistema = '.$this->getId().' AND id_permiso = '.$idPermiso_ant.' AND observaciones =\''.$obs_ant.'\''); + 'id_sistema = '.$this->getId().' AND id_permiso = '.$idPermiso.' AND observaciones =\''.$obs_ant.'\''); //Recargo los datos del sistema $this->_obtenerDatosDb(); - $error = false; + return null; + } + else { + return new PEAR_Error('La Asociacion ya existe.'); } - return $error; } - // -X2C - - // +X2C Operation 315 + /** * Chequea si existe la asociacion * @@ -844,9 +849,9 @@ class SAMURAI_Sistema { * @return bool * @access protected */ - function _existeAsociacion($idPermiso, $observacion) // ~X2C + function _existeAsociacion($idPermiso, $observacion) { - $sql = include 'Sistema/consultas.php'; //Incluyo las consultas de este objeto nada mas. + $sql = parse_ini_file(dirname(__FILE__) . '/Sistema/consultas.ini', true); $tmp = $sql['obtener_permisos'].$sql['obtener_permisos3'].$sql['obtener_permisos4']; $dbh = $this->_db->prepare($tmp); $tmp = array ($this->getId(),$idPermiso,$observacion); @@ -860,45 +865,48 @@ class SAMURAI_Sistema { return true; } } - // -X2C - - // +X2C Operation 341 + /** * Devuelve el array de sistemas * * @param SAMURAI_DB &$db Base de Datos + * @param bool $activos Indica si se deben buscar solamente los sistemas activos * * @return array(Sistema) * @access public * @static */ - function getSistemas(&$db) // ~X2C + function getSistemas(&$db, $activos = true) { $rta = array (); - foreach (SAMURAI_Sistema::_getIdSistemas($db) as $id) { + foreach (SAMURAI_Sistema::_getIdSistemas($db, $activos) as $id) { $tmp = new SAMURAI_Sistema($db,$id); array_push($rta, $tmp); } return $rta; } - // -X2C - - // +X2C Operation 342 + /** * Devuleve un array con los identificadores de todos los sistemas. * * @param SAMURAI_DB &$db Base de Datos + * @param bool $activos Indica si se deben buscar solamente los sistemas activos * * @return array(int) * @access protected * @static */ - function _getIdSistemas(&$db) // ~X2C + function _getIdSistemas(&$db, $activos = true) { //OBTENGO LOS ID DE LA BASE $rta = array(); $sql = parse_ini_file(dirname(__FILE__) . '/Sistema/consultas.ini', true); - $dbh = $db->prepare($sql['obtener_datos_sistema'].$sql['obtener_datos_sistema3']); + $consulta = $sql['obtener_datos_sistema']; + if (@$activos) { + $consulta.= $sql['obtener_datos_sistema3']; + } + $consulta.= $sql['obtener_datos_sistema4']; + $dbh = $db->prepare($consulta); $res = $db->execute($dbh); while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) { array_push($rta,$re['id_sistema']); @@ -906,28 +914,71 @@ class SAMURAI_Sistema { $res->free(); return $rta; } - // -X2C - - // +X2C Operation 343 + /** * Devuelve un array asociativo en donde la clave es el identificador y el valor es el nombre del sistema * * @param SAMURAI_DB &$db Base de Datos + * @param bool $activos Indica si se deben buscar solamente los sistemas activos * * @return array() * @access public * @static */ - function getArraySistemas(&$db) // ~X2C + function getArraySistemas(&$db, $activos = true) { $rta = array (); - foreach (SAMURAI_Sistema::getSistemas($db) as $sistema) { + foreach (SAMURAI_Sistema::getSistemas($db, $activos) as $sistema) { $rta[$sistema->getId()] = $sistema->getNombre(); } return $rta; } - // -X2C - -} // -X2C Class :SAMURAI_Sistema + + /** + * Devuelve un array asociativo en donde la clave es el identificador y el valor es el nombre del sistema. Solo devuelve aquellos sistemas en los cuales el usuario tiene permisos. + * + * @param DB &$DB Conexion a la base de datos + * + * @return array() + * @access public + */ + function getArraySistemasSeleccionar(&$DB) + { + $rta = array(); + $sql = parse_ini_file(dirname(__FILE__) . '/Sistema/consultas.ini', true); + //Verifico si tiene permiso developer en samurai + $consulta = $sql['sistemas_seleccionar2']; + $dbh = $DB->prepare($consulta); + $res = $DB->execute($dbh, array(SAMURAI_PERM, $_SESSION['usuario'], + SAMURAI_PERM_DEVELOPER)); + $re = $res->fetchrow(DB_FETCHMODE_ASSOC); + if ($re['cuenta']) { + $consulta = $sql['obtener_datos_sistema']; + $consulta.= $sql['obtener_datos_sistema3']; + $consulta.= $sql['obtener_datos_sistema4']; + $dbh = $DB->prepare($consulta); + $res = $DB->execute($dbh); + while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) { + $rta[$re['id_sistema']] = $re['nombre_sistema']; + } + $res->free(); + return $rta; + } + //Si no tiene permiso developer en samurai le muestro solo aquellos + //sistemas en los cuales puede trabajar + $consulta = $sql['sistemas_seleccionar']; + $dbh = $DB->prepare($consulta); + $res = $DB->execute($dbh, array($_SESSION['usuario'], + SAMURAI_PERM_PERFIL_ALTA, SAMURAI_PERM_PERFIL_BAJA, + SAMURAI_PERM_PERFIL_MODIF, SAMURAI_PERM_USUARIO_ALTA, + SAMURAI_PERM_USUARIO_BAJA, SAMURAI_PERM_USUARIO_MODIF)); + while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) { + $rta[$re['id_sistema']] = $re['nombre_sistema']; + } + $res->free(); + + return $rta; + } +} ?>