//
require_once 'PEAR.php';
-require_once 'Samurai_DB.php';
+require_once 'SAMURAI/DB.php';
require_once 'Date.php';
// +X2C Class 209 :SAMURAI_Sistema
* @var int $id
* @access protected
*/
- var $_id;
+ var $_id = null;
/**
* Nombre del sistema.
* @var string $nombre
* @access protected
*/
- var $_nombre;
+ var $_nombre = null;
/**
* Descripcion del sistema.
* @var string $descripcion
* @access protected
*/
- var $_descripcion;
+ var $_descripcion = null;
/**
* Fecha en la cual se inicio el 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.
* @var date $fecha_fin
* @access protected
*/
- var $_fecha_fin;
+ var $_fecha_fin = null;
/**
* Fecha de implementacion del 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.
* @var string $contacto
* @access protected
*/
- var $_contacto;
+ var $_contacto = null;
/**
* Objeto Samurai_DB
* @var string $responsable
* @access protected
*/
- var $_responsable;
+ var $_responsable = null;
/**
* Array asociativo (id - descripcion) con los permisos asociados al sistema.
* @var array $permisos
* @access protected
*/
- var $_permisos;
+ var $_permisos = null;
/**
* Array con los permisos asociados al 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 = 0;
/**
* Gets Asociaciones.
$this->_asociaciones = $asociaciones;
}
+ /**
+ * 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
// +X2C Operation 243
if (!is_null($id)) {
$this->_obtenerDatosDb();
}
- else {
- $this->setNombre();
- $this->setDescripcion();
- $this->setFechaInicio();
- $this->setFechaFin();
- $this->setFechaImplementacion();
- $this->setContacto();
- $this->setResponsable();
- $this->setPermisos();
- }
}
// -X2C
*/
function _obtenerDatosDb() // ~X2C
{
- $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());
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'];
$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;
*/
function getMaxIdSistema() // ~X2C
{
- $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);
'responsable' => $this->getResponsable(),
'estado' => 1
);
- $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;
if (PEAR::isError($res)) {
return $res;
}
+ $this->_id = $idSistema;
}
// -X2C
$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
'contacto' => $this->getContacto(),
'responsable' => $this->getResponsable(),
);
- $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;
}
function _grabarPermisosDb($idSistema) // ~X2C
{
$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;
*/
function _borrarPermisosDb($idSistema, $observaciones = null, $idPermiso = null) // ~X2C
{
- $sql = include 'Sistema/consultas.php';
+ $sql = parse_ini_file(dirname(__FILE__) . '/Sistema/consultas.ini', true);
$datos[] = $idSistema;
$tmp = $sql['borrar_permisos'];
if (isset($observaciones)) {
*/
function guardarAsociacion($idPermiso, $observacion = '') // ~X2C
{
- $error = true;
if (!$this->_existeAsociacion($idPermiso, $observacion)) {
//Guardo la asociacion
//Grabo el 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
*/
function eliminarAsociacion($idPermiso, $observacion = '') // ~X2C
{
- $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
* 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 = '') // ~X2C
{
- $error = true;
//Busco la nueva asociacion
if (!$this->_existeAsociacion($idPermiso, $observacion)) {
//Actualizo la asociacion
'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
*/
function _existeAsociacion($idPermiso, $observacion) // ~X2C
{
- $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);
* 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) // ~X2C
{
$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);
}
* 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) // ~X2C
{
//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']);
* 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) // ~X2C
{
$rta = array ();
- foreach (SAMURAI_Sistema::getSistemas($db) as $sistema) {
+ foreach (SAMURAI_Sistema::getSistemas($db, $activos) as $sistema) {
$rta[$sistema->getId()] = $sistema->getNombre();
}
return $rta;