예제 #1
0
파일: barra.php 프로젝트: 4bs4/marifa
 /**
  * Suceso producido cuando se publica un post.
  * @param array $suceso Datos del suceso.
  * @return array
  */
 protected static function suceso_post_publicar($suceso)
 {
     // Verifico si fui yo.
     if ($suceso['objeto_id1'] == Usuario::$usuario_id) {
         return NULL;
     }
     // Cargo datos del post.
     $model_post = new Model_Post((int) $suceso['objeto_id']);
     // Cargo datos de quien publica el post.
     $model_usuario = new Model_Usuario((int) $suceso['objeto_id1']);
     return array('post' => $model_post->as_array(), 'usuario' => $model_post->usuario()->as_array(), 'publica' => $model_usuario->as_array());
 }
예제 #2
0
파일: post.php 프로젝트: 4bs4/marifa
 /**
  * Damos puntos a un post.
  * @param int $post ID del post al cual darle puntos.
  * @param int $cantidad Cantidad de puntos. Número entre 1 y 10.
  */
 public function action_puntuar($post, $cantidad)
 {
     // Verificamos usuario logueado.
     if (!Usuario::is_login()) {
         $_SESSION['flash_error'] = 'Debes iniciar sessión para poder puntuar posts.';
         Request::redirect('/usuario/login');
     }
     // Verifico permisos.
     if (!Usuario::permiso(Model_Usuario_Rango::PERMISO_POST_PUNTUAR)) {
         $_SESSION['flash_error'] = 'No tienes permisos para puntuar posts.';
         Request::redirect('/');
     }
     // Convertimos el post a ID.
     $post = (int) $post;
     // Validamos la cantidad.
     $cantidad = (int) $cantidad;
     if ($cantidad < 1 || $cantidad > 10) {
         $_SESSION['flash_error'] = 'La petición que has realizado es inválida.';
         Request::redirect('/');
     }
     // 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 puntuar no se encuentra disponible.';
         Request::redirect('/');
     }
     // Verifico el estado del post.
     if ($model_post->estado !== Model_Post::ESTADO_ACTIVO) {
         $_SESSION['flash_error'] = 'El post que desea puntuar no se encuentra disponible.';
         Request::redirect('/post/index/' . $post);
     }
     // Verifico el autor.
     if ($model_post->usuario_id === Usuario::$usuario_id) {
         $_SESSION['flash_error'] = 'El post que desea puntuar no se encuentra disponible.';
         Request::redirect('/post/index/' . $post);
     }
     // Verificamos si ya dio puntos.
     if ($model_post->dio_puntos(Usuario::$usuario_id)) {
         $_SESSION['flash_error'] = 'El post que desea puntuar ya ha sido puntuado por usted.';
         Request::redirect('/post/index/' . $post);
     }
     // Verificamos la cantidad de puntos.
     if (Usuario::usuario()->puntos_disponibles < $cantidad) {
         $_SESSION['flash_error'] = 'El post que desea puntuar ya ha sido puntuado por usted.';
         Request::redirect('/post/index/' . $post);
     }
     // Damos los puntos.
     $model_post->dar_puntos(Usuario::$usuario_id, $cantidad);
     // Enviamos el suceso.
     $model_suceso = new Model_Suceso();
     if (Usuario::$usuario_id != $model_post->usuario_id) {
         $model_suceso->crear($model_post->usuario_id, 'post_puntuar', TRUE, $post, Usuario::$usuario_id, $cantidad);
         $model_suceso->crear(Usuario::$usuario_id, 'post_puntuar', FALSE, $post, Usuario::$usuario_id, $cantidad);
     } else {
         $model_suceso->crear($model_post->usuario_id, 'post_puntuar', FALSE, $post, Usuario::$usuario_id, $cantidad);
     }
     // Informamos el resultado.
     $_SESSION['flash_success'] = 'Has puntuado el post de manera correcta.';
     Request::redirect('/post/index/' . $post);
 }
예제 #3
0
파일: buscador.php 프로젝트: 4bs4/marifa
 /**
  * Post con las mismas etiquetas que el selecionado.
  * @param int $post ID del post a mostrar relacionados.
  * @param int $pagina Número de página a mostrar.
  */
 public function action_relacionados($post, $pagina)
 {
     // Transformamos a entero.
     $post = (int) $post;
     // Cargamos el post.
     $model_post = new Model_Post($post);
     // Verificamos existencia.
     if (!$model_post->existe()) {
         Request::redirect('/buscador/q/');
     }
     // Cargamos la vista.
     $vista = View::factory('buscador/index');
     // Formato de la página.
     $pagina = (int) $pagina > 0 ? (int) $pagina : 1;
     // Cantidad de elementos por pagina.
     $model_configuracion = new Model_Configuracion();
     $cantidad_por_pagina = $model_configuracion->get('elementos_pagina', 20);
     // Realizamos la busqueda.
     list($listado, $cantidad) = $model_post->buscar_relacionados($pagina, $cantidad_por_pagina);
     // Verifivo que la página seleccionada sea válida.
     if (count($listado) == 0 && $pagina != 1) {
         Request::redirect('/buscador/relacionados/' . $post);
     }
     // Paginación.
     $paginador = new Paginator($cantidad, $cantidad_por_pagina);
     $vista->assign('paginacion', $paginador->get_view($pagina, "/buscador/relacionados/{$post}/%s/"));
     unset($paginador);
     $vista->assign('total', $cantidad);
     // Procesamos listado de post.
     foreach ($listado as $k => $v) {
         $a = $v->as_array();
         $a['usuario'] = $v->usuario()->as_array();
         $a['puntos'] = $v->puntos();
         $a['comentarios'] = $v->cantidad_comentarios();
         $a['categoria'] = $v->categoria()->as_array();
         $listado[$k] = $a;
     }
     $vista->assign('resultados', $listado);
     unset($listado);
     $vista->assign('q', '');
     // Vista de relacionado.
     $view_relacionado = View::factory('buscador/relacionado');
     $view_relacionado->assign('post', $model_post->as_array());
     $vista->assign('relacionado', $view_relacionado->parse());
     unset($view_relacionado);
     // Listado de categorias.
     $mc = new Model_Categoria();
     $vista->assign('categorias', $mc->lista());
     unset($mc);
     $vista->assign('categoria', 'todos');
     $vista->assign('usuario', '');
     // Menu.
     $this->template->assign('master_bar', parent::base_menu());
     $this->template->assign('top_bar', Controller_Home::submenu('buscador'));
     // Asignamos la vista.
     $this->template->assign('contenido', $vista->parse());
 }
예제 #4
0
파일: desaprobado.php 프로젝트: 4bs4/marifa
 /**
  * Borramos un post.
  * @param int $post ID del post a modificar el atributo.
  */
 public function action_borrar_post($post)
 {
     // Verifico permisos.
     if (!Usuario::permiso(Model_Usuario_Rango::PERMISO_POST_VER_DESAPROBADO)) {
         $_SESSION['flash_error'] = 'No tienes permiso para acceder a esa sección.';
         Request::redirect('/');
     }
     // 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 deseas eliminar no se encuentra disponible.';
         Request::redirect('/moderar/desaprobado/posts');
     }
     // Verifico el usuario y sus permisos.
     if (Usuario::$usuario_id !== $model_post->usuario_id || !Usuario::permiso(Model_Usuario_Rango::PERMISO_ELIMINAR_POSTS)) {
         $_SESSION['flash_error'] = 'El post que deseas eliminar no se encuentra disponible.';
         Request::redirect('/moderar/desaprobado/posts');
     }
     // Actualizo el estado.
     $model_post->actualizar_estado(Model_Post::ESTADO_BORRADO);
     // Enviamos el suceso.
     $model_suceso = new Model_Suceso();
     if (Usuario::$usuario_id != $model_post->usuario_id) {
         $model_suceso->crear($model_post->usuario_id, 'post_borrar', TRUE, $post, Usuario::$usuario_id);
         $model_suceso->crear(Usuario::$usuario_id, 'post_borrar', FALSE, $post, Usuario::$usuario_id);
     } else {
         $model_suceso->crear($model_post->usuario_id, 'post_borrar', FALSE, $post, Usuario::$usuario_id);
     }
     // Informamos el resultado.
     $_SESSION['flash_success'] = 'El post fue eliminado correctamente.';
     Request::redirect('/moderar/desaprobado/posts');
 }