// $Rev$
//
-#require_once 'PEAR.php';
+require_once 'PEAR.php';
require_once 'Samurai_DB.php';
require_once 'Date.php';
*/
var $_permisos;
+ /**
+ * Array con los permisos asociados al sistema
+ *
+ * @var array $asociaciones
+ * @access private
+ */
+ var $_asociaciones;
+
+ /**
+ * Gets Asociaciones.
+ *
+ * @return array
+ * @access public
+ */
+ function getAsociaciones()
+ {
+ return $this->_asociaciones;
+ }
+ /**
+ * Sets Asociaciones.
+ *
+ * @param array $asociaciones Asociaciones.
+ *
+ * @return void
+ * @access public
+ */
+ function setAsociaciones($asociaciones)
+ {
+ $this->_asociaciones = $asociaciones;
+ }
+
// ~X2C
// +X2C Operation 243
* @return void
* @access public
*/
- function Sistema(&$db, $id = null)// ~X2C
+ function Sistema(&$db, $id = null) // ~X2C
{
$this->_db =& $db;
$this->_id = $id;
* @return int
* @access public
*/
- function getId()// ~X2C
+ function getId() // ~X2C
{
return $this->_id;
}
* @return string
* @access public
*/
- function getNombre()// ~X2C
+ function getNombre() // ~X2C
{
return $this->_nombre;
}
* @return string
* @access public
*/
- function getDescripcion()// ~X2C
+ function getDescripcion() // ~X2C
{
return $this->_descripcion;
}
* @return &date
* @access public
*/
- function &getFechaInicio()// ~X2C
+ function &getFechaInicio() // ~X2C
{
if ($this->_fecha_inicio) {
return new Date ($this->_fecha_inicio.' 00:00:00');
* @return &date
* @access public
*/
- function &getFechaFin()// ~X2C
+ function &getFechaFin() // ~X2C
{
if ($this->_fecha_fin) {
return new Date ($this->_fecha_fin.' 00:00:00');
* @return &date
* @access public
*/
- function &getFechaImplementacion()// ~X2C
+ function &getFechaImplementacion() // ~X2C
{
if ($this->_fecha_implementacion) {
return new Date ($this->_fecha_implementacion.' 00:00:00');
* @return string
* @access public
*/
- function getContacto()// ~X2C
+ function getContacto() // ~X2C
{
return $this->_contacto;
}
* @return void
* @access public
*/
- function setNombre($nombre = null)// ~X2C
+ function setNombre($nombre = null) // ~X2C
{
$this->_nombre = $nombre;
}
* @return void
* @access public
*/
- function setDescripcion($descripcion = null)// ~X2C
+ function setDescripcion($descripcion = null) // ~X2C
{
$this->_descripcion = $descripcion;
}
* @return void
* @access public
*/
- function setFechaInicio($fecha = null)// ~X2C
+ function setFechaInicio($fecha = null) // ~X2C
{
if ($fecha && $fecha != '0000-00-00') {
$this->_fecha_inicio = $fecha;
* @return void
* @access public
*/
- function setFechaFin($fecha = null)// ~X2C
+ function setFechaFin($fecha = null) // ~X2C
{
if ($fecha && $fecha != '0000-00-00') {
$this->_fecha_fin = $fecha;
* @return void
* @access public
*/
- function setFechaImplementacion($fecha = null)// ~X2C
+ function setFechaImplementacion($fecha = null) // ~X2C
{
if ($fecha && $fecha != '0000-00-00') {
$this->_fecha_implementacion = $fecha;
* @return void
* @access public
*/
- function setContacto($contacto = null)// ~X2C
+ function setContacto($contacto = null) // ~X2C
{
$this->_contacto = $contacto;
}
* @return void
* @access private
*/
- function _obtenerDatosDb()// ~X2C
+ function _obtenerDatosDb() // ~X2C
{
$sql = include 'Sistema/consultas.php'; //Incluyo las consultas de este objeto nada mas.
$tmp = $sql['obtener_datos_sistema'].$sql['obtener_datos_sistema2'];
}
}
$tmp = $sql['obtener_permisos'];
+ $tmp.= $sql['borrar_permisos2'];
$dbh = $this->_db->prepare($tmp);
- $tmp = array ($this->getId());
- $res = $this->_db->execute($dbh,$tmp);
- $tmp = array();
+ $tmp = array ($this->getId(),'');
+ $res = $this->_db->execute($dbh,$tmp);
+ $tmp = array();
+ $i = 0;
while ($re = $res->fetchRow(DB_FETCHMODE_ORDERED)) {
$tmp[] = $re['0'];
+ $i++;
}
$this->_permisos = $tmp;
+ $tmp = $sql['obtener_permisos'];
+ $tmp.= $sql['obtener_permisos2'];
+ $dbh = $this->_db->prepare($tmp);
+ $tmp = array ($this->getId());
+ $res = $this->_db->execute($dbh,$tmp);
+ $tmp = array();
+ $i = 0;
+ while ($re = $res->fetchRow(DB_FETCHMODE_ORDERED)) {
+ $tmp[$i]['id'] = $re['0'];
+ $tmp[$i]['obs'] = $re['1'];
+ $i++;
+ }
+ $this->_asociaciones = $tmp;
}
// -X2C
* @return void
* @access public
*/
- function guardarDatos($accion = grabar)// ~X2C
+ function guardarDatos($accion = grabar) // ~X2C
{
$accion = strtolower($accion);
switch ($accion) {
case 'grabar':
- $this->_grabarDb();
+ $res = $this->_grabarDb();
break;
case 'modificar':
- $this->_modificarDb();
+ $res = $this->_modificarDb();
break;
case 'eliminar':
- $this->_borrarDb();
+ $res = $this->_borrarDb();
break;
}
+ return $res;
}
// -X2C
* @return string
* @access public
*/
- function getResponsable()// ~X2C
+ function getResponsable() // ~X2C
{
return $this->_responsable;
}
* @return void
* @access public
*/
- function setResponsable($responsable = null)// ~X2C
+ function setResponsable($responsable = null) // ~X2C
{
$this->_responsable = $responsable;
}
* @return array
* @access public
*/
- function getIdPermisos()// ~X2C
+ function getIdPermisos() // ~X2C
{
return $this->_permisos;
}
* @return void
* @access public
*/
- function setPermisos($permisos = null)// ~X2C
+ function setPermisos($permisos = null) // ~X2C
{
$this->_permisos = $permisos;
}
* @return int
* @access public
*/
- function getMaxIdSistema()// ~X2C
+ function getMaxIdSistema() // ~X2C
{
$sql = include 'Sistema/consultas.php';
$dbh = $this->_db->prepare($sql['obtener_max_id_sistemas']);
* @return void
* @access private
*/
- function _grabarDb()// ~X2C
+ function _grabarDb() // ~X2C
{
$idSistema = $this->_db->nextId('sistema');
$fecha_inicio = $this->getFechaInicio();
'estado' => 1
);
$res = $this->_db->autoExecute('sistema', $datos, DB_AUTOQUERY_INSERT);
-
- if (DB::isError($res)) {
- trigger_error('Error al tratar de insertar el sistema -> '.$res, E_USER_ERROR);
- }
+ if (PEAR::isError($res)) {
+ return $res;
+ }
//Grabo los permisos
- $this->_grabarPermisosDb($idSistema);
+ $res = $this->_grabarPermisosDb($idSistema);
+ if (PEAR::isError($res)) {
+ return $res;
+ }
}
// -X2C
* @return void
* @access private
*/
- function _borrarDb()// ~X2C
+ function _borrarDb() // ~X2C
{
$idSistema = $this->getId();
$responsable = $this->getResponsable();
$datos = array( 'responsable' => $responsable,
'estado' => 0
);
-
$res = $this->_db->autoExecute('sistema', $datos, DB_AUTOQUERY_UPDATE, 'id_sistema = '.$idSistema);
- if (DB::isError($res)) {
- trigger_error('Error en sistema -> '.$res, E_USER_ERROR);
+ 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
- $this->_borrarPermisosDb($idSistema, false);
+ $res = $this->_borrarPermisosDb($idSistema);
+ if (PEAR::isError($res)) {
+ return $res;
+ }
}
// -X2C
* @return void
* @access private
*/
- function _modificarDb()// ~X2C
+ function _modificarDb() // ~X2C
{
//Grabo las modificaciones al sistema
$idSistema = $this->getId();
'responsable' => $this->getResponsable(),
);
$res = $this->_db->autoExecute('sistema', $datos, DB_AUTOQUERY_UPDATE, 'id_sistema = '.$idSistema);
-
- if (DB::isError($res)) {
- trigger_error('Error al tratar de insertar el sistema -> '.var_dump($res), E_USER_ERROR);
+ if (PEAR::isError($res)) {
+ return $res;
}
//Borro los permisos que no tengan observaciones
- $this->_borrarPermisosDb($idSistema, true);
+ $res = $this->_borrarPermisosDb($idSistema, '');
+ if (PEAR::isError($res)) {
+ return $res;
+ }
//Grabo los permisos que selecciono
- $this->_grabarPermisosDb($idSistema);
+ $res = $this->_grabarPermisosDb($idSistema);
+ if (PEAR::isError($res)) {
+ return $res;
+ }
}
// -X2C
* @return void
* @access private
*/
- function _grabarPermisosDb($idSistema)// ~X2C
+ function _grabarPermisosDb($idSistema) // ~X2C
{
$datos = array ('id_permiso','id_sistema','responsable');
$re = $this->_db->autoPrepare('perm_sist', $datos, DB_AUTOQUERY_INSERT);
foreach ($this->_permisos as $permiso) {
$datos = array ($permiso['0'], $idSistema, $this->getResponsable());
$res = $this->_db->execute($re, $datos);
- if (DB::isError($res)) {
- trigger_error('Error en perm_sist -> '.$res, E_USER_ERROR);
+ if (PEAR::isError($res)) {
+ return $res;
}
}
}
* Borra los permisos que tenga asociado el sistema segun el criterio de observaciones
*
* @param int $idSistema Identificador del sistema
- * @param bool $observaciones Si es false borra todas las asociaciones que tenga el sistema. Si es true borra solo aquellas que tengan observaciones = ''
+ * @param bool $observaciones Null u observacion de la asociacion a borrar
+ * @param int $idPermiso Identificador del permiso a borrar
*
* @return void
* @access private
*/
- function _borrarPermisosDb($idSistema, $observaciones)// ~X2C
+ function _borrarPermisosDb($idSistema, $observaciones = null, $idPermiso = null) // ~X2C
{
$sql = include 'Sistema/consultas.php';
$datos[] = $idSistema;
$tmp = $sql['borrar_permisos'];
- if ($observaciones) {
+ if (isset($observaciones)) {
$tmp.= $sql['borrar_permisos2'];
- $datos[] = '';
+ $datos[] = $observaciones;
+ }
+ if (isset($idPermiso)) {
+ $tmp.= $sql['borrar_permisos3'];
+ $datos[] = $idPermiso;
}
$dbh = $this->_db->prepare($tmp);
$res = $this->_db->execute($dbh, $datos);
+ if (PEAR::isError($res)) {
+ return $res;
+ }
+ }
+ // -X2C
+
+
+ // +X2C Operation 312
+ /**
+ * Guarda en base las nuevas asociaciones que se van cargando y actualiza los datos del sistema.
+ *
+ * @param int $idPermiso Identificador del Permiso
+ * @param string $observacion Observacion a agregar
+ *
+ * @return bool
+ * @access public
+ */
+ function guardarAsociacion($idPermiso, $observacion = '') // ~X2C
+ {
+ $error = true;
+ if (!$this->_existeAsociacion($idPermiso, $observacion)) {
+ //Guardo la asociacion
+ //Grabo el sistema
+ $datos = array(
+ 'id_permiso' => $idPermiso,
+ 'id_sistema' => $this->getId(),
+ 'observaciones' => $observacion,
+ 'responsable' => $this->getResponsable(),
+ );
+ $res = $this->_db->autoExecute('perm_sist', $datos, DB_AUTOQUERY_INSERT);
+ //Recargo los datos del sistema
+ $this->_obtenerDatosDb();
+ $error = false;
+ }
+ return $error;
+ }
+ // -X2C
+
+ // +X2C Operation 313
+ /**
+ * Elimina una asociacion de la base, y actualiza los datos del sistema.
+ *
+ * @param int $idPermiso Identificador del permiso a borrar
+ * @param string $observacion Observacion de la asociacion a borrar (Puede ser vacia)
+ *
+ * @return bool
+ * @access public
+ */
+ function eliminarAsociacion($idPermiso, $observacion = '') // ~X2C
+ {
+ $error = false;
+ //Elimino la asociacion
+ $this->_borrarPermisosDb($this->getId(), $observacion, $idPermiso);
+ //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
+ {
+ $error = true;
+ //Busco la nueva asociacion
+ if (!$this->_existeAsociacion($idPermiso, $observacion)) {
+ //Actualizo la asociacion
+ $datos = array(
+ 'id_permiso' => $idPermiso,
+ 'id_sistema' => $this->getId(),
+ 'observaciones' => $observacion,
+ 'responsable' => $this->getResponsable(),
+ );
+ $this->_db->autoExecute('perm_sist',
+ $datos,
+ DB_AUTOQUERY_UPDATE,
+ 'id_sistema = '.$this->getId().' AND id_permiso = '.$idPermiso_ant.' AND observaciones =\''.$obs_ant.'\'');
+
+ //Recargo los datos del sistema
+ $this->_obtenerDatosDb();
+ $error = false;
+ }
+ return $error;
+ }
+ // -X2C
+
+ // +X2C Operation 315
+ /**
+ * Chequea si existe la asociacion
+ *
+ * @param int $idPermiso Id del permiso a chequear
+ * @param string $observacion Observacion a chequear
+ *
+ * @return bool
+ * @access private
+ */
+ function _existeAsociacion($idPermiso, $observacion) // ~X2C
+ {
+ $sql = include 'Sistema/consultas.php'; //Incluyo las consultas de este objeto nada mas.
+ $tmp = $sql['obtener_permisos'].$sql['obtener_permisos3'].$sql['obtener_permisos4'];
+ $dbh = $this->_db->prepare($tmp);
+ $tmp = array ($this->getId(),$idPermiso,$observacion);
+ $res = $this->_db->execute($dbh,$tmp);
+ $re = $res->fetchRow();
+
+ if (is_null($re)) {
+ return false;
+ }
+ else {
+ return true;
+ }
}
// -X2C
} // -X2C Class :Sistema
-?>
+?>
\ No newline at end of file