// -X2C
-
// +X2C Operation 316
/**
* Modifica la base de datos segun accion
* @return mixed
* @access public
*/
- function guardarDatos($accion = grabar) // ~X2C
+ function guardarDatos($accion = 'grabar') // ~X2C
{
$accion = strtolower($accion);
switch ($accion) {
'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
}
//
//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);
//
'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
* 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']);
* 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;
* 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);
}
}
// -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
?>