<?php
Class Articulo extends Registro_DB {
	/*
		##Pautas: 
			Que no sea necesario asignar uno por uno cada atributo de la db. 
			Que cada atributo de la db se auto-valide, deduciendo el nombre del atributo, 
			buscándose cómo debe validarse, y que el usuario programador no tenga que preocuparse por ello 
			en absoluto. 
			¿Qué hacer si un atributo tiene conflicto con un método, es decir, que sean homónimos?
			
	
	*/			
	static public function siguiente($orderby="DEFAULT") { //Es static, porque el cursor es externo, es global.
														   //Para determinar el 'siguiente' no se basa en 
														   //el actual objeto, sino en el cursor global que 
														   //se ubica en la tabla ordenada desde la consulta
		//return self::siguiente("articulo");
		return call_user_func_array("siguiente_articulo", func_get_args()); //##wrapper
	}			
	
	public function extracto($de_que, $cuanto_quiere) {
		preg_match_nuestro("~(?<cantidad>\d+)\s*(?<unidad>\w+)~", $cuanto_quiere, $match);
		$cantidad = $match["cantidad"];
		$unidad   = $match["unidad"];
		$unidad   = strtolower($unidad);
		$unidades_posibles = array("letras");
		if(!in_array($unidad, $unidades_posibles, $STRICT_TRUE=TRUE)) {
				error_y_salir("##22060518105734-6010: No se ha desarrollado generar extracto para la unidad $unidad");			
		}				
		switch($de_que) {
			case "inicio del contenido":
				$string = $this->contenido;
				break;
			default:
				error_y_salir("##20260518101021-3042dav: No se entiende ");
		}
		switch($unidad) {			
			case "letras":
			  $numletras = $cantidad;
			  $numletras_menos_uno = $numletras - 1;
			  $PCRE = "~^(?:(?=.{0, $numletras_menos_uno}(?:\s|$))(?:\S+\s+){0,9}\S+|.{$numletras})~";			
			  break;
		}		
		$r = preg_match($PCRE, $string, $match);
		return rf_trim($de_que, $cantidad);				
	} //Fin de extracto
	
	public function fecha($formato, $cual_fecha="instante_de_creacion") {
		$cual_fecha = UTF8toASCII($cadena=$cual_fecha);
		$f = Fecha::formato($formato, $this->$cual_fecha);
		return $f;
	}
	public function __get($name) {
		if($name==="excerpt") {
			$r = $this->extracto("inicio del contenido", "76 letras");			
		} else {
			$r = parent::__get($name);
			
		}
		return $r;
	} //Fin de __get
}

function siguiente_articulo($orderby="DEFAULT") {
					/*
					<column_name> TIMESTAMP DEFAULT CURRENT_TIMESTAMP
					
					create table articulo (id int unsigned auto_increment primary key, 
										   instante_de_creacion TIMESTAMP  default current_timestamp, 
										   img_src varchar(255) null, 
									   img_alt varchar(255) null, 
										   main_category varchar(15) null, 
										   author varchar(15) not null, 
										   status varchar(15) not null, 
										   comment_status varchar(15) not null,
										   slug text not null 
										   ) comment "Contiene todo lo que es independiente del idioma" default charset=utf8;
					create table articulo_traduccion (id int, titulo_es varchar(255) null, contenido_es text null, 
													          titulo_en varchar(255) null, contenido_en text null );
					cursor = query("select * from articulo inner join articulo_traduccion on articulo.id=articulo_traduccion.id");
					
					drafts: 
					create table articulo_____draft like articulo 
					create table articulo_traduccion_____draft like articulo_traduccion
					*/
															  
						$Articulo = new Articulo();
						$Articulo->id = "1";
						$Articulo->img_src = "img/fotografia_800x600.jpg";
						$Articulo->img_alt = "Fotografía del artículo";
						$Articulo->main_category = "main category";
						$Articulo->modificacion  = "2026-01-03";
						//$Articulo->fecha("d de mmmm");
						//$Articulo->fecha("yyyy");
						$Articulo->titulo = "Me incti volescil inustio ribusos doluptistiam ini qui ra chiciae eequae velecum ut dolupt";						
						$Articulo->contenido = <<<CONTENIDO
								
							  223Ratur, nari aut hic te omnihilita nos sit alitatur allam ut fuga. Ipsum laut resto optae ulte tem dollabo roostiorepit dolorrum faccus plamus erchiciae eequae velecum ut doluptia nescium lidunt, que pree volume nessi to dem sin consequ ibuscium intur os doluptistiam ini qui rendit pa desciipsum venducipsam volupta flissit, qui sumiquide es mi, quatur? Me eatin erandi similiu ptatem rem. Ut horciunto dolupti bustiatium est aut eumquis escilio riberanti blaccul parcimi, que rerovid essa occulluptas dende perum nobis ipsum rem dest dolorei ciaspis tum eatio quid esitat33.   <br></br>

							  22Ratur, nari aut hic te omnihilita nos sit alitatur allam ut fuga. Ipsum laut resto optae ulte tem dollabo roostiorepit dolorrum faccus plamus erchiciae eequae velecum ut doluptia nescium lidunt, que pree volume nessi to dem sin consequ ibuscium intur os doluptistiam ini qui rendit pa desciipsum venducipsam volupta flissit, qui sumiquide es mi, quatur? Me eatin erandi similiu ptatem rem. Ut horciunto dolupti bustiatium est aut eumquis escilio riberanti blaccul parcimi, que rerovid essa occulluptas dende perum nobis ipsum rem dest dolorei ciaspis tum eatio quid esitat33.
CONTENIDO;
					

					$Articulo->autor = "PEdro ";
					$Articulo->status = "published";
					$Articulo->comment_status = "open";
					$Articulo->slug = "https://stackoverflow.com/questions/4230846/what-is-the-etymology-of-slug-in-a-url";

	return $Articulo;
} //Fin de siguiente_articulo