Création des tables avec la nouvelle structure + autres modifs.
This commit is contained in:
parent
a277140fdf
commit
20aafcf6dc
|
@ -40,39 +40,60 @@ class BDD {
|
|||
// ATTENTION : Ré-initialise toute la base de données !!!
|
||||
public static function reset() {
|
||||
self::unbuf_query('drop table if exists ' . self::table("pages"));
|
||||
self::unbuf_query('drop table if exists ' . self::table("enfants"));
|
||||
self::unbuf_query('drop table if exists ' . self::table("proprietes"));
|
||||
self::unbuf_query('drop table if exists ' . self::table("liens"));
|
||||
// TODO : drop les tables des classes (les noms sont dans self::table("modules")).
|
||||
self::unbuf_query('drop table if exists ' . self::table("modules"));
|
||||
self::init();
|
||||
}
|
||||
|
||||
public static function init() {
|
||||
self::unbuf_query("create database if not exists " . Config::get('db_base'));
|
||||
mysql_select_db(Config::get('db_base'), self::$handle) or Debug::sqlerror();
|
||||
self::unbuf_query('create table if not exists ' . self::table("pages") . ' ('
|
||||
. 'uid_page integer auto_increment primary key'
|
||||
|
||||
if (count(self::select("show tables like '" . self::table("pages") . "'"))) {
|
||||
Debug::info("La base de données est déjà initialisée, on continue...");
|
||||
return;
|
||||
}
|
||||
|
||||
self::unbuf_query('create table if not exists ' . self::table("liens") . ' ('
|
||||
. 'uid_page_de integer,'
|
||||
. 'uid_page_vers integer,'
|
||||
. 'groupe varchar(50)'
|
||||
. ')');
|
||||
self::unbuf_query('create table if not exists ' . self::table("enfants") . ' ('
|
||||
. 'uid_page integer,'
|
||||
. 'uid_page_parent integer,'
|
||||
. 'groupe char(10)'
|
||||
|
||||
self::unbuf_query('create table if not exists ' . self::table("modules") . ' ('
|
||||
. 'modules varchar(50) primary key'
|
||||
. ')');
|
||||
self::unbuf_query('create table if not exists ' . self::table("proprietes") . ' ('
|
||||
. 'uid_prop integer auto_increment primary key,'
|
||||
. 'uid_page integer,'
|
||||
. 'systeme bool,'
|
||||
. 'nom char(30),'
|
||||
. 'valeur char'
|
||||
.')');
|
||||
|
||||
$table = "create table if not exists " . self::table("pages") . " (uid_page integer auto_increment primary key";
|
||||
foreach (Page::$attributs_globaux as $nom) {
|
||||
$table .= ", $nom varchar(50)";
|
||||
}
|
||||
$table .= ")";
|
||||
self::unbuf_query($table);
|
||||
|
||||
foreach (Page::$modules as $nom_module => $m) {
|
||||
$table = "create table if not exists " . self::table($nom_module) . " (uid_page integer";
|
||||
foreach ($m['attributs'] as $nom => &$attr) {
|
||||
if (!$attr['global']) {
|
||||
$table .= ", $nom varchar(50)";
|
||||
}
|
||||
}
|
||||
$table .= ")";
|
||||
self::unbuf_query($table);
|
||||
self::modify("replace into " . self::table("modules") . " values('" . $nom_module . "')");
|
||||
}
|
||||
|
||||
self::test();
|
||||
}
|
||||
|
||||
public static function test() {
|
||||
// Insertion de la racine :
|
||||
self::modify("insert into " . self::table("pages") . " values(0)");
|
||||
self::modify("insert into " . self::table("proprietes") . " values(0, 0, true, 'date_creation', 0)");
|
||||
self::modify("insert into " . self::table("proprietes") . " values(0, 0, true, 'date_modification', 0)");
|
||||
self::modify("insert into " . self::table("proprietes") . " values(0, 0, true, 'publier', 'true')");
|
||||
self::modify("insert into " . self::table("proprietes") . " values(0, 0, true, 'nom_systeme', 'racine')");
|
||||
self::modify("insert into " . self::table("proprietes") . " values(0, 0, true, 'composant_url', '')");
|
||||
self::modify("replace into " . self::table("pages") . " values(1, '0', '0', 'true', 'racine', '', 'mGalerieIndex')");
|
||||
self::modify("replace into " . self::table("pages") . " values(2, '0', '0', 'true', '', '', 'mGaleriePeriode')");
|
||||
self::modify("replace into " . self::table("pages") . " values(3, '0', '0', 'true', '', '', 'mGaleriePeriode')");
|
||||
self::modify("replace into " . self::table("liens") . " values(1, 2, 'enfant')");
|
||||
self::modify("replace into " . self::table("liens") . " values(1, 3, 'enfant')");
|
||||
}
|
||||
|
||||
public static function begin_transaction() {
|
||||
|
@ -100,7 +121,7 @@ class BDD {
|
|||
|
||||
public static function modify($q) {
|
||||
debug::info("sql : $q;");
|
||||
mysql_query($q . ";", self::get()) or Debug::sqlerror();
|
||||
mysql_unbuffered_query($q . ";", self::get()) or Debug::sqlerror();
|
||||
}
|
||||
|
||||
public static function table($nom) {
|
||||
|
|
|
@ -209,6 +209,11 @@ ElementDocument::add_widget("text_line", function($d, $select){
|
|||
});
|
||||
|
||||
|
||||
ElementDocument::add_widget("text_no_space", function($d, $select){
|
||||
return $d->text("Not Implemented Yet : w_text_line($select)");
|
||||
});
|
||||
|
||||
|
||||
ElementDocument::add_widget("text_rich", function($d, $select){
|
||||
return $d->text("Not Implemented Yet : w_text_rich($select)");
|
||||
});
|
||||
|
@ -226,6 +231,12 @@ ElementDocument::add_widget("img_file", function($d, $select){
|
|||
});
|
||||
|
||||
|
||||
ElementDocument::add_widget("date", function($d, $select){
|
||||
// affichage localisé.
|
||||
return $d->text("Not Implemented Yet : date($select)");
|
||||
});
|
||||
|
||||
|
||||
ElementDocument::add_widget("liste", function($d, $select, $function_formattage_elements) {
|
||||
$l = $d->ul();
|
||||
$l->li()->text("Not Implemented Yet");
|
||||
|
|
|
@ -3,10 +3,11 @@
|
|||
function main() {
|
||||
echo "<pre>";
|
||||
initModules();
|
||||
var_dump(Page::$modules);
|
||||
echo "</pre>";
|
||||
//var_dump(Page::$modules);
|
||||
|
||||
$bdd = BDD::get();
|
||||
BDD::reset();
|
||||
echo "</pre>";
|
||||
|
||||
$g = new mAdminListeUtilisateurs();
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ function ressources_statiques($res) {
|
|||
call_user_func(array($i, "info"));
|
||||
Page::$limitation_infos_module = $lim;
|
||||
} else {
|
||||
// TODO : ... jusqu'ici (Page::$modules[$m]['ressources_statiques'] peut être factorisé aussi.
|
||||
// TODO : ... jusqu'ici (Page::$modules[$m]['ressources_statiques'] peut être factorisé aussi. (pas pour attribut))
|
||||
Page::$modules[$m]['ressources_statiques'] = qw(Page::$modules[$m]['ressources_statiques'], $res);
|
||||
}
|
||||
}
|
||||
|
@ -42,7 +42,7 @@ function ressources_dynamiques($res) {
|
|||
call_user_func(array($i, "info"));
|
||||
Page::$limitation_infos_module = $lim;
|
||||
} else {
|
||||
// TODO : ... jusqu'ici (Page::$modules[$m]['ressources_dynamiques'] peut être factorisé aussi.
|
||||
// TODO : ... jusqu'ici (Page::$modules[$m]['ressources_dynamiques'] peut être factorisé aussi. (pas pour attribut))
|
||||
Page::$modules[$m]['ressources_dynamiques'] = qw(Page::$modules[$m]['ressources_dynamiques'], $res);
|
||||
}
|
||||
}
|
||||
|
@ -60,11 +60,29 @@ function types_enfants($types) {
|
|||
call_user_func(array($i, "info"));
|
||||
Page::$limitation_infos_module = $lim;
|
||||
} else {
|
||||
// TODO : ... jusqu'ici (Page::$modules[$m]['types_enfants'] peut être factorisé aussi.
|
||||
// TODO : ... jusqu'ici (Page::$modules[$m]['types_enfants'] peut être factorisé aussi (pas pour attribut)).
|
||||
Page::$modules[$m]['types_enfants'] = qw(Page::$modules[$m]['types_enfants'], $types);
|
||||
}
|
||||
}
|
||||
|
||||
function groupes_enfants($groupes) {
|
||||
// TODO : factoriser d'ici...
|
||||
$lim = Page::$limitation_infos_module;
|
||||
$m = Page::$module_en_cours;
|
||||
if ($lim !== true && $lim != "attribut")
|
||||
return;
|
||||
|
||||
if (is_inherit($groupes)) {
|
||||
$i = $groupes["inherit"];
|
||||
Page::$limitation_infos_module = "groupes_enfants";
|
||||
call_user_func(array($i, "info"));
|
||||
Page::$limitation_infos_module = $lim;
|
||||
} else {
|
||||
// TODO : ... jusqu'ici (Page::$modules[$m]['types_enfants'] peut être factorisé aussi (pas pour attribut)).
|
||||
Page::$modules[$m]['groupes_enfants'] = qw(Page::$modules[$m]['groupes_enfants'], $groupes);
|
||||
}
|
||||
}
|
||||
|
||||
function attribut($nom, $type = null, $defaut = null) {
|
||||
$lim = Page::$limitation_infos_module;
|
||||
$m = Page::$module_en_cours;
|
||||
|
@ -78,16 +96,17 @@ function attribut($nom, $type = null, $defaut = null) {
|
|||
Page::$limitation_infos_module = $lim;
|
||||
} else {
|
||||
if ($type === null || $defaut === null) {
|
||||
Debug::error("fonction attribut() : les paramètres $type et $defaut doivent être définis");
|
||||
Debug::error('fonction attribut() : les paramètres $type et $defaut doivent être définis');
|
||||
}
|
||||
if (!Document::has_widget("w_" . $type)) {
|
||||
Debug::error("L'attribut $nom a le type $type, mais aucun widget w_$type n'existe.");
|
||||
}
|
||||
Page::$modules[$m]['attributs'][$nom] = array("type" => $type, "defaut" => $defaut);
|
||||
Page::$modules[$m]['attributs'][$nom] = array("global" => false, "type" => $type, "defaut" => $defaut);
|
||||
}
|
||||
}
|
||||
|
||||
function attributs_globaux() {
|
||||
function attributs_globaux($attributs) {
|
||||
Page::$attributs_globaux = qw(Page::$attributs_globaux, $attributs);
|
||||
}
|
||||
|
||||
function module($m) {
|
||||
|
@ -95,17 +114,24 @@ function module($m) {
|
|||
'ressources_statiques' => qw(),
|
||||
'ressources_dynamiques' => qw(),
|
||||
'types_enfants' => qw(),
|
||||
'attributs' => qw()
|
||||
'groupes_enfants' => qw(),
|
||||
'attributs' => array()
|
||||
);
|
||||
}
|
||||
|
||||
function initModules() {
|
||||
foreach (Page::$modules as $m => $v) {
|
||||
echo $m . "<br/>";
|
||||
Page::$module_en_cours = $m;
|
||||
call_user_func(array($m, "info"));
|
||||
foreach (Page::$modules as $nom_module => $m) {
|
||||
Page::$module_en_cours = $nom_module;
|
||||
call_user_func(array($nom_module, "info"));
|
||||
}
|
||||
Page::$module_en_cours = null;
|
||||
foreach (Page::$attributs_globaux as $ag) {
|
||||
foreach (Page::$modules as &$m) {
|
||||
if (array_key_exists($ag, $m['attributs'])) {
|
||||
$m['attributs'][$ag]['global'] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Page {
|
||||
|
@ -117,12 +143,13 @@ class Page {
|
|||
public static function info() {
|
||||
// Convention de nommage pour les ressources statiques :
|
||||
// res_h_xxx = html, res_i_xxx = image, res_c_xxx = css, res_j_xxx = javascript
|
||||
attributs_globaux("date_creation date_modification publier nom_systeme composant_url");
|
||||
attributs_globaux("date_creation date_modification publier nom_systeme composant_url type");
|
||||
attribut("date_creation", "date", "0");
|
||||
attribut("date_modification", "date", "0");
|
||||
attribut("publier", "bool", "false");
|
||||
attribut("nom_systeme", "text_no_space", "");
|
||||
attribut("composant_url", "text_no_space", "page");
|
||||
attribut("type", "text_no_space", "mSiteIndex");
|
||||
}
|
||||
|
||||
private $parent = null;
|
||||
|
@ -189,6 +216,7 @@ class Page {
|
|||
// ... where prop_cond_1 = val_cond_1 and prop_cond_2 = val_cond_2;
|
||||
|
||||
// Tous les enfants
|
||||
niy("enfants__");
|
||||
$select = "select uid_page from " . BDD::table("enfants") . " where uid_page_parent = " . $this->uid();
|
||||
|
||||
if ($condition !== true) {
|
||||
|
@ -206,10 +234,9 @@ class Page {
|
|||
}
|
||||
$select .= ") group by uid_page having count(uid_page) = " . count($conditions);
|
||||
}
|
||||
|
||||
|
||||
echo "Page::enfants : result of select : ";
|
||||
var_dump(BDD::select($select . ";"));
|
||||
niy("enfants__");
|
||||
}
|
||||
|
||||
public function ajouter_enfant($type, $groupe = "main") {
|
||||
|
@ -217,18 +244,18 @@ class Page {
|
|||
// renvoyer une instance de la sous-classe de Page correspondant à $type.
|
||||
niy("ajouter_enfant");
|
||||
}
|
||||
|
||||
|
||||
public function lier_page($page_source, $groupe = "main") {
|
||||
$l = ajouter_enfant("Lien", "$groupe");
|
||||
$l->lien = $page_source;
|
||||
niy("lier_page");
|
||||
}
|
||||
|
||||
|
||||
public static function page_systeme($nom) {
|
||||
// select from pages where nomSysteme = $nom limit 1
|
||||
niy("page_systeme");
|
||||
}
|
||||
|
||||
|
||||
public function if_perm($action, $nom_propriété) {
|
||||
// @param $action = suite de lettre parmi les suivantes :
|
||||
// R = Read prop
|
||||
|
@ -320,4 +347,6 @@ class CollectionPages {
|
|||
}
|
||||
}
|
||||
|
||||
module("Page"); // TODO ! attention : risque de conflit avec la table pages dans la bdd. Page ne devrait pas y apparaître de toute façon.
|
||||
|
||||
?>
|
|
@ -4,7 +4,7 @@ class mAdminListeUtilisateurs extends Page {
|
|||
public static function info() {
|
||||
ressources_statiques("i_icône_nouvelle_page c_style");
|
||||
ressources_dynamiques("h_page h_liste_mots_de_passe");
|
||||
types_enfants("AdminUtilisateur");
|
||||
types_enfants("mAdminUtilisateur");
|
||||
}
|
||||
|
||||
public function res_i_icône_nouvelle_page() {
|
||||
|
@ -41,7 +41,6 @@ class mAdminUtilisateur extends Page {
|
|||
ressources_statiques("c_style");
|
||||
// TODO : h_page = affichage "en grand" de l'utilisateur (~= page perso, par ex. destination d'un lien de la page contacts).
|
||||
ressources_dynamiques("h_admin");
|
||||
types_enfants("AdminUtilisateur");
|
||||
// TODO : le couple (nom,prenom) doit être unique.
|
||||
attribut("nom", "text_line", "Dupondt");
|
||||
attribut("prenom", "text_line", "Jean");
|
||||
|
|
|
@ -4,11 +4,13 @@ abstract class mGalerieBase extends Page {
|
|||
protected static $texte_titre = "Galerie";
|
||||
protected static $texte_nouvelle_page = "Nouvel élément";
|
||||
protected static $icône_nouvelle_page = "nouvelle_periode.png";
|
||||
protected static $types_enfants = "mGaleriePeriode";
|
||||
|
||||
public static function info() {
|
||||
ressources_statiques("i_icône_nouvelle_page".get_class()." c_style".get_class());
|
||||
ressources_statiques("i_icône_nouvelle_page c_style");
|
||||
ressources_dynamiques("h_page h_miniature h_mini_miniature");
|
||||
types_enfants("GalerieÉvènement");
|
||||
types_enfants(self::$types_enfants);
|
||||
groupes_enfants("liens");
|
||||
attribut("titre", "text_line", self::$texte_titre);
|
||||
attribut("description", "text_rich", "");
|
||||
attribut("dans_nouveautes", "bool", "true");
|
||||
|
@ -65,18 +67,21 @@ class mGalerieIndex extends mGalerieBase {
|
|||
protected static $texte_titre = "Galerie";
|
||||
protected static $texte_nouvelle_page = "Nouvelle période";
|
||||
protected static $icône_nouvelle_page = "nouvelle_periode.png";
|
||||
protected static $types_enfants = "mGaleriePeriode";
|
||||
}
|
||||
|
||||
class mGaleriePériode extends mGalerieBase {
|
||||
class mGaleriePeriode extends mGalerieBase {
|
||||
protected static $texte_titre = "Période";
|
||||
protected static $texte_nouvelle_page = "Nouvel événement";
|
||||
protected static $icône_nouvelle_page = "nouvel_evenement.png";
|
||||
protected static $types_enfants = "mGalerieEvenement";
|
||||
}
|
||||
|
||||
class mGalerieÉvénement extends mGalerieBase {
|
||||
class mGalerieEvenement extends mGalerieBase {
|
||||
protected static $texte_titre = "Événement";
|
||||
protected static $texte_nouvelle_page = "Nouvelle photo";
|
||||
protected static $icône_nouvelle_page = "nouvelle_photo.png";
|
||||
protected static $types_enfants = "mGaleriePhoto";
|
||||
}
|
||||
|
||||
class mGaleriePhoto extends mGalerieBase {
|
||||
|
@ -157,8 +162,8 @@ class mGaleriePhoto extends mGalerieBase {
|
|||
}
|
||||
|
||||
module("mGalerieIndex");
|
||||
module("mGaleriePériode");
|
||||
module("mGalerieÉvénement");
|
||||
module("mGaleriePeriode");
|
||||
module("mGalerieEvenement");
|
||||
module("mGaleriePhoto");
|
||||
|
||||
?>
|
|
@ -6,5 +6,6 @@ require_once(dirname(__FILE__) . "/../code/page.php");
|
|||
require_once(dirname(__FILE__) . "/galerie/include.php");
|
||||
require_once(dirname(__FILE__) . "/admin/include.php");
|
||||
require_once(dirname(__FILE__) . "/squelette/include.php");
|
||||
require_once(dirname(__FILE__) . "/nouveautes/include.php");
|
||||
|
||||
?>
|
|
@ -4,7 +4,7 @@ class mNouveautes extends Page {
|
|||
public static function info() {
|
||||
ressources_statiques("i_icône_nouvelle_page c_style");
|
||||
ressources_dynamiques("h_page");
|
||||
groupe_enfants("sources");
|
||||
groupes_enfants("sources");
|
||||
attribut("titre", "text_line", "Nouveautés");
|
||||
attribut("description", "text_rich", "");
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user