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