[SPIP Zone] Documentations, références ...

Bonsoir,

je cherche à écrire des plugins mais je bute sur certaines fonctions de SPIP pour lesquelles je n'ai pas trouvé de documentation :

- quelle est la syntaxe propre à SPIP pour se connecter à la base de donnée ?
- quelle est la syntaxe, ou y a-t-il une méthode propre à SPIP pour vérifier la présence de tables, créer de nouvelle tables dans la base de données ?
- y a-t-il une documentation plus approfondie que la doc en ligne pour : - la rédaction de pages pour l'espace privé ; - la vérification des status des personnes dans l'espace privé ; - le fonctionnement des pipelines ; - toute doc approfondie sur la compréhension de la construction de l'espace privé

Je sais que c'est un peu vague, mais tous les liens sont les bienvenus.
Cordialement,

--
_________________________________
        Olivier Gautier
   Professeur de Mathématiques
     Personne Ressource TICE
       Académie de Rouen
Equipe de développement EVA-Web
_________________________________

On 27 Dec, 2006, at 01:55, Olivier Gautier wrote:

Bonsoir,

je cherche à écrire des plugins mais je bute sur certaines fonctions de
SPIP pour lesquelles je n'ai pas trouvé de documentation :

- quelle est la syntaxe propre à SPIP pour se connecter à la base de
donnée ?

tout cela se trouve dans base/abstract_sql.php qui offre une couche d'abstraction pour se connecter à la base. En particulier, pour faire des selects:
http://doc.spip.org/@spip_abstract_select

- quelle est la syntaxe, ou y a-t-il une méthode propre à SPIP pour
vérifier la présence de tables,

Hum, là je ne suis pas sûr,

créer de nouvelle tables dans la base de
données ?

  moi je fais:
$table_pref = 'spip';
if ($GLOBALS['table_prefix']) $table_pref = $GLOBALS['table_prefix'];
spip_query("CREATE TABLE IF NOT EXISTS `".str_replace('spip_',$table_pref.'_mots_',$table_principale)."` (`id_mot` bigint(20) NOT NULL default '0',`$id_chose` bigint(20) NOT NULL default '0', KEY `$id_chose` (`id_mot`),KEY `id_mot` (`id_mot`)) TYPE=MyISAM;;");

- y a-t-il une documentation plus approfondie que la doc en ligne pour :

doc.spip.org

- la rédaction de pages pour l'espace privé ;

pas trop, il faut regarder comment c'est fait dans les plugins de la zone. C'est assez simple, à la base, il faut faire un fichier mapage.php dans un repertoire exec/ avec une fonction exec_mapage_dist() dedans.
Aussi voir toutes les fonctions dans:
inc/presentation.php

- la vérification des
status des personnes dans l'espace privé ;

il faut regarder dans les globales $connect_statut et $connect_toutes_rubriques. Moi j'ai jamais très bien compris, mais c'est possible que ça ait changé dans la 1.9.2 ce truc là.

- le fonctionnement des
pipelines ;

C'est assez simple aussi, une fois que tu as trouvé quel pipeline t'intéresse (s'il y en a un, sinon il faut le demander sur spip-dev), tu ajoutes dans ton plugin.xml:
  <pipeline>
    <nom>affiche_droite</nom>
    <action>affiche_droite</action>
    <inclure>TriMots.php</inclure>
  </pipeline>

où:
- nom: est le nom du pipeline
- action: est le nom de la fonction (sans le prefix du plugin) à appeler à ce pipeline, c'est optionel s'il a le même nom que le pipeline.
- inclure: est le fichier dans lequel se trouve la fonction à appeler et qui sera inclus à l'appel du pipeline

la fonction a la signature:
function prefixe_affiche_droite($arguments)

$arguments['args'] contient les arguments de la page, par exemple: $arguments['args']['exec'] pour savoir dans quelle page tu te trouves si le pipeline est appelé depuis des pages différentes.
tu dois modifier (ajouter le texte à afficher au lieu de faire un echo): $arguments['data']
puis retourner $arguments à la fin de la fonction pour les autres pipeline qui suivent.

- toute doc approfondie sur la compréhension de la
construction de l'espace privé

doc.spip.org et les archives des listes... (en particulier spip-core)

Bonne année,

Pierre

Pierre Andrews wrote:

On 27 Dec, 2006, at 01:55, Olivier Gautier wrote:

- quelle est la syntaxe, ou y a-t-il une méthode propre à SPIP pour
vérifier la présence de tables,

Hum, là je ne suis pas sûr,

Dans le plugin gestion_metas, j'ai fait ça :
$query = 'SELECT * FROM '.$GestionMetasTable.' LIMIT 1';
$res = spip_query($query);
if ($res == '') create_GestionMetasTable($GestionMetasTable);

Enfin tout est là dedans : Connexion · GitLab

créer de nouvelle tables dans la base de
données ?

  moi je fais:
$table_pref = 'spip';
if ($GLOBALS['table_prefix']) $table_pref = $GLOBALS['table_prefix'];
spip_query("CREATE TABLE IF NOT EXISTS `".str_replace('spip_', $table_pref.'_mots_',$table_principale)."` (`id_mot` bigint(20) NOT NULL default '0',`$id_chose` bigint(20) NOT NULL default '0', KEY ` $id_chose` (`id_mot`),KEY `id_mot` (`id_mot`)) TYPE=MyISAM;;");

Mais tu fais ce test à chaque utilisation de tes plugins ?

--

Olivier G.
http://www.lespacedunmatin.info/blog/

On 27 Dec, 2006, at 22:40, Olivier G. wrote:

créer de nouvelle tables dans la base de
données ?

  moi je fais:
$table_pref = 'spip';
if ($GLOBALS['table_prefix']) $table_pref = $GLOBALS['table_prefix'];
spip_query("CREATE TABLE IF NOT EXISTS `".str_replace('spip_',
$table_pref.'_mots_',$table_principale)."` (`id_mot` bigint(20) NOT
NULL default '0',`$id_chose` bigint(20) NOT NULL default '0', KEY `
$id_chose` (`id_mot`),KEY `id_mot` (`id_mot`)) TYPE=MyISAM;;");

Mais tu fais ce test à chaque utilisation de tes plugins ?

G oublié de spécifier c vrai. En fait, je stoque un meta qui me dit que ma table est installé, si le meta est vide, alors je crée la table, sinon rien.

Pierre

Olivier Gautier wrote:

Bonjour,

Olivier G. a écrit :

Pierre Andrews wrote:

On 27 Dec, 2006, at 01:55, Olivier Gautier wrote:
   

- quelle est la syntaxe, ou y a-t-il une méthode propre à SPIP pour
vérifier la présence de tables,

Hum, là je ne suis pas sûr,

Dans le plugin gestion_metas, j'ai fait ça :
$query = 'SELECT * FROM '.$GestionMetasTable.' LIMIT 1';
$res = spip_query($query);
if ($res == '') create_GestionMetasTable($GestionMetasTable);
  
Ca marche ça si la table existe mais est vide ? Ou encore, la requète spip_query renvoie-t-elle quelques chose quand la table existe et est vide ?

Ah tiens oui, je vais vérifier ça. Mais au pire ça fait une erreur sur la requête de création de la table.

--

Olivier G.
http://www.lespacedunmatin.info/blog/