// +X2C Class 208 :SAMURAI_Perfil
/**
* Clase para el manejo de los perfies.
+@see \ref page_samurai_html_perfil
*
* @access public
*/
*/
var $_permisos;
+ /**
+ * Identificador del sistema en el cual se esta trabajando
+ *
+ * @var int $idSistema
+ * @access protected
+ */
+ var $_idSistema;
+
/**
* Gets Id.
*
*
* @param SAMURAI_DB &$db Objeto conexion
* @param int $id Identificador del perfil.
+ * @param int $idSistema Identificador del sistema en el que se esta trabajando
*
* @return void
* @access public
*/
- function SAMURAI_Perfil(&$db, $id = null) // ~X2C
+ function SAMURAI_Perfil(&$db, $id = null, $idSistema = null) // ~X2C
{
$this->_db = $db;
+ $this->_idSistema = $idSistema;
if (!is_null($id)) {
$this->setId($id);
$this->_obtenerDatosDb();
//OBTENGO EL TIPO DE PERFIL
$tmp = $sql['verificar_asociacion'];
$dbh = $this->_db->prepare($tmp);
- $tmp = array ($this->getId(), $_SESSION['samurai']['id_sistema']);
+ $tmp = array ($this->getId(), $this->_idSistema);
$res = $this->_db->execute($dbh,$tmp);
$re = $res->fetchrow(DB_FETCHMODE_ASSOC);
$this->setTipo($re['tipo_perfil']);
//OBTENGO LOS PERMISOS QUE TIENE ASIGNADO EL PERFIL DESDE PERM_PERFIL_SIST
$tmp = $sql['obtener_permisos'];
$dbh = $this->_db->prepare($tmp);
- $tmp = array ($this->getId(), $_SESSION['samurai']['id_sistema']);
+ $tmp = array ($this->getId(), $this->_idSistema);
$res = $this->_db->execute($dbh,$tmp);
$rta = array ();
while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) {
}
//GRABO EN PERFIL_SIST
$datos = array ('id_perfil' => $this->getId(),
- 'id_sistema' => $_SESSION['samurai']['id_sistema'],
+ 'id_sistema' => $this->_idSistema,
'tipo_perfil' => $this->getTipo(),
'responsable' => $this->getResponsable(),
);
//Verifico en perfil_sist_usuario
$tmp = $sql['verif_perfil_sist_usuario'];
$dbh = $this->_db->prepare($tmp);
- $datos = array ($this->getId(), $_SESSION['samurai']['id_sistema']);
+ $datos = array ($this->getId(), $this->_idSistema);
$res = $this->_db->execute($dbh, $datos);
if (($re = $res->fetchRow(DB_FETCHMODE_ASSOC)) && !$re['cuenta'] == 0) {
return new PEAR_Error("Hay usuarios asociados al perfil seleccionado");
//Borro perfil_sist
$tmp = $sql['borrar_perfil_sist'];
$dbh = $this->_db->prepare($tmp);
- $datos = array ($this->getId(), $_SESSION['samurai']['id_sistema']);
+ $datos = array ($this->getId(), $this->_idSistema);
$res = $this->_db->execute($dbh, $datos);
if (PEAR::isError($res)) {
return $res;
'tipo_perfil' => $this->getTipo(),
'responsable' => $this->getResponsable(),
);
- $res = $this->_db->autoExecute('perfil_sist', $datos, DB_AUTOQUERY_UPDATE, 'id_perfil ='.$this->getId().' AND id_sistema='.$_SESSION['samurai']['id_sistema']);
+ $res = $this->_db->autoExecute('perfil_sist', $datos,
+ DB_AUTOQUERY_UPDATE, 'id_perfil ='.$this->getId().' AND
+ id_sistema='.$this->_idSistema);
if (PEAR::isError($res)) {
return $res;
}
+
+ //VERIFICO QUE NO HAYA UN PERFIL CON LOS MISMOS PERMISOS YA ASIGNADO AL SISTEMA
+ $res = $this->_verifPermisos();
+ if (PEAR::isError($res)) {
+ return $res;
+ }
//Modifico la tabla perm_perfil_sist
$res = $this->_borrarPermisos();
if (PEAR::isError($res)) {
// +X2C Operation 339
/**
+ * Devuelve un array de perfiles
+ *
* @param SAMURAI_DB &$db Base de datos
* @param string $filtro Filtro por nombre del perfil
* @param int $id_sistema Identificador del sistema
{
$rta = array ();
foreach (SAMURAI_Perfil::_getIdPerfiles($db, $filtro, $id_sistema) as $id) {
- $tmp = new SAMURAI_Perfil($db,$id);
+ $tmp = new SAMURAI_Perfil($db,$id, $id_sistema);
array_push($rta, $tmp);
}
return $rta;
*
* @param SAMURAI_DB $db Base de Datos
* @param string $filtro Filtro por descripcion del perfil
+ * @param int $id_sistema Identificador del sistema con el que se esta trabajando
*
* @return array()
* @access public
* @static
*/
- function getArrayPerfiles($db, $filtro = null) // ~X2C
+ function getArrayPerfiles($db, $filtro = null, $id_sistema = null) // ~X2C
{
//FORECHEO LO QUE ME DEVUELVA GET PERMISOS
$rta = array ();
- foreach (SAMURAI_Perfil::getPerfiles($db, $filtro) as $perfil) {
+ foreach (SAMURAI_Perfil::getPerfiles($db, $filtro, $id_sistema) as $perfil) {
$rta[$perfil->getId()] = $perfil->getDescripcion();
}
return $rta;
*/
function _guardarPermisos() // ~X2C
{
- //VERIFICO QUE NO HAYA UN PERFIL CON LOS MISMOS PERMISOS YA ASIGNADO AL SISTEMA
$sql = parse_ini_file(dirname(__FILE__) . '/Perfil/consultas.ini', true);
- $tmp = $sql['verif_perm_perfil_sist'];
- $dbh = $this->_db->prepare($tmp);
- $tmp = array ($_SESSION['samurai']['id_sistema']);
- $res = $this->_db->execute($dbh,$tmp);
- $perm = array();
- while ($re = $res->fetchRow(DB_FETCHMODE_ASSOC)) {
- $perm[$re['id_perfil']][] = $re['id_permiso'].'##'.$re['observaciones'];
- }
- foreach ($perm as $key => $p) {
- $rta1 = array_diff($p, $this->getPermisos());
- $rta2 = array_diff($this->getPermisos(), $p);
- if (!$rta1 && !$rta2) {
- echo 1;
- $perf = new SAMURAI_Perfil($this->_db, $key);
- return new PEAR_Error("El perfil \"".$perf->getDescripcion()."\" contiene los mismos permisos.");
- }
+ //VERIFICO QUE NO HAYA UN PERFIL CON LOS MISMOS PERMISOS YA ASIGNADO AL SISTEMA
+ $res = $this->_verifPermisos();
+ if (PEAR::isError($res)) {
+ return $res;
}
//GRABO EN PERM_PERFIL_SIST
$re = $this->_db->autoPrepare('perm_perfil_sist', $datos, DB_AUTOQUERY_INSERT);
foreach ($this->getPermisos() as $permiso) {
list($id, $obs) = split ('##',$permiso);
- $datos = array ($id, $this->getId(), $_SESSION['samurai']['id_sistema'], $obs, $this->getResponsable());
+ $datos = array ($id, $this->getId(), $this->_idSistema, $obs, $this->getResponsable());
$res = $this->_db->execute($re, $datos);
if (PEAR::isError($res)) {
return $res;
$sql = parse_ini_file(dirname(__FILE__) . '/Perfil/consultas.ini', true);
$tmp = $sql['borrar_permisos'];
$dbh = $this->_db->prepare($tmp);
- $tmp = array ($this->getId(), $_SESSION['samurai']['id_sistema']);
+ $tmp = array ($this->getId(), $this->_idSistema);
return $this->_db->execute($dbh,$tmp);
}
// -X2C
+ // +X2C Operation 376
+ /**
+ * Verifica si se puede insertar
+ *
+ * @return mixed
+ * @access protected
+ */
+ function _verifPermisos() // ~X2C
+ {
+ //VERIFICO QUE NO HAYA UN PERFIL CON LOS MISMOS PERMISOS YA ASIGNADO AL SISTEMA
+ $sql = parse_ini_file(dirname(__FILE__) . '/Perfil/consultas.ini', true);
+ $tmp = $sql['verif_perm_perfil_sist'];
+ $dbh = $this->_db->prepare($tmp);
+ $tmp = array ($this->_idSistema);
+ $res = $this->_db->execute($dbh,$tmp);
+ $perm = array();
+ while ($re = $res->fetchRow(DB_FETCHMODE_ASSOC)) {
+ $perm[$re['id_perfil']][] = $re['id_permiso'].'##'.$re['observaciones'];
+ }
+ foreach ($perm as $key => $p) {
+ $rta1 = array_diff($p, $this->getPermisos());
+ $rta2 = array_diff($this->getPermisos(), $p);
+ if (!$rta1 && !$rta2) {
+ $perf = new SAMURAI_Perfil($this->_db, $key, $this->_idSistema);
+ if ($perf->getDescripcion() != $this->getDescripcion()) {
+ return new PEAR_Error("El perfil \"".$perf->getDescripcion()."\" contiene los mismos permisos.");
+ }
+ }
+ }
+ return true;
+ }
+ // -X2C
+
} // -X2C Class :SAMURAI_Perfil
?>
\ No newline at end of file