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/galerias.php
<?php

class Galerias 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();
        $galerias_antes = $this->db->query('SELECT * FROM galleries WHERE title=\''. $titulo . '\' and group_id=\''.$gid.'\'' ); 
		
        if ($this->db->query('INSERT INTO galleries (uid, group_id, title) VALUES(\''.$usuario_id .'\',\''.$gid .'\',\''.$titulo .'\')' )) {
            // El id de la galería se genera por autoincremento, con lo que si lo ordenamos de forma descendente, el primero será 
			// el que acabamos de crear.
			$galerias_despues = $this->db->query('SELECT * FROM galleries WHERE title=\''. $titulo . '\' and group_id=\''.$gid.'\' ORDER BY gid DESC' ); 
        
            if ($galerias_antes->num_rows() == $galerias_despues->num_rows()){
                registrar_evento('galerias', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó crear una galeria pero falló', $usuario_id, $gid );
                echo 'La galería no se ha podido crear por un problema extraño con la base de datos.';
                
				return;
            }
            registrar_evento('galerias', 'info', 'El usuario ['.$this->session->userdata('user_alias').'] ha creado una nueva galería.', $usuario_id, $galerias_despues->row()->gid );

            mkdir('media/'.$galerias_despues->row()->gid.'/mini', 0770, true);
		        
			echo "1"; 
        }else{
            registrar_evento('galerias', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó crear una galería pero falló la inserción SQL', $usuario_id, $gid );
            echo 'La galería no se ha podido crear por un problema con la base de datos.';
			
        }		
	
	}
	
	
	function editar(){
		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('UPDATE galleries SET title=\''. $titulo .'\' where gid=\''.$gid .'\'' )) {
            $galeria_modificada = $this->db->query('SELECT * FROM galleries WHERE gid=\''. $gid . '\'' ); 
        
            if ($galeria_modificada->num_rows()==0){
                registrar_evento('galerias', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó editar el titulo de una galería pero falló', $usuario_id, $gid );
                echo 'La galería no se ha podido editar por un problema extraño con la base de datos.';
                
				return;
            }
            registrar_evento('galerias', 'info', 'El usuario ['.$this->session->userdata('user_alias').'] ha editado una galería: ['.$titulo.']', $usuario_id, $galeria_modificada->row()->gid );

			echo "1"; 
        }else{
            registrar_evento('galerias', 'error', 'El usuario ['.$this->session->userdata('alias').'] intentó editar una galería pero falló la inserción SQL', $usuario_id, $gid );
            echo 'La galería 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('galeria_id') != '') 
            $galeria_id = strip_tags($this->input->post('galeria_id'));
        else 
            return;
        if ($this->input->post('grupo_id') != '') 
            $grupo_id = strip_tags($this->input->post('grupo_id'));
        else 
            return;					
		$usuario_id = ca_usuario_id();
		
        if ($this->db->query('UPDATE galleries SET group_id=\''. $grupo_id .'\' where gid=\''.$galeria_id .'\'' )) {

            registrar_evento('galerias', 'info', 'El usuario ['.$this->session->userdata('user_alias').'] ha movido una galería: ['.$galeria_id.'] al grupo ['.$grupo_id.']', $usuario_id, $galeria_id );

			echo "0"; 
        }else{
            registrar_evento('galerias', 'error', 'El usuario ['.$this->session->userdata('alias').'] intentó mover una galería pero falló la edición SQL', $usuario_id, $galeria_id );
            echo 'La galería no se ha podido mover por un problema con la base de datos.';
			
        }		

		
		
	}	


	function eliminar(){
		if (!ca_es_admin()){
			return;
		}
		
		// Recuperamos argumentos
		if ($this->input->post('gid') != '') 
            $gid = strip_tags($this->input->post('gid'));
		else	
			return;
					
		$usuario_id = ca_usuario_id();
		
		//Eliminamos lo que haya dentro antes de eliminarlo
		$medias = $this->db->query('SELECT * FROM media WHERE gid=\''. $gid . '\'' ); 

		foreach ($medias->result() as $media) {		
			if ($this->db->query('DELETE FROM media WHERE mid='. $media->mid ) ){
				$ruta_foto = './media/'.$media->gid.'/'.$media->filename.'.jpg';
				$ruta_miniatura = './media/'.$media->gid.'/mini/'.$media->filename.'_mini.jpg';
				if (is_file($ruta_foto)){
					unlink($ruta_foto);
				}
				if (is_file($ruta_miniatura)){
					unlink($ruta_miniatura);
			    }
            	registrar_evento('galerias', 'info', 'El usuario ['.$this->session->userdata('user_alias').'] ha borrado un medio borrando una galería', $usuario_id, $gid, $media->mid );     
			}
			else {
	                registrar_evento('galerias', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó borrar un medio borrando una galería pero falló la sentencia SQL', $usuario_id,  $gid, $media->mid );
	                echo 'La galería no se ha podido borrar porque algún medio contenido en el no se puede borrar.';
					return;
			}					
		}
			
        $galeria_a_borrar = $this->db->query('SELECT * FROM galleries WHERE gid=\''.$gid.'\'' );        
        if ($galeria_a_borrar->num_rows() > 0){   
            if ($galeria_a_borrar->row()->cover != '../../no_cover'){
				$ruta_cover = './media/'.$gid.'/mini/'.$galeria_a_borrar->row()->cover.'_mini.jpg';
				if (is_file($ruta_cover)){
						unlink($ruta_cover);
				}
			}
			if (is_dir('./media/'.$gid.'/mini')){
				rmdir ('./media/'.$gid.'/mini');
			}
			if (is_dir('./media/'.$gid)){
				rmdir ('./media/'.$gid);
			}
			
			
			if ($this->db->query('DELETE FROM galleries WHERE gid=\''. $gid .'\'' ) ){
                registrar_evento('galerias', 'info', 'El usuario ['.$this->session->userdata('user_alias').'] ha borrado la galería ['. $galeria_a_borrar->row()->title .']', $usuario_id, $galeria_a_borrar->row()->gid );     
                echo '0';
            }else{
                registrar_evento('galerias', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó borrar la galería titulado [' . $galeria_a_borrar->row()->title . '] pero falló la sentencia SQL', $usuario_id, $galeria_a_borrar->row()->gid );
                echo 'Error: El contenido de la galería se borró pero la galería misma no pudo borrarse.';
            }
        }
        else {
			registrar_evento('galerias', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó borrar una galería que no existe.', $usuario_id , $gid);
            echo 'Error: Se intentó eliminar una galería que no existe.';
        }
		
	}
	
	
	function visibilidad(){
		if (!ca_es_admin()){
			return;
		}
		
		// 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;			
			
		// Obtenemos la hora para registrar el evento				
		$fecha_ahora_mysql = unix_to_mysql(timestamp_now());	
		
		$usuario_id = ca_usuario_id();
		
        if ($this->db->query('UPDATE galleries SET visibility=\''. $vis .'\' where gid=\''.$gid .'\'' )) {
            $galeria_creada = $this->db->query('SELECT * FROM galleries WHERE gid=\''. $gid . '\'' ); 
        
            if ($galeria_creada->num_rows()==0){
                registrar_evento('galerias', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó cambiar la visibilidad de una galería pero falló', $usuario_id, $gid );
                echo 'No se ha podido cambiar la visibilidad de la galería por un problema extraño con la base de datos.';
                
				return;
            }
            registrar_evento('galerias', 'info', 'El usuario ['.$this->session->userdata('user_alias').'] ha cambiado la visibilidad de la grupo: ['.$galeria_creada->row()->title.'] a ['. $galeria_creada->row()->visibility .']', $usuario_id, $galeria_creada->row()->gid );
			
			$usuarios = $this->db->query('SELECT * FROM users');
			
			echo "1" ;
        }else{
            registrar_evento('galerias', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó cambiar la visibilidad de una galería pero falló la inserción SQL', $usuario_id, $gid );
            echo 'No se ha podido cambiar la visibilidad de la galería por un problema con la base de datos.';
			
        }	
	}
	

	function portada(){
		if (!ca_es_admin()){
			return;
		}
		
		// Recuperamos argumentos
		if ($this->input->post('media') != '') 
            $mid = strip_tags($this->input->post('media'));
		else	
			return;	
		
		$usuario_id = ca_usuario_id();
		
		
		$media = $this->db->query('SELECT * FROM media WHERE mid=\''. $mid . '\'' );
		
		$galeria = $this->db->query('SELECT * FROM galleries WHERE gid=\''. $media->row()->gid . '\'' );
		
		$prev_selected = $galeria->row()->main_media;
		
		$ruta_cover = './media/'.$media->row()->gid.'/mini/'.$media->row()->filename.'_mini.jpg';
		if (!is_file($ruta_cover)){
				echo '0';
				return;
		}
		
        if ($this->db->query('UPDATE galleries SET main_media=\''. $mid .'\' where gid=\''.$media->row()->gid .'\'' )) {
			// crear la miniatura de la galería

       	    if ($this->db->query('UPDATE galleries SET cover=\''. $media->row()->filename .'\' where gid=\''.$media->row()->gid .'\'' )) {
	            registrar_evento('galerias', 'info', 'El usuario ['.$this->session->userdata('user_alias').'] ha establecido un nuevo medio como portada de una galería.' , $usuario_id, $media->row()->gid, $mid );
		        echo $prev_selected; 
				return;
			}
			else {
	            registrar_evento('galerias', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó seleccionar un medio como portada de una galería pero falló la inserción SQL1', $usuario_id, 0, $mid );
	            echo '0';				
				return;
			}
            
        }else{
            registrar_evento('galerias', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó seleccionar un medio como portada de una galería pero falló la inserción SQL2', $usuario_id, 0, $mid );
            echo '0';
			
        }	
	}	
	

	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 galleries SET uid=\''. $uid .'\' where gid=\''.$gid .'\'' )) {
	            registrar_evento('galerias', 'info', 'El usuario ['.$this->session->userdata('user_alias').'] ha establecido un nuevo usuario asociado a una galería.' , $usuario_id, $gid, $uid );
		        echo '0'; 
				return;			
		}
		else {
			registrar_evento('galerias', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó cambiar el usuario asociado a una galería pero falló la inserción SQL2', $usuario_id, $gid, $uid );
            echo 'Error al intentar cambiar el usuario asociado a la galería.';
		}
		
	}

	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;
		
					
		$galeria = $this->db->query('SELECT * FROM galleries WHERE gid=\''. $gid . '\'' );

		$peso = $galeria->row()->weight + 1;

		$usuario_id = ca_usuario_id();

		if ($this->db->query('UPDATE galleries 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;
		
					
		$galeria = $this->db->query('SELECT * FROM galleries WHERE gid=\''. $gid . '\'' );

		$peso = $galeria->row()->weight - 1;

		$usuario_id = ca_usuario_id();

		if ($this->db->query('UPDATE galleries SET weight=\''. $peso .'\' where gid=\''.$gid .'\'' )) {
			echo $peso;
		}
		else{
			echo "E";
		}
	}


	
}