#1 2006-10-28 21:50:40

Guy_M
Membre
2006-07-31
47

Structure des données utilisées dans le code de PWG

Bonjour,

A la demande générale, je créé 1 sujet qui permettra des répondre à une des questions posées lors de la discussion "Comment faire pour que j'arrête de vous casser les pieds......." plus précisément .

L'ensemble des données utilisée par PWG sont contenues dans les tables (couche de persistance). Elles sont chargées dans des objets qui sont ensuite utilisés par les templates.

La structure de la couche de persisitance est décrite ici : Structure de la base 1.6. Dans la documentation, il manque une description de la la structure des objets. Cette description est importante pour pouvoir personaliser, adapter ou étendre PWG (créer des template, plugin ou MOD) car c'est sur elle que s'appuie le système de templates. Quelle est la structure de données de ces objets ?

J'ai essayé de fouiller mais j'ai eu beaucoup de mal : par exemple dans picture.tpl on voit qu'on a des objets first, previous, next, last faisant partie de la même classe d'objects (qui après analyse se révèle être membres d'un array et basé sur un objet picture qui obtient ses informations d'une fonction 'get_thumbnail_src' et là je me suis perdu). Pour comprendre cette structure de données, il y a besoin d'explorer beaucoup de code.

Dernière modification par Guy_M (2006-10-28 21:55:56)


A bientôt
GM

Hors ligne

#2 2006-10-29 19:59:07

tosca
Former Piwigo Team
Cévennes (Gard)
2006-09-23
3818

Re: Structure des données utilisées dans le code de PWG

C'est quoi une "couche de persistance" ?

Hors ligne

#3 2006-11-01 16:53:08

Toff
Membre
2006-07-16
21

Re: Structure des données utilisées dans le code de PWG

Voici un petit bout de code qui peux aider, dans le fichier include/template.php modifier la méthode p() comme ci-dessous :

Code:

  function p()
  {
    echo $this->output;
    echo "<hr><pre>".htmlspecialchars(print_r($this->_tpldata, true))."</pre>";
  }

Ca permet d'avoir à la fin de chaque page, un "dump" des tableaux utilisés par le moteur de template. (pas toujours très lisible c'est vrai)

Hors ligne

#4 2006-11-03 17:37:13

plg
Équipe Piwigo
Nantes, France, Europe
2002-04-05
12671

Re: Structure des données utilisées dans le code de PWG

Guy_M a écrit:

L'ensemble des données utilisée par PWG sont contenues dans les tables (couche de persistance). Elles sont chargées dans des objets qui sont ensuite utilisés par les templates.

Non. PhpWebGallery ne suit pas le sacrosaint modèle MVC. Dans les fichiers PHP comme picture.php, tu trouveras des requêtes SQL.

Pour ce qui concerne le template, en lisant les fichiers *.tpl, tu y trouveras des blocs :

Code:

<!-- BEGIN foo -->
{foo.BAR1} : {foo.BAR2}
<!-- END foo -->

... est le bloc "foo" contenant 2 variable BAR1 et BAR2. Les blocs du template sont instanciables N fois de 0 à +infini. Dans le code PHP, on instancie le bloc de la façon suivante :

Code:

$template->assign_block_vars(
    'foo',
    array(
        'BAR1' => 'Salut',
        'BAR2' => 'Guy_M',
    )
);

Est-ce que ce début d'explication commence à repondre à ta question ?


Les historiens ont établi que Pierrick était le premier utilisateur connu de Piwigo.

Hors ligne

#5 2006-11-04 01:33:48

Guy_M
Membre
2006-07-31
47

Re: Structure des données utilisées dans le code de PWG

Bonjour,

J'avais approximativement compris comment on instancie les données dans le .php et le .tpl

Ta démonstration est faite avec un seul niveau de variable en affectant directement les valeurs aux variables de 'bloc'.

Quand je lis picture.php je tombe sur ce genre de code :

Code:

    $template->assign_block_vars(
      $which_image,
      array(
        'TITLE_IMG' => $picture[$which_image]['name'],
        'IMG' => $picture[$which_image]['thumbnail'],
        'U_IMG' => $picture[$which_image]['url'],
        'U_IMG_SRC' => $picture[$which_image]['src']
        )
      );

Si j'ai bien compris, $picture est un bloc et 'name' une variable de ce bloc.
Quelles sont les autres variable du bloc $picture ?
Où le bloc $picture a-t-il été instancié ?

D'après ce que tu dis de l'organisation du code

z0rglub a écrit:

Dans les fichiers PHP comme picture.php, tu trouveras des requêtes SQL.

On trouve les requêtes SQL dans des variables $query, le résultat de la requête est reversé dans un $result (via la fonction pwg_query) ce résultat étant transformé (a priori partiellement) en un bloc utilisé dans un .tpl

Donc en gros, pour reconstituer le contenu d'un bloc, je dois remonter à la transformations du résultat de la requête SQL en un bloc de variable utilisable dans .tpl (pour avoir la liste des variables disponibles dans le bloc $result, je dois analyser la requête)...

Ai-je enfin compris ?
Donc pour rescencer toutes les données disponibles/utilisables dans un .tpl, il y a du boulot d'analyse !


A bientôt
GM

Hors ligne

#6 2006-11-04 01:48:18

Guy_M
Membre
2006-07-31
47

Re: Structure des données utilisées dans le code de PWG

tosca a écrit:

C'est quoi une "couche de persistance" ?

La couche de persistance dans PWG c'est la base de donnée.

Pour plus d'informations, consulter dans Wikipédia les articles sur le Modèle-Vue-Contrôleur (MVC) et sur l'architure trois tiers


A bientôt
GM

Hors ligne

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact