HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux aritmodecarnaval.es 5.15.0-79-generic #86-Ubuntu SMP Mon Jul 10 16:07:21 UTC 2023 x86_64
User: www-data (33)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
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';
			
        }	
	}		
	
	
}