Plugin 'macrosession' : usage optimisé et extension des données de session - commentaires Plugin 'macrosession' : usage optimisé et extension des données de session 2021-12-16T10:57:49Z https://files.spip.net/plugin_macrosession_session_optimisees_et_etendues#comment509837 2021-12-16T10:57:49Z <p>Merci à toi pour cette prompte réponse et pour les pistes.<br class="autobr"> Je vais m'y prendre autrement.</p> Plugin 'macrosession' : usage optimisé et extension des données de session 2021-12-16T10:44:16Z https://files.spip.net/plugin_macrosession_session_optimisees_et_etendues#comment509835 2021-12-16T10:44:16Z <p>Bonjour,</p> <p>Tu ne précises pas « quand » la valeur n'est pas conservée, ce serait bien de savoir. Mais en tout cas #_SESSION ne modifie rien à la session et n'est pas chargé d'enregistrer quoi que ce soit, donc je ne pense pas que macrosession soit concerné. C'est plutôt ton formulaire le fautif ou ton usage des extras ou des crayons.</p> <p>Pour l'instant ma piste de travail sera donc : essaie de préciser et de simplifier ton squelette de dev et de mise au point. Enlève tout ce qui n'est pas nécessaire pour manifester le problème. As tu besoin de LISTER_VALEURS<small class="fine d-inline"> </small>? Essaie aussi, pour simplifier, de ne pas utiliser de plugins dans ce squelette. As tu besoin des crayons pour ton squelette<small class="fine d-inline"> </small>? En as tu besoin pour manifester le problème<small class="fine d-inline"> </small>? <br class="autobr"> Souvent la simplification permet de découvrir des choses et parfois de régler le problème. Et en tout cas de mieux le communiquer. Reviens ensuite demander à l'endroit le plus adapté : discuter.spip.net ou le forum du plugin le plus concerné.</p> <p>À part ça, il suffit qu'il y ait une seule balise #SESSION ou #AUTORISER dans un fichier squelette pour que les caches issues de ce fichier squelette soient sessionnés, et il est alors inutile d'utiliser #_SESSION (sauf si tu fais appel aux fonctions d'extensions de la session, genre via une api) voire contreproductif puisque tu combines alors l'absence de cache (à cause du sessionnement) avec le recours à PHP (à cause des macros).</p> Plugin 'macrosession' : usage optimisé et extension des données de session 2021-12-16T06:23:13Z https://files.spip.net/plugin_macrosession_session_optimisees_et_etendues#comment509830 2021-12-16T06:23:13Z <p>Bonjour,<br class="autobr"> Plugin très utile ma satisfaisant bien mais je butte sur quelque chose : <br class="autobr"> J'utilise un champ extra permettent aux visiteurs identifiés de cocher une de trois propositions en boutons radios en utilisant</p> <div class="precode"><pre class="spip_code spip_code_block language-spip" dir="ltr" style="text-align:left;" data-language="spip"><code> #EDIT{monchampextra}</code></pre></div> <p>Mais les réponses données par chacun des visiteurs ne sont pas conservées dans la session et c'est la dernière qui s'inscrit, celle du visiteur précédent.</p> <div class="precode"><pre class="spip_code spip_code_block language-spip" dir="ltr" style="text-align:left;" data-language="spip"><code><BOUCLE_principale(SEANCES){id_seance}> ............................................ [(#LISTER_VALEURS{monchampextra}|oui) <div class="#EDIT{monchampextra} ">#LISTER_VALEURS{monchampextra}</div> ] [(#LISTER_VALEURS{monchampextra}|non) <div class="#EDIT{monchampextra}">texte</div> ] #SESSION{truc,#LISTER_VALEURS{monchampextra}} #_SESSION{truc,monchampextra} .................. </BOUCLE_principale</code></pre></div> <div class="precode"><pre class="spip_code spip_code_block language-spip" dir="ltr" style="text-align:left;" data-language="spip"><code>#_SESSION{truc,monchampextra}</code></pre></div> <p>me donne le résultat, mais, il n'est pas conservé dans la session.<br class="autobr"> Ai-je le bon outil<small class="fine d-inline"> </small>? Quelque chose manque-t-il dans mon développement<small class="fine d-inline"> </small>?</p> <p>Merci pour une piste de travail.</p> Plugin 'macrosession' : usage optimisé et extension des données de session 2020-11-29T16:06:59Z https://files.spip.net/plugin_macrosession_session_optimisees_et_etendues#comment506952 2020-11-29T16:06:59Z <p>Merci. Ça fait plaisir :-)</p> Plugin 'macrosession' : usage optimisé et extension des données de session 2020-01-26T14:56:28Z https://files.spip.net/plugin_macrosession_session_optimisees_et_etendues#comment503854 2020-01-26T14:56:28Z <p>Ajouté une précision :</p> <blockquote class="spip"> <p>Il reste intéressant d'encapsuler la balise macro dans un crochet-parenthèse lorsqu'on veut garantir des espaces après ou avant l'appel à #_SESSION. Car sans les crochets-parenthèses, l'espace après serait «<small class="fine d-inline"> </small>mangé<small class="fine d-inline"> </small>» par la balise, comme d'ordinaire.<br class="autobr"> Par exemple : Votre nom est [ (#_SESSION<i>nom</i>) ] mais quel est votre prénom.</p> <p>L'opportunité de ce type d'usage reste toutefois exceptionnel et très circonstancié, puisque une balise macro ne renvoie jamais une chaine vide, et que normalement, on ne veut pas appeler les filtres sur le source php mais sur le résultat de son exécution.</p> <p>C'est pour pallier à cette contrainte qu'est proposé l'alternative...</p> </blockquote> Plugin 'macrosession' : usage optimisé et extension des données de session 2020-01-19T22:22:35Z https://files.spip.net/plugin_macrosession_session_optimisees_et_etendues#comment503801 2020-01-19T22:22:35Z <p><strong>Nouveau<small class="fine d-inline"> </small>!</strong> Dans la V0.13 une nouvelle inclusion inclure/bouton_action_auteur fait son apparition pour faciliter le dé-sessionnement des squelettes utilisant #BOUTON_ACTION avec #URL_ACTION_AUTEUR. La doc est actualisée.</p> Plugin 'macrosession' : usage optimisé et extension des données de session 2019-01-29T07:38:24Z https://files.spip.net/plugin_macrosession_session_optimisees_et_etendues#comment499774 2019-01-29T07:38:24Z <p>Oui, je teste le statut finalement, c'est mieux pour mon utilisation.</p> Plugin 'macrosession' : usage optimisé et extension des données de session 2019-01-28T19:31:34Z https://files.spip.net/plugin_macrosession_session_optimisees_et_etendues#comment499771 2019-01-28T19:31:34Z <p>Ya pas de raison. C'est dans quel contexte que tu t'en sers<small class="fine d-inline"> </small>? <br class="manualbr">Si tu trouves pas, utilise <code class="spip_code spip_code_inline" dir="ltr">[(#SESSION{id_auteur}|oui) ...]</code> à la place, ou #_SESSION_SI</p> Plugin 'macrosession' : usage optimisé et extension des données de session 2019-01-28T18:29:44Z https://files.spip.net/plugin_macrosession_session_optimisees_et_etendues#comment499770 2019-01-28T18:29:44Z <p>Oui, c'est ce que j'ai fait et #SESSION ne renvoie rien sans macrosession.</p> Plugin 'macrosession' : usage optimisé et extension des données de session 2019-01-28T18:26:47Z https://files.spip.net/plugin_macrosession_session_optimisees_et_etendues#comment499769 2019-01-28T18:26:47Z <p><strong>version 0.11</strong> : la balise #_SESSION accepte maintenant un 3<sup class="typo_exposants">e</sup> argument calculé, qui peut être un #GET, une #BALISE dont la valeur est issue de l'environnement ou un #CHAMP sans 'traitement' de la table de la boucle englobante.</p> Plugin 'macrosession' : usage optimisé et extension des données de session 2019-01-28T18:10:42Z https://files.spip.net/plugin_macrosession_session_optimisees_et_etendues#comment499768 2019-01-28T18:10:42Z <p>macrosession ne touche pas à #SESSION. Pour en avoir le coeur net, ré-essaie aprés avoir désactivé macrosession pour voir si ça change qqchose.</p> Plugin 'macrosession' : usage optimisé et extension des données de session 2019-01-28T17:22:19Z https://files.spip.net/plugin_macrosession_session_optimisees_et_etendues#comment499765 2019-01-28T17:22:19Z <p>Salut,</p> <p>merci pour la rapidité et l'efficacité du SAD, l'erreur fatale a disparu...</p> <p>Par contre, je n'avais fait pas gaffe, mais est-ce que c'est normal que le fonctionnement de <code class="spip_code spip_code_inline" dir="ltr">#SESSION</code> soit modifié<small class="fine d-inline"> </small>?<br class="autobr"> Sans identification, #SESSION renvoie systématiquement a:0 :{} au lieu de ne rien renvoyer...</p> Plugin 'macrosession' : usage optimisé et extension des données de session 2019-01-27T15:29:21Z https://files.spip.net/plugin_macrosession_session_optimisees_et_etendues#comment499751 2019-01-27T15:29:21Z <p>Merci pour ce plugin très utile, et que j'utilise maintenant régulièrement.</p> Plugin 'macrosession' : usage optimisé et extension des données de session 2019-01-27T11:40:06Z https://files.spip.net/plugin_macrosession_session_optimisees_et_etendues#comment499750 2019-01-27T11:40:06Z <p><strong>Nouveau : sessionnement par la balise #URL_ACTION_AUTEUR</strong></p> <p>Les balises <code class="spip_code spip_code_inline" dir="ltr">#URL_ACTION_AUTEUR</code> sessionnent le cache du squelette qui les inclue. Pour minimiser cet effet, le plugin macrossession met désormais à disposition un mini-squelette contenant uniquement un appel à cette balise. Il suffit d'inclure dynamiquement cette noisette en lui passant les arguments désirés : action, arg et url. Voir doc plus haut.</p> Plugin 'macrosession' : usage optimisé et extension des données de session 2019-01-26T22:37:01Z https://files.spip.net/plugin_macrosession_session_optimisees_et_etendues#comment499748 2019-01-26T22:37:01Z <p>J'ai ajouté inclure_spip('inc/autoriser') dans la nouvelle version du plugin (<a href="https://zone.spip.net/trac/spip-zone/changeset/113626" class="spip_out" rel='nofollow external'>z113626</a>) et ça devrait régler ce problème.</p> Plugin 'macrosession' : usage optimisé et extension des données de session 2019-01-26T17:13:48Z https://files.spip.net/plugin_macrosession_session_optimisees_et_etendues#comment499743 2019-01-26T17:13:48Z <p>J'ai juste enlevé l'arborescence de D :\XXXXX\ecrire, c'est tout, et j'ai effectivement un squelette content/ajouter-evenement.html (avec Zpip V2) qui est la page appelée.</p> <p>Où faut-il ajouter include_spip ('inc/autoriser')<small class="fine d-inline"> </small>;<small class="fine d-inline"> </small>?</p> Plugin 'macrosession' : usage optimisé et extension des données de session 2019-01-26T17:03:24Z https://files.spip.net/plugin_macrosession_session_optimisees_et_etendues#comment499742 2019-01-26T17:03:24Z <p>Il manque un include_spip ('inc/autoriser')<small class="fine d-inline"> </small>; quelque part.<br class="autobr"> Tu as raccourci le message d'erreur<small class="fine d-inline"> </small>? Le squelette qui pose pb semble être content/ajouter... <br class="autobr"> Tu as quoi dans ce squelette<small class="fine d-inline"> </small>?</p> Plugin 'macrosession' : usage optimisé et extension des données de session 2019-01-26T16:59:59Z https://files.spip.net/plugin_macrosession_session_optimisees_et_etendues#comment499741 2019-01-26T16:59:59Z <p>Non finalement c'est pas possible tant que #_SESSION n'accepte que des arguments constantes.<br class="autobr"> Tu dois utiliser une boucle sessionnante</p> <div class="precode"><pre class="spip_code spip_code_block language-spip" dir="ltr" style="text-align:left;" data-language="spip"><code>(AUTEURS){id_auteur!=#SESSION{id_auteur}}</code></pre></div> <p>J'aimerais étendre #_SESSION comme #_AUTORISER... un jour.</p> <p>[Edit] : Voilà c'est fait dans la version 0.11</p> Plugin 'macrosession' : usage optimisé et extension des données de session 2019-01-26T16:55:34Z https://files.spip.net/plugin_macrosession_session_optimisees_et_etendues#comment499740 2019-01-26T16:55:34Z <p>Salut,</p> <p>merci pour ce plugin qui m'a grandement facilité la tache pour gérer l'ajout d'article depuis le public en gérant finement les droits.</p> <p>Mais j'ai un souci : dès que j'active le cache j'ai une fatal error à la 2<sup class="typo_exposants">de</sup> visite de la page.</p> <p><code class="spip_code spip_code_inline" dir="ltr">Fatal error: Uncaught Error: Call to undefined function autoriser() in D:\XXXXX\ecrire\public\evaluer_page.php(51) : eval()'d code:7 Stack trace: #0 D:\XXXXX\ecrire\public\evaluer_page.php(51): eval() #1 D:\XXXXX\ecrire\public\assembler.php(608): include('D:\\cousumain\\we...') #2 D:\XXXXX\ecrire\inc\utils.php(3224): evaluer_fond('content/ajouter...', Array, NULL) #3 D:\XXXXX\ecrire\public\evaluer_page.php(51) : eval()'d code(74): recuperer_fond('content/ajouter...', Array, Array, NULL) #4 D:\XXXXX\ecrire\public\evaluer_page.php(51): eval() #5 D:\XXXXX\ecrire\public\assembler.php(608): include('D:\\cousumain\\we...') #6 D:\XXXXX\ecrire\inc\utils.php(3224): evaluer_fond('body', Array, NULL) #7 D:\XXXXX\ecrire\public\evaluer_page.php(51) : eval()'d code(55): recuperer_fond('body', Array, Array, NULL) #8 D:\XXXXX\ecrir in D:\XXXXX\ecrire\public\evaluer_page.php(51) : eval()'d code on line 7</code></p> <p>Si je vide le cache ou que je recalcule la page, ça s'affiche bien à nouveau.</p> <p>Une piste d'où ça pourrait provenir<small class="fine d-inline"> </small>?</p> Plugin 'macrosession' : usage optimisé et extension des données de session 2019-01-26T16:21:16Z https://files.spip.net/plugin_macrosession_session_optimisees_et_etendues#comment499737 2019-01-26T16:21:16Z <p>C'est bien ce qu'il me semblait qu'il y avait un truc qui clochait...</p> <p>mais... mais comment je fais pour tester le #ID_AUTEUR courant, avec ce filtre<small class="fine d-inline"> </small>?</p> Plugin 'macrosession' : usage optimisé et extension des données de session 2019-01-26T16:12:26Z https://files.spip.net/plugin_macrosession_session_optimisees_et_etendues#comment499736 2019-01-26T16:12:26Z <p>Ah non mais <a href="https://zone.spip.org/trac/spip-zone/changeset/113618" class="spip_out" rel='nofollow external'>pas comme dans ton commit</a> car comme ça, le résultat est figé dans le cache comme « normalement » avec SPIP<small class="fine d-inline"> </small>!</p> <p>Je te suggérais bien d'utiliser un tel filtre, mais en argument de #_SESSION (voir doc plus haut : <i>«<small class="fine d-inline"> </small>#_SESSION_SI avec filtres<small class="fine d-inline"> </small>»</i>, pour que ça soit appelé de manière dynamique à chaque besoin de la page :</p> <div class="precode"><pre class="spip_code spip_code_block language-spip" dir="ltr" style="text-align:left;" data-language="spip"><code>#_SESSION_SI{id_auteur,auteur_est_connecte} ... #_SESSION_FIN</code></pre></div> Plugin 'macrosession' : usage optimisé et extension des données de session 2019-01-26T15:35:00Z https://files.spip.net/plugin_macrosession_session_optimisees_et_etendues#comment499734 2019-01-26T15:35:00Z <p>Oui je pense.</p> Plugin 'macrosession' : usage optimisé et extension des données de session 2019-01-26T13:32:51Z https://files.spip.net/plugin_macrosession_session_optimisees_et_etendues#comment499730 2019-01-26T13:32:51Z <p>ok<br class="autobr"> un truc du style</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code><?php function page_auteur_connecter($id_auteur){ return $id_auteur == $session['id_auteur']; }</code></pre></div> <p><small class="fine d-inline"> </small>? ca marcherait en terme de cache<small class="fine d-inline"> </small>?</p> Plugin 'macrosession' : usage optimisé et extension des données de session 2019-01-26T13:01:04Z https://files.spip.net/plugin_macrosession_session_optimisees_et_etendues#comment499729 2019-01-26T13:01:04Z <p>En effet «<small class="fine d-inline"> </small>on ne peut passer que des constantes en argument de comparaison de #_SESSION<small class="fine d-inline"> </small>». (J'en ai pour l'instant jamais eu besoin donc je n'ai pas étendu les possibilités comme je l'ai fait avec #_AUTORISER... mais visiblement ce serait bien de le faire<small class="fine d-inline"> </small>!)</p> <p>La doc dit aussi «<small class="fine d-inline"> </small>Si les variations syntaxiques permises par ce plugin sont insuffisantes pour les besoins de vos squelettes, il vous sera possible de créer un filtre maison pour tester ce qu'il faut comme il faut.<small class="fine d-inline"> </small>».</p> <p>Là tu dois pouvoir t'en sortir avec un filtre "cestpassapage"... que le plugin ou la doc pourrait fournir comme exemple.</p> Plugin 'macrosession' : usage optimisé et extension des données de session 2019-01-26T12:32:01Z https://files.spip.net/plugin_macrosession_session_optimisees_et_etendues#comment499728 2019-01-26T12:32:01Z <p>my bad, tu explique.</p> <p>Cela autant, quel serait la solution optimale<small class="fine d-inline"> </small>?</p> Plugin 'macrosession' : usage optimisé et extension des données de session 2019-01-26T12:29:17Z https://files.spip.net/plugin_macrosession_session_optimisees_et_etendues#comment499726 2019-01-26T12:29:17Z <p>Salut,</p> <p>j'essaie</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>#_SESSION_SI{id_auteur,!=,#ID_AUTEUR} [<h2><:ressourcotheque:contacter:></h2> (#FORMULAIRE_ECRIRE_AUTEUR) ] #_SESSION_FIN</code></pre></div> <p>et j'obtiens</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>( ! ) ParseError: syntax error, unexpected '') { ?'' (T_CONSTANT_ENCAPSED_STRING) in /home/mrouquet/Sites/ressources.test/ecrire/public/composer.php(92) : eval()'d code on line 82</code></pre></div> <p>une idée<small class="fine d-inline"> </small>?</p> Plugin 'macrosession' : usage optimisé et extension des données de session 2018-10-03T07:04:08Z https://files.spip.net/plugin_macrosession_session_optimisees_et_etendues#comment498357 2018-10-03T07:04:08Z <p><strong>Nouveau :</strong> J'ai complété la doc de #_AUTORISER, avec les nouvelles possibilités de tester l'autorisation au regard des valeurs d'environnement ou calculées.</p>