Browse Source

Un peu de PHPDOC et PHPCS + il semble que parfois il manque interdire_scripts (mais pourrait on affiner ?)

master
JLuc 9 months ago
parent
commit
61d337d0e4
  1. 6
      inc/_autoriser.php
  2. 62
      inc/macrosession_utils.php
  3. 2
      paquet.xml
  4. 2
      plugin.xml

6
inc/_autoriser.php

@ -31,7 +31,7 @@ function compile_appel_macro_autoriser ($p) {
// Le 3eme argument peut être une constante ou un argument calculé
// Il y a 4 possibilités de passer des id calculées à #_AUTORISER_SI :
// - Appels directs de #BALISE ou #GET{variable} (non recommandé)
// - Appels directs de #BALISE ou #GET{variable}
// - Passer 'env', 'boucle' et 'url' pour chercher l'id_ associé au type dans l'env reçu, dans la boucle immédiatement englobante ou dans l'url
// Ex : #_AUTORISER{modifier,article,env} ou #_AUTORISER{modifier,article,boucle} ou #_AUTORISER{modifier,article,url}
//
@ -56,8 +56,9 @@ function compile_appel_macro_autoriser ($p) {
return $ret;
case "'url'" :
if (isset($_GET['debug']))
if (debug_get_mode('macrosession')) {
echo "Avec 'url' : compile appel autoriser($autorisation, $type, _request($id_type_q)<br>";
};
$ret = "autoriser('.\"$autorisation\".', '.\"$type\".', '.\"macrosession_pipe(_request($id_type_q))\".')";
return $ret;
@ -70,7 +71,6 @@ function compile_appel_macro_autoriser ($p) {
// if (erreur_argument_macro ("#_AUTORISER_SI{ $autorisation, $type, ...}", 'id', $id, $p, 'contexte_ok') return "''";
return "autoriser('.\"$autorisation\".', '.\"$type\".', '.\"$id\".')";
}
};

62
inc/macrosession_utils.php

@ -5,17 +5,30 @@ if (!defined('_ECRIRE_INC_VERSION')) {
if (!function_exists('existe_argument_balise')) {
// prolégomène à interprete_argument_balise
/**
* @param int $n
* @param $p
* @return bool
* prolégomène à interprete_argument_balise
*/
function existe_argument_balise ($n, $p) {
return (($p->param) && (!$p->param[0][0]) && (count($p->param[0])>$n));
};
}
/*
if (!function_exists (('interdire_scripts'))) {
// Il arrive exceptionnellement que 'interdire_script' manque
// pour le 3eme argument d'un #_AUTORISER_SI{action, quoi, #BALISE}
include_spip('inc/texte');
}
/**
* @param string $f
* @return string
* Recevant un argument entre quotes (contenant par exemple un nom de filtre)
* trim_quote enlève les espaces de début et fin *à l'intérieur* des quotes
* ex : reçoit ' filtre ' (quotes comprises) et renvoie 'filtre'
*/
*/
function trim_quote($f) {
$f = trim($f); // c'est pas ça l'important
$l = strlen($f);
@ -25,20 +38,29 @@ function trim_quote($f) {
return $r;
}
// une fonction pour le code de |? (la négation de choixsivide)
/**
* @param $test
* @param $sioui
* @param $sinon
* @return mixed
* une fonction pour le code de |? (la négation de choixsivide)
*/
function choix_selon ($test, $sioui, $sinon) {
return $test ? $sioui : $sinon;
}
//
// Prépare une expression compilée à être réinjectée dans le code compilé
//
// OK pour une petite variété de formes syntaxiques :
// - Balises sans traitements : #ID_ARTICLE, #TITRE*...
// - #GET{variabledenv}
// À mieux tester et étendre en prenant autrement le pb
//
/**
* @param string $expr_org
* @return string
* Prépare une expression compilée à être réinjectée dans le code compilé
*
* OK pour une petite variété de formes syntaxiques :
* - Balises sans traitements : #ID_ARTICLE, #TITRE*...
* - #GET{variabledenv}
* À mieux tester et étendre en prenant autrement le pb
*/
function reinjecte_expression_compilee($expr_org) {
$expr = $expr_org;
// #GET{aa} est implémenté par un appel à table_valeur
@ -51,8 +73,9 @@ function reinjecte_expression_compilee($expr_org) {
$expr
);
if (($expr!=$expr_org) and debug_get_mode('macrosession'))
if (($expr!=$expr_org) and debug_get_mode('macrosession')) {
echo "Passe par : <pre style='display:inline'>$expr</pre> ";
}
// Variables scalaires $truc et tableaux multiniveaux $Pile[0][$SP]['index']
$expr = preg_replace(
@ -60,14 +83,18 @@ function reinjecte_expression_compilee($expr_org) {
'\'{$1}\'',
$expr);
if (isset($_GET['debug']) and ($_GET['debug'] == 'macrosession')) {
if (debug_get_mode ('macrosession')) {
echo "et renvoie : <pre>$expr</pre>";
}
return $expr;
}
/**
* @param string $q
* @return string
*/
function macrosession_pipe($q="!!! non défini !!!") {
if (isset($_GET['debug']) and ($_GET['debug'] == 'macrosession')) {
if (debug_get_mode('macrosession')) {
echo "exec macrosession_pipe($q)<br>";
}
return $q;
@ -78,13 +105,12 @@ function macrosession_pipe($q="!!! non défini !!!") {
* @return string
*/
function macrosession_print($a) {
if (isset($_GET['debug']) and ($_GET['debug'] == 'macrosession')) {
if (debug_get_mode ('macrosession')) {
echo '<pre>' . print_r ($a, 1) . '</pre>';
}
return "''";
}
//
/**
* @param string $macro description du contexte d'appel (nom de la macro + arguments éventuellement)
* @param string $arg_name nom de l'argument testé
@ -92,7 +118,7 @@ function macrosession_print($a) {
* @param array $p pile contexte
* @param bool $contexte_ok Désormais et pour l'instant inutilisé
* Indique si les motclé de référence au contexte sont acceptés : env, boucle, url, #GET{variable}, #BALISE
* @return bool
* @return bool
*/
function erreur_argument_macro($macro, $arg_name, $val, $p, $contexte_ok=false) {
if (substr($val, 0, 1) != "'") {

2
paquet.xml

@ -1,7 +1,7 @@
<paquet
prefix="macrosession"
categorie="outil"
version="0.13.0"
version="0.13.1"
etat="stable"
compatibilite="[2.1.0;3.3.*]"
documentation="https://contrib.spip.net/4823"

2
plugin.xml

@ -4,7 +4,7 @@
<icon>images/macrosession-128.png</icon>
<auteur>JLuc</auteur>
<licence>GPL</licence>
<version>0.13.0</version>
<version>0.13.1</version>
<etat>stable</etat>
<description>
Macros SPIP #_SESSION, #_SESSION_SI, #_AUTORISER_SI, etc

Loading…
Cancel
Save