Page->get(), set(), parent(), url(). On peut maintenant naviguer à 100% (via le code) dans les différentes pages.
Il manque juste la création des enfants...
This commit is contained in:
parent
a53de8845b
commit
fca8e1f7f1
|
@ -44,7 +44,7 @@ class BDD {
|
||||||
self::unbuf_query("create database if not exists " . Config::get('db_base'));
|
self::unbuf_query("create database if not exists " . Config::get('db_base'));
|
||||||
mysql_select_db(Config::get('db_base'), self::$handle) or Debug::sqlerror();
|
mysql_select_db(Config::get('db_base'), self::$handle) or Debug::sqlerror();
|
||||||
|
|
||||||
if (count(self::select("show tables like '" . self::table("pages") . "'"))) {
|
if (count(self::select("show tables like '" . self::table("pages") . "'")) == 1) {
|
||||||
Debug::info("La base de données est déjà initialisée, on continue...");
|
Debug::info("La base de données est déjà initialisée, on continue...");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -111,12 +111,25 @@ class BDD {
|
||||||
debug::info("sql : " . $q);
|
debug::info("sql : " . $q);
|
||||||
$qres = mysql_query($q, BDD::get()) or Debug::sqlerror();
|
$qres = mysql_query($q, BDD::get()) or Debug::sqlerror();
|
||||||
$ret = array();
|
$ret = array();
|
||||||
while ($row = mysql_fetch_assoc($qres)) {
|
while ($row = mysql_fetch_array($qres)) {
|
||||||
$ret[] = $row;
|
$ret[] = $row;
|
||||||
}
|
}
|
||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Select avec une seule colonne et un seul rang.
|
||||||
|
public static function select_one($q, $strict = true) {
|
||||||
|
$res = self::select($q);
|
||||||
|
if ($strict && count($res) != 1) {
|
||||||
|
Debug::error("Un rang de la base de données a été demmandé, mais, soit aucun rang correspondant aux critères n'a été trouvé, soit plusieurs ont été trouvés.");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (count($res) == 0) {
|
||||||
|
Debug::error("Un rang de la base de données a été demmandé, mais, aucun rang correspondant aux critères n'a été trouvé.");
|
||||||
|
}
|
||||||
|
return $res[0][0];
|
||||||
|
}
|
||||||
|
|
||||||
public static function modify($q) {
|
public static function modify($q) {
|
||||||
debug::info("sql : $q;");
|
debug::info("sql : $q;");
|
||||||
mysql_unbuffered_query($q . ";", self::get()) or Debug::sqlerror();
|
mysql_unbuffered_query($q . ";", self::get()) or Debug::sqlerror();
|
||||||
|
@ -135,4 +148,27 @@ class BDD {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class BDDCell {
|
||||||
|
private $uid_page;
|
||||||
|
private $propriete;
|
||||||
|
private $valeur;
|
||||||
|
public function __construct($uid_page, $propriete, $valeur) {
|
||||||
|
$this->uid_page = $uid_page;
|
||||||
|
$this->propriete = $propriete;
|
||||||
|
$this->valeur = $valeur;
|
||||||
|
}
|
||||||
|
public function uid_page() {
|
||||||
|
return $this->uid_page;
|
||||||
|
}
|
||||||
|
public function propriete() {
|
||||||
|
return $this->propriete;
|
||||||
|
}
|
||||||
|
public function valeur() {
|
||||||
|
return $this->valeur;
|
||||||
|
}
|
||||||
|
public function __toString() {
|
||||||
|
return "".$this->valeur;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
?>
|
?>
|
|
@ -9,7 +9,10 @@ class Config {
|
||||||
private static $config = array();
|
private static $config = array();
|
||||||
|
|
||||||
public static function get($nom) {
|
public static function get($nom) {
|
||||||
if (!isset(self::$config[$nom])) return null;
|
if (!isset(self::$config[$nom])) {
|
||||||
|
echo "Variable de configuration manquante : $nom"; // TODO : Debug::erreur ?
|
||||||
|
die();
|
||||||
|
}
|
||||||
return self::$config[$nom];
|
return self::$config[$nom];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,11 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
function verifications() {
|
||||||
|
// url_base doit toujours se terminer par '/'.
|
||||||
|
Config::set('url_base', preg_replace("|/*$|", "/", Config::get('url_base'), 1));
|
||||||
|
}
|
||||||
|
verifications();
|
||||||
|
|
||||||
function main() {
|
function main() {
|
||||||
echo "<pre>";
|
echo "<pre>";
|
||||||
initModules();
|
initModules();
|
||||||
|
|
|
@ -136,6 +136,10 @@ class Page {
|
||||||
attribut("type", "text_no_space", "mSiteIndex");
|
attribut("type", "text_no_space", "mSiteIndex");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function est_propriete_globale($prop) {
|
||||||
|
return in_array($prop, self::$attributs_globaux);
|
||||||
|
}
|
||||||
|
|
||||||
public function nom_module() {
|
public function nom_module() {
|
||||||
return get_class($this);
|
return get_class($this);
|
||||||
}
|
}
|
||||||
|
@ -161,10 +165,20 @@ class Page {
|
||||||
return call_user_func(array($this, "res_" . $res), $d);
|
return call_user_func(array($this, "res_" . $res), $d);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function url($ressource = null) {
|
public function url($ressource = null, $uid_racine = null) {
|
||||||
// Renvoie toute l'url (de la ressource principale ou de $ressource).
|
// Renvoie toute l'url (de la ressource principale ou de $ressource).
|
||||||
niy("url");
|
if ($uid_racine === null) {
|
||||||
return "";
|
$uid_racine = self::page_systeme("racine")->uid();
|
||||||
|
}
|
||||||
|
if ($ressource === null) {
|
||||||
|
if ($uid_racine == $this->uid()) {
|
||||||
|
return Config::get("url_base");
|
||||||
|
} else {
|
||||||
|
return $this->parent()->url(null, $uid_racine) . $this->composant_url . '/';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return $this->url(null, $uid_racine) . "?res=" . urlencode($ressource); // TODO : urlencode ?
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function composant_url() {
|
public function composant_url() {
|
||||||
|
@ -177,6 +191,14 @@ class Page {
|
||||||
// Renvoie l'uid de la page dans la base de données.
|
// Renvoie l'uid de la page dans la base de données.
|
||||||
return $this->uid;
|
return $this->uid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function parent() {
|
||||||
|
return self::page_uid(
|
||||||
|
BDD::select_one(
|
||||||
|
"select uid_page_de from " . BDD::table("liens") . " where uid_page_vers = " . $this->uid()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public function enfants($condition = true, $ordre = "-date_creation", $limit = 0, $offset = 0) {
|
public function enfants($condition = true, $ordre = "-date_creation", $limit = 0, $offset = 0) {
|
||||||
// Renvoie un objet de la classe CollectionPages.
|
// Renvoie un objet de la classe CollectionPages.
|
||||||
|
@ -224,7 +246,6 @@ class Page {
|
||||||
array_push($res, self::page_uid($row["uid_page_vers"]));
|
array_push($res, self::page_uid($row["uid_page_vers"]));
|
||||||
}
|
}
|
||||||
|
|
||||||
var_dump($res);
|
|
||||||
return $res;
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -242,17 +263,16 @@ class Page {
|
||||||
|
|
||||||
public static function page_systeme($nom) {
|
public static function page_systeme($nom) {
|
||||||
// select from pages where nomSysteme = $nom limit 1
|
// select from pages where nomSysteme = $nom limit 1
|
||||||
niy("page_systeme");
|
return self::page_uid(
|
||||||
|
BDD::select_one(
|
||||||
|
"select uid_page from " . BDD::table("pages") . " where nom_systeme = '" . mysql_real_escape_string($nom) . "';"
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function page_uid($uid) {
|
public static function page_uid($uid) {
|
||||||
$select = "select type from " . BDD::table("pages") . " where uid_page = " . $uid . ";";
|
$select = "select type from " . BDD::table("pages") . " where uid_page = " . $uid . ";";
|
||||||
$type = BDD::select($select);
|
$type = BDD::select_one($select);
|
||||||
if (count($type) != 1) {
|
|
||||||
Debug::error("La page avec l'uid $uid n'a pas pu être trouvée.");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
$type = $type[0]["type"];
|
|
||||||
$ret = new $type();
|
$ret = new $type();
|
||||||
$ret->uid = $uid;
|
$ret->uid = $uid;
|
||||||
return $ret;
|
return $ret;
|
||||||
|
@ -299,7 +319,9 @@ class Page {
|
||||||
|
|
||||||
private function get_prop_direct($nom) {
|
private function get_prop_direct($nom) {
|
||||||
// Récupère l'attribut "$nom" depuis la BDD.
|
// Récupère l'attribut "$nom" depuis la BDD.
|
||||||
niy("get direct $nom");
|
$select_table = (self::est_propriete_globale($nom)) ? "pages" : $this->nom_module();
|
||||||
|
$select = "select $nom from " . BDD::table($select_table) . " where uid_page = " . $this->uid() . ";";
|
||||||
|
return new BDDCell($this->uid(), $nom, BDD::select_one($select));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function __set($nom, $val) {
|
public function __set($nom, $val) {
|
||||||
|
@ -314,7 +336,9 @@ class Page {
|
||||||
|
|
||||||
public function set_prop_direct($nom, $val) {
|
public function set_prop_direct($nom, $val) {
|
||||||
// Modifie l'attribut "$nom" dans la BDD.
|
// Modifie l'attribut "$nom" dans la BDD.
|
||||||
niy("set direct $nom = $val");
|
$update_table = (self::est_propriete_globale($nom)) ? "pages" : $this->nom_module();
|
||||||
|
$update = "update " . BDD::table($update_table) . " set $nom = '" . mysql_real_escape_string($val) . "' where uid_page = " . $this->uid() . ";";
|
||||||
|
BDD::unbuf_query($update);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function set_composant_url() {
|
public function set_composant_url() {
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
Config::set('courriel_admin', "jahvascriptmaniac+github@free.fr");
|
Config::set('courriel_admin', "jahvascriptmaniac+github@free.fr");
|
||||||
|
|
||||||
// URL de la racine du site. Ex: http://www.monsite.com/cms/
|
// URL de la racine du site. Ex: http://www.monsite.com/cms/
|
||||||
// Doit se terminer par '/'.
|
|
||||||
Config::set('url_base', "http://127.0.0.1/2010-moteur-site-simple/");
|
Config::set('url_base', "http://127.0.0.1/2010-moteur-site-simple/");
|
||||||
|
|
||||||
// Chemin absolu vers le dossier '__cms__'.
|
// Chemin absolu vers le dossier '__cms__'.
|
||||||
|
|
|
@ -3,11 +3,11 @@
|
||||||
abstract class mGalerieBase extends Page {
|
abstract class mGalerieBase extends Page {
|
||||||
protected static $texte_titre = "Galerie";
|
protected static $texte_titre = "Galerie";
|
||||||
protected static $texte_nouvelle_page = "Nouvel élément";
|
protected static $texte_nouvelle_page = "Nouvel élément";
|
||||||
protected static $icône_nouvelle_page = "nouvelle_periode.png";
|
protected static $icone_nouvelle_page = "nouvelle_periode.png";
|
||||||
protected static $type_enfants = "mGaleriePeriode";
|
protected static $type_enfants = "mGaleriePeriode";
|
||||||
|
|
||||||
public static function info() {
|
public static function info() {
|
||||||
ressources_statiques("i_icône_nouvelle_page c_style");
|
ressources_statiques("i_icone_nouvelle_page c_style");
|
||||||
ressources_dynamiques("h_page h_miniature h_mini_miniature");
|
ressources_dynamiques("h_page h_miniature h_mini_miniature");
|
||||||
type_liens("enfants", self::$type_enfants);
|
type_liens("enfants", self::$type_enfants);
|
||||||
type_liens("liens", "*");
|
type_liens("liens", "*");
|
||||||
|
@ -16,8 +16,8 @@ abstract class mGalerieBase extends Page {
|
||||||
attribut("dans_nouveautes", "bool", "true");
|
attribut("dans_nouveautes", "bool", "true");
|
||||||
}
|
}
|
||||||
|
|
||||||
public function res_i_icône_nouvelle_page() {
|
public function res_i_icone_nouvelle_page() {
|
||||||
return StockageFichiers::envoyer_fichier_statique(Path::combine(dirname(__FILE__), self::$icône_nouvelle_page));
|
return StockageFichiers::envoyer_fichier_statique(Path::combine(dirname(__FILE__), self::$icone_nouvelle_page));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function res_c_style() {
|
public function res_c_style() {
|
||||||
|
@ -25,14 +25,15 @@ abstract class mGalerieBase extends Page {
|
||||||
}
|
}
|
||||||
|
|
||||||
public function res_h_page($d) {
|
public function res_h_page($d) {
|
||||||
$d->w_en_tete($this->titre, "".$this->description); // En-tête standard.
|
$d->w_en_tete($this->titre, $this->description); // En-tête standard.
|
||||||
$l = $d->article()->w_liste($this->enfants(true, "-date_creation"), function($e, $li) {
|
$l = $d->article()->w_liste($this->enfants(true, "-date_creation"), function($e, $li) {
|
||||||
$a = $li->a($e->uid());
|
$a = $li->a($e->uid());
|
||||||
$e->rendu("h_miniature", $a);
|
$e->rendu("h_miniature", $a);
|
||||||
});
|
});
|
||||||
$nouveau = $l->li();
|
$nouveau = $l->li();
|
||||||
// TODO : nouveau devrait être un lien, bouton, ...
|
// TODO : nouveau devrait être un lien, bouton, ...
|
||||||
$nouveau->span("miniature")->img("", $this->url("i_icône_nouvelle_page"));
|
var_dump($this->url("i_icone_nouvelle_page"));
|
||||||
|
$nouveau->span("miniature")->img("", $this->url("i_icone_nouvelle_page"));
|
||||||
$nouveau->span("titre")->text(self::$texte_nouvelle_page);
|
$nouveau->span("titre")->text(self::$texte_nouvelle_page);
|
||||||
|
|
||||||
if ($this->if_perm("W", "dans_nouveautes")) {
|
if ($this->if_perm("W", "dans_nouveautes")) {
|
||||||
|
@ -68,21 +69,21 @@ abstract class mGalerieBase extends Page {
|
||||||
class mGalerieIndex extends mGalerieBase {
|
class mGalerieIndex extends mGalerieBase {
|
||||||
protected static $texte_titre = "Galerie";
|
protected static $texte_titre = "Galerie";
|
||||||
protected static $texte_nouvelle_page = "Nouvelle période";
|
protected static $texte_nouvelle_page = "Nouvelle période";
|
||||||
protected static $icône_nouvelle_page = "nouvelle_periode.png";
|
protected static $icone_nouvelle_page = "nouvelle_periode.png";
|
||||||
protected static $type_enfants = "mGaleriePeriode";
|
protected static $type_enfants = "mGaleriePeriode";
|
||||||
}
|
}
|
||||||
|
|
||||||
class mGaleriePeriode extends mGalerieBase {
|
class mGaleriePeriode extends mGalerieBase {
|
||||||
protected static $texte_titre = "Période";
|
protected static $texte_titre = "Période";
|
||||||
protected static $texte_nouvelle_page = "Nouvel événement";
|
protected static $texte_nouvelle_page = "Nouvel événement";
|
||||||
protected static $icône_nouvelle_page = "nouvel_evenement.png";
|
protected static $icone_nouvelle_page = "nouvel_evenement.png";
|
||||||
protected static $type_enfants = "mGalerieEvenement";
|
protected static $type_enfants = "mGalerieEvenement";
|
||||||
}
|
}
|
||||||
|
|
||||||
class mGalerieEvenement extends mGalerieBase {
|
class mGalerieEvenement extends mGalerieBase {
|
||||||
protected static $texte_titre = "Événement";
|
protected static $texte_titre = "Événement";
|
||||||
protected static $texte_nouvelle_page = "Nouvelle photo";
|
protected static $texte_nouvelle_page = "Nouvelle photo";
|
||||||
protected static $icône_nouvelle_page = "nouvelle_photo.png";
|
protected static $icone_nouvelle_page = "nouvelle_photo.png";
|
||||||
protected static $type_enfants = "mGaleriePhoto";
|
protected static $type_enfants = "mGaleriePhoto";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user