]> git.llucax.com Git - mecon/samurai.git/blobdiff - lib/SAMURAI/Sistema.php
Modificaciones para el molesto de Hernan.
[mecon/samurai.git] / lib / SAMURAI / Sistema.php
index 42a562f17316b1dce268c2d0d634febd7da9e9a7..f7102dfbef83ae697b1690bd31c8757f65d0b630 100644 (file)
@@ -28,7 +28,6 @@ require_once 'PEAR.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,20 +377,18 @@ 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 = parse_ini_file(dirname(__FILE__) . '/Sistema/consultas.ini', true);
         $tmp = $sql['obtener_datos_sistema'].$sql['obtener_datos_sistema2'];
@@ -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'];
@@ -476,9 +449,7 @@ class SAMURAI_Sistema {
         }
         $this->_asociaciones = $tmp;
     }
-    // -X2C
-
-    // +X2C Operation 288
+    
     /**
      * Guarda la informacion del sistema en la base.
      *
@@ -487,7 +458,7 @@ class SAMURAI_Sistema {
      * @return void
      * @access public
      */
-    function guardarDatos($accion = grabar) // ~X2C
+    function guardarDatos($accion = 'grabar') 
     {
         $accion = strtolower($accion);
         switch ($accion)  {
@@ -503,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
      *
@@ -527,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
      *
@@ -555,18 +518,16 @@ 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 = parse_ini_file(dirname(__FILE__) . '/Sistema/consultas.ini', true);
         $dbh = $this->_db->prepare($sql['obtener_max_id_sistemas']);
@@ -575,16 +536,14 @@ class SAMURAI_Sistema {
         $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();
@@ -601,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;
@@ -615,16 +574,14 @@ class SAMURAI_Sistema {
         }
         $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();
@@ -632,25 +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;
         }
 
-        if ($idSistema == $_SESSION['samurai']['id_sistema']){
+        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,10 +648,10 @@ 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, $idSistema, $this->getResponsable());
@@ -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,7 +674,7 @@ class SAMURAI_Sistema {
      * @return void
      * @access protected
      */
-    function _borrarPermisosDb($idSistema, $observaciones = null, $idPermiso = null) // ~X2C
+    function _borrarPermisosDb($idSistema, $observaciones = null, $idPermiso = null) 
     {
         $sql = parse_ini_file(dirname(__FILE__) . '/Sistema/consultas.ini', true);
         $datos[] = $idSistema;
@@ -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,7 +703,7 @@ class SAMURAI_Sistema {
      * @return bool
      * @access public
      */
-    function guardarAsociacion($idPermiso, $observacion = '') // ~X2C
+    function guardarAsociacion($idPermiso, $observacion = '') 
     {
         if (!$this->_existeAsociacion($idPermiso, $observacion)) {    
             //Guardo la asociacion
@@ -766,7 +714,7 @@ 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();
             return null;
@@ -775,9 +723,7 @@ class SAMURAI_Sistema {
             return new PEAR_Error('La Asociacion ya existe.'); 
         }
     }
-    // -X2C
-
-    // +X2C Operation 313
+    
     /**
      * Elimina una asociacion de la base, y actualiza los datos del sistema.
      *
@@ -787,7 +733,7 @@ class SAMURAI_Sistema {
      * @return bool
      * @access public
      */
-    function eliminarAsociacion($idPermiso, $observacion = '') // ~X2C
+    function eliminarAsociacion($idPermiso, $observacion = '') 
     {
         //TODO Arreglar el asco este 
         $sql = parse_ini_file(dirname(__FILE__) . '/Sistema/consultas.ini', true);
@@ -858,9 +804,7 @@ class SAMURAI_Sistema {
         //Recargo los datos del sistema
         $this->_obtenerDatosDb();
     }
-    // -X2C
-
-    // +X2C Operation 314
+    
     /**
      * Actualiza los datos de la asociacion en la base de datos.
      *
@@ -871,7 +815,7 @@ class SAMURAI_Sistema {
      * @return bool
      * @access public
      */
-    function modificarAsociacion($idPermiso, $observacion = '', $obs_ant = '') // ~X2C
+    function modificarAsociacion($idPermiso, $observacion = '', $obs_ant = '') 
     {
         //Busco la nueva asociacion
         if (!$this->_existeAsociacion($idPermiso, $observacion)) {    
@@ -882,7 +826,7 @@ 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.' AND observaciones =\''.$obs_ant.'\'');
@@ -895,9 +839,7 @@ class SAMURAI_Sistema {
             return new PEAR_Error('La Asociacion ya existe.'); 
         }
     }
-    // -X2C
-
-    // +X2C Operation 315
+    
     /**
      * Chequea si existe la asociacion
      *
@@ -907,7 +849,7 @@ class SAMURAI_Sistema {
      * @return bool
      * @access protected
      */
-    function _existeAsociacion($idPermiso, $observacion) // ~X2C
+    function _existeAsociacion($idPermiso, $observacion) 
     {
         $sql = parse_ini_file(dirname(__FILE__) . '/Sistema/consultas.ini', true);
         $tmp = $sql['obtener_permisos'].$sql['obtener_permisos3'].$sql['obtener_permisos4'];
@@ -923,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'].$sql['obtener_datos_sistema4']);
+        $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']);
@@ -969,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;
+    }
 
+}  
 ?>