/** * 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); } }
/** * 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 />"; } }
/** * 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); } } }