/** * Votamos una foto. * @param int $foto ID de la foto. * @param int $voto 1 para positivo, -1 para negativo. */ public function action_votar($foto, $voto) { $foto = (int) $foto; // Obtenemos el voto. $voto = $voto == 1; if (!Usuario::is_login()) { $_SESSION['flash_error'] = 'Debes iniciar sessión para poder ver esta sección.'; Request::redirect('/usuario/login'); } // Verificamos los permisos. if (!Usuario::permiso(Model_Usuario_Rango::PERMISO_FOTO_VOTAR)) { $_SESSION['flash_error'] = 'No tienes los permisos suficientes para votar fotos.'; Request::redirect('/foto/'); } // Cargamos el comentario. $model_foto = new Model_Foto($foto); // Verificamos existencia. if (!is_array($model_foto->as_array())) { $_SESSION['flash_error'] = 'La foto que deseas votar no se encuenta disponible.'; Request::redirect('/foto/'); } // Verifico el estado de la foto. if ($model_foto->estado !== Model_Foto::ESTADO_ACTIVA) { $_SESSION['flash_error'] = 'La foto que deseas votar no se encuenta disponible.'; Request::redirect('/foto/ver/' . $foto); } // Verificamos el autor. if ($model_foto->usuario_id === Usuario::$usuario_id) { $_SESSION['flash_error'] = 'La foto que deseas votar no se encuentra disponible.'; Request::redirect('/foto/ver/' . $foto); } // Verificamos si puede votar. if ($model_foto->ya_voto(Usuario::$usuario_id)) { $_SESSION['flash_error'] = 'La foto que deseas votar ya la has votado.'; Request::redirect('/foto/ver/' . $foto); } // Votamos la foto. $model_foto->votar(Usuario::$usuario_id, $voto); // Creamos el suceso. $model_suceso = new Model_Suceso(); if (Usuario::$usuario_id != $model_foto->usuario_id) { $model_suceso->crear($model_foto->usuario_id, 'foto_votar', TRUE, $foto, Usuario::$usuario_id, (int) $voto); $model_suceso->crear(Usuario::$usuario_id, 'foto_votar', FALSE, $foto, Usuario::$usuario_id, (int) $voto); } else { $model_suceso->crear($model_foto->usuario_id, 'foto_votar', FALSE, $foto, Usuario::$usuario_id, (int) $voto); } // Informamos el resultado. $_SESSION['flash_success'] = 'El voto fue guardado correctamente.'; Request::redirect('/foto/ver/' . $model_foto->foto_id); }