File: /home/www/fotospedroj/application/controllers/grupos.php
<?php
class Grupos extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->helper(array('controlacceso','url','util','tiempo'));
$this->load->library('session');
}
function index()
{
redirect('navegador/grupo/1');
}
function crear(){
if (!ca_es_admin()){
return;
}
// Recuperamos argumentos
if ($this->input->post('titulo') != '')
$titulo = strip_tags($this->input->post('titulo'));
else
return;
if ($this->input->post('gid') != '')
$gid = strip_tags($this->input->post('gid'));
else
return;
$usuario_id = ca_usuario_id();
if ($this->db->query('INSERT INTO groups (parent, title) VALUES(\''.$gid .'\',\''.$titulo .'\')' )) {
$grupo_creado = $this->db->query('SELECT * FROM groups WHERE title=\''. $titulo . '\'' );
if ($grupo_creado->num_rows()==0){
registrar_evento('grupos', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó crear un grupo pero falló', $usuario_id, $gid );
echo 'El grupo no se ha podido crear por un problema extraño con la base de datos.';
return;
}
registrar_evento('grupos', 'info', 'El usuario ['.$this->session->userdata('user_alias').'] ha creado un nuevo grupo', $usuario_id, $grupo_creado->row()->gid );
$data = array();
$nuevo_grupo = $grupo_creado->result();
$nuevo_grupo[0]->cover = '../../no_cover';
$data ['grupo'] = $nuevo_grupo[0];
$data['es_admin']=ca_es_admin();
echo "1";
}else{
registrar_evento('grupos', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó crear grupos pero falló la inserción SQL', $usuario_id, $gid );
echo 'El tema no se ha podido crear por un problema con la base de datos.';
}
}
function editar(){
if (!ca_es_admin()){
redirect('login');
}
// Recuperamos argumentos
if ($this->input->post('titulo') != '')
$titulo = strip_tags($this->input->post('titulo'));
else
return;
if ($this->input->post('gid') != '')
$gid = strip_tags($this->input->post('gid'));
else
return;
$usuario_id = ca_usuario_id();
if ($this->db->query('UPDATE groups SET title=\''. $titulo .'\' where gid=\''.$gid .'\'' )) {
$grupo_creado = $this->db->query('SELECT * FROM groups WHERE gid=\''. $gid . '\'' );
if ($grupo_creado->num_rows()==0){
registrar_evento('grupos', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó editar un grupo pero falló', $usuario_id, $gid );
echo 'El grupo no se ha podido editar por un problema extraño con la base de datos.';
return;
}
registrar_evento('grupos', 'info', 'El usuario ['.$this->session->userdata('user_alias').'] ha editado un grupo: ['.$titulo.']', $usuario_id, $grupo_creado->row()->gid );
$data = array();
$data['gid'] = $grupo_creado->row()->gid;
$data['titulo'] = $grupo_creado->row()->title;
$data['visibilidad'] = $grupo_creado->row()->visibility;
$data['es_admin'] = ca_es_admin();
echo "1";
}else{
registrar_evento('grupos', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó crear grupos pero falló la inserción SQL', $usuario_id, $gid );
echo 'El grupo no se ha podido editar por un problema con la base de datos.';
}
}
function mover(){
if (!ca_es_admin()){
return;
}
// Recuperamos argumentos
if ($this->input->post('grupo_id') != '')
$grupo_id = strip_tags($this->input->post('grupo_id'));
else
return;
if ($this->input->post('grupo_destino_id') != '')
$grupo_destino_id = strip_tags($this->input->post('grupo_destino_id'));
else
return;
$usuario_id = ca_usuario_id();
if ($this->db->query('UPDATE groups SET parent=\''. $grupo_destino_id .'\' where gid=\''.$grupo_id .'\'' )) {
registrar_evento('grupos', 'info', 'El usuario ['.$this->session->userdata('user_alias').'] ha movido un grupo: ['.$grupo_id.'] al grupo ['.$grupo_destino_id.']', $usuario_id, $grupo_id );
echo "0";
}else{
registrar_evento('grupos', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó mover un grupo pero falló la edición SQL', $usuario_id, $grupo_id );
echo 'La galería no se ha podido mover por un problema con la base de datos.';
}
}
function eliminar(){
if (!ca_es_admin()){
redirect('login');
}
// Recuperamos argumentos
if ($this->input->post('gid') != '')
$gid = strip_tags($this->input->post('gid'));
else
return;
$usuario_id = ca_usuario_id();
//Comprobamos que este grupo esté vacío antes de eliminarlo
$esta_vacio = grupo_esta_vacio($gid);
if ($esta_vacio){
$grupo_a_borrar = $this->db->query('SELECT * FROM groups WHERE gid=\''.$gid.'\'' );
if ($grupo_a_borrar->num_rows() > 0){
if ($this->db->query('DELETE FROM groups WHERE gid=\''. $gid .'\'' ) ){
registrar_evento('grupos', 'info', 'El usuario ['.$this->session->userdata('user_alias').'] ha borrado el grupo titulado ['. $grupo_a_borrar->row()->title .']', $usuario_id, $grupo_a_borrar->row()->gid );
echo '0';
}else{
registrar_evento('grupos', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó borrar el grupo titulado [' . $grupo_a_borrar->row()->title . '] pero falló la sentencia SQL', $usuario_id, $grupo_a_borrar->row()->gid );
echo 'Error: El grupo no se eliminó debido a un error al acceder a la base de datos.';
}
}
else {
registrar_evento('grupos', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó borrar un grupo que no existe.', $usuario_id , $gid);
echo 'Error: Se intentó eliminar un grupo que no existe.';
}
}
else {
registrar_evento('grupos', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó borrar un grupo que no estaba vacío.', $usuario_id , $gid);
echo 'Error: El grupo no puede eliminarse porque no está vacío. Elimine los elementos que contiene primero.';
}
}
function inc_peso(){
if (!ca_es_admin()){
redirect('login');
}
// Recuperamos argumentos
if ($this->input->post('gid') != '')
$gid = strip_tags($this->input->post('gid'));
else
return;
$grupo = $this->db->query('SELECT * FROM groups WHERE gid=\''. $gid . '\'' );
$peso = $grupo->row()->weight + 1;
$usuario_id = ca_usuario_id();
if ($this->db->query('UPDATE groups SET weight=\''. $peso .'\' where gid=\''.$gid .'\'' )) {
echo $peso;
}
else{
echo "E";
}
}
function dec_peso(){
if (!ca_es_admin()){
redirect('login');
}
// Recuperamos argumentos
if ($this->input->post('gid') != '')
$gid = strip_tags($this->input->post('gid'));
else
return;
$grupo = $this->db->query('SELECT * FROM groups WHERE gid=\''. $gid . '\'' );
$peso = $grupo->row()->weight - 1;
$usuario_id = ca_usuario_id();
if ($this->db->query('UPDATE groups SET weight=\''. $peso .'\' where gid=\''.$gid .'\'' )) {
echo $peso;
}
else{
echo "E";
}
}
function visibilidad(){
if (!ca_es_admin()){
redirect('login');
}
// Recuperamos argumentos
if ($this->input->post('gid') != '')
$gid = strip_tags($this->input->post('gid'));
else
return;
if ($this->input->post('vis') != '')
$vis = strip_tags($this->input->post('vis'));
else
return;
// Ciclamos la visibilidad 1 -> 2 -> 3 -> 4 -> 1
$usuario_id = ca_usuario_id();
if ($this->db->query('UPDATE groups SET visibility=\''. $vis .'\' where gid=\''.$gid .'\'' )) {
$grupo_actualizado = $this->db->query('SELECT * FROM groups WHERE gid=\''. $gid . '\'' );
if ($grupo_actualizado->num_rows()==0){
registrar_evento('grupos', 'error', 'El usuario ['.$this->session->userdata('alias').'] intentó cambiar la visibilidad de un grupo pero falló', $usuario_id, $gid );
echo 'No se ha podido cambiar la visibilidad del grupo por un problema extraño con la base de datos.';
return;
}
registrar_evento('grupos', 'info', 'El usuario ['.$this->session->userdata('alias').'] ha cambiado la visibilidad del grupo: ['.$grupo_actualizado->row()->title.'] a ['. $grupo_actualizado->row()->visibility .']', $usuario_id, $grupo_actualizado->row()->gid );
$data = array();
$data ['grupo'] = $grupo_actualizado->row();
buscar_portada(array($data['grupo']));
$data['es_admin']=ca_es_admin();
echo "1";
}else{
registrar_evento('grupos', 'error', 'El usuario ['.$this->session->userdata('alias').'] intentó cambiar la visibilidad de un grupo pero falló la inserción SQL', $usuario_id, $gid );
echo 'No se ha podido cambiar la visibilidad del grupo por un problema con la base de datos.';
}
}
function cambiarusuario (){
if (!ca_es_admin()){
echo "Necesitas ser administrador para hacer esto.";
return;
}
// Recuperamos argumentos
if ($this->input->post('gid') != '')
$gid = strip_tags($this->input->post('gid'));
else {
echo "Falta indicar galería.";
return;
}
if ($this->input->post('uid') != '')
$uid = strip_tags($this->input->post('uid'));
else {
echo "Falta indicar nuevo usuario.";
return;
}
$usuario_id = ca_usuario_id();
if ($this->db->query('UPDATE groups SET uid=\''. $uid .'\' where gid=\''.$gid .'\'' )) {
registrar_evento('grupos', 'info', 'El usuario ['.$this->session->userdata('user_alias').'] ha establecido un nuevo usuario asociado a un grupo.' , $usuario_id, $gid, $uid );
echo '0';
return;
}
else {
registrar_evento('grupos', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó cambiar el usuario asociado a un grupo pero falló la inserción SQL2', $usuario_id, $gid, $uid );
echo 'Error al intentar cambiar el usuario asociado a la galería.';
}
}
function portada(){
if (!ca_es_admin()){
return;
}
// Recuperamos argumentos
if ($this->input->post('galeria') != '')
$gid = strip_tags($this->input->post('galeria'));
else
return;
$usuario_id = ca_usuario_id();
$galeria = $this->db->query('SELECT * FROM galleries WHERE gid=\''. $gid . '\'' );
/*if ($galeria->row()->visibility != 5){
echo '0';
return;
}*/
if ($this->db->query('UPDATE groups SET main_gallery=\''. $gid .'\' where gid=\''.$galeria->row()->group_id .'\'' )) {
registrar_evento('grupos', 'info', 'El usuario ['.$this->session->userdata('user_alias').'] ha establecido una nueva galería como portada de un grupo.' , $usuario_id, $galeria->row()->group_id, $gid );
echo '1';
}
else{
registrar_evento('grupos', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó seleccionar una galería como portada de un grupo pero falló la inserción SQL2', $usuario_id, 0, $gid );
echo '0';
}
}
}