File: /home/www/fotospedroj/application/controllers/media.php
<?php
class Media extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->helper(array('controlacceso','url','util','tiempo'));
$this->load->library('session', 'image_lib', 'form_validation');
}
function index()
{
redirect('navegador/grupo/1');
}
function seleccion(){
foreach( $_POST as $variable => $valor ){
$_POST [ $variable ] = str_replace ( "'" , "" , $_POST [ $variable ]);
}
// Recuperamos argumentos
if ($this->input->post('media') != '')
$mid = strip_tags($this->input->post('media'));
else
return;
$media_antes = $this->db->query('SELECT * FROM media WHERE mid=\''. $mid . '\'' );
if (!ca_es_galeria_editable($media_antes->row()->gid)){
return;
}
$usuario_id = ca_usuario_id();
$seleccion_antes = $media_antes->row()->selected;
$seleccion_despues = 0;
if ($seleccion_antes==0){
$seleccion_despues = 1;
}
elseif ($seleccion_antes == 1 && ca_es_admin()){
$seleccion_despues = 2;
}
elseif ($seleccion_antes == 1 && !ca_es_admin()){
$seleccion_despues = 0;
}
elseif ($seleccion_antes == 2 && ca_es_admin()){
$seleccion_despues = 0;
}
else {
$seleccion_despues = $seleccion_antes;
}
if ($this->db->query('UPDATE media SET selected=\''. $seleccion_despues .'\' where mid=\''.$mid .'\'' )) {
$media_despues = $this->db->query('SELECT * FROM media WHERE mid=\''. $mid . '\'' );
if ($media_despues->num_rows()==0){
registrar_evento('media', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó seleccionar un medio pero falló', $usuario_id, 0, $mid );
echo '0';
return;
}
registrar_evento('media', 'info', 'El usuario ['.$this->session->userdata('user_alias').'] ha cambiado la seleccion del medio: ['.$media_despues->row()->title.'] a ['. $media_despues->row()->calification .']', $usuario_id, $media_despues->row()->gid, $mid );
echo $seleccion_despues;
}
else{
registrar_evento('media', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó seleccionar un medio pero falló la inserción SQL', $usuario_id, 0, $mid );
echo '0';
}
}
function formulario_subir_archivo(){
foreach( $_POST as $variable => $valor ){
$_POST [ $variable ] = str_replace ( "'" , "" , $_POST [ $variable ]);
}
// Recuperamos argumentos
if ($this->input->post('media') != '')
$mid = strip_tags($this->input->post('media'));
else
return;
$media = $this->db->query('SELECT * FROM media WHERE mid=\''. $mid . '\'' );
if (!ca_es_galeria_editable($media->row()->gid)){
return;
}
$data=array();
$data['media']=$media;
$data['gid']=$gid;
$this->load->view('media/formulario_subir_archivo_view', $data);
}
function rating(){
foreach( $_POST as $variable => $valor ){
$_POST [ $variable ] = str_replace ( "'" , "" , $_POST [ $variable ]);
}
// Recuperamos argumentos
if ($this->input->post('media') != '')
$mid = strip_tags($this->input->post('media'));
else
return;
if ($this->input->post('rate') != '')
$rate = strip_tags($this->input->post('rate'));
else
return;
$media = $this->db->query('SELECT * FROM media WHERE mid=\''. $mid . '\'' );
if (!ca_es_galeria_editable($media->row()->gid)){
echo 'No se ha podido guardar la puntuación porque el usuario no tiene permiso para hacerlo.';
return;
}
$usuario_id = ca_usuario_id();
if ($this->db->query('UPDATE media SET calification=\''. $rate .'\' where mid=\''.$mid .'\'' )) {
$media_modificado = $this->db->query('SELECT * FROM media WHERE mid=\''. $mid . '\'' );
if ($media_modificado->num_rows()==0){
registrar_evento('media', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó calificar un medio pero falló', $usuario_id, 0, $mid );
echo 'No se ha podido guardar la puntuación por un problema extraño con la base de datos.';
return;
}
registrar_evento('media', 'info', 'El usuario ['.$this->session->userdata('user_alias').'] ha cambiado la calificacion del medio: ['.$media_modificado->row()->title.'] a ['. $media_modificado->row()->calification .']', $usuario_id, $media_modificado->row()->gid, $mid );
echo '0';
}else{
registrar_evento('media', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó calificar un medio pero falló la inserción SQL', $usuario_id, 0, $mid );
echo 'No se ha podido guardar la puntuación por un problema con la base de datos.';
}
}
function eliminar (){
foreach( $_POST as $variable => $valor ){
$_POST [ $variable ] = str_replace ( "'" , "" , $_POST [ $variable ]);
}
// Recuperamos argumentos
if ($this->input->post('media') != '')
$mid = strip_tags($this->input->post('media'));
else
return;
$usuario_id = ca_usuario_id();
$media_a_borrar = $this->db->query('SELECT * FROM media WHERE mid='.$mid );
if (!ca_es_admin($usuario_id)){
echo 'No se ha podido borrar porque el usuario no tiene permiso para hacerlo.';
return;
}
if ($media_a_borrar->num_rows() > 0){
if ($this->db->query('DELETE FROM media WHERE mid='. $mid ) ){
$ruta_foto = './media/'.$media_a_borrar->row()->gid.'/'.$media_a_borrar->row()->filename.'.jpg';
$ruta_miniatura = './media/'.$media_a_borrar->row()->gid.'/mini/'.$media_a_borrar->row()->filename.'_mini.jpg';
if (is_file($ruta_foto)){
unlink($ruta_foto);
}
if (is_file($ruta_miniatura)){
unlink($ruta_miniatura);
}
registrar_evento('media', 'info', 'El usuario ['.$this->session->userdata('user_alias').'] ha borrado un medio', $usuario_id, $media_a_borrar->row()->gid, $mid );
echo '1';
}
else {
registrar_evento('media', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó borrar un medio pero falló la sentencia SQL.', $usuario_id, $media_a_borrar->row()->gid, $mid );
echo 'El medio no se ha podido borrar porque la base de datos ha fallado.';
}
}
else {
registrar_evento('media', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó borrar un medio pero no existe o falló la sentencia SQL', $usuario_id , 0, $mid);
echo "El medio no se ha podido borrar.";
}
}
function comentarios(){
foreach( $_POST as $variable => $valor ){
$_POST [ $variable ] = str_replace ( "'" , "" , $_POST [ $variable ]);
}
// Recuperamos argumentos
if ($this->input->post('media') != '')
$mid = strip_tags($this->input->post('media'));
else
return;
$media = $this->db->query('SELECT * FROM media WHERE mid='.$mid );
if (!ca_es_galeria_visible($media->row()->gid)){
echo 'No se ha podido acceder a los comentarios porque el usuario no tiene permiso para hacerlo.';
return;
}
$comments = $this->db->query('SELECT * FROM comments WHERE mid='.$mid );
$comentarios = $comments->result_array();
$i=0;
foreach ($comentarios as $comentario) {
$usuario = $this->db->query('SELECT * FROM users WHERE uid='.$comentario['uid'] );
$comentarios[$i]['alias'] = $usuario->row()->alias;
$i++;
}
$versiones = $this->db->query('SELECT * FROM media WHERE vid='.$mid );
$data = array();
$data['media']=$media->row();
$data['comentarios']=$comentarios;
$data['versiones']= $versiones->result();
$data['es_admin']=ca_es_admin();
$this->load->view ('media/comentarios_view', $data);
}
function versiones(){
foreach( $_POST as $variable => $valor ){
$_POST [ $variable ] = str_replace ( "'" , "" , $_POST [ $variable ]);
}
// Recuperamos argumentos
if ($this->input->post('media') != '')
$mid = strip_tags($this->input->post('media'));
else
return;
$media = $this->db->query('SELECT * FROM media WHERE mid='.$mid );
if (!ca_es_galeria_visible($media->row()->gid)){
echo 'No se ha podido acceder a las versiones porque el usuario no tiene permiso.';
return;
}
$versiones = $this->db->query('SELECT * FROM media WHERE vid='.$mid );
$data = array();
$data['media']=$media->row();
$data['versiones']= $versiones->result();
$data['es_admin']=ca_es_admin();
$this->load->view ('media/versiones_view', $data);
}
function formulario_subida(){
if (!ca_es_admin()){
return;
}
foreach( $_POST as $variable => $valor ){
$_POST [ $variable ] = str_replace ( "'" , "" , $_POST [ $variable ]);
}
// Recuperamos argumentos
if ($this->input->post('galeria') != '')
$gid = strip_tags($this->input->post('galeria'));
else
return;
if ($this->input->post('media') != '') {
$mid = strip_tags($this->input->post('media'));
$versiones = $this->db->query('SELECT * FROM media WHERE vid='.$mid );
$num_versiones = $versiones->num_rows();
$media = $this->db->query('SELECT * FROM media WHERE mid='.$mid );
$titulo = $media->row()->title . ' v'.($num_versiones+1);
$desc = $media->row()->description;
}
else {
$mid = 0;
$num_versiones = 0;
$titulo = 'Título';
$desc = 'Descripción';
}
$data=array();
$data['vid']=$mid;
$data['gid']=$gid;
$data['titulo']=$titulo;
$data['desc']=$desc;
$this->load->view("media/formulario_subir_archivo_view", $data);
}
function cambiar_titulo(){
if (!ca_es_admin()){
return;
}
foreach( $_POST as $variable => $valor ){
$_POST [ $variable ] = str_replace ( "'" , "" , $_POST [ $variable ]);
}
// Recuperamos argumentos
if ($this->input->post('titulo') != '')
$titulo = strip_tags($this->input->post('titulo'));
else
return;
if ($this->input->post('media') != '')
$mid = strip_tags($this->input->post('media'));
else
return;
$usuario_id = ca_usuario_id();
if ($this->db->query('UPDATE media SET title=\''. $titulo .'\' where mid=\''.$mid .'\'' )){
$media = $this->db->query('SELECT * FROM media WHERE mid=\''. $mid . '\'' );
if ($media->num_rows()==0){
registrar_evento('media', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó cambiar el título de un medio pero falló', $usuario_id, 0, $mid );
echo 'El título no se ha podido actualizar por un problema extraño con la base de datos.';
return;
}
registrar_evento('media', 'info', 'El usuario ['.$this->session->userdata('user_alias').'] ha cambiado el título de un medio.', $usuario_id, $media->row()->gid, $media->row()->mid );
echo '0';
}else{
registrar_evento('media', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó cambiar el título de un medio pero falló la inserción SQL', $usuario_id, $gid );
echo 'El título no se ha podido actualizar por un problema con la base de datos.';
}
}
function crear_comentario(){
foreach( $_POST as $variable => $valor ){
$_POST [ $variable ] = str_replace ( "'" , "" , $_POST [ $variable ]);
}
$this->load->library('form_validation');
$usuario_id = ca_usuario_id();
$config = array(
array(
'field' => 'comment',
'label' => 'Comentario',
'rules' => 'required|xss_clean'
),
array(
'field' => 'media',
'label' => 'Media',
'rules' => 'integer'
)
);
$this->form_validation->set_rules($config);
if ($this->form_validation->run() == FALSE)
{
registrar_evento('media', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó crear una comentario pero los datos del formulario no eran válidos', $usuario_id, 0, 0 );
echo 'El comentario no se ha podido crear por un problema con los datos del formulario.';
return;
}
// Recuperamos argumentos
if ($this->input->post('comment') != '')
$comment = strip_tags($this->input->post('comment'));
else
return;
if ($this->input->post('media') != '')
$mid = strip_tags($this->input->post('media'));
else
return;
$media = $this->db->query('SELECT * FROM media WHERE mid='.$mid );
if (!ca_es_galeria_visible($media->row()->gid)){
echo 'No se ha podido crear el comentario porque el usuario no tiene permiso para hacerlo.';
return;
}
$fecha = unix_to_mysql(timestamp_now());
$comentarios_antes = $this->db->query('SELECT * FROM comments WHERE comment=\''. $comment . '\' and uid=\''.$usuario_id.'\'' );
if ($this->db->query('INSERT INTO comments (uid, mid, comment, date) VALUES(\''.$usuario_id .'\',\''.$mid .'\',\''.$comment .'\',\''.$fecha .'\')' )) {
$comentarios_despues = $this->db->query('SELECT * FROM comments WHERE comment=\''. $comment . '\' and uid=\''.$usuario_id.'\' ORDER BY cid DESC' );
if ($comentarios_antes->num_rows() == $comentarios_despues->num_rows()){
registrar_evento('media', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó crear una comentario pero falló', $usuario_id, 0, $mid );
echo 'El comentario no se ha podido crear por un problema extraño con la base de datos.';
return;
}
registrar_evento('media', 'info', 'El usuario ['.$this->session->userdata('user_alias').'] ha creado un nuevo comentario.', $usuario_id, 0, $mid );
$comentario_temp = $comentarios_despues->row_array();
$usuario = $this->db->query('SELECT * FROM users WHERE uid='.$comentario_temp['uid'] );
$comentario_temp['alias'] = $usuario->row()->alias;
$data = array();
$data['comentario']=$comentario_temp;
$this->load->view('media/comentario_nuevo_view',$data);
}else{
registrar_evento('media', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó crear un comentario pero falló la inserción SQL', $usuario_id, 0, $mid );
echo 'El comentario no se ha podido crear por un problema con la base de datos.';
}
}
function cambiar_descripcion(){
if (!ca_es_admin()){
return;
}
// Recuperamos argumentos
if ($this->input->post('desc') != '')
$desc = strip_tags($this->input->post('desc'));
else
return;
if ($this->input->post('media') != '')
$mid = strip_tags($this->input->post('media'));
else
return;
$usuario_id = ca_usuario_id();
if ($this->db->query('UPDATE media SET description=\''. $desc .'\' where mid=\''.$mid .'\'' )){
$media = $this->db->query('SELECT * FROM media WHERE mid=\''. $mid . '\'' );
if ($media->num_rows()==0){
registrar_evento('media', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó cambiar la descripción de un medio pero falló', $usuario_id, 0, $mid );
echo 'La descripción no se ha podido actualizar por un problema extraño con la base de datos.';
return;
}
registrar_evento('media', 'info', 'El usuario ['.$this->session->userdata('user_alias').'] ha cambiado la descripción de un medio.', $usuario_id, $media->row()->gid, $media->row()->mid );
echo '0';
}else{
registrar_evento('media', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó cambiar la descripción de un medio pero falló la inserción SQL', $usuario_id, $gid );
echo 'La descripción no se ha podido actualizar por un problema con la base de datos.';
}
}
function inc_peso(){
if (!ca_es_admin()){
redirect('login');
}
// Recuperamos argumentos
if ($this->input->post('mid') != '')
$mid = strip_tags($this->input->post('mid'));
else
return;
$media = $this->db->query('SELECT * FROM media WHERE mid=\''. $mid . '\'' );
$peso = $media->row()->weight + 1;
if ($this->db->query('UPDATE media SET weight=\''. $peso .'\' where mid=\''.$mid .'\'' )) {
echo $peso;
}
else{
echo "E";
}
}
function dec_peso(){
if (!ca_es_admin()){
redirect('login');
}
// Recuperamos argumentos
if ($this->input->post('mid') != '')
$mid = strip_tags($this->input->post('mid'));
else
return;
$media = $this->db->query('SELECT * FROM media WHERE mid=\''. $mid . '\'' );
$peso = $media->row()->weight - 1;
if ($this->db->query('UPDATE media SET weight=\''. $peso .'\' where mid=\''.$mid .'\'' )) {
echo $peso;
}
else{
echo "E";
}
}
// Usada para actualizar las miniaturas de 300x300 de una galeria
function _actualizar_miniaturas($galeria){
$medios = $this->db->query('SELECT * FROM media WHERE gid='.$galeria );
foreach ($medios->result() as $medio) {
if (!is_dir ( 'media/'.$medio->gid.'/mini' )){
echo "creando directorio para galeria:". $medio->gid. "...<br>";
mkdir('media/'.$medio->gid.'/mini', 0770, true);
}
$error = $this->_crop($medio->gid, $medio->filename, 300, 300);
if ( $error=='' )
{
echo $medio->gid .'....ok<br>';
}
else {
echo $medio->gid .'....error!<br>';
}
}
}
function _crop($gid, $filename, $width, $height)
{
$img_path = './media/'.$gid.'/'.$filename.'.jpg';
$img_thumb = './media/'.$gid.'/mini/'.$filename.'_mini.jpg';
$config['image_library'] = 'gd2';
$config['source_image'] = $img_path;
$config['create_thumb'] = FALSE;
$config['maintain_ratio'] = TRUE;
$config['new_image'] = $img_thumb;
$img = imagecreatefromjpeg($img_path);
$_width = imagesx($img);
$_height = imagesy($img);
echo $filename .' - '.$_width.'x'.$_height.'<br>';
$img_type = '';
$thumb_size = $width;
if ($_width > $_height)
{
// wide image
$config['width'] = intval(($_width / $_height) * $thumb_size);
if ($config['width'] % 2 != 0)
{
$config['width']++;
}
$config['height'] = $thumb_size;
$img_type = 'langscape';
}
else if ($_width < $_height)
{
// landscape image
$config['width'] = $thumb_size;
$config['height'] = intval(($_height / $_width) * $thumb_size);
if ($config['height'] % 2 != 0)
{
$config['height']++;
}
$img_type = 'portrait';
}
else
{
// square image
$config['width'] = $thumb_size;
$config['height'] = $thumb_size;
$img_type = 'square';
}
$this->load->library('image_lib');
$this->image_lib->initialize($config);
if (!$this->image_lib->resize()){
echo "errores al hacer resize.";
return $this->image_lib->display_errors();
}
// reconfigure the image lib for cropping
$conf_new = array(
'image_library' => 'gd2',
'source_image' => $img_thumb,
'create_thumb' => FALSE,
'maintain_ratio' => FALSE,
'width' => $thumb_size,
'height' => $thumb_size
);
if ($img_type == 'landscape')
{
$conf_new['x_axis'] = ($config['width'] - $thumb_size) / 2 ;
$conf_new['y_axis'] = 0;
}
else if($img_type == 'portrait')
{
$conf_new['x_axis'] = 0;
$conf_new['y_axis'] = 0; // En este caso no interesa centrar
//$conf_new['y_axis'] = ($config['height'] - $thumb_size) / 2;
}
else
{
$conf_new['x_axis'] = 0;
$conf_new['y_axis'] = 0;
}
$this->image_lib->initialize($conf_new);
if ($this->image_lib->crop()){
return '';
}
else{
echo "errores al hacer resize2.";
return $this->image_lib->display_errors();
}
}
function _create_thumb_alt($gid,$filename, $width, $height){
$config_image = array();
$config_image['image_library'] = 'gd2';
$config_image['source_image'] = './media/'.$gid.'/'.$filename.'.jpg';
$config_image['new_image'] = './media/'.$gid.'/mini/'.$filename.'_mini.jpg';
$config_image['create_thumb'] = FALSE;
$config_image['maintain_ratio'] = TRUE;
$config_image['width'] = $width;
$config_image['height'] = $height;
$this->load->library('image_lib');
$this->image_lib->initialize($config_image);
if (!$this->image_lib->resize()){
return $this->image_lib->display_errors();
}
$config_image2 = array();
$config_image2['image_library'] = 'gd2';
$config_image2['source_image'] = './media/'.$gid.'/mini/'.$filename.'_mini.jpg';
$config_image2['new_image'] = './media/'.$gid.'/mini/'.$filename.'.jpg';
$config_image2['create_thumb'] = FALSE;
$config_image2['maintain_ratio'] = FALSE;
$config_image2['x_axis'] = $width;
$config_image2['y_axis'] = $height;
$this->image_lib->initialize($config_image2);
if ($this->image_lib->crop()){
return '';
}
else{
return $this->image_lib->display_errors();
}
}
function _create_thumb($gid,$filename, $width, $height){
$config_image = array();
$config_image['image_library'] = 'gd2';
$config_image['source_image'] = './media/'.$gid.'/'.$filename.'.jpg';
$config_image['new_image'] = './media/'.$gid.'/mini/'.$filename.'_mini.jpg';
$config_image['create_thumb'] = TRUE;
$config_image['maintain_ratio'] = TRUE;
$config_image['width'] = $width;
$config_image['height'] = $height;
$this->image_lib->initialize($config_image);
if ($this->image_lib->resize()){
return '';
}
else{
return $this->image_lib->display_errors();
}
}
function _create_media($galeria, $version, $titulo, $descripcion, $origname, $filename, $height, $width, $filesize, $weight){
$usuario_id = ca_usuario_id();
$thumb_width = 300;
$thumb_height = 300;
if ($height < $width){
$thumb_height = 300;
}
else{
$thumb_width = 300;
}
$error = $this->_crop($galeria, $filename, $thumb_width, $thumb_height);
if ( $error=='' )
{
$medios_antes = $this->db->query('SELECT * FROM media WHERE title=\''. $titulo . '\'' );
if ($this->db->query('INSERT INTO media (gid, vid, title, height, width, filesize, original_filename, filename, description, weight) VALUES(\''.$galeria .'\',\''.$version .'\',\''.$titulo .'\',\''.$height .'\',\''.$width .'\',\''.$filesize .'\',\''.$origname .'\',\''.$filename .'\',\''.$descripcion .'\',\''.$weight .'\')' )) {
$medios_despues = $this->db->query('SELECT * FROM media WHERE title=\''. $titulo .'\' ORDER BY mid DESC' );
if ($medios_antes->num_rows() == $medios_despues->num_rows()){
registrar_evento('media', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó crear un nuevo medio pero falló', $usuario_id, $galeria );
$error = 'La galería no se ha podido crear por un problema extraño con la base de datos.';
}
else {
registrar_evento('media', 'info', 'El usuario ['.$this->session->userdata('user_alias').'] ha creado un nuevo medio.', $usuario_id, $galeria, $medios_despues->row()->mid );
}
}else{
registrar_evento('media', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] intentó crear un medio pero falló la inserción SQL', $usuario_id, $galeria );
$error = 'La galería no se ha podido crear por un problema con la base de datos.';
//TODO: borrar los ficheros subidos!!!
}
}
return $error;
}
function upload_file()
{
if (!ca_es_admin()){
return;
}
$error = '';
// Recuperamos argumentos
if ($this->input->post('gid') != '')
$gid = strip_tags($this->input->post('gid'));
else
$error = "Parámetro gid no está presente.";
if ($this->input->post('titulo') != '')
$titulo = strip_tags($this->input->post('titulo'));
else
$error = "Parámetro titulo no está presente.";
if ($this->input->post('descrip') != '')
$descrip = strip_tags($this->input->post('descrip'));
else
$error = "Parámetro descrip no está presente.";
if ($this->input->post('vid') != '')
$vid = strip_tags($this->input->post('vid'));
else
$vid = 0;
if ($error != ''){
$usuario_id = ca_usuario_id();
registrar_evento('media', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] obtuvo un error:'.$error, $usuario_id );
$data = array();
$data['gid']=0;
$data['error']=$error;
load_template ('media/upload_error_view', $data);
return;
}
$config['upload_path'] = './media/'.$gid.'/';
$config['allowed_types'] = 'jpg|zip';
$config['max_size'] = '50000';
$config['max_width'] = '5024';
$config['max_height'] = '4468';
$config['encrypt_name'] = TRUE;
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload())
{
$error = $this->upload->display_errors();
echo $error;
}
else
{
$image_info=$this->upload->data();
echo $image_info['file_name'].'<br>';
$num_archivos = 0;
$this->load->library('image_lib');
$medios = $this->db->query('SELECT * FROM media WHERE gid=\''. $gid . '\'' );
$num_medios = $medios->num_rows();
if ($image_info["file_type"] == 'image/jpeg'){
$error = $this->_create_media($gid, $vid, $titulo, $descrip, $image_info['orig_name'], $image_info['raw_name'],$image_info['image_height'], $image_info['image_width'], $image_info['file_size'],$num_medios +1);
$num_archivos = 1;
}
else if (($image_info["file_type"] == 'application/zip')||($image_info["file_type"] == 'application/x-zip-compressed')){
//descomprimimos el zip y añadimos una a una
$za = new ZipArchive();
$za->open( './media/'.$gid.'/'.$image_info['file_name']);
$za->extractTo('./media/'.$gid.'/');
for ($i=0; $i<$za->numFiles && $error == '';$i++) {
$file_info = $za->statIndex($i);
mt_srand();
$random_name = md5(uniqid(mt_rand()));
$orig_name = $file_info['name'];
$image_size = getimagesize ('./media/'.$gid.'/'.$file_info['name']);
$anchura = $image_size[0];
$altura = $image_size[1];
rename('./media/'.$gid.'/'.$file_info['name'],'./media/'.$gid.'/'.$random_name.'.jpg' );
$filesize = $file_info['size'] / 1024;
$error = $this->_create_media($gid, $vid, $titulo.' '.($num_medios+$i+1), $descrip, $orig_name, $random_name, $altura, $anchura, $filesize, $num_medios + $i +1 );
}
$num_archivos = $za->numFiles;
$za->close();
// Borramos el ZIP.
unlink('./media/'.$gid.'/'.$image_info['file_name']);
}
else{
$error = 'El fichero subido no es ni una imagen JPG ni un comprimido ZIP.';
}
if ($error == ''){
$usuario_id = ca_usuario_id();
registrar_evento('media', 'info', 'El usuario ['.$this->session->userdata('user_alias').'] subió '.$num_archivos.' nuevos medios.', $usuario_id, $gid );
$data = array();
$data['gid']=$gid;
$data['num_archivos']=$num_archivos;
load_template ('media/upload_ok_view', $data);
}
}
if ($error != ''){
$usuario_id = ca_usuario_id();
registrar_evento('media', 'error', 'El usuario ['.$this->session->userdata('user_alias').'] produjo un error: '.$error, $usuario_id, $gid );
$data = array();
$data['gid']=$gid;
$data['error']=$error;
load_template ('media/upload_error_view', $data);
return;
}
}
}