Ejemplo n.º 1
0
Archivo: foto.php Proyecto: 4bs4/marifa
 /**
  * Agregamos un comentario en la foto.
  * @param int $foto ID de la foto donde comentar.
  */
 public function action_comentar($foto)
 {
     // Verificamos el método de envio.
     if (Request::method() != 'POST') {
         Request::redirect('/foto/ver/' . $foto);
     }
     // Verifico esté conectado.
     if (!Usuario::is_login()) {
         $_SESSION['flash_error'] = 'Debes iniciar sessión para poder realizar comentarios.';
         Request::redirect('/usuario/login');
     }
     // Convertimos el foto a ID.
     $foto = (int) $foto;
     // Cargamos la foto.
     $model_foto = new Model_Foto($foto);
     // Verificamos exista.
     if (!is_array($model_foto->as_array())) {
         $_SESSION['flash_error'] = 'La foto que quiere comentar no se encuentra disponible.';
         Request::redirect('/foto/');
     }
     // Verifico se pueda comentar.
     if (!(Usuario::permiso(Model_Usuario_Rango::PERMISO_COMENTARIO_COMENTAR_CERRADO) || $model_foto->soporta_comentarios() && Usuario::permiso(Model_Usuario_Rango::PERMISO_COMENTARIO_COMENTAR))) {
         $_SESSION['post_comentario_error'] = 'No tienes permisos para realizar comentarios en esa foto.';
         Request::redirect('/foto/ver/' . $foto);
     }
     // Obtenemos el comentario.
     $comentario = isset($_POST['comentario']) ? $_POST['comentario'] : NULL;
     // Verificamos el formato.
     $comentario_clean = preg_replace('/\\[.*\\]/', '', $comentario);
     if (!isset($comentario_clean[20]) || isset($comentario[400])) {
         $_SESSION['post_comentario_error'] = 'El comentario debe tener entre 20 y 400 caracteres.';
         // Evitamos la visualización de la plantilla.
         $this->template = NULL;
         Dispatcher::call('/foto/ver/' . $foto, TRUE);
     } else {
         // Evitamos XSS.
         $comentario = htmlentities($comentario, ENT_NOQUOTES, 'UTF-8');
         // Insertamos el comentario.
         $id = $model_foto->comentar(Usuario::$usuario_id, $comentario);
         // Envio el suceso.
         $model_suceso = new Model_Suceso();
         if (Usuario::$usuario_id != $model_foto->usuario_id) {
             $model_suceso->crear($model_foto->usuario_id, 'foto_comentario_crear', TRUE, $id);
             $model_suceso->crear(Usuario::$usuario_id, 'foto_comentario_crear', FALSE, $id);
         } else {
             $model_suceso->crear($model_foto->usuario_id, 'foto_comentario_crear', FALSE, $id);
         }
         // Informo el resultado.
         $_SESSION['post_comentario_success'] = 'El comentario se ha realizado correctamente.';
         Request::redirect('/foto/ver/' . $foto);
     }
 }
Ejemplo n.º 2
0
Archivo: home.php Proyecto: 4bs4/marifa
 /**
  * Prueba descarga de un plugin.
  */
 public function action_install()
 {
     Dispatcher::call('');
     // Prueba del uso de memoria.
     // Nombre del plugin.
     $p_nombre = "Test Plugin";
     // Borramos el plugin.
     // if (file_exists(Plugin_Manager::nombre_as_path($p_nombre)))
     // {
     // Update_Utils::unlink(Plugin_Manager::nombre_as_path($p_nombre));
     // }
     // Objeto manejador de plugins.
     $pkg_manager = Plugin_Manager::get_instance();
     // Verificamos su existencia
     $o_plugin = $pkg_manager->get(Plugin_Manager::make_name($p_nombre));
     if ($o_plugin === NULL) {
         // Realizamos la instalación.
         // Cargamos el actualizador.
         $o_updater = new Update_Updater();
         // Descargamos el paquete e instalamos el paquete. Se usa 1 para mostrar actualizaciones.
         if ($o_updater->install_package(Update_Utils::make_hash($p_nombre), 1)) {
             // Actualizamos la cache.
             $pkg_manager->regenerar_lista();
             // Cargamos el paquete.
             $o_plugin = new Plugin_Plugin($p_nombre);
             // Realizamos la actualizacion.
             $o_plugin->install();
             // Activamos el paquete.
             $pkg_manager->set_state(Plugin_Manager::make_name($p_nombre), TRUE, TRUE);
             echo "Instalación existosa";
         } else {
             echo "Problema al realizar la instalación";
         }
     } else {
         // Buscamos actualizaciones.
         $upd_id = $o_plugin->check_updates();
         if ($upd_id === FALSE) {
             echo "No hay actualizaciones";
         } else {
             // Instalamos la actualizacion.
             // Desactivo el plugin.
             if ($o_plugin->info()->estado) {
                 $o_plugin->remove();
             }
             // Directorio del plugin.
             $orig_path = Plugin_Manager::nombre_as_path($p_nombre);
             $tmp_path = rtrim($orig_path, '/') . '.bkp';
             // Realizamos una copia.
             Update_Utils::copyr($orig_path, $tmp_path);
             // Borramos el original.
             Update_Utils::unlink($orig_path);
             // Cargamos el actualizador.
             $o_updater = new Update_Updater();
             // Descargamos el paquete e instalamos el paquete.
             if (!$o_updater->install_package(Update_Utils::make_hash($p_nombre), $upd_id)) {
                 // Recuperamos el original.
                 Update_Utils::copyr($tmp_path, $orig_path);
                 echo "No se pudo actualizar a la versión {$upd_id}.";
             } else {
                 echo "Actualización a la versión {$upd_id} exitosa.";
             }
             // Realizamos la instalación.
             $o_plugin->install();
             // Borramos la copia.
             Update_Utils::unlink($tmp_path);
         }
     }
     if (!Request::is_cli()) {
         echo "<br />";
     }
 }
Ejemplo n.º 3
0
Archivo: post.php Proyecto: 4bs4/marifa
 /**
  * Agregamos un comentario a un post.
  * @param int $post ID del post donde colocar el comentario.
  */
 public function action_comentar($post)
 {
     // Verificamos usuario logueado.
     if (!Usuario::is_login()) {
         $_SESSION['flash_error'] = 'Debes iniciar sessión para poder comentar posts.';
         Request::redirect('/usuario/login');
     }
     // Verificamos el método de envio.
     if (Request::method() != 'POST') {
         Request::redirect('/post/index/' . $post);
     }
     // Convertimos el post a ID.
     $post = (int) $post;
     // Cargamos el post.
     $model_post = new Model_Post($post);
     // Verificamos exista.
     if (!is_array($model_post->as_array())) {
         $_SESSION['flash_error'] = 'El post que desea comentar no se encuentra disponible.';
         Request::redirect('/');
     }
     // Verifico permisos.
     if (!Usuario::permiso(Model_Usuario_Rango::PERMISO_COMENTARIO_COMENTAR) || !$model_post->comentar && !Usuario::permiso(Model_Usuario_Rango::PERMISO_COMENTARIO_COMENTAR_CERRADO)) {
         $_SESSION['flash_error'] = 'El post que deseas comentar no permite comentarios nuevos.';
         Request::redirect('/post/index/' . $post);
     }
     // Obtenemos el comentario.
     $comentario = isset($_POST['comentario']) ? $_POST['comentario'] : NULL;
     // Verificamos el formato.
     $comentario_clean = preg_replace('/\\[.*\\]/', '', $comentario);
     if (!isset($comentario_clean[20]) || isset($comentario[400])) {
         $_SESSION['post_comentario_error'] = 'El comentario debe tener entre 20 y 400 caracteres.';
         // Evitamos la salida de la vista actual.
         $this->template = NULL;
         Dispatcher::call('/post/index/' . $post, TRUE);
     } else {
         // Transformamos entidades HTML.
         $comentario = htmlentities($comentario, ENT_NOQUOTES, 'UTF-8');
         // Insertamos el comentario.
         $id = $model_post->comentar(Usuario::$usuario_id, $comentario);
         if ($id) {
             // Agregamos los sucesos.
             $model_suceso = new Model_Suceso();
             if (Usuario::$usuario_id != $model_post->usuario_id) {
                 $model_suceso->crear($model_post->usuario_id, 'post_comentario_crear', TRUE, $id);
                 $model_suceso->crear(Usuario::$usuario_id, 'post_comentario_crear', FALSE, $id);
             } else {
                 $model_suceso->crear($model_post->usuario_id, 'post_comentario_crear', FALSE, $id);
             }
             $_SESSION['post_comentario_success'] = 'El comentario se ha realizado correctamente.';
             Request::redirect('/post/index/' . $post);
         } else {
             $_SESSION['post_comentario_error'] = 'Se produjo un error al colocar el comentario. Reintente.';
             // Evitamos la salida de la vista actual.
             $this->template = NULL;
             Dispatcher::call('/post/index/' . $post, TRUE);
         }
     }
 }