X-Git-Url: https://git.llucax.com/mecon/samurai.git/blobdiff_plain/d0ae155a8be2168110755cce58865068b34bfe91..325ae567c29fec68d2be78712b3d85b2dc41a9e8:/lib/SAMURAI/Permiso.php?ds=inline diff --git a/lib/SAMURAI/Permiso.php b/lib/SAMURAI/Permiso.php index 4bcf5e4..0598dbc 100644 --- a/lib/SAMURAI/Permiso.php +++ b/lib/SAMURAI/Permiso.php @@ -190,7 +190,6 @@ class SAMURAI_Permiso { // -X2C - // +X2C Operation 316 /** * Modifica la base de datos segun accion @@ -200,7 +199,7 @@ class SAMURAI_Permiso { * @return mixed * @access public */ - function guardarDatos($accion = grabar) // ~X2C + function guardarDatos($accion = 'grabar') // ~X2C { $accion = strtolower($accion); switch ($accion) { @@ -233,7 +232,11 @@ class SAMURAI_Permiso { 'desc_permiso' => $this->getDescripcion(), 'responsable' => $this->getResponsable(), ); - return $this->_db->autoExecute('permiso', $datos, DB_AUTOQUERY_INSERT); + $res = $this->_db->autoExecute('samurai.permiso', $datos, DB_AUTOQUERY_INSERT); + if (PEAR::isError($res)) { + return $res; + } + $this->setId($idPermiso); } // -X2C @@ -263,7 +266,7 @@ class SAMURAI_Permiso { } // //Borro el permiso de la base - $tmp = $sql['borrar_permiso'].$sql['obtener_datos_permiso2']; + $tmp = $sql['borrar_permiso']; $dbh = $this->_db->prepare($tmp); return $this->_db->execute($dbh, $datos); // @@ -284,7 +287,7 @@ class SAMURAI_Permiso { 'desc_permiso' => $this->getDescripcion(), 'responsable' => $this->getResponsable(), ); - return $this->_db->autoExecute('permiso', $datos, DB_AUTOQUERY_UPDATE, 'id_permiso ='.$this->getId()); + return $this->_db->autoExecute('samurai.permiso', $datos, DB_AUTOQUERY_UPDATE, 'id_permiso ='.$this->getId()); } // -X2C @@ -294,18 +297,25 @@ class SAMURAI_Permiso { * Devuleve un array con los identificadores de todos los permisos. * * @param SAMURAI_DB &$db Base de Datos + * @param int $id_sistema Identificador del sistema * * @return array(int) * @access protected * @static */ - function _getIdPermisos(&$db) // ~X2C + function _getIdPermisos(&$db, $id_sistema = null) // ~X2C { //OBTENGO LOS ID DE LA BASE $rta = array(); + $tmp = array(); $sql = parse_ini_file(dirname(__FILE__) . '/Permiso/consultas.ini', true); - $dbh = $db->prepare($sql['obtener_datos_permiso']); - $tmp[] = $_SESSION['samurai']['id_sistema']; + $consulta = $sql['obtener_datos_permiso']; + if ($id_sistema) { + $consulta.= $sql['obtener_datos_permiso3']; + $tmp[] = $id_sistema; + } + $consulta.= $sql['obtener_datos_permiso5']; + $dbh = $db->prepare($consulta); $res = $db->execute($dbh, $tmp); while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) { array_push($rta,$re['id_permiso']); @@ -320,16 +330,17 @@ class SAMURAI_Permiso { * Devuelve un array asociativo en donde la clave es el identificador y el valor es la descripcion del permiso * * @param SAMURAI_DB &$db Base de Datos + * @param int $id_sistema Identificador del sistema * * @return array() * @access public * @static */ - function getArrayPermisos(&$db) // ~X2C + function getArrayPermisos(&$db, $id_sistema = null) // ~X2C { //FORECHEO LO QUE ME DEVUELVA GET PERMISOS $rta = array (); - foreach (SAMURAI_Permiso::getPermisos($db) as $permiso) { + foreach (SAMURAI_Permiso::getPermisos($db, $id_sistema) as $permiso) { $rta[$permiso->getId()] = $permiso->getDescripcion(); } return $rta; @@ -341,15 +352,16 @@ class SAMURAI_Permiso { * Devuelve el array de permisos * * @param SAMURAI_DB &$db Base de Datos + * @param int $id_sistema Identificador del sistema * * @return array(Permiso) * @access public * @static */ - function getPermisos(&$db) // ~X2C + function getPermisos(&$db, $id_sistema = null) // ~X2C { $rta = array (); - foreach (SAMURAI_Permiso::_getIdPermisos($db) as $id) { + foreach (SAMURAI_Permiso::_getIdPermisos($db, $id_sistema) as $id) { $tmp = new SAMURAI_Permiso($db,$id); array_push($rta, $tmp); } @@ -357,6 +369,65 @@ class SAMURAI_Permiso { } // -X2C + // +X2C Operation 364 + /** + * Devuelve true si esta asociado a algun sistema, caso contrario devuelve false + * + * @return bool + * @access public + */ + function asociadoASistema() // ~X2C + { + $rta = array(); + $tmp = array(); + $sql = parse_ini_file(dirname(__FILE__) . '/Permiso/consultas.ini', true); + $tmp = $sql['verificar_asociaciones1'].$sql['obtener_datos_permiso2']; + $dbh = $this->_db->prepare($tmp); + $res = $this->_db->execute($dbh, array ($this->getId())); + if (($re = $res->fetchRow(DB_FETCHMODE_ASSOC)) && !$re['cuenta'] == 0) { + return true; + } + else { + return false; + } + } + // -X2C + + /** + * Metodo que devuelve los datos necesarios para listar permisos. + * + * @param SAMURAI_DB &$db Base de Datos + * @param int $id_sistema Identificador de un sistema en particular. + * + * @return mixed + * @access public + * @static + */ + function getPermisosPager(&$db, $id_sistema = null) { + + //@TODO REEMPLAZA A getPermisos + + if ($id_sistema) { + $sql = ' + SELECT p.id_permiso, p.desc_permiso, p.responsable + FROM samurai.permiso AS p, samurai.perm_sist AS ps + WHERE ps.id_sistema = '. $id_sistema .' + AND ps.id_permiso = p.id_permiso + ORDER BY p.desc_permiso + '; + } + else { + $sql = ' + SELECT p.id_permiso, p.desc_permiso, NOT count(ps.id_sistema) AS cuenta + FROM samurai.permiso AS p + LEFT JOIN samurai.perm_sist AS ps + ON (p.id_permiso = ps.id_permiso) + GROUP BY p.id_permiso, p.desc_permiso + ORDER BY p.desc_permiso + '; + } + return $db->query ($sql); + } } // -X2C Class :SAMURAI_Permiso ?>