+ // +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
+
+ /**
+ * Metodo que devuelve los datos necesarios para listar perfiles.
+ *
+ * @param SAMURAI_DB &$db Base de Datos
+ * @param string $filtro Filtro de perfiles
+ * @param int $id_sistema Identificador del sistema
+ *
+ * @return mixed
+ * @access public
+ * @static
+ */
+ function getPerfilesPager(&$db, $filtro = null, $id_sistema = null) {
+
+ //@TODO REEMPLAZA A getPerfiles
+ $where[] = 'p.id_perfil = ps.id_perfil';
+ if ($id_sistema) {
+ $where[] = 'ps.id_sistema = '. $id_sistema;
+ }
+ if ($filtro) {
+ $where[] = 'p.desc_perfil LIKE '. $db->quote("%$filtro%");
+ }
+
+ $where = implode (' AND ', $where);
+
+ $sql = "
+ SELECT p.id_perfil, p.desc_perfil AS descripcion
+ FROM samurai.perfil AS p, samurai.perfil_sist AS ps
+ WHERE $where
+ ORDER BY p.desc_perfil
+ ";
+
+ return $db->query ($sql);
+ }
+