/**
  * Método general para listar o ver las publicaciones de esta manera:
  * Analizo los parametros recibidos<br>
  * dominio.com/blog/pag/2/<br>
  * dominio.com/blog/2010/pag/2/<br>
  * dominio.com/blog/2010/01/pag/2/<br>
  * dominio.com/blog/2010/01/01/pag/2/<br>
  * dominio.com/blog/2010/01/01/mi-post/<br>
  * dominio.com/blog/2010/01/01/mi-post/preview/
  *
  * @param int|string $param1 Puede recibir 'pag' o el año de publicacion
  * @param int|string $param2 Puede recibir 'pag' o el mes de publicación
  * @param int|string $param3 Puede recibir 'pag' o del día de publicacion del (los) post
  * @param int|string $param4 Puede recibir 'pag' o la Url del post
  * @param int|string $param5 Puede recibir valores de la página u opciones extas, como preview para ver la vista previa
  */
 public function ver($param1 = null, $param2 = null, $param3 = null, $param4 = null, $param5 = null)
 {
     //Titulo de la página
     $this->title = 'Noticias';
     //Determino si se muesta un solo post o un listado
     $this->unique_post = false;
     //Analizo las variables
     $year = $param1 != 'pag' ? $param1 : null;
     $month = $param2 != 'pag' ? $param2 : null;
     $day = $param3 != 'pag' ? $param3 : null;
     $slug = $param4 != 'pag' ? $param4 : null;
     $pag = 'pag';
     $num = 1;
     if ($param1 == 'pag') {
         $num = $param2;
     } else {
         if ($param2 == 'pag') {
             $num = $param3;
         } else {
             if ($param3 == 'pag') {
                 $num = $param4;
             } else {
                 if ($param4 == 'pag') {
                     $num = $param5;
                 }
             }
         }
     }
     //Si contiene el slug del post, indico que es único para ser utilizado en la vista
     if ($slug) {
         $this->unique_post = true;
         View::select('ver_post');
     } else {
         //Numero de la pagina
         $this->numero = Filter::get($num, 'numeric') > 0 ? Filter::get($num, 'numeric') : 1;
         //Contador del datagrid que depende del numero de la página
         $this->contador = $pag === 'pag' && $this->numero > 1 ? $this->numero * POST_POR_PAGINA - (POST_POR_PAGINA - 1) : 1;
         //Selecciono la vista para el listado
         View::select('ver_listado');
     }
     $post = new Post();
     //Determino si se encuentran algunos parámetros
     if ($year or $month or $day or $slug) {
         //Determino si está en la vista previa
         if ($param5 == 'preview') {
             View::template('borrador');
         }
         $result = $post->verPost(null, $year, $month, $day, $slug);
         if ($this->unique_post) {
             //Si es único asigno el título a la página
             $this->title = $result->titulo;
         } else {
             //Creo el título dependiendo de los filtros posibles
             $this->title = $year;
             $this->title .= $month ? ' ' . ExtDate::getMonthName($month) : '';
             $this->title .= $day ? ' ' . $day : '';
         }
     } else {
         //Si no contiene alguno de esos parámetros
         $result = $post->filtrarPost(Post::PUBLICADO, Post::PUBLICO, '', '', 'desc');
     }
     if (!$result) {
         $this->title = 'No se encontró la página';
         $this->detalle_error = 'Publicación no encontrada';
         View::notFound();
     }
     if (!$this->unique_post) {
         //Creo un paginador con el resultado, que muestre 15 filas y empieze por el numero de la página
         $result = new Paginated($result, POST_POR_PAGINA, $this->numero);
     }
     $this->post = $result;
 }
 /**
  * Método para obtener la url del post
  *
  * @param string $path Ruta del blog
  * @param string $fecha Fecha de la publicacion
  * @param string $slug Url amigable del post
  * @param string $estado Estado de los post
  * @return string
  */
 public function getUrlPost($path = '', $fecha = '', $slug = '', $estado = '')
 {
     $fecha = $fecha ? $fecha : $this->fecha_publicacion;
     $slug = $slug ? $slug : $this->slug;
     $estado = $estado ? $estado : $this->estado;
     $preview = ($estado == self::BORRADOR or $estado == self::PENDIENTE) ? 'preview/' : '';
     $url = ExtDate::getYear($this->fecha_publicacion) . '/' . ExtDate::getMonth($this->fecha_publicacion) . '/' . ExtDate::getDay($this->fecha_publicacion) . '/' . $slug . '/' . $preview;
     $url = $path ? trim($path, '/') . '/' . $url : $url;
     return $url;
 }
 /**
  * Metodo para cargar una fecha diferente a la actual <br> Ejemplo: MyDate::setDate('2010-11-17');
  *
  * @param string $date Fecha en formato YYYY-MM-DD
  */
 public static function setDate($date = '')
 {
     self::$_date = $date != '' ? $date : date("Y-m-d");
     self::$_day = (int) ($date != '') ? substr($date, 8, 2) : date("d");
     self::$_month = (int) ($date != '') ? substr($date, 5, 2) : date("m");
     self::$_year = (int) ($date != '') ? substr($date, 0, 4) : date("Y");
     self::$_timestamp = self::getTimestamp($date);
 }