SPIP 1.9 - Que fait SPIP pour servir une page de la partie privée ?

Que fait SPIP quand on demande une page dans la partie privée
par une requête de type ecrire/?exec=truc ?

En deux mots

En substance, pour répondre a cette requête, SPIP appelle le fichier index.php avec l’argument exec en chaine de get :

  • il va chercher le fichier exec/truc.php
  • il cherche dedans la fonction exec_truc()
  • il cherche dedans la fonction exec_truc_dist()

Par défaut exec_truc_dist() est défini dans le fichier exec/truc.php de spip, ce qui permet, en définissant sa fonction exec_truc() de personaliser le actions de truc sans toucher au script truc.php de spip.

Comment cela marche-t-il en pratique ?

Include_fonction(’truc’)
C’est la première fonction appelée pour gérer cette demande.
C’est elle qui regroupe toutes les actions pour savoir quelle fonction exécuter, quel fichier charger pour assurer l’action ’truc’
-  regarde si la fonction exec_truc est déjà définie
-  sinon cherche le fichier exec/truc via la fonction include_spip ci-dessous
-  regarde si la fonction exec_truc est définie -> dit que c’est celle la que l’on veut utiliser
-  regarde si la fonction exec_truc_dist est définie -> c’est cette fonction que l’on veut utiliser

Les inclusions des fichiers php de SPIP via include_spip()
Par exemple include_spip(’inc/charsets’).
Elle passe par la fonction find_in_path ci-dessous pour chercher le fichier au bon endroit

La fonction include_ecrire(’inc_charsets’) qui était utilisé en <=183 reste accepté pour compatibilité des scripts, mais est moins rapide car elle doit assurer le changement de convention de nommage.

Ou index.php va-t-il chercher truc.php ?

Par défaut, il trouve le fichier exec/truc.php dans ecrire. Mais ce fichier n’est pas cherché uniquement à cet endroit.

La fonction find_in_path(’exec/truc.php’) est chargée de trouver le fichier. Elle est utilisée à chaque recherche d’un fichier de SPIP (squelettes, fichiers de langues, charset, …)

Cette fonction cherche les fichiers dans l’ordre :

  • Dans $dossier_squelettes qui est une variable personalisée éventuellement par l’utilisateur pour indiquer où sont rangés ses squelettes
    • Truc : il est possible de définir plusieurs répertoires dans cette variable en les séparant par des :
      • Ex : $dossier_squelettes=’squelettes:autres:perso’
  • Dans squelettes/
  • À la racine : ./
  • Dans formulaires/
  • Dans dist/
  • Dans ecrire/

Donc il est possible de ’remplacer’ l’usage d’un fichier natif de SPIP comme exec/truc.php en définissant son propre exec/truc.php dans un des dossiers squelettes, ou à la racine (ou dans un dossier plugins, ce sera abordé ultérieurement)

En résumé

En résumé, on peut modifier le comportement d’origine de la requête ?exec=truc

  • en définissant sa propre fonction exec_truc() dans un fichier mes_options.php par exemple. Cette fonction peut faire ses propres traitement, ou/et ensuite réinclure le fichier d’origine pour appeler la fonction d’origine.
  • en définissant son propre fichier exec/truc.php et y définir la fonction exec_truc().

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom