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";
}
}
}