order, limit et offset dans Page->enfants().
This commit is contained in:
parent
0a9a9aa99f
commit
52a5eea2ff
|
@ -27,6 +27,11 @@ class BDD {
|
|||
public static function reset() {
|
||||
self::unbuf_query('drop table if exists ' . self::table("pages"));
|
||||
self::unbuf_query('drop table if exists ' . self::table("liens"));
|
||||
// Création de la table modules pour qu'on puisse select dedans même si elle n'existe pas.
|
||||
// TODO : fusionner avec la création de la table modules dans init();
|
||||
self::unbuf_query('create table if not exists ' . self::table("modules") . ' ('
|
||||
. 'nom_module varchar(50) primary key'
|
||||
. ')');
|
||||
foreach (self::select('select * from ' . self::table("modules")) as $module) {
|
||||
self::unbuf_query('drop table if exists ' . self::table($module["nom_module"]));
|
||||
}
|
||||
|
@ -79,8 +84,8 @@ class BDD {
|
|||
public static function test() {
|
||||
// TODO : dans les modules qui proposent un nom_systeme, faire une fonction init_<nom_systeme>
|
||||
// Cette fonction sera appellée lors de l'initialisation de la BDD.
|
||||
self::modify("replace into " . self::table("pages") . " values(1, '0', '0', 'true', 'racine', '', 'mGalerieIndex', 'true')");
|
||||
self::modify("replace into " . self::table("pages") . " values(2, '0', '0', 'true', '', 'periode-1', 'mGaleriePeriode', 'true')");
|
||||
self::modify("replace into " . self::table("pages") . " values(1, '0', '4', 'true', 'racine', '', 'mGalerieIndex', 'true')");
|
||||
self::modify("replace into " . self::table("pages") . " values(2, '1', '3', 'true', '', 'periode-1', 'mGaleriePeriode', 'true')");
|
||||
self::modify("replace into " . self::table("pages") . " set uid_page = 3, date_creation = '0', date_modification = '0', publier = 'true', nom_systeme = '', composant_url = 'periode-2', type = 'mGaleriePeriode', dans_nouveautes = 'false'");
|
||||
self::modify("replace into " . self::table("liens") . " values(1, 2, 'enfants')");
|
||||
self::modify("replace into " . self::table("liens") . " values(1, 3, 'enfants')");
|
||||
|
|
|
@ -9,7 +9,6 @@ function main() {
|
|||
BDD::reset();
|
||||
|
||||
$r = Page::page_uid(1);
|
||||
var_dump($r);
|
||||
|
||||
$p = $r->rendu();
|
||||
echo "<pre>";
|
||||
|
|
|
@ -47,39 +47,24 @@ function ressources_dynamiques($res) {
|
|||
}
|
||||
}
|
||||
|
||||
function types_enfants($types) {
|
||||
function type_liens($groupe, $type = null) {
|
||||
// TODO : factoriser d'ici...
|
||||
$lim = Page::$limitation_infos_module;
|
||||
$m = Page::$module_en_cours;
|
||||
if ($lim !== true && $lim != "types_enfants")
|
||||
if ($lim !== true && $lim != "type_liens")
|
||||
return;
|
||||
|
||||
if (is_inherit($types)) {
|
||||
if (is_inherit($groupe)) {
|
||||
$i = $res["inherit"];
|
||||
Page::$limitation_infos_module = "types_enfants";
|
||||
Page::$limitation_infos_module = "type_liens";
|
||||
call_user_func(array($i, "info"));
|
||||
Page::$limitation_infos_module = $lim;
|
||||
} else {
|
||||
if ($type === null) {
|
||||
Debug::error('fonction attribut() : les paramètres $type et $defaut doivent être définis');
|
||||
}
|
||||
// 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);
|
||||
Page::$modules[$m]['type_liens'][$groupe] = $type;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -113,8 +98,7 @@ function module($m) {
|
|||
Page::$modules[$m] = array(
|
||||
'ressources_statiques' => qw(),
|
||||
'ressources_dynamiques' => qw(),
|
||||
'types_enfants' => qw(),
|
||||
'groupes_enfants' => qw(),
|
||||
'type_liens' => array('enfants' => false),
|
||||
'attributs' => array()
|
||||
);
|
||||
}
|
||||
|
@ -160,6 +144,10 @@ class Page {
|
|||
return self::$modules[$this->nom_module()];
|
||||
}
|
||||
|
||||
public function type_liens($groupe) {
|
||||
return $this->module['type_liens'][$groupe];
|
||||
}
|
||||
|
||||
public function rendu($res = null, $d = null) {
|
||||
// Renvoie un document (classe ElementDocument).
|
||||
// L'appel à une fonction statique via $this-> n'est pas propre, mais comment appeller la
|
||||
|
@ -190,12 +178,7 @@ class Page {
|
|||
return $this->uid;
|
||||
}
|
||||
|
||||
/* public function select($requête) {
|
||||
// Renvoie un objet de la classe CollectionPages.
|
||||
niy("select");
|
||||
}*/
|
||||
|
||||
public function enfants($condition = true, $ordre = "date_creation desc", $limit = 0, $offset = 0) {
|
||||
public function enfants($condition = true, $ordre = "-date_creation", $limit = 0, $offset = 0) {
|
||||
// Renvoie un objet de la classe CollectionPages.
|
||||
// Si $condition === true, il n'y a pas de condition
|
||||
// sinon, par ex: $condition = "@apercu = true"
|
||||
|
@ -204,19 +187,40 @@ class Page {
|
|||
// offset = null => offset = 0
|
||||
|
||||
niy("enfants");
|
||||
// TODO : condition
|
||||
|
||||
$select_order = "";
|
||||
$first = true;
|
||||
foreach (qw($ordre) as $o) {
|
||||
if ($first) {
|
||||
$first = false;
|
||||
$select_order .= " order by ";
|
||||
} else {
|
||||
$select_order .= ", ";
|
||||
}
|
||||
$select_order .= substr($o,1) . " ";
|
||||
$select_order .= (substr($o,0,1) == "+") ? "asc" : "desc";
|
||||
}
|
||||
$select_limit = ($limit == 0) ? "" : " limit $limit";
|
||||
$select_offset = ($offset == 0) ? "" : " offset $offset";
|
||||
|
||||
// TODO : "natural join"
|
||||
echo "uid : ";
|
||||
var_dump($this->uid());
|
||||
$select = "select uid_page_vers from "
|
||||
. BDD::table("liens")
|
||||
. " join " . BDD::table("pages") . " on uid_page = uid_page_vers "
|
||||
. " natural join " . BDD::table($this->nom_module())
|
||||
. " where groupe = 'enfants' and uid_page_de = " . $this->uid() . ";";
|
||||
. " natural join " . BDD::table($this->type_liens("enfants"))
|
||||
. " where groupe = 'enfants' and uid_page_de = " . $this->uid()
|
||||
. $select_order
|
||||
. $select_limit
|
||||
. $select_offset
|
||||
. ";";
|
||||
|
||||
$res = array();
|
||||
foreach (BDD::select($select) as $row) {
|
||||
array_push($res, self::page_uid($row["uid_page_vers"]));
|
||||
}
|
||||
|
||||
var_dump($res);
|
||||
return $res;
|
||||
}
|
||||
|
||||
|
@ -262,7 +266,7 @@ class Page {
|
|||
// W = Write prop
|
||||
// L = Lister les enfants ($nom_propriété désigne alors le groupe)
|
||||
// C = Créer des enfants ($nom_propriété désigne alors le groupe)
|
||||
// D = Delete des enfants ($nom_propriété désigne alors le groupe)
|
||||
// D = Delete la page ($nom_propriété est ignoré)
|
||||
// @return true si on a l'autorisation pour TOUTES les actions demandées, false sinon.
|
||||
|
||||
// Squelette du code :
|
||||
|
|
|
@ -19,6 +19,10 @@ function qw($arg = null, $arg2 = null, $sep = " ") {
|
|||
return $ret;
|
||||
}
|
||||
|
||||
function str_contains($str, $small) {
|
||||
return strpos($str, $small) !== false;
|
||||
}
|
||||
|
||||
/**** Début PATH ****/
|
||||
|
||||
// http://www.liranuna.com/php-path-resolution-class-relative-paths-made-easy/
|
||||
|
|
|
@ -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("mAdminUtilisateur");
|
||||
type_liens("enfants", "mAdminUtilisateur");
|
||||
}
|
||||
|
||||
public function res_i_icône_nouvelle_page() {
|
||||
|
|
|
@ -4,13 +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";
|
||||
protected static $type_enfants = "mGaleriePeriode";
|
||||
|
||||
public static function info() {
|
||||
ressources_statiques("i_icône_nouvelle_page c_style");
|
||||
ressources_dynamiques("h_page h_miniature h_mini_miniature");
|
||||
types_enfants(self::$types_enfants);
|
||||
groupes_enfants("liens");
|
||||
type_liens("enfants", self::$type_enfants);
|
||||
type_liens("liens", "*");
|
||||
attribut("titre", "text_line", self::$texte_titre);
|
||||
attribut("description", "text_rich", "");
|
||||
attribut("dans_nouveautes", "bool", "true");
|
||||
|
@ -69,21 +69,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";
|
||||
protected static $type_enfants = "mGaleriePeriode";
|
||||
}
|
||||
|
||||
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";
|
||||
protected static $type_enfants = "mGalerieEvenement";
|
||||
}
|
||||
|
||||
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";
|
||||
protected static $type_enfants = "mGaleriePhoto";
|
||||
}
|
||||
|
||||
class mGaleriePhoto extends mGalerieBase {
|
||||
|
|
|
@ -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");
|
||||
groupes_enfants("sources");
|
||||
type_liens("sources", "*");
|
||||
attribut("titre", "text_line", "Nouveautés");
|
||||
attribut("description", "text_rich", "");
|
||||
attributs_globaux("dans_nouveautes");
|
||||
|
|
Loading…
Reference in New Issue
Block a user