_ACCESS_FILE_NAME
public
mixed
_ACCESS_FILE_NAME
= '.htaccess'
public
mixed
_ACCESS_FILE_NAME
= '.htaccess'
Activer le changement rapide de statut sur les listes d'objets ?
public
bool
_ACTIVER_PUCE_RAPIDE
= \true
Peut ralentir un site sur des listes très longues.
public
mixed
_AGE_CACHE_ATIME
= 3600
public
mixed
_AJAX
= (isset($_SERVER['HTTP_X_REQUESTED_WITH']) || !empty($_REQUEST['var_ajax_redir']) || !empty($_REQUEST['var_ajaxcharset']) || !empty($_REQUEST['var_ajax'])) && empty($_REQUEST['var_noajax'])
public
mixed
_AJAX
= false
public
mixed
_AUTEURS_DELAI_REJET_NOUVEAU
= 45 * 24 * 3600
public
mixed
_AUTH_USER_FILE
= '.htpasswd'
public
mixed
_AUTO_SELECTION_RUBRIQUE
= \false
public
mixed
_AUTOSAVE_GB_DELAY
= 72 * 3600
public
mixed
_CACHE_CHEMIN
= _DIR_CACHE . 'chemin.txt'
Basculer les contextes ajax en fichier si la longueur d’url est trop grande
public
int
_CACHE_CONTEXTES_AJAX_SUR_LONGUEUR
= 2000
Nombre de caractères
public
mixed
_CACHE_PIPELINES
= _DIR_CACHE . 'charger_pipelines.php'
public
mixed
_CACHE_PLUGINS_FCT
= _DIR_CACHE . 'charger_plugins_fonctions.php'
public
mixed
_CACHE_PLUGINS_OPT
= _DIR_CACHE . 'charger_plugins_options.php'
public
mixed
_CACHE_PLUGINS_PATH
= _DIR_CACHE . 'charger_plugins_chemins.php'
Fichier cache pour le navigateur de rubrique du bandeau
public
mixed
_CACHE_RUBRIQUES
= _DIR_TMP . 'menu-rubriques-cache.txt'
Nombre maxi de rubriques enfants affichées pour chaque rubrique du navigateur de rubrique du bandeau
public
mixed
_CACHE_RUBRIQUES_MAX
= 500
Une Regexp repérant une chaine produite par le compilateur, souvent utilisée pour faire de la concaténation lors de la compilation plutôt qu'à l'exécution, i.e. pour remplacer 'x'.'y' par 'xy'
public
mixed
_CODE_QUOTE
= ",^(\n//[^\n]*\n)? *'(.*)' *\$,"
public
mixed
_CONNECT_RETRY_DELAY
= 30
public
array<string|int, string>
_CONTEXTE_IGNORE_LISTE_VARIABLES
= ['^var_', '^PHPSESSID$', '^fbclid$', '^utm_']
Liste (regexp) de noms de variables à ignorer d’une URI
public
mixed
_COPIE_LOCALE_MAX_SIZE
= 33554432
public
mixed
_DATA_SOURCE_MAX_SIZE
= 2 * 1048576
public
mixed
_debut_urls_page
= \get_spip_script('./') . '?'
Le charset par défaut lors de l'installation
public
mixed
_DEFAULT_CHARSET
= 'utf-8'
public
mixed
_DEFAULT_LOCKTIME
= 60
public
mixed
_DELAI_CACHE_resultats
= 600
public
mixed
_DELAI_RECUPERER_URL_CACHE
= 3600
public
mixed
_DIR_AIDE
= _DIR_CACHE . 'aide/'
public
mixed
_DIR_CACHE
= $ti . 'cache/'
public
mixed
_DIR_CACHE_XML
= _DIR_CACHE . 'xml/'
public
mixed
_DIR_CHMOD
= $pi
public
mixed
_DIR_CONNECT
= $pi
public
mixed
_DIR_DB
= _DIR_ETC . 'bases/'
public
mixed
_DIR_DUMP
= $ti . 'dump/'
public
mixed
_DIR_ETC
= $pi
public
mixed
_DIR_IMG
= $pa
public
mixed
_DIR_IMG_ICONES
= _DIR_LOGOS . 'icones/'
le nom du repertoire des bibliotheques JavaScript du prive
public
mixed
_DIR_JAVASCRIPT
= \_DIR_RACINE . 'prive/' . \_JAVASCRIPT
public
mixed
_DIR_LIB
= _DIR_RACINE . 'lib/'
public
mixed
_DIR_LOG
= _DIR_TMP . 'log/'
public
mixed
_DIR_LOGOS
= $pa
public
mixed
_DIR_PLUGINS
= _DIR_RACINE . 'plugins/'
public
mixed
_DIR_PLUGINS_AUTO
= \_DIR_PLUGINS . 'auto/'
public
mixed
_DIR_PLUGINS_DIST
= _DIR_RACINE . 'plugins-dist/'
Chemin relatif pour aller à la racine
public
mixed
_DIR_RACINE
= \_DIR_RESTREINT ? '' : '../'
Chemin relatif pour aller dans ecrire vide si on est dans ecrire, 'ecrire/' sinon
public
mixed
_DIR_RESTREINT
= \is_dir($ecrire) ? $ecrire : ''
public
mixed
_DIR_SESSIONS
= $ti . 'sessions/'
public
mixed
_DIR_SKELS
= _DIR_CACHE . 'skel/'
public
mixed
_DIR_TMP
= $ti
public
mixed
_DIR_TRANSFERT
= $ti . 'upload/'
public
mixed
_DIR_VAR
= $ta
public
mixed
_DIR_VENDOR
= _DIR_RACINE . 'vendor/'
public
mixed
_DIRECT_CRON_FORCE
= true
public
mixed
_DIRECT_CRON_FORCE
= true
Définit le doctype de l’aide en ligne
public
mixed
_DOCTYPE_AIDE
= "<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Frameset//EN' 'http://www.w3.org/TR/1999/REC-html401-19991224/frameset.dtd'>"
Définit le doctype de l’espace privé
public
mixed
_DOCTYPE_ECRIRE
= "<!DOCTYPE html>\n"
public
mixed
_DOCTYPE_RSS
= 'http://www.rssboard.org/rss-0.91.dtd'
public
mixed
_DUREE_CACHE_DEFAUT
= 24 * 3600
public
mixed
_DUREE_COOKIE_ADMIN
= 14 * 24 * 3600
Indique que SPIP est chargé
public
mixed
_ECRIRE_INC_VERSION
= '1'
Cela permet des tests de sécurités pour les fichiers PHP de SPIP et des plugins qui peuvent vérifier que SPIP est chargé et donc que les fichiers ne sont pas appelés en dehors de l'usage de SPIP
public
mixed
_ECRIRE_INSTALL
= '1'
Drapeau indiquant que l'on est dans l'espace privé
public
mixed
_ESPACE_PRIVE
= \true
public
mixed
_EXTENSION_SQUELETTES
= 'html'
Regexp d'extraction des informations d'un intervalle de compatibilité
public
mixed
_EXTRAIRE_INTERVALLE
= ',^[\[\(\]]([0-9.a-zRC\s\-]*)[;]([0-9.a-zRC\s\-\*]*)[\]\)\[]$,'
public
mixed
_EXTRAIRE_LIEN
= ',^\s*(?:' . \_PROTOCOLES_STD . '):?/?/?\s*$,iS'
public
mixed
_FILE_CHMOD
= @is_readable($f = _DIR_CHMOD . _FILE_CHMOD_INS . '.php') ? $f : false
public
mixed
_FILE_CHMOD_INS
= 'chmod'
public
mixed
_FILE_CHMOD_TMP
= _DIR_CHMOD . _FILE_CHMOD_INS . _FILE_TMP_SUFFIX
public
mixed
_FILE_CONNECT
= @is_readable($f = _DIR_CONNECT . _FILE_CONNECT_INS . '.php') ? $f : false
public
mixed
_FILE_CONNECT_INS
= 'connect'
public
mixed
_FILE_CONNECT_TMP
= _DIR_CONNECT . _FILE_CONNECT_INS . _FILE_TMP_SUFFIX
public
mixed
_FILE_LDAP
= 'ldap.php'
public
mixed
_FILE_LOG
= 'spip'
public
mixed
_FILE_LOG_SUFFIX
= '.log'
public
mixed
_FILE_META
= $ti . 'meta_cache.php'
public
mixed
_FILE_OPTIONS
= ''
public
mixed
_FILE_TMP
= '_install'
public
mixed
_FILE_TMP_SUFFIX
= '.tmp.php'
public
mixed
_HEADER_COMPOSED_BY
= 'Composed-By: SPIP'
public
mixed
_HEADER_VARY
= 'Vary: Cookie, Accept-Encoding'
public
mixed
_IMG_ADMIN_MAX_WIDTH
= 768
public
mixed
_IMG_GD_MAX_PIXELS
= isset($GLOBALS['meta']['max_taille_vignettes']) && $GLOBALS['meta']['max_taille_vignettes'] ? $GLOBALS['meta']['max_taille_vignettes'] : 0
public
mixed
_IMG_GD_QUALITE
= _IMG_QUALITE
public
mixed
_IMG_QUALITE
= 85
public
mixed
_INC_DISTANT_CONNECT_TIMEOUT
= 10
public
mixed
_INC_DISTANT_CONTENT_ENCODING
= 'gzip'
public
mixed
_INC_DISTANT_MAX_SIZE
= 2097152
public
mixed
_INC_DISTANT_USER_AGENT
= 'SPIP-' . $GLOBALS['spip_version_affichee'] . ' (' . $GLOBALS['home_server'] . ')'
public
mixed
_INC_DISTANT_VERSION_HTTP
= 'HTTP/1.0'
public
mixed
_IS_BOT
= isset($_SERVER['HTTP_USER_AGENT']) && \preg_match(
// mots generiques
',bot|slurp|crawler|spider|webvac|yandex|' . 'MSIE 6\.0|' . '80legs|accoona|AltaVista|ASPSeek|Baidu|Charlotte|EC2LinkFinder|eStyle|facebook|flipboard|hootsuite|FunWebProducts|Google|Genieo|INA dlweb|InfegyAtlas|Java VM|LiteFinder|Lycos|MetaURI|Moreover|Rambler|Scooter|ScrubbyBloglines|Yahoo|Yeti' . ',i',
(string) $_SERVER['HTTP_USER_AGENT']
)
public
mixed
_IS_CLI
= !isset($_SERVER['HTTP_HOST']) && !\strlen((string) $_SERVER['DOCUMENT_ROOT']) && !empty($_SERVER['argv']) && empty($_SERVER['REQUEST_METHOD'])
Nom du repertoire des bibliotheques JavaScript
public
mixed
_JAVASCRIPT
= 'javascript/'
public
mixed
_JQ_MAX_JOBS_EXECUTE
= 200
public
mixed
_JQ_MAX_JOBS_TIME_TO_EXECUTE
= min($max_time, 15)
public
mixed
_JQ_NEXT_JOB_TIME_FILENAME
= _DIR_TMP . 'job_queue_next.txt'
public
mixed
_JQ_PENDING
= 0
public
mixed
_JQ_SCHEDULED
= 1
public
mixed
_LANGUE_PAR_DEFAUT
= 'fr'
public
mixed
_LIVRER_FICHIER_BASE_TEMPS_TELECHARGEMENT
= 600
Utiliser spip_logger()->alert()
public
mixed
_LOG_ALERTE_ROUGE
= 1
Utiliser spip_logger()->warning()
public
mixed
_LOG_AVERTISSEMENT
= 4
Utiliser spip_logger()->critical()
public
mixed
_LOG_CRITIQUE
= 2
Utiliser spip_logger()->debug()
public
mixed
_LOG_DEBUG
= 7
Utiliser spip_logger()->error()
public
mixed
_LOG_ERREUR
= 3
Niveau maxi d'enregistrement des logs
public
LogLevel::*
_LOG_FILTRE_GRAVITE
= \Psr\Log\LogLevel::NOTICE
Utiliser spip_logger()->emergency()
public
mixed
_LOG_HS
= 0
Utiliser spip_logger()->info()
public
mixed
_LOG_INFO
= 6
Utiliser spip_logger()->notice()
public
mixed
_LOG_INFO_IMPORTANTE
= 5
public
mixed
_LOGIN_TROP_COURT
= 4
public
mixed
_LOGIN_TROP_COURT
= 4
public
mixed
_MARQUEUR_POST_IMPORTMAP
= '<!--.importmap-->'
public
mixed
_MARQUEUR_POST_INIT
= '<!--.initjs-->'
public
mixed
_MAX_LOG
= 100
public
mixed
_MESSAGE_DOCTYPE
= '<!-- SPIP CORRIGE -->'
public
mixed
_META_CACHE_TIME
= 1 << 24
public
mixed
_MYSQL_NOPLANES
= \true
public
mixed
_MYSQL_RE_SHOW_TABLE
= '/^[^(),]*\(((?:[^()]*\((?:[^()]*\([^()]*\))?[^()]*\)[^()]*)*[^()]*)\)[^()]*$/'
public
mixed
_NAME_LOCK
= 'spip_nfs_lock'
public
mixed
_NB_SESSIONS_MAX
= 100
public
mixed
_NOM_CONFIG
= 'mes_options'
Nom du dossier images
public
mixed
_NOM_IMG_PACK
= 'images/'
Nom du repertoire des fichiers Permanents Accessibles par http://
public
mixed
_NOM_PERMANENTS_ACCESSIBLES
= 'IMG/'
Nom du repertoire des fichiers Permanents Inaccessibles par http://
public
mixed
_NOM_PERMANENTS_INACCESSIBLES
= 'config/'
Nom du repertoire des fichiers Temporaires Accessibles par http://
public
mixed
_NOM_TEMPORAIRES_ACCESSIBLES
= 'local/'
Nom du repertoire des fichiers Temporaires Inaccessibles par http://
public
mixed
_NOM_TEMPORAIRES_INACCESSIBLES
= 'tmp/'
public
mixed
_OS_SERVEUR
= ''
Activer des outils pour développeurs ?
public
mixed
_OUTILS_DEVELOPPEURS
= \false
public
mixed
_PAGINATION_NOMBRE_LIENS_MAX
= 10
public
mixed
_PAGINATION_NOMBRE_LIENS_MAX_ECRIRE
= 5
public
mixed
_PASS_LONGUEUR_MINI
= 6
public
mixed
_PASS_LONGUEUR_MINI
= 6
public
mixed
_PHP_MAX
= '8.4.99'
version PHP minimum exigee (cf. inc/utils)
public
mixed
_PHP_MIN
= '8.2.0'
public
mixed
_PIPELINE_SUFFIX
= \test_espace_prive() ? '_prive' : ''
public
mixed
_PORT_HTTP_STANDARD
= '80'
public
mixed
_PORT_HTTPS_STANDARD
= '443'
public
mixed
_PROTOCOLES_STD
= 'http|https|ftp|mailto|webcal'
public
mixed
_RACCOURCI_CHAPO
= '/^(\W*)(\W*)(\w*\d+([?#].*)?)$/'
public
mixed
_RACCOURCI_URL
= '/^\s*(\w*?)\s*(\d+)(\?(.*?))?(#([^\s]*))?\s*$/S'
public
mixed
_REGEXP_CONCAT_NON_VIDE
= "/^(.*)[.]\\s*'[^']+'\\s*\$/"
public
mixed
_REGEXP_COND_NONVIDE_VIDE
= "/^[(](.*)[?]\\s*('[^']+')\\s*:\\s*''\\s*[)]\$/"
public
mixed
_REGEXP_COND_VIDE_NONVIDE
= "/^[(](.*)[?]\\s*''\\s*:\\s*('[^']+')\\s*[)]\$/"
public
mixed
_REGEXP_COPIE_LOCALE
= ',' . \preg_replace('@^https?:@', 'https?:', $GLOBALS['meta']['adresse_site'] ?? '') . '/?spip.php[?]action=acceder_document.*file=(.*)$,'
public
mixed
_REGEXP_DOCTYPE
= '/^((?:<\001?[?][^>]*>\s*)*(?:<!--.*?-->\s*)*)*<!DOCTYPE\s+(\w+)\s+(\w+)\s*([^>]*)>\s*/s'
public
mixed
_REGEXP_ENTITY_DECL
= '/^<!ENTITY\s+(%?)\s*(' . \_SUB_REGEXP_SYMBOL . '+;?)\s+(' . \_REGEXP_TYPE_XML . ')?\s*(' . "('([^']*)')" . '|("([^"]*)")' . '|\s*(%' . \_SUB_REGEXP_SYMBOL . '+;)\s*' . ')\s*(--.*?--)?("([^"]*)")?\s*>\s*(.*)$/s'
public
mixed
_REGEXP_ENTITY_DEF
= '/^%(' . \_SUB_REGEXP_SYMBOL . '+);/'
public
mixed
_REGEXP_ENTITY_USE
= '/%(' . \_SUB_REGEXP_SYMBOL . '+);/'
public
mixed
_REGEXP_ID
= '/^[A-Za-z_:]' . \_SUB_REGEXP_SYMBOL . '*$/'
public
mixed
_REGEXP_INCLUDE_USE
= '/^<!\[\s*%\s*([^;]*);\s*\[\s*(.*)$/s'
public
mixed
_REGEXP_NMTOKEN
= '/^' . \_SUB_REGEXP_SYMBOL . '+$/'
public
mixed
_REGEXP_NMTOKENS
= '/^(' . \_SUB_REGEXP_SYMBOL . '+\s*)*$/'
public
mixed
_REGEXP_TYPE_XML
= 'PUBLIC|SYSTEM|INCLUDE|IGNORE|CDATA'
public
mixed
_REGEXP_XML
= '/^(\s*(?:<[?][^x>][^>]*>\s*)?(?:<[?]xml[^>]*>)?\s*(?:<!--.*?-->\s*)*)<(\w+)/s'
public
mixed
_RENOUVELLE_ALEA
= 12 * 3600
le chemin php (absolu) vers les images standard (pour hebergement centralise)
public
mixed
_ROOT_IMG_PACK
= \dirname(__DIR__, 3) . \DIRECTORY_SEPARATOR . 'prive' . \DIRECTORY_SEPARATOR . \_NOM_IMG_PACK
public
mixed
_ROOT_PLUGINS
= _ROOT_RACINE . 'plugins' . DIRECTORY_SEPARATOR
public
mixed
_ROOT_PLUGINS_DIST
= _ROOT_RACINE . 'plugins-dist' . DIRECTORY_SEPARATOR
public
mixed
_ROOT_PLUGINS_SUPPL
= _ROOT_RACINE . str_replace(_DIR_RACINE, '', _DIR_PLUGINS_SUPPL)
chemin absolu vers la racine
public
mixed
_ROOT_RACINE
= \dirname(__DIR__, 3) . \DIRECTORY_SEPARATOR
chemin absolu vers ecrire
public
mixed
_ROOT_RESTREINT
= \SpipLeague\Component\Kernel\app()->getCoreDir()
public
mixed
_separateur_urls_page
= ''
public
mixed
_SERVEUR_SIGNATURE_ACCEPTE_LOCATION_APRES_COOKIE
= 'Apache|Cherokee|nginx'
public
mixed
_SERVEUR_SOFTWARE_ACCEPTE_LOCATION_APRES_COOKIE
= '^(Apache|Cherokee|nginx)'
public
mixed
_SESSION_REJOUER
= true
public
mixed
_SET_HTML_BASE
= true
public
mixed
_SPIP_AFFICHE_MOT_DE_PASSE_MASQUE_PERCENT
= 20
public
mixed
_SPIP_AJAX
= !isset($_COOKIE['spip_accepte_ajax']) ? 1 : ($_COOKIE['spip_accepte_ajax'] != -1 ? 1 : 0)
public
mixed
_spip_attend_invalidation_opcode_cache
= true
public
mixed
_SPIP_CHMOD
= 0777
public
mixed
_SPIP_DUMP
= 'dump@nom_site@@stamp@.xml'
public
mixed
_SPIP_ECRIRE_SCRIPT
= ''
public
mixed
_SPIP_EXTRA_VERSION
= '-beta'
public
mixed
_SPIP_LOCK_MODE
= 1
Argument page, personalisable en cas de conflit avec un autre script
public
mixed
_SPIP_PAGE
= 'page'
L'adresse de base du site ; on peut mettre '' si la racine est gerée par le script de l'espace public, alias index.php
public
mixed
_SPIP_SCRIPT
= 'spip.php'
public
int
_SPIP_SELECT_RUBRIQUES
= 20
Nombre de rubriques maximum du sélecteur de rubriques. Au delà, on bascule sur un sélecteur ajax. mettre 100000 pour desactiver ajax
public
mixed
_SPIP_THEME_PRIVE
= 'spip'
public
mixed
_SPIP_VERSION_ID
= 50000
public
mixed
_SPIP_XML_TAG_SPLIT
= '{<([^:>][^>]*?)>}sS'
Changer les noms des tables ($table_prefix)
public
mixed
_SQL_PREFIXE_TABLE_MYSQL
= '/([,\s])spip_/S'
TODO: Quand tous les appels SQL seront abstraits on pourra l'améliorer
public
mixed
_SQLITE_CHMOD
= _SPIP_CHMOD
public
mixed
_SQLITE_RE_SHOW_TABLE
= '/^[^(),]*\(((?:[^()]*\((?:[^()]*\([^()]*\))?[^()]*\)[^()]*)*[^()]*)\)[^()]*$/'
public
mixed
_SUB_REGEXP_SYMBOL
= '[\w_:.-]'
public
mixed
_SVG_SUPPORTED
= \true
public
mixed
_TAGS_NOM_AUTEUR
= ''
public
mixed
_terminaison_urls_page
= ''
public
mixed
_TEST_DIRS
= '1'
Permettre d'éviter des tests file_exists sur certains hébergeurs
public
mixed
_TEST_FILE_EXISTS
= \preg_match(',(online|free)[.]fr$,', $_ENV['HTTP_HOST'] ?? '')
public
mixed
_TESTER_NOSCRIPT
= "<noscript>\n<div style='display:none;'><img src='" . generer_url_ecrire('test_ajax', 'js=-1') . "' width='1' height='1' alt=''></div></noscript>\n"
Définir le timeout qui peut-être utilisé dans les fonctions de mises à jour qui durent trop longtemps
public
int
_TIME_OUT
= $time + _UPGRADE_TIME_OUT
À utiliser tel que : if (time() >= _TIME_OUT)
public
mixed
_TRAITEMENT_RACCOURCIS
= 'propre(%s, $connect, $Pile[0])'
public
mixed
_TRAITEMENT_TYPO
= 'typo(%s, "TYPO", $connect, $Pile[0])'
public
mixed
_TRAITEMENT_TYPO_SANS_NUMERO
= 'supprimer_numero(typo(%s, "TYPO", $connect, $Pile[0]))'
public
mixed
_TYPO_BALISE
= ',</?[a-z!][^<>]*[' . \preg_quote(\_TYPO_PROTEGER) . '][^<>]*>,imsS'
public
mixed
_TYPO_PROTECTEUR
= "\x01\x02\x03\x04\x05\x06\x07\x08"
public
mixed
_TYPO_PROTEGER
= "!':;?~%-"
Durée en secondes pour relancer les scripts de mises à jour, x secondes avant que la durée d'exécution du script provoque un timeout
public
int
_UPGRADE_TIME_OUT
= 20
public
mixed
_URL_ECRAN_SECURITE
= 'https://git.spip.net/spip-contrib-outils/securite/raw/branch/master/ecran_securite.php'
public
mixed
_VAR_IMAGES
= true
public
mixed
_VAR_INCLURE
= true
Indique le mode de calcul ou d'affichage de la page.
public
mixed
_VAR_MODE
= false
public
mixed
_VAR_NOCACHE
= true
public
mixed
_VAR_PREVIEW
= true
public
mixed
_VAR_URLS
= true
public
mixed
_VAR_URLS
= true
public
mixed
_VERSION_ARCHIVE
= '1.3'
public
mixed
_VERSIONS_LISTE
= 'spip_versions_list.json'
public
mixed
_VERSIONS_SERVEUR
= 'https://www.spip.net/spip_loader.api'
public
mixed
_ZCORE_EXCLURE_PATH
= '\bprive|\bsquelettes-dist' . (defined('_DIR_PLUGIN_DIST') ? '|\b' . rtrim((string) _DIR_PLUGIN_DIST, '/') : '')
public
mixed
AUTEURS_MIN_REDAC
= '0minirezo,1comite,5poubelle'
Fin de la partie alternative après d'une boucle
public
mixed
BALISE_ALT_BOUCLE
= '<//B'
Début de la partie principale d'une boucle
public
mixed
BALISE_BOUCLE
= '<BOUCLE'
Fin de la partie principale d'une boucle
public
mixed
BALISE_FIN_BOUCLE
= '</BOUCLE'
public
mixed
BALISE_IDIOMES
= ',<:(([a-z0-9_]+):)?([a-z0-9_]*)({([^\|=>]*=[^\|>]*)})?((\|[^>]*)?:/?>),iS'
public
mixed
BALISE_IDIOMES_ARGS
= '@^\s*([^= ]*)\s*=\s*((' . \NOM_DE_CHAMP . '[{][^}]*})?[^,]*)\s*,?\s*@s'
public
mixed
BALISE_INCLURE
= '/<INCLU[DR]E[[:space:]]*/S'
public
mixed
BALISE_POLYGLOTTE
= ',<multi>(.*)</multi>,Uims'
Fin de la partie après non optionnelle d'une boucle (toujours affichee)
public
mixed
BALISE_POSTAFF_BOUCLE
= '</BB'
Fin de la partie optionnelle après d'une boucle
public
mixed
BALISE_POSTCOND_BOUCLE
= '</B'
Début de la partie avant non optionnelle d'une boucle (toujours affichee)
public
mixed
BALISE_PREAFF_BOUCLE
= '<BB'
Début de la partie optionnelle avant d'une boucle
public
mixed
BALISE_PRECOND_BOUCLE
= '<B'
Balise complète [...(#TOTO) ... ]
public
mixed
CHAMP_ETENDU
= '/\[([^\[]*?)\(' . \NOM_DE_CHAMP . '([^)]*\)[^]]*)\]/S'
Fonction SQL sur un champ ex: SUM(visites)
public
mixed
CHAMP_SQL_PLUS_FONC
= '`?([A-Z_\/][A-Z_\/0-9.]*)' . \SQL_ARGS . '?`?'
Indique s'il faut commenter le code produit
public
mixed
CODE_COMMENTE
= \true
Compilation d'une boucle non recursive.
public
mixed
CODE_CORPS_BOUCLE
= '%s
if (defined("_BOUCLE_PROFILER")) $timer = time()+(float)microtime();
$t0 = "";
// REQUETE
$iter = Spip\Compilateur\Iterateur\Factory::create(
"%s",
%s,
array(%s)
);
if (!$iter->err()) {
%s%s$SP++;
// RESULTATS
%s
%s$iter->free();
}%s
if (defined("_BOUCLE_PROFILER")
AND 1000*($timer = (time()+(float)microtime())-$timer) > _BOUCLE_PROFILER)
spip_logger("profiler")->warning(intval(1000*$timer)."ms %s");
return $t0;'
La constante donne le cadre systématique du code:
Code PHP d'exécution d'une balise dynamique
public
mixed
CODE_EXECUTER_BALISE
= "executer_balise_dynamique('%s',\n\tarray(%s%s),\n\tarray(%s%s))"
public
mixed
CODE_EXECUTER_BALISE_MODELE
= "executer_balise_dynamique_dans_un_modele('%s',\n\tarray(%s%s),\n\tarray(%s%s))"
Code PHP pour inclure une balise dynamique à l'exécution d'une page
public
mixed
CODE_INCLURE_BALISE
= '<' . '?php
include_once("%s");
if ($lang_select = "%s") $lang_select = lang_select($lang_select);
inserer_balise_dynamique(balise_%s_dyn(%s), array(%s));
if ($lang_select) lang_select();
?' . '>'
Repérer un code ne calculant rien, meme avec commentaire
public
mixed
CODE_MONOTONE
= ",^(\n//[^\n]*\n)?\\(?'([^'])*'\\)?\$,"
Code de compilation pour la balise `#PAGINATION`
public
mixed
CODE_PAGINATION
= '%s($Numrows["%s"]["grand_total"],
%s,
isset($Pile[0][%4$s])?$Pile[0][%4$s]:intval(_request(%4$s)),
%5$s, %6$s, %7$s, %8$s, array(%9$s))'
Le code produit est trompeur, car les modèles ne fournissent pas Pile[0].
On produit un appel à _request
si on ne l'a pas, mais c'est inexact:
l'absence peut-être due à une faute de frappe dans le contexte inclus.
Code d'appel à un <INCLURE>
public
mixed
CODE_RECUPERER_FOND
= 'recuperer_fond(%s, %s, array(%s), %s)'
Code PHP pour un squelette (aussi pour #INCLURE, #MODELE #LES_AUTEURS)
public
mixed
IMAGETYPE_SVG
= 19
public
mixed
IMG_SVG
= 128
Modules par défaut pour la traduction.
public
mixed
MODULES_IDIOMES
= 'public|spip|ecrire'
Constante utilisée par le compilateur et le décompilateur sa valeur etant traitée par inc_traduire_dist
Expression pour trouver un identifiant de boucle
public
mixed
NOM_DE_BOUCLE
= '[0-9]+|[-_][-_.a-zA-Z0-9]*'
Nom d'une balise #TOTO
public
mixed
NOM_DE_CHAMP
= '#((' . \NOM_DE_BOUCLE . "):)?(([A-F]*[G-Z_][A-Z_0-9]*)|[A-Z_]+)\\b(\\*{0,2})"
Écriture alambiquée pour rester compatible avec les hexadecimaux des vieux squelettes
Expression pour trouver le type de boucle (TABLE autre_table ?)
public
mixed
SPEC_BOUCLE
= '/\s*\(\s*([^\s?)]+)(\s*[^)?]*)([?]?)\)/'
Masquer les warning
public
mixed
SPIP_ERREUR_REPORT
= \E_ALL ^ \E_NOTICE ^ \E_DEPRECATED
public
mixed
spip_interdire_cache
= true
public
mixed
SPIP_SQLITE3_ASSOC
= PDO::FETCH_ASSOC
public
mixed
SPIP_SQLITE3_BOTH
= PDO::FETCH_BOTH
public
mixed
SPIP_SQLITE3_NUM
= PDO::FETCH_NUM
Version de l'API SQL
public
mixed
SQL_ABSTRACT_VERSION
= 1
Champ sql dans parenthèse ex: (id_article)
public
mixed
SQL_ARGS
= '(\([^)]*\))'
Indique un début de boucle récursive
public
mixed
TYPE_RECURSIF
= 'boucle'
Mise à jour des données si envoi via formulaire
enregistre_modif_plugin() : mixed
Fonction d'initialisation avant l'activation des plugins
action_activer_plugins_dist() : mixed
Vérifie les droits et met à jour les méta avant de lancer l'activation des plugins
Action pour lier 2 objets entre eux avec en option un qualificatif
action_ajouter_lien_dist([null|string $arg = null ]) : mixed
L'argument attendu est de la forme :
objet1-id1-objet2-id2
(type d'objet, identifiant)objet1-id1-objet2-id2-qualif-valeur_qualif
pour définir une qualification en même temps
La table de liaison est celle de l'objet passé en premier argumentClé des arguments. En absence utilise l'argument de l'action sécurisée.
Annuler un travail
action_annuler_job_dist() : mixed
action_api_transmettre_dist([mixed $arg = null ]) : mixed
action_api_transmettre_fail(mixed $arg) : never
Retour d'authentification pour les SSO
action_auth_dist() : mixed
Calculer la taille du cache ou du cache image pour l'afficher en ajax sur la page d'admin de SPIP
action_calculer_taille_cache_dist([string|null $arg = null ]) : mixed
Si l'argument reçu est 'images', c'est la taille du cache _DIR_VAR qui est calculé, sinon celle du cache des squelettes (approximation)
Argument attendu. En absence utilise l'argument de l'action sécurisée.
Calculer la taille d'un dossier, sous dossiers inclus
calculer_taille_dossier(string $dir) : int
Répertoire dont on souhaite évaluer la taille
Taille en octets
Confirmer un changement d'email
action_confirmer_email_dist() : mixed
Action de confirmation d'une inscription
action_confirmer_inscription_dist() : mixed
Point d'entrée pour changer de langue
action_converser_dist() : mixed
Pas de secu si espace public ou login ou installation mais alors on n'accède pas à la base, on pose seulement le cookie.
Cette fonction prépare le travail de changement de langue en récupérant la bonne variable de langue
action_converser_changer_langue(bool $update_session) : string
Cette fonction effectue le travail de changement de langue
action_converser_post(string $lang[, bool $ecrire = false ]) : mixed
Cette fonction traite les cookies posés au moment de l'authentification standard ou vérifie que l'authentification HTTP est correcte
action_cookie_dist([string|null $set_cookie_admin = null ][, string|null $change_session = null ]) : mixed
Lever les blocages d'édition pour l'utilisateur courant
action_debloquer_edition_dist() : mixed
Action de désinstallation d'un plugin
action_desinstaller_plugin_dist() : mixed
L'argument attendu est le préfixe du plugin à désinstaller.
Action d'édition d'un article dans la base de données dont l'identifiant est donné en paramètre de cette fonction ou en argument de l'action sécurisée
action_editer_article_dist([null|int $arg = null ]) : array<string|int, mixed>
Si aucun identifiant n'est donné, on crée alors un nouvel article, à condition que la rubrique parente (id_rubrique) puisse être obtenue (avec _request())
Identifiant de l'article. En absence utilise l'argument de l'action sécurisée.
Liste (identifiant de l'article, texte d'erreur éventuel)
Modifier un article
article_modifier(int $id_article[, array<string|int, mixed>|null $set = null ]) : string|null
Appelle toutes les fonctions de modification d'un article
Identifiant de l'article à modifier
Couples (colonne => valeur) de données à modifier. En leur absence, on cherche les données dans les champs éditables qui ont été postés (via collecter_requests())
Insérer un nouvel article en base de données
article_inserer(int $id_rubrique[, array<string|int, mixed>|null $set = null ]) : int
En plus des données enregistrées par défaut, la fonction :
Identifiant de la rubrique parente
Identifiant du nouvel article
Modification des statuts d'un article
article_instituer(int $id_article, array<string|int, mixed> $c[, bool $calcul_rub = true ]) : string
Modifie la langue, la rubrique ou les statuts d'un article.
Identifiant de l'article
Couples (colonne => valeur) des données à instituer Les colonnes 'statut' et 'id_parent' sont liées, car un admin restreint peut deplacer un article publié vers une rubrique qu'il n'administre pas
True pour changer le statut des rubriques concernées si un article change de statut ou est déplacé dans une autre rubrique
Chaîne vide
Fabrique la requête de modification de l'article, avec champs hérités
editer_article_heritage(int $id_article, int $id_rubrique, string $statut, array<string|int, mixed> $champs[, bool $cond = true ]) : void|null
Identifiant de l'article
Identifiant de la rubrique parente
Statut de l'article (prop, publie, ...)
Couples (colonne => valeur) des champs qui ont été modifiés
True pour actualiser le statut et date de publication de la rubrique parente si nécessaire
null si aucune action à faire void sinon
Réunit les textes decoupés parce que trop longs
trop_longs_articles() : mixed
Éditer ou créer un auteur
action_editer_auteur_dist([array<string|int, mixed>|null $arg = null ]) : array<string|int, mixed>
Si aucun identifiant d'auteur n'est donné, on crée alors un nouvel auteur.
Identifiant de l'auteur. En absence utilise l'argument de l'action sécurisée.
Liste (identifiant de l'auteur, texte d'erreur éventuel)
Insérer un auteur en base
auteur_inserer([string|null $source = null ][, array<string|int, mixed>|null $set = null ]) : int
D'où provient l'auteur créé ? par défaut 'spip', mais peut être 'ldap' ou autre.
Identifiant de l'auteur créé
Modifier un auteur
auteur_modifier(int $id_auteur[, array<string|int, mixed>|null $set = null ][, bool $force_update = false ]) : string|null
Appelle toutes les fonctions de modification d'un auteur
Identifiant de l'auteur
Couples (colonne => valeur) de données à modifier. En leur absence, on cherche les données dans les champs éditables qui ont été postés (via collecter_requests())
Permet de forcer la maj en base des champs fournis, sans passer par instancier. Utilise par auth/spip
Associer un auteur à des objets listés
auteur_associer(int $id_auteur, array<string|int, mixed> $objets[, array<string|int, mixed>|null $qualif = null ]) : string
Identifiant de l'auteur
Liste sous la forme array($objet=>$id_objets,...)
.
$id_objets
peut lui-même être un scalaire ou un tableau pour une liste
d'objets du même type.
Optionnellement indique une qualification du (des) lien(s) qui sera alors appliquée dans la foulée. En cas de lot de liens, c'est la même qualification qui est appliquée à tous
Dissocier un auteur des objets listés
auteur_dissocier(int $id_auteur, array<string|int, mixed> $objets) : string
Identifiant de l'auteur
Liste sous la forme array($objet=>$id_objets,...)
.
$id_objets
peut lui-même être un scalaire ou un tableau pour une liste
d'objets du même type.
Un *
pour $id_auteur,$objet,$id_objet permet de traiter par lot
Qualifier le lien d'un auteur avec les objets listés
auteur_qualifier(int $id_auteur, array<string|int, mixed> $objets, array<string|int, mixed> $qualif) : bool|int
Identifiant de l'auteur
Liste sous la forme array($objet=>$id_objets,...)
.
$id_objets
peut lui-même être un scalaire ou un tableau pour une liste
d'objets du même type.
Un *
pour $id_auteur,$objet,$id_objet permet de traiter par lot
Couples (colonne, valeur) tel que array('vu'=>'oui');
Modifier le statut d'un auteur, ou son login/pass
auteur_instituer(int $id_auteur, array<string|int, mixed> $c[, bool $force_webmestre = false ]) : bool|string
Identifiant de l'auteur
Couples (colonne => valeur) des données à instituer
Autoriser un auteur à passer webmestre (force l'autorisation)
Teste l'existence de la table de liaison xxx_liens d'un objet
objet_associable(string $objet) : array<string|int, mixed>|bool
Objet à tester
Associer un ou des objets à des objets listés
objet_associer(array<string|int, mixed> $objets_source, array<string|int, mixed>|string $objets_lies[, array<string|int, mixed> $qualif = null ]) : bool|int
$objets_source
et $objets_lies
sont de la forme
array($objet=>$id_objets,...)
$id_objets
peut lui même être un scalaire ou un tableau pour une liste d'objets du même type
ou de la forme array("NOT", $id_objets)
pour une sélection par exclusion
Les objets sources sont les pivots qui portent les liens et pour lesquels une table spip_xxx_liens existe (auteurs, documents, mots)
On peut passer optionnellement une qualification du (des) lien(s) qui sera alors appliquée dans la foulée. En cas de lot de liens, c'est la même qualification qui est appliquée a tous
Dissocier un (ou des) objet(s) des objets listés
objet_dissocier(array<string|int, mixed> $objets_source, array<string|int, mixed>|string $objets_lies[, array<string|int, mixed>|null $cond = null ]) : bool|int
$objets_source
et $objets_lies
sont de la forme
array($objet=>$id_objets,...)
$id_objets
peut lui-même être un scalaire ou un tableau pour une liste d'objets du même type
Les objets sources sont les pivots qui portent les liens et pour lesquels une table spip_xxx_liens existe (auteurs, documents, mots)
un * pour $objet, $id_objet permet de traiter par lot seul le type de l'objet source ne peut pas accepter de joker et doit etre explicite
S'il y a des rôles possibles entre les 2 objets, et qu'aucune condition sur la colonne du rôle n'est transmise, on ne supprime que les liens avec le rôle par défaut. Si on veut supprimer tous les rôles, il faut spécifier $cond => array('role' => '*')
Condition du where supplémentaires
À l'exception de l'index 'role' qui permet de sélectionner un rôle ou tous les rôles (*), en s'affranchissant du vrai nom de la colonne.
Qualifier le lien entre un (ou des) objet(s) et des objets listés
objet_qualifier_liens(array<string|int, mixed> $objets_source, array<string|int, mixed>|string $objets_lies, array<string|int, mixed> $qualif) : bool|int
$objets_source et $objets sont de la forme array($objet=>$id_objets,...) $id_objets peut lui meme etre un scalaire ou un tableau pour une liste d'objets du meme type
Les objets sources sont les pivots qui portent les liens et pour lesquels une table spip_xxx_liens existe (auteurs, documents, mots)
un * pour $objet,$id_objet permet de traiter par lot seul le type de l'objet source ne peut pas accepter de joker et doit etre explicite
Trouver les liens entre objets
objet_trouver_liens(array<string|int, mixed> $objets_source, array<string|int, mixed>|string $objets_lies[, array<string|int, mixed>|null $cond = null ]) : array<string|int, mixed>
$objets_source et $objets sont de la forme array($objet=>$id_objets,...) $id_objets peut lui meme etre un scalaire ou un tableau pour une liste d'objets du meme type
Les objets sources sont les pivots qui portent les liens et pour lesquels une table spip_xxx_liens existe (auteurs, documents, mots)
un * pour $objet,$id_objet permet de traiter par lot seul le type de l'objet source ne peut pas accepter de joker et doit etre explicite
renvoie une liste de tableaux decrivant chaque lien dans lequel objet_source et objet_lie sont aussi affectes avec l'id de chaque par facilite ex : array( array('id_document'=>23,'objet'=>'article','id_objet'=>12,'vu'=>'oui', 'document'=>23,'article'=>12) )
Couples (objets_source => identifiants) (objet qui a la table de lien)
Couples (objets_lies => identifiants)
Condition du where supplémentaires
Liste des trouvailles
Nettoyer les liens morts vers des objets qui n'existent plus
objet_optimiser_liens(array<string|int, mixed> $objets_source, array<string|int, mixed>|string $objets_lies) : int
$objets_source et $objets sont de la forme array($objet=>$id_objets,...) $id_objets peut lui meme etre un scalaire ou un tableau pour une liste d'objets du meme type
Les objets sources sont les pivots qui portent les liens et pour lesquels une table spip_xxx_liens existe (auteurs, documents, mots)
un * pour $objet,$id_objet permet de traiter par lot seul le type de l'objet source ne peut pas accepter de joker et doit etre explicite
Dupliquer tous les liens entrant ou sortants d'un objet vers un autre (meme type d'objet, mais id different) si $types est fourni, seuls les liens depuis/vers les types listes seront copies si $exclure_types est fourni, les liens depuis/vers les types listes seront ignores
objet_dupliquer_liens(string $objet, int $id_source, int $id_cible[, array<string|int, mixed> $types = null ][, array<string|int, mixed> $exclure_types = null ]) : int
Nombre de liens copiés
Reordonner les liens sur lesquels on est intervenus
lien_ordonner(string $objet_source, string $primary, string $table_lien, int $id, array<string|int, mixed>|string $objets) : mixed
Une table de lien est-elle triable ? elle doit disposer d'un champ rang_lien pour cela
lien_triables(string $table_lien) : mixed
Fabriquer la condition where pour compter les rangs
lien_rang_where(string $table_lien, string $primary, int|string|array<string|int, mixed> $id_source, string $objet, int|string|array<string|int, mixed> $id_objet[, array<string|int, mixed> $cond = [] ]) : array<string|int, mixed>
Liste des conditions
Supprimer le logo d'un objet
logo_supprimer(string $objet, int $id_objet, string $etat) : mixed
on
ou off
Modifier le logo d'un objet
logo_modifier(string $objet, int $id_objet, string $etat, string|array<string|int, mixed> $source) : string
on
ou off
$_FILE
issu de l'uploadtmp/upload
)Erreur, sinon ''
Migration des logos en documents.
Migrer le site & les logos / tables dans un SPIP 4.x ou 5.x
logo_migrer_en_base(string $objet, int $time_limit) : mixed
Cette migration est effectuée à partir de SPIP 4.0 et la fonction doit être appelée pour chaque plugin qui aurait utilisé des logos sur des objets éditoriaux.
Type d’objet spip, tel que 'article'
Retourne le type de logo tel que `art` depuis le nom de clé primaire de l'objet
MAIS NE PAS SUPPRIMER CAR SERT POUR L'UPGRADE des logos et leur mise en base
type_du_logo(string $_id_objet) : string
C'est par défaut le type d'objet, mais il existe des exceptions historiques
déclarées par la globale $table_logos
Nom de la clé primaire de l'objet
Type du logo
Point d'entrée d'édition d'un objet
action_editer_objet_dist([int $id = null ][, string $objet = null ][, array<string|int, mixed> $set = null ]) : array<string|int, mixed>
On ne peut entrer que par un appel en fournissant $id et $objet ou avec un argument d'action sécurisée de type "objet/id"
Appelle toutes les fonctions de modification d'un objet
objet_modifier(string $objet, int $id[, array<string|int, mixed>|null $set = null ]) : mixed|string
Il peut y avoir une fonction propre au type d'objet :
Retourne une chaîne vide en cas de succès,
et déclenche des notifications selon ce qu'on modifie :
Insère en base un objet générique
objet_inserer(string $objet[, int $id_parent = null ][, array<string|int, mixed>|null $set = null ]) : bool|int
Il peut y avoir une fonction propre au type d'objet :
Retourne le numéro de l'objet en cas de succès,
et déclenche 2 notifications :
Modifie le statut et/ou la date d'un objet
objet_instituer(string $objet, int $id, array<string|int, mixed> $c[, bool $calcul_rub = true ]) : string
$c est un array ('statut', 'id_parent' = changement de rubrique) statut et rubrique sont lies, car un admin restreint peut deplacer un objet publie vers une rubrique qu'il n'administre pas
Fabrique la requete d'institution de l'objet, avec champs herites
objet_editer_heritage(string $objet, int $id, int $id_rubrique, string $statut, array<string|int, mixed> $champs[, bool $cond = true ]) : mixed
Lit un objet donné connu par son id ou par un identifiant textuel unique et renvoie tout ou partie de sa description.
objet_lire(string $objet, int|string $valeur_id[, array<string|int, mixed> $options = [] ]) : array<string|int, mixed>|string|int|bool
Il est possible pour un objet donné de fournir la fonction <objet>_lire_champs
qui renvoie simplement tous les
champs de l'objet concerné sans aucun autre traitement. Sinon, l'appel SQL est réalisé par l'API.
Type d'objet (comme article ou rubrique)
Valeur du champ identifiant
Tableau d'options dont les index possibles sont:
si champs est non fourni ou au format array false : l'objet demande n'existe pas array vide : l'objet existe, mais aucun champ demande n'existe array non vide : objet avec le ou les champs demandes existants (les champs demandes non existant sont absent) si champs est fourni au format string false : l'objet demande n'existe pas OU le champs demande n'existe pas string|int : valeur du champ demande pour l'objet demande
Action d'édition d'une rubrique
action_editer_rubrique_dist([null|int $arg = null ]) : array<string|int, mixed>
Crée la rubrique si elle n'existe pas encore Redirige après l'action sur _request('redirect') si présent
Liste : identifiant de la rubrique, message d'erreur éventuel.
Insérer une rubrique en base
rubrique_inserer(int $id_parent[, array<string|int, mixed>|null $set = null ]) : int
Identifiant de la rubrique parente. 0 pour la racine.
Identifiant de la rubrique crée
Modifier une rubrique en base
rubrique_modifier(int $id_rubrique[, array<string|int, mixed>|null $set = null ]) : bool|string
Identifiant de la rubrique modifiée
Tableau qu'on peut proposer en lieu et place de _request()
Déplace les brèves d'une rubrique dans le secteur d'un nouveau parent
editer_rubrique_breves(int $id_rubrique, int $id_parent[, array<string|int, mixed> $c = [] ]) : bool
Si c'est une rubrique-secteur contenant des brèves, on ne deplace que si $confirme_deplace == 'oui', et change alors l'id_rubrique des brèves en question
Identifiant de la rubrique déplacée
Identifiant du nouveau parent de la rubrique
Informations pour l'institution (id_rubrique, confirme_deplace)
true si le déplacement est fait ou s'il n'y a rien à faire false si la confirmation du déplacement n'est pas présente
Instituer une rubrique (changer son parent)
rubrique_instituer(int $id_rubrique, array<string|int, mixed> $c) : string
Change le parent d'une rubrique, si les autorisations sont correctes, mais n'accèpte pas de déplacer une rubrique dans une de ses filles, tout de même !
Recalcule les secteurs, les langues et déplace les brèves au passage.
Identifiant de la rubrique à instituer
Informations pour l'institution (id_rubrique, confirme_deplace)
Chaîne vide : aucune erreur Chaîne : texte du message d'erreur
Prouver qu'on a les droits de webmestre via un ftp, et devenir webmestre sans refaire l'install
action_etre_webmestre_dist() : mixed
Passe l'administrateur connecté en webmestre.
base_etre_webmestre_dist() : mixed
Executer un travaille immediatement
action_forcer_job_dist() : mixed
Inscrire un nouvel auteur sur la base de son nom et son email
action_inscrire_auteur_dist(string $statut, string $mail_complet, string $nom[, array<string|int, mixed> $options = [] ]) : array<string|int, mixed>|string
L'email est utilisé pour repérer si il existe déjà ou non => identifiant par défaut
Contrôler que le nom (qui sert à calculer le login) est plausible et que l'adresse courriel est valide.
test_inscription_dist(string $statut, string $mail, string $nom, array<string|int, mixed> $options) : array<string|int, mixed>|string
On les normalise au passage (trim etc).
On peut redéfinir cette fonction pour filtrer les adresses mail et les noms, et donner des infos supplémentaires
_T
expliquant le refusOn enregistre le demandeur comme 'nouveau', en memorisant le statut final provisoirement dans le champ prefs, afin de ne pas visualiser les inactifs A sa premiere connexion il obtiendra son statut final.
inscription_nouveau(array<string|int, mixed> $desc) : mixed|string
Retourne un login valide à partir du nom et email donné
test_login(string $nom, string $mail) : string
Un suffixe incrémental est ajouté si le login obtenu existe déjà en base pour ne pas créer de doublon.
Si le login est trop court 'user' est utilisé ; puis donc 'user1', 'user2' etc...
Construction du mail envoyant les identifiants
envoyer_inscription_dist(array<string|int, mixed> $desc, string $nom, string $mode[, array<string|int, mixed> $options = [] ]) : array<string|int, mixed>
Fonction redefinissable qui doit retourner un tableau dont les elements seront les arguments de inc_envoyer_mail
Creer un mot de passe initial aleatoire
creer_pass_pour_auteur(int $id_auteur) : string
Determine le statut d'inscription : si $statut_tmp fourni, verifie qu'il est autorise sinon determine le meilleur statut possible et le renvoie
tester_statut_inscription(string $statut_tmp, int $id) : string
Un nouvel inscrit prend son statut definitif a la 1ere connexion.
confirmer_statut_inscription(array<string|int, mixed> $auteur) : array<string|int, mixed>
Le statut a ete memorise dans prefs (cf test_inscription_dist). On le verifie, car la config a peut-etre change depuis, et pour compatibilite avec les anciennes versions qui n'utilisaient pas "prefs".
Attribuer un jeton temporaire pour un auteur en assurant l'unicite du jeton.
auteur_attribuer_jeton(int $id_auteur) : string
Chaque appel crée un nouveau jeton pour l’auteur et invalide donc le précédent
Lire un jeton temporaire d’un auteur (peut le créer au besoin)
auteur_lire_jeton(int $id_auteur[, bool $autoInit = false ]) : string|null
Cette fonction peut être pratique si plusieurs notifications proches dans la durée sont envoyées au même auteur.
Attribue un jeton à l’auteur s’il n’en a pas déjà.
Retrouver l'auteur par son jeton
auteur_verifier_jeton(string $jeton) : array<string|int, mixed>|bool
Effacer le jeton d'un auteur apres utilisation
auteur_effacer_jeton(int $id_auteur) : bool
Modifier la langue d'un objet
action_instituer_langue_objet_dist(string $objet, int $id, int $id_rubrique, string $changer_lang[, string $serveur = '' ]) : string
Modifie la langue d'une rubrique
action_instituer_langue_rubrique_dist() : mixed
Instituer un objet avec les puces rapides
action_instituer_objet_dist([null|string $arg = null ]) : mixed
Chaîne "objet id statut". En absence utilise l'argument de l'action sécurisée.
Se déloger
action_logout_dist() : mixed
Pour éviter les CSRF on passe par une étape de confirmation si pas de jeton fourni avec un autosubmit js pour ne pas compliquer l'expérience utilisateur
Déconnecte l'utilisateur en cours et le redirige sur l'URL indiquée par l'argument de l'action sécurisée, et sinon sur la page d'accueil de l'espace public.
Generer un jeton de logout personnel et ephemere
generer_jeton_logout(array<string|int, mixed> $session[, null|string $alea = null ]) : string
Verifier que le jeton de logout est bon
verifier_jeton_logout(string $jeton, array<string|int, mixed> $session) : bool
Il faut verifier avec alea_ephemere_ancien si pas bon avec alea_ephemere pour gerer le cas de la rotation d'alea
Action d'affichage en ajax du navigateur de rubrique du bandeau
action_menu_rubriques_dist() : string
Code HTML présentant la liste des rubriques
Retourne une liste HTML des rubriques et rubriques enfants
menu_rubriques([bool $complet = true ]) : string
Code HTML présentant la liste des rubriques
Retourne une liste HTML des rubriques enfants d'une rubrique
bandeau_rubrique(int $id_rubrique, string $titre_rubrique, int $zdecal[, int $profondeur = 1 ]) : string
Identifiant de la rubrique parente
Titre de cette rubrique
Décalage vertical, en nombre d'élément
Profondeur du parent
Code HTML présentant la liste des rubriques
Obtient la liste des rubriques enfants d'une rubrique, prise dans le cache du navigateur de rubrique
extraire_article(int $id_p, array<string|int, mixed> $t) : array<string|int, mixed>
Identifiant de la rubrique parente des articles
Cache des rubriques
Liste des rubriques enfants de la rubrique (et leur titre)
Génère le cache de la liste des rubriques pour la navigation du bandeau
gen_liste_rubriques() : bool
Le cache, qui comprend pour chaque rubrique ses rubriques enfants et leur titre, est :
date_calcul_rubriques
_CACHE_RUBRIQUES
db_art_cache
true.
Action de purge du cache
action_purger_dist([string|null $arg = null ]) : mixed
L'argument peut être :
Argument attendu. En absence utilise l'argument de l'action sécurisée.
Purger la liste des travaux en attente
action_purger_queue_dist() : mixed
Script utile pour recalculer une URL symbolique dès son changement
action_redirect_dist() : mixed
Cette action est appelé par les boutons 'Voir en ligne' ou par
le fichier .htaccess
activé lors d'une URL du genre : http://site/1234
Retourne l’URL de l’objet sur lequel on doit rediriger
calculer_url_redirect_entite(string $type, int $id, string $var_mode) : string|null
On met en cache les calculs (si memoization), et on ne donne pas l’URL si la personne n’y a pas accès
Définir le lien de traduction vers un objet de réference
action_referencer_traduction_dist(string $objet, int $id_objet, int $id_trad) : bool
Plusieurs cas :
Type d'objet
Identifiant de l'objet
Identifiant de la référence de traduction
Relancer une inscription
action_relancer_inscription_dist() : mixed
Action pour poser une variable de session SPIP
action_session_dist() : mixed
Poster sur cette action en indiquant les clés var
et val
Utilisé par exemple par le script javascript 'autosave' pour sauvegarder les formulaires en cours d'édition
Action pour dissocier 2 objets entre eux avec en option un qualificatif
action_supprimer_lien_dist([null|string $arg = null ]) : mixed
L'argument attendu est de la forme :
objet1-id1-objet2-id2
(type d'objet, identifiant)objet1-id1-objet2-id2-qualif-valeur_qualif
pour définir une qualification en même temps
La table de liaison est celle de l'objet passé en premier argumentClé des arguments. En absence utilise l'argument de l'action sécurisée.
Effacer une rubrique
action_supprimer_rubrique_dist([null|int $id_rubrique = null ]) : mixed
Tester les capacités du serveur à utiliser une librairie graphique
action_tester_dist() : mixed
L'argument transmis dans la clé arg
est le type de librairie parmi
gd2 ou autre librairie prise en charge par plugin
L'action crée une vignette en utilisant la librairie indiquée puis redirige sur l'image ainsi créée (sinon sur une image d'echec).
Interception très probable d'une impossibilité de créer l'image demandée dans le buffer de ob_start()
action_tester_taille_error_handler(string $output) : string
Si c'est le cas, on redirige sur la page prévue, testant un autre cas de traitement
Sortie du buffer
Sortie du buffer
Tester nos capacités à redimensionner des images avec GD2 (taille mémoire)
action_tester_taille_dist() : mixed
Ce test par dichotomie permet de calculer la taille (en pixels) de la plus grande image traitable. Ce test se relance jusqu'à trouver cette taille.
La clé arg
attendue est une chaîne indiquant les valeurs minimum et
maximum de taille à tester tel que '3000' (maximum) ou '3000-5000'
(minimum-maximum)
Fonction principale d'authentification du module auth/ldap
auth_ldap_dist(string $login, string $pass[, string $serveur = '' ][, bool $phpauth = false ]) : array<string|int, mixed>|bool
Si la connexion est autorisee, on renvoie pour enregistrement en session, en plus des champs SQL habituels, les informations de connexion de l'utilisateur (DN et password). Cela permettra de se binder en cours de session sous son identite specifique pour les operations necessitant des privileges particuliers. TODO: Gerer une constante de conf qui permette de choisir entre ce comportement et tout faire avec le compte generique.
Connexion à l'annuaire LDAP
auth_ldap_connect([string $serveur = '' ]) : array<string|int, mixed>
Il faut passer par spip_connect()
pour avoir les info
donc potentiellement indiquer un serveur
meme si dans les fait cet argument est toujours vide
Retrouver un login, et vérifier son pass si demandé par `$checkpass`
auth_ldap_search(string $login, string $pass[, bool $checkpass = true ][, string $serveur = '' ]) : string
Le login trouvé ou chaine vide si non trouvé
Retrouver un DN depuis LDAP
auth_ldap_retrouver(string $dn[, array<string|int, mixed> $desc = [] ][, string $serveur = '' ]) : array<string|int, mixed>
Retrouver le login de quelqu'un qui cherche à se loger
auth_ldap_retrouver_login(string $login[, string $serveur = '' ]) : string
Vérification de la validité d'un mot de passe pour le mode d'auth concerné
auth_ldap_verifier_pass(string $login, string $new_pass[, int $id_auteur = 0 ][, string $serveur = '' ]) : string
C'est ici que se font éventuellement les vérifications de longueur mini/maxi ou de force.
Le login de l'auteur : permet de vérifier que pass et login sont différents même à la creation lorsque l'auteur n'existe pas encore
Si auteur existant déjà
Message d'erreur si login non valide, chaîne vide sinon
Informer du droit de modifier ou non le pass
auth_ldap_autoriser_modifier_pass([string $serveur = '' ]) : bool
On ne peut pas détecter à l'avance si l'autorisation sera donnée, il faudra informer l'utilisateur a posteriori si la modif n'a pas pu se faire.
Pour un auteur LDAP, a priori toujours true, à conditiion que le serveur l'autorise: par exemple, pour OpenLDAP il faut avoir dans slapd.conf:
access to attr=userPassword
by self write
...
Fonction de modification du mot de passe
auth_ldap_modifier_pass(string $login, string $new_pass, int $id_auteur[, string $serveur = '' ]) : bool
On se bind au LDAP cette fois sous l'identité de l'utilisateur, car le compte générique defini dans config/ldap.php n'a généralement pas (et ne devrait pas avoir) les droits suffisants pour faire la modification.
Informe du succès ou de l'echec du changement du mot de passe
Main routine called from an application using this include.
Use hash('sha256', $str)
spip_sha256(string $str) : string
General usage: require_once('sha256.inc.php'); $hashstr = spip_sha256('abc');
Chaîne dont on veut calculer le SHA
Le SHA de la chaîne
Authentifie et si ok retourne le tableau de la ligne SQL de l'utilisateur Si risque de secu repere a l'installation retourne False
auth_spip_dist(string $login, string $pass[, string $serveur = '' ][, bool $phpauth = false ][, string $fichier_cles = '' ]) : array<string|int, mixed>|bool
Reinitialiser le secret des auth quand il est perdu si aucun webmestre n'a de backup Si force=true, on va forcer la reinit (si il est perdu) meme si des webmestres ont un backup
auth_spip_initialiser_secret([bool $force = false ]) : bool
Si on a pas perdu le secret des auth (le fichier config/cle.php est toujouts la et contient la cle), la fonction ne fait rien car réinitialiser le secret des auth invalide tous les mots de passe
Completer le formulaire de login avec le js ou les saisie specifiques a ce mode d'auth
auth_spip_formulaire_login(array<string|int, mixed> $flux) : array<string|int, mixed>
Informer du droit de modifier ou non son login
auth_spip_autoriser_modifier_login([string $serveur = '' ]) : bool
toujours true pour un auteur cree dans SPIP
Verification de la validite d'un login pour le mode d'auth concerne
auth_spip_verifier_login(string $new_login[, int $id_auteur = 0 ][, string $serveur = '' ]) : string
si auteur existant deja
message d'erreur si login non valide, chaine vide sinon
Modifier le login d'un auteur SPIP
auth_spip_modifier_login(string $new_login, int $id_auteur[, string $serveur = '' ]) : bool
Retrouver le login de quelqu'un qui cherche a se loger Reconnaitre aussi ceux qui donnent leur nom ou email au lieu du login
auth_spip_retrouver_login(string $login[, string $serveur = '' ]) : string
Informer du droit de modifier ou non le pass
auth_spip_autoriser_modifier_pass([string $serveur = '' ]) : bool
toujours true pour un auteur cree dans SPIP
Verification de la validite d'un mot de passe pour le mode d'auth concerne c'est ici que se font eventuellement les verifications de longueur mini/maxi ou de force
auth_spip_verifier_pass(string $login, string $new_pass[, int $id_auteur = 0 ][, string $serveur = '' ]) : string
Le login de l'auteur : permet de verifier que pass et login sont differents meme a la creation lorsque l'auteur n'existe pas encore
Nouveau mot de passe
si auteur existant deja
message d'erreur si login non valide, chaine vide sinon
Modifier le mot de passe de l'auteur sur le serveur concerne en s'occupant du hash et companie
auth_spip_modifier_pass(string $login, string $new_pass, int $id_auteur[, string $serveur = '' ]) : bool
Synchroniser les fichiers htpasswd
auth_spip_synchroniser_distant(int $id_auteur, array<string|int, mixed> $champs[, array<string|int, mixed> $options = [] ][, string $serveur = '' ]) : void
all=>true permet de demander la regeneration complete des acces apres operation en base (import, upgrade)
Protéger les saisies d'un champ de formulaire
protege_champ(mixed $valeur[, mixed $max_prof = 128 ]) : string|array<string|int, mixed>|null
Proteger les ' et les " dans les champs que l'on va injecter, sans toucher aux valeurs sérialisées
Saisie à protéger
Saisie protégée
Teste si un formulaire demandé possède un squelette pour l'afficher
existe_formulaire(string $form) : string|bool
Nom du formulaire
Tester si un formulaire est appele via un modele type <formulaire|...> et le cas echeant retourne les arguments passes au modele false sinon
test_formulaire_inclus_par_modele() : false|array<string|int, mixed>
Balises Formulaires par défaut.
balise_FORMULAIRE__dist(Champ $p) : Champ
Compilé en un appel à une balise dynamique.
Description de la balise formulaire
Description complétée du code compilé appelant la balise dynamique
Balise dynamiques par défaut des formulaires
balise_FORMULAIRE__dyn(string $form, array<string|int, mixed> ...$args) : string|array<string|int, mixed>
Nom du formulaire
Arguments envoyés à l'appel du formulaire
Calcule le contexte à envoyer dans le squelette d'un formulaire
balise_FORMULAIRE__contexte(string $form, array<string|int, mixed> $args) : array<string|int, mixed>|string
Nom du formulaire
Arguments envoyés à l'appel du formulaire
array: contexte d'environnement à envoyer au squelette string: Formulaire non applicable (message d’explication)
Charger les valeurs de saisie du formulaire
formulaire__charger(string $form, array<string|int, mixed> $args, bool $poste) : array<string|int, mixed>
Vérifier que le formulaire en cours est celui qui est poste
formulaire__identifier(string $form, array<string|int, mixed> $args, array<string|int, mixed> $p) : bool
On se base sur la fonction identifier (si elle existe) qui fournit une signature identifiant le formulaire a partir de ses arguments significatifs
En l'absence de fonction identifier, on se base sur l'egalite des arguments, ce qui fonctionne dans les cas simples
Compile la balise dynamique `#FORMULAIRE_ADMIN` qui des boutons d'administration dans l'espace public
balise_FORMULAIRE_ADMIN(Champ $p) : Champ
Cette balise permet de placer les boutons d'administrations dans un endroit spécifique du site. Si cette balise n'est pas présente, les boutons seront automatiquement ajoutés par SPIP si l'auteur a activé le cookie de correspondance.
Pile au niveau de la balise
Pile complétée du code compilé
Calculs de paramètres de contexte automatiques pour la balise FORMULAIRE_ADMIN
balise_FORMULAIRE_ADMIN_stat(array<string|int, mixed> $args, array<string|int, mixed> $context_compil) : array<string|int, mixed>|string
On ne peut rien dire au moment de l'execution du squelette
Tableau d'informations sur la compilation
Retourne le squelette d'affichage et le contexte de la balise FORMULAIRE_ADMIN
balise_FORMULAIRE_ADMIN_dyn([string $float = '' ][, string|array<string|int, mixed> $debug = '' ]) : array<string|int, mixed>|string
Classe CSS éventuelle
Informations sur la page contenant une erreur de compilation
Liste : Chemin du squelette, durée du cache, contexte
Préparer le contexte d'environnement pour les boutons
admin_objet() : array<string|int, mixed>
Permettra d'afficher le bouton 'Modifier ce...' s'il y a un
$id_XXX
défini dans le contexte de la page
Tableau de l'environnement calculé
Détermine si l'élément est previsualisable
admin_preview(string $type, int $id[, array<string|int, mixed>|null $desc = null ]) : string|array<string|int, mixed>
Type d'objet
Identifinant de l'objet
Description de la table
Régler les boutons dans la langue de l'admin (sinon tant pis)
admin_lang() : string
Code de langue
Retourne une URL vers un validateur
admin_valider() : string
Retourne une URL vers le mode debug, si l'utilisateur a le droit, et si c'est utile
admin_debug() : string
Compile la balise dynamique `#FORMULAIRE_ECRIRE_AUTEUR` qui permet très logiquement d'afficher un formulaire pour écrire à un auteur
balise_FORMULAIRE_ECRIRE_AUTEUR(Champ $p) : Champ
Cette balise récupère l'id_auteur (et son email) ou l'id_article de la boucle AUTEURS ou ARTICLES englobante.
Le ou les emails correspondants à l'auteur ou aux auteurs de l'article sont transmis au formulaire CVT (mais ils ne seront pas dévoilés au visiteur).
Pile au niveau de la balise
Pile complétée du code compilé
Calculs de paramètres de contexte automatiques pour la balise FORMULAIRE_ECRIRE_AUTEUR
balise_FORMULAIRE_ECRIRE_AUTEUR_stat(array<string|int, mixed> $args, array<string|int, mixed> $context_compil) : array<string|int, mixed>|string
Retourne le contexte du formulaire uniquement si l'email de l'auteur est valide, sinon rien (pas d'exécution/affichage du formulaire)
Liste des arguments demandés obtenus du contexte (id_auteur, id_article, email)
Tableau d'informations sur la compilation
Compile la balise dynamique `#FORMULAIRE_INSCRIPTION` qui affiche un formulaire d'inscription au site
balise_FORMULAIRE_INSCRIPTION(Champ $p) : Champ
Pile au niveau de la balise
Pile complétée du code compilé
Calculs de paramètres de contexte automatiques pour la balise FORMULAIRE_INSCRIPTION
balise_FORMULAIRE_INSCRIPTION_stat(array<string|int, mixed> $args, array<string|int, mixed> $context_compil) : array<string|int, mixed>|string
En absence de mode d'inscription transmis à la balise, celui-ci est calculé en fonction de la configuration :
Tableau d'informations sur la compilation
Compile la balise dynamique `#ID_LOGO_xx` qui retourne l'identifiant du document utilisé comme logo pour un objet éditorial de SPIP.
balise_ID_LOGO__dist(Champ $p) : Champ
Le type d'objet est récupéré dans le nom de la balise, tel que
ID_LOGO_ARTICLE
ou ID_LOGO_SITE
.
Ces balises ont quelques options :
ID_LOGO_ARTICLE_NORMAL
ou ID_LOGO_ARTICLE_SURVOL
.ID_LOGO_ARTICLE_RUBRIQUE
Pile au niveau de la balise
Pile complétée par le code à générer
Calcule le code HTML pour l'image ou l'information sur un logo
generer_code_logo(string $id_objet, string $_id_objet, string $type, string $align, mixed $_lien, Champ $p, string $suite[, string $champ = '' ]) : string
Nom de la clé primaire de l'objet (id_article, ...)
Code pour la compilation permettant de récupérer la valeur de l'identifiant
Type d'objet
Alignement demandé du logo
Pile au niveau de la balise
Suite éventuelle de la balise logo, telle que _SURVOL
, _NORMAL
ou _RUBRIQUE
.
Indique un type de champ à retourner (fichier, src, titre, descriptif, credits, id, alt)
Code compilé retournant le chemin du logo ou le code HTML du logo.
Compile la balise `#IMPORT_JS` qui cherche une ressource js locale ou distante et renvoie son chemin absolu, voire celui de sa version minifiée si la compression est activée.
balise_IMPORT_JS_dist(Champ $p) : Champ
Signature : #IMPORT_JS{module.esm.js}
Retourne une chaîne vide si le fichier n'est pas trouvé.
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise dynamique `#INFO_xx` qui génère n'importe quelle information pour un objet
balise_INFO__dist(Champ $p) : Champ
Signature : #INFO_n{objet,id_objet}
où n est une colonne sur la table
SQL de l'objet.
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise dynamique `#LOGO_xx` qui retourne le code HTML pour afficher l'image de logo d'un objet éditorial de SPIP.
balise_LOGO__dist(Champ $p) : Champ
Le type d'objet est récupéré dans le nom de la balise, tel que
LOGO_ARTICLE
ou LOGO_SITE
.
Ces balises ont quelques options :
LOGO_ARTICLE_NORMAL
ou LOGO_ARTICLE_SURVOL
.LOGO_ARTICLE_RUBRIQUE
LOGO_ARTICLE*
ajoute un lien sur l'image du logo vers l'objet éditorialLOGO_ARTICLE**
retourne le nom du fichier de logo.LOGO_ARTICLE{right}
. Valeurs possibles : top left right center bottomLOGO_DOCUMENT{icone}
. Valeurs possibles : auto icone apercu vignetteLOGO_ARTICLE{200, 0}
. Redimensionnement indiquéPour récupérer l’identifiant du document sous-jacent voir la balise ID_LOGO_...
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise dynamique `#MENU_LANG` qui affiche un sélecteur de langue pour l'espace public
balise_MENU_LANG(Champ $p) : Champ
Affiche le menu des langues de l'espace public
et présélectionne celle la globale $lang
ou de l'arguemnt fourni: #MENU_LANG{#ENV{malangue}}
Pile au niveau de la balise
Pile complétée du code compilé
Calculs de paramètres de contexte automatiques pour la balise MENU_LANG
balise_MENU_LANG_stat(array<string|int, mixed> $args, array<string|int, mixed> $context_compil) : array<string|int, mixed>|string
S'il n'y a qu'une langue proposée, pas besoin du formulaire (éviter une balise ?php inutile)
Liste des arguments demandés obtenus du contexte (lang) complétés de ceux fournis à la balise
Tableau d'informations sur la compilation
array: Liste (lang) des arguments collectés et fournis. string: (vide) si pas de multilinguisme
Exécution de la balise dynamique `#MENU_LANG`
balise_MENU_LANG_dyn(string $opt) : array<string|int, mixed>
Langue par défaut
Liste : Chemin du squelette, durée du cache, contexte
Compile la balise dynamique `#MENU_LANG_ECRIRE` qui affiche un sélecteur de langue pour l'interface privée
balise_MENU_LANG_ECRIRE(Champ $p) : Champ
Affiche le menu des langues de l'espace privé
et présélectionne celle la globale $lang
ou de l'arguemnt fourni: #MENU_LANG_ECRIRE{#ENV{malangue}}
Pile au niveau de la balise
Pile complétée du code compilé
Calculs de paramètres de contexte automatiques pour la balise MENU_LANG_ECRIRE
balise_MENU_LANG_ECRIRE_stat(array<string|int, mixed> $args, array<string|int, mixed> $context_compil) : array<string|int, mixed>|string
S'il n'y a qu'une langue proposée, pas besoin du formulaire (éviter une balise ?php inutile)
Liste des arguments demandés obtenus du contexte (lang) complétés de ceux fournis à la balise
Tableau d'informations sur la compilation
Exécution de la balise dynamique `#MENU_LANG_ECRIRE`
balise_MENU_LANG_ECRIRE_dyn(string $opt) : array<string|int, mixed>
Langue par défaut
Liste : Chemin du squelette, durée du cache, contexte
Calcule l'environnement et le squelette permettant d'afficher le formulaire de sélection de changement de langue
menu_lang_pour_tous(string $nom, string $default) : array<string|int, mixed>
Le changement de langue se fait par l'appel à l'action converser
Nom de la variable qui sera postée par le formulaire
Valeur par défaut de la langue
Liste : Chemin du squelette, durée du cache, contexte
Génère le code compilé des balises d'URL
generer_generer_url(string $type, Champ $p) : string
Utilise le premier paramètre de la balise d'URL comme identifiant d'objet s'il est donné, sinon le prendra dans un champ d'une boucle englobante.
Type d'objet
Pile au niveau de la balise
Code compilé
Génère le code compilé des balises d'URL (en connaissant l'identifiant)
generer_generer_url_arg(string $type, Champ $p, string $_id) : string
Si ces balises sont utilisées pour la base locale,
production des appels à generer_objet_url(id-courant, entite)
Si la base est externe et sous SPIP, on produit
On communique le type-url distant à generer_objet_url
mais il ne sert pas
car rien ne garantit que le .htaccess soit identique. À approfondir.
Type d'objet
Pile au niveau de la balise
Code compilé permettant d'obtenir l'identifiant de l'objet
Code compilé
Compile la balise générique `#URL_xxx` qui génère l'URL d'un objet
balise_URL__dist(Champ $p) : Champ
S'il existe une fonction spécifique de calcul d'URL pour l'objet demandé,
tel que balise_URL_ARTICLE_dist()
, la fonction l'utilisera. Sinon,
on calcule une URL de façon générique.
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#URL_ARTICLE` qui génère l'URL d'un article
balise_URL_ARTICLE_dist(Champ $p) : Champ
Retourne l'URL (locale) d'un article mais retourne dans le cas d'un article syndiqué (boucle SYNDIC_ARTICLES), son URL distante d'origine.
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#URL_SITE` qui génère l'URL d'un site ou de cas spécifiques
balise_URL_SITE_dist(Champ $p) : Champ|null
Génère une URL spécifique si la colonne SQL url_site
est trouvée
(par exemple lien hypertexte d'un article), sinon l'URL d'un site syndiqué
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#URL_SITE_SPIP` qui retourne l'URL du site telle que définie dans la configuration
balise_URL_SITE_SPIP_dist(Champ $p) : Champ
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#URL_PAGE` qui retourne une URL de type « page »
balise_URL_PAGE_dist(Champ $p) : Champ
#URL_PAGE{nom}
génère l'url pour la page nom
#URL_PAGE{nom,param=valeur}
génère l'url pour la page nom
avec des paramètres#URL_PAGE
sans argument retourne l'URL courante.#URL_PAGE*
retourne l'URL sans convertir les &
en &
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#URL_ECRIRE` qui retourne une URL d'une page de l'espace privé
balise_URL_ECRIRE_dist(Champ $p) : Champ
#URL_ECRIRE{nom}
génère l'url pour la page nom
de l'espace privé#URL_ECRIRE{nom,param=valeur}
génère l'url pour la page nom
avec des paramètres#URL_ECRIRE
génère l'url pour la page d'accueil de l'espace privé#URL_ECRIRE*
retourne l'URL sans convertir les &
en &
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#URL_ACTION_AUTEUR` qui retourne une URL d'action sécurisée pour l'auteur en cours
balise_URL_ACTION_AUTEUR_dist(Champ $p) : Champ
La balise accepte 3 paramètres. Les 2 premiers sont obligatoires :
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise dynamique `#URL_LOGOUT` qui génère une URL permettant de déconnecter l'auteur actuellement connecté
balise_URL_LOGOUT(Champ $p) : Champ
Pile au niveau de la balise
Pile complétée du code compilé
Calculs de paramètres de contexte automatiques pour la balise URL_LOGOUT
balise_URL_LOGOUT_stat(array<string|int, mixed> $args, array<string|int, mixed> $context_compil) : array<string|int, mixed>
Liste des arguments transmis à la balise
$args[0]
= URL destination après logout [(#URL_LOGOUT{url})]
Tableau d'informations sur la compilation
Liste (url) des arguments collectés.
Exécution de la balise dynamique `#URL_LOGOUT`
balise_URL_LOGOUT_dyn(string $cible) : string
Retourne une URL de déconnexion uniquement si le visiteur est connecté.
URL de destination après déconnexion
URL de déconnexion ou chaîne vide.
Retourne la pile de fonctions utilisée lors de la précence d'une erreur SQL
sql_error_backtrace([bool $compil_info = false ]) : array<string|int, mixed>|string
erreur_squelette()
contexte de l'erreur
Demande si un charset est disponible
sql_get_charset(string $charset[, string $serveur = '' ][, bool $option = true ]) : string|bool
Demande si un charset (tel que utf-8) est disponible sur le gestionnaire de base de données de la connexion utilisée
Le charset souhaité
Le nom du connecteur
Inutilise
Retourne le nom du charset si effectivement trouvé, sinon false.
Regler le codage de connexion
sql_set_charset(string $charset[, string $serveur = '' ][, bool|string $option = true ]) : bool
Affecte un charset (tel que utf-8) sur la connexion utilisee avec le gestionnaire de base de donnees
Le charset souhaite
Le nom du connecteur
Peut avoir 2 valeurs :
Retourne true si elle reussie.
Effectue une requête de selection
sql_select([array<string|int, mixed>|string $select = [] ][, array<string|int, mixed>|string $from = [] ][, array<string|int, mixed>|string $where = [] ][, array<string|int, mixed>|string $groupby = [] ][, array<string|int, mixed>|string $orderby = [] ][, string $limit = '' ][, string|array<string|int, mixed> $having = [] ][, string $serveur = '' ][, bool|string $option = true ]) : mixed
Fonction de selection (SELECT), retournant la ressource interrogeable par sql_fetch.
Liste des champs a recuperer (Select)
Tables a consulter (From)
Conditions a remplir (Where)
critere de regroupement (Group by)
Tableau de classement (Order By)
critere de limite (Limit)
Tableau ou chaine des des post-conditions à remplir (Having)
Le serveur sollicite (pour retrouver la connexion)
Peut avoir 3 valeurs :
Ressource SQL
- Ressource SQL pour sql_fetch, si la requete est correcte
- false en cas d'erreur
- Chaine contenant la requete avec $option=false
Retourne false en cas d'erreur, apres l'avoir denoncee. Les portages doivent retourner la requete elle-meme en cas d'erreur, afin de disposer du texte brut.
Recupere la syntaxe de la requete select sans l'executer
sql_get_select([array<string|int, mixed>|string $select = [] ][, array<string|int, mixed>|string $from = [] ][, array<string|int, mixed>|string $where = [] ][, array<string|int, mixed>|string $groupby = [] ][, array<string|int, mixed>|string $orderby = [] ][, string $limit = '' ][, string|array<string|int, mixed> $having = [] ][, string $serveur = '' ]) : mixed
Passe simplement $option a false au lieu de true sans obliger a renseigner tous les arguments de sql_select. Les autres parametres sont identiques.
Liste des champs a recuperer (Select)
Tables a consulter (From)
Conditions a remplir (Where)
critere de regroupement (Group by)
Tableau de classement (Order By)
critere de limite (Limit)
Tableau ou chaine des des post-conditions à remplir (Having)
Le serveur sollicite (pour retrouver la connexion)
Chaine contenant la requete ou false en cas d'erreur
Retourne le nombre de lignes d'une sélection
sql_countsel([array<string|int, mixed>|string $from = [] ][, array<string|int, mixed>|string $where = [] ][, array<string|int, mixed>|string $groupby = [] ][, string|array<string|int, mixed> $having = [] ][, string $serveur = '' ][, bool|string $option = true ]) : int|bool
Ramène seulement et tout de suite le nombre de lignes Pas de colonne ni de tri à donner donc.
Tables a consulter (From)
Conditions a remplir (Where)
critere de regroupement (Group by)
Tableau ou chaine des des post-conditions à remplir (Having)
Le serveur sollicite (pour retrouver la connexion)
Peut avoir 3 valeurs :
Modifie la structure de la base de données
sql_alter(string $q[, string $serveur = '' ][, bool|string $option = true ]) : mixed
Effectue une opération ALTER.
La requête à exécuter (sans la préceder de 'ALTER ')
Le serveur sollicite (pour retrouver la connexion)
Peut avoir 2 valeurs :
2 possibilités :
Ce retour n'est pas pertinent pour savoir si l'opération est correctement réalisée.
Retourne un enregistrement d'une selection
sql_fetch(mixed $res[, string $serveur = '' ][, bool|string $option = true ]) : array<string|int, mixed>|false
Retourne un resultat d'une ressource obtenue avec sql_select()
Ressource retournee par sql_select()
Le nom du connecteur
Peut avoir 2 valeurs :
Tableau de cles (colonnes SQL ou alias) / valeurs (valeurs dans la colonne de la table ou calculee) presentant une ligne de resultat d'une selection
Retourne tous les enregistrements d'une selection
sql_fetch_all(mixed $res[, string $serveur = '' ][, bool|string $option = true ]) : array<string|int, mixed>
Retourne tous les resultats d'une ressource obtenue avec sql_select() dans un tableau
Ressource retournee par sql_select()
Le nom du connecteur
Peut avoir 2 valeurs :
Tableau contenant les enregistrements. Chaque entree du tableau est un autre tableau de cles (colonnes SQL ou alias) / valeurs (valeurs dans la colonne de la table ou calculee) presentant une ligne de resultat d'une selection
Déplace le pointeur d'une ressource de sélection
sql_seek(mixed $res, int $row_number[, string $serveur = '' ][, bool|string $option = true ]) : bool
Deplace le pointeur sur un numéro de ligne précisé sur une ressource issue de sql_select, afin que le prochain sql_fetch récupère cette ligne.
Ressource issue de sql_select
Numero de ligne sur laquelle placer le pointeur
Le nom du connecteur
Peut avoir 2 valeurs :
Operation effectuée (true), sinon false.
Liste des bases de donnees accessibles
sql_listdbs([string $serveur = '' ][, bool|string $option = true ]) : array<string|int, mixed>|bool
Retourne un tableau du nom de toutes les bases de donnees accessibles avec les permissions de l'utilisateur SQL de cette connexion. Attention on n'a pas toujours les droits !
Nom du connecteur
Peut avoir 2 valeurs :
Tableau contenant chaque nom de base de donnees. False en cas d'erreur.
Demande d'utiliser d'une base de donnees
sql_selectdb(string $nom[, string $serveur = '' ][, bool|string $option = true ]) : bool|string
Nom de la base a utiliser
Nom du connecteur
Peut avoir 2 valeurs :
Retourne le nombre de lignes d’une ressource de sélection obtenue avec `sql_select()`
sql_count(object $res[, string $serveur = '' ][, bool|string $option = true ]) : bool|string
Ressource SQL
Nom du connecteur
Peut avoir 2 valeurs :
Libère une ressource de résultat
sql_free(object $res[, string $serveur = '' ][, bool|string $option = true ]) : bool
Indique au gestionnaire SQL de libérer de sa mémoire la ressoucre de résultat indiquée car on n'a plus besoin de l'utiliser.
Ressource de résultat
Nom de la connexion
Peut avoir 2 valeurs :
True si réussi
Insère une ligne dans une table
sql_insert(string $table, string $noms, string $valeurs[, array<string|int, mixed> $desc = [] ][, string $serveur = '' ][, bool|string $option = true ]) : bool|string
Nom de la table SQL
Liste des colonnes impactées,
Liste des valeurs,
Tableau de description des colonnes de la table SQL utilisée (il sera calculé si nécessaire s'il n'est pas transmis).
Nom du connecteur
Peut avoir 3 valeurs :
Insère une ligne dans une table
sql_insertq(string $table[, array<string|int, mixed> $couples = [] ][, array<string|int, mixed> $desc = [] ][, string $serveur = '' ][, bool|string $option = true ]) : int|bool|string
Protègera chaque valeur comme sql_quote.
Nom de la table SQL
Tableau (nom => valeur)
Tableau de description des colonnes de la table SQL utilisée (il sera calculé si nécessaire s'il n'est pas transmis).
Nom du connecteur
Peut avoir 3 valeurs :
Insère plusieurs lignes d'un coup dans une table
sql_insertq_multi(string $table[, array<string|int, mixed> $couples = [] ][, array<string|int, mixed> $desc = [] ][, string $serveur = '' ][, bool|string $option = true ]) : bool|string
Insère en une opération plusieurs éléments au schéma identique dans une table de la base de données. Lorsque les portages le permettent, ils utilisent une seule requête SQL pour réaliser l’ajout.
Nom de la table SQL
Tableau de tableaux associatifs (nom => valeur)
Tableau de description des colonnes de la table SQL utilisée (il sera calculé si nécessaire s'il n'est pas transmis).
Nom du connecteur
Peut avoir 3 valeurs :
Met à jour des enregistrements d'une table SQL
sql_update(string $table, array<string|int, mixed> $exp[, string|array<string|int, mixed> $where = '' ][, array<string|int, mixed> $desc = [] ][, string $serveur = '' ][, bool|string $option = true ]) : array<string|int, mixed>|bool|string
Les valeurs ne sont pas échappées, ce qui permet de modifier une colonne en utilisant la valeur d'une autre colonne ou une expression SQL.
Il faut alors protéger avec sql_quote() manuellement les valeurs qui en ont besoin.
Dans les autres cas, préférer sql_updateq().
Nom de la table
Couples (colonne => valeur)
Conditions a remplir (Where)
Tableau de description des colonnes de la table SQL utilisée (il sera calculé si nécessaire s'il n'est pas transmis).
Nom de la connexion
Peut avoir 3 valeurs :
Met à jour du contenu d’une table SQL
sql_updateq(string $table, array<string|int, mixed> $exp[, array<string|int, mixed>|string $where = '' ][, array<string|int, mixed> $desc = [] ][, string $serveur = '' ][, bool|string $option = true ]) : bool|string
Le contenu transmis à la fonction est protégé automatiquement comme sql_quote().
Nom de la table SQL
Couples (colonne => valeur)
Conditions à vérifier
Tableau de description des colonnes de la table SQL utilisée (il sera calculé si nécessaire s'il n'est pas transmis).
Nom du connecteur
Peut avoir 3 valeurs :
Supprime des enregistrements d'une table
sql_delete(string $table[, string|array<string|int, mixed> $where = '' ][, string $serveur = '' ][, bool|string $option = true ]) : bool|string
Nom de la table SQL
Conditions à vérifier
Nom du connecteur
Peut avoir 3 valeurs :
Insère où met à jour une entrée d’une table SQL
sql_replace(string $table, array<string|int, mixed> $couples[, array<string|int, mixed> $desc = [] ][, string $serveur = '' ][, bool|string $option = true ]) : bool|string
La clé ou les cles primaires doivent être présentes dans les données insérés. La fonction effectue une protection automatique des données.
Préférez sql_insertq() et sql_updateq().
Nom de la table SQL
Couples colonne / valeur à modifier,
Tableau de description des colonnes de la table SQL utilisée (il sera calculé si nécessaire s'il n'est pas transmis).
Nom du connecteur
Peut avoir 3 valeurs :
Insère où met à jour des entrées d’une table SQL
sql_replace_multi(string $table, array<string|int, mixed> $tab_couples[, array<string|int, mixed> $desc = [] ][, string $serveur = '' ][, bool|string $option = true ]) : bool|string
La clé ou les cles primaires doivent être présentes dans les données insérés. La fonction effectue une protection automatique des données.
Préférez sql_insertq_multi() et sql_updateq().
Nom de la table SQL
Tableau de tableau (colonne / valeur à modifier),
Tableau de description des colonnes de la table SQL utilisée (il sera calculé si nécessaire s'il n'est pas transmis).
Nom du connecteur
Peut avoir 3 valeurs :
Supprime une table SQL (structure et données)
sql_drop_table(string $table[, bool $exist = false ][, string $serveur = '' ][, bool|string $option = true ]) : bool|string
Nom de la table
true pour ajouter un test sur l'existence de la table, false sinon
Nom du connecteur
Peut avoir 3 valeurs :
Supprime une vue SQL
sql_drop_view(string $table[, bool $exist = false ][, string $serveur = '' ][, bool|string $option = true ]) : bool|string
Nom de la vue SQL
True pour ajouter un test d'existence avant de supprimer
Nom de la connexion
Peut avoir 3 valeurs :
Retourne une ressource de la liste des tables de la base de données
sql_showbase([string $spip = null ][, string $serveur = '' ][, bool|string $option = true ]) : object|bool|string
Filtre sur tables retournées
Le nom du connecteur
Peut avoir 3 valeurs :
Ressource à utiliser avec sql_fetch()
Retourne la liste des tables SQL
sql_alltable([string $spip = null ][, string $serveur = '' ][, bool|string $option = true ]) : array<string|int, mixed>
Filtre sur tables retournées
Le nom du connecteur
Peut avoir 3 valeurs :
Liste des tables SQL
Retourne la liste (et description) des colonnes et key d’une table SQL
sql_showtable(string $table[, bool $table_spip = false ][, string $serveur = '' ][, bool|string $option = true ]) : bool|array<string|int, mixed>
Nom de la table SQL
true pour remplacer automatiquement « spip » par le vrai préfixe de table
Nom du connecteur
Peut avoir 3 valeurs :
Teste si une table SQL existe ou non dans la base
sql_table_exists(string $table[, bool $table_spip = true ][, string $serveur = '' ][, bool|string $option = true ]) : bool|string
Nom de la table
true pour remplacer automatiquement « spip » par le vrai préfixe de table
Nom du connecteur
Peut avoir 3 valeurs :
Crée une table dans la base de données
sql_create(string $nom, array<string|int, mixed> $champs[, array<string|int, mixed> $cles = [] ][, bool $autoinc = false ][, bool $temporary = false ][, string $serveur = '' ][, bool|string $option = true ]) : bool
Nom de la table
Couples (colonne => description)
Clé (nomdelaclef => champ)
Si un champ est clef primaire est numérique alors la propriété d’autoincrémentation sera ajoutée
true pour créer une table temporaire (au sens SQL)
Nom du connecteur
Peut avoir 3 valeurs :
true si succès, false en cas d'echec
Crée une base de données
sql_create_base(string $nom[, string $serveur = '' ][, bool|string $option = true ]) : bool
Nom de la base (sans l'extension de fichier si gestionnaire SQLite)
Nom de la connexion
Peut avoir 3 valeurs :
true si la base est créee.
Crée une vue SQL
sql_create_view(string $nom, string $select_query[, string $serveur = '' ][, bool|string $option = true ]) : bool|string
Nom de la vue
Une requête SELECT, idéalement crée avec sql_get_select(...)
Nom du connecteur
Peut avoir 3 valeurs :
Retourne l'instruction SQL pour obtenir le texte d'un champ contenant une balise `<multi>` dans la langue indiquée
sql_multi(string $sel, string $lang[, string $serveur = '' ][, bool|string $option = true ]) : string
Cette sélection est mise dans l'alias multi
(instruction AS multi).
Colonne ayant le texte
Langue à extraire
Nom du connecteur
Peut avoir 2 valeurs :
texte de sélection pour la requête
Retourne la dernière erreur connue
sql_error([string $serveur = '' ]) : bool|string
Nom du connecteur
Description de l'erreur False si le serveur est indisponible
Retourne le numéro de la derniere erreur connue
sql_errno([string $serveur = '' ]) : bool|int
Nom du connecteur
Numéro de l'erreur False si le serveur est indisponible
Retourne une explication de requête (Explain) SQL
sql_explain(string $q[, string $serveur = '' ][, bool|string $option = true ]) : array<string|int, mixed>|false
texte de la requête
Nom de la connexion
Peut avoir 3 valeurs :
Tableau de l'explication
Optimise une table SQL
sql_optimize(string $table[, string $serveur = '' ][, bool $option = true ]) : bool
Nom de la table
Nom de la connexion
Peut avoir 3 valeurs :
Toujours true
Répare une table SQL
sql_repair(string $table[, string $serveur = '' ][, bool|string $option = true ]) : bool|string
Nom de la table SQL
Nom de la connexion
Peut avoir 3 valeurs :
Exécute une requête SQL
sql_query(string $ins[, string $serveur = '' ][, bool|string $option = true ]) : array<string|int, mixed>|resource|string|bool
Fonction la plus générale ... et la moins portable À n'utiliser qu'en dernière extrémité
Requête
Nom de la connexion
Peut avoir 3 valeurs :
Retourne la première ligne d'une sélection
sql_fetsel([array<string|int, mixed>|string $select = [] ][, array<string|int, mixed>|string $from = [] ][, array<string|int, mixed>|string $where = [] ][, array<string|int, mixed>|string $groupby = [] ][, array<string|int, mixed>|string $orderby = [] ][, string $limit = '' ][, string|array<string|int, mixed> $having = [] ][, string $serveur = '' ][, bool|string $option = true ]) : array<string|int, mixed>|string|false
Retourne la première ligne de résultat d'une sélection
comme si l'on appelait successivement sql_select()
puis sql_fetch()
Liste des champs a recuperer (Select)
Tables a consulter (From)
Conditions a remplir (Where)
critere de regroupement (Group by)
Tableau de classement (Order By)
critere de limite (Limit)
Tableau ou chaine des des post-conditions à remplir (Having)
Le serveur sollicite (pour retrouver la connexion)
Peut avoir 3 valeurs :
Tableau de la premiere ligne de resultat de la selection tel que
array('id_rubrique' => 1, 'id_secteur' => 2)
Retourne le tableau de toutes les lignes d'une selection
sql_allfetsel([array<string|int, mixed>|string $select = [] ][, array<string|int, mixed>|string $from = [] ][, array<string|int, mixed>|string $where = [] ][, array<string|int, mixed>|string $groupby = [] ][, array<string|int, mixed>|string $orderby = [] ][, string $limit = '' ][, string|array<string|int, mixed> $having = [] ][, string $serveur = '' ][, bool|string $option = true ]) : array<string|int, mixed>
Retourne toutes les lignes de resultat d'une selection comme si l'on appelait successivement sql_select() puis while(sql_fetch())
Liste des champs a recuperer (Select)
Tables a consulter (From)
Conditions a remplir (Where)
critere de regroupement (Group by)
Tableau de classement (Order By)
critere de limite (Limit)
Tableau ou chaine des des post-conditions à remplir (Having)
Le serveur sollicite (pour retrouver la connexion)
Peut avoir 3 valeurs :
Tableau de toutes les lignes de resultat de la selection Chaque entree contient un tableau des elements demandees dans le SELECT.
array(
array('id_rubrique' => 1, 'id_secteur' => 2)
array('id_rubrique' => 4, 'id_secteur' => 2)
...
)
Retourne un unique champ d'une selection
sql_getfetsel(string $select[, array<string|int, mixed>|string $from = [] ][, array<string|int, mixed>|string $where = [] ][, array<string|int, mixed>|string $groupby = [] ][, array<string|int, mixed>|string $orderby = [] ][, string $limit = '' ][, string|array<string|int, mixed> $having = [] ][, string $serveur = '' ][, bool|string $option = true ]) : mixed
Retourne dans la premiere ligne de resultat d'une selection un unique champ demande
Liste des champs à récupérer (Select)
Tables à consulter (From)
Conditions à remplir (Where)
Critère de regroupement (Group by)
Tableau de classement (Order By)
Critère de limite (Limit)
Tableau ou chaine des des post-conditions à remplir (Having)
Le serveur sollicité (pour retrouver la connexion)
Peut avoir 3 valeurs :
Contenu de l'unique valeur demandee du premier enregistrement retourne ou NULL si la requete ne retourne aucun enregistrement
Retourne le numero de version du serveur SQL
sql_version([string $serveur = '' ][, bool|string $option = true ]) : string
Nom du connecteur
Peut avoir 2 valeurs :
Numero de version du serveur SQL
Informe si le moteur SQL prefere utiliser des transactions
sql_preferer_transaction([string $serveur = '' ][, bool|string $option = true ]) : bool
Cette fonction experimentale est pour l'instant presente pour accelerer certaines insertions multiples en SQLite, en les encadrant d'une transaction. SQLite ne cree alors qu'un verrou pour l'ensemble des insertions et non un pour chaque, ce qui accelere grandement le processus. Evidemment, si une des insertions echoue, rien ne sera enregistre. Pour ne pas perturber les autres moteurs, cette fonction permet de verifier que le moteur prefere utiliser des transactions dans ce cas.
Nom du connecteur
Peut avoir 2 valeurs :
Le serveur SQL prefere t'il des transactions pour les insertions multiples ?
Démarre une transaction
sql_demarrer_transaction([string $serveur = '' ][, bool|string $option = true ]) : bool
Nom du connecteur
Peut avoir 3 valeurs :
true si la transaction est demarree false en cas d'erreur
Termine une transaction
sql_terminer_transaction([string $serveur = '' ][, bool|string $option = true ]) : bool
Nom du connecteur
Peut avoir 3 valeurs :
true si la transaction est demarree false en cas d'erreur
Prépare une chaine hexadécimale
sql_hex(string $val[, string $serveur = '' ][, bool|string $option = true ]) : string
Prend une chaîne sur l'aphabet hexa et retourne sa représentation numérique attendue par le serveur SQL. Par exemple : FF ==> 0xFF en MySQL mais x'FF' en PG
Chaine hexadécimale
Nom du connecteur
Peut avoir 2 valeurs :
Valeur hexadécimale attendue par le serveur SQL
Echapper du contenu
sql_quote(string $val[, string $serveur = '' ][, string $type = '' ]) : string
Echappe du contenu selon ce qu'attend le type de serveur SQL et en fonction du type de contenu.
Permet entre autres de se protéger d'injections SQL.
Cette fonction est automatiquement appelée par les fonctions sql_*q
tel que sql_instertq
ou sql_updateq
Chaine à echapper
Nom du connecteur
Peut contenir une declaration de type de champ SQL.
Exemple : int NOT NULL
qui sert alors aussi à calculer le type d'échappement
La chaine echappee
Tester si une date est proche de la valeur d'un champ
sql_date_proche(string $champ, int $interval, string $unite[, string $serveur = '' ][, bool|string $option = true ]) : string|bool
Nom du champ a tester
Valeur de l'intervalle : -1, 4, ...
Utité utilisée (DAY, MONTH, YEAR, ...)
Nom du connecteur
Peut avoir 2 valeurs :
Retourne une expression IN pour le gestionnaire de base de données
sql_in_quote(string $champ, array<string|int, mixed> $valeurs[, string $not = '' ][, string $serveur = '' ][, string $type = '' ][, bool|string $option = true ]) : string
Retourne un code à insérer dans une requête SQL pour récupérer les éléments d'une colonne qui appartiennent à une liste donnée
Colonne SQL sur laquelle appliquer le test
Liste des valeurs possibles (séparés par des virgules si string) le format string est historique et n'est accepte que pour des ids numeriques car autrement la securite ne peut etre garantie
Nom du connecteur
type du champ pour le sql_quote
Peut avoir 3 valeurs :
Expression de requête SQL
shorthand historique qui ne permet pas de specifier le type et qui accepte une string pour $valeurs
sql_in(string $champ, array<string|int, mixed>|string $valeurs[, string $not = '' ][, string $serveur = '' ][, bool $option = true ]) : mixed
Liste des valeurs possibles (séparés par des virgules si string) le format string est historique et n'est accepte que pour des ids numeriques car autrement la securite ne peut etre garantie
Retourne une expression IN pour le gestionnaire de base de données à partir d'une sélection de données
sql_in_select(string $in, array<string|int, mixed>|string $select[, array<string|int, mixed>|string $from = [] ][, array<string|int, mixed>|string $where = [] ][, array<string|int, mixed>|string $groupby = [] ][, array<string|int, mixed>|string $orderby = [] ][, string $limit = '' ][, string|array<string|int, mixed> $having = [] ][, string $serveur = '' ]) : string
Sélectionne les données (comme sql_select()) et prépare avec l'expression IN
Colonne SQL sur laquelle appliquer le test
Liste des champs à récupérer (Select). La donnée extraite est le premier élément de la sélection.
Tables a consulter (From)
Conditions a remplir (Where)
critere de regroupement (Group by)
Tableau de classement (Order By)
critere de limite (Limit)
Tableau ou chaine des des post-conditions à remplir (Having)
Nom du connecteur
Expression de requête SQL
Implémentation sécurisée du saut en avant.
sql_skip(object $res, int $pos, int $saut, int $count[, string $serveur = '' ][, bool|string $option = true ]) : int
Ne dépend pas de la disponibilité de la fonction sql_seek()
.
Ne fait rien pour une valeur négative ou nulle de $saut
.
Retourne la position après le saut
Ressource issue d'une selection sql_select
position courante
saut demande
position maximale (nombre de resultat de la requete OU position qu'on ne veut pas depasser)
Nom du connecteur
Peut avoir 2 valeurs :
Position apres le saut.
Teste qu'une description de champ SQL est de type entier
sql_test_int(string $type[, string $serveur = '' ][, bool $option = true ]) : bool
Description de la colonne SQL
Nom du connecteur
Inutilisé
True si le champ est de type entier
Teste qu'une description de champ SQL est de type entier
sql_test_date(string $type[, string $serveur = '' ][, bool $option = true ]) : bool
Description de la colonne SQL
Nom du connecteur
Inutilisé
True si le champ est de type entier
Formate une date
sql_format_date([int $annee = 0 ][, int $mois = 0 ][, int $jour = 0 ][, int $h = 0 ][, int $m = 0 ][, int $s = 0 ][, string $serveur = '' ]) : string
Formater une date Y-m-d H:i:s sans passer par mktime qui ne sait pas gerer les dates < 1970
Annee
Numero du mois
Numero du jour dans le mois
Heures
Minutes
Secondes
Le serveur sollicite (pour retrouver la connexion)
La date formatee
Corrige le nom d’une table SQL en utilisant le bon préfixe
prefixer_table_spip(string $table, string $prefixe) : string
Ie: si prefixe 'dev', retournera, pour la table 'spip_articles' : 'dev_articles'.
Table sql éventuellement renommée
Connexion à un serveur de base de données
spip_connect([string $serveur = '' ][, string $version = '' ]) : bool|array<string|int, mixed>
On charge le fichier config/$serveur
($serveur='connect'
pour le principal)
qui est censé initaliser la connexion en appelant la fonction spip_connect_db
laquelle met dans la globale db_ok
la description de la connexion.
On la mémorise dans un tableau pour permettre plusieurs serveurs.
À l'installation, il faut simuler l'existence de ce fichier.
Nom du connecteur
Version de l'API SQL
Log la dernière erreur SQL présente sur la connexion indiquée
spip_sql_erreur([string $serveur = '' ]) : mixed
Nom du connecteur de bdd utilisé
Retourne le nom de la fonction adaptée de l'API SQL en fonction du type de serveur
spip_connect_sql(string $version[, string $ins = '' ][, string $serveur = '' ][, bool $continue = false ]) : array<string|int, mixed>|bool|string
Cette fonction ne doit être appelée qu'à travers la fonction sql_serveur définie dans base/abstract_sql
Elle existe en tant que gestionnaire de versions, connue seulement des convertisseurs automatiques
Numéro de version de l'API SQL
Instruction de l'API souhaitée, tel que 'allfetsel'
Nom du connecteur
true pour continuer même si le serveur SQL ou l'instruction est indisponible
Fonction appelée par le fichier connecteur de base de données crée dans `config/` à l'installation.
spip_connect_db(string $host, string $port, string $login, string $pass[, string $db = '' ][, string $type = 'mysql' ][, string $prefixe = '' ][, string $auth = '' ][, string $charset = '' ]) : array<string|int, mixed>|null
Il contient un appel direct à cette fonction avec comme arguments les identifants de connexion.
Si la connexion reussit, la globale db_ok
mémorise sa description.
C'est un tableau également retourné en valeur, pour les appels
lors de l'installation.
Adresse du serveur de base de données
Port utilisé pour la connexion
Identifiant de connexion à la base de données
Mot de passe pour cet identifiant
Nom de la base de données à utiliser
Type de base de données tel que 'mysql', 'sqlite3' (cf ecrire/req/)
Préfixe des tables SPIP
Type d'authentification (cas si 'ldap')
Charset de la connexion SQL (optionnel)
Description de la connexion
Première connexion au serveur principal de base de données
spip_connect_main(array<string|int, mixed> $connexion[, string $charset_sql_connexion = '' ]) : string|bool|int
Retourner le charset donnée par la table principale mais vérifier que le fichier de connexion n'est pas trop vieux
Description de la connexion
charset de connexion fourni dans l'appal a spip_connect_db
Échappement d'une valeur sous forme de chaîne PHP
_q(int|float|string|array<string|int, mixed> $a) : string
Échappe une valeur (num, string, array) pour en faire une chaîne pour PHP.
Un array(1,'a',"a'")
renvoie la chaine "'1','a','a\''"
Valeur à échapper
Valeur échappée.
Echapper les textes entre ' ' ou " " d'une requête SQL avant son pre-traitement
query_echappe_textes(string $query[, mixed $uniqid = null ]) : array<string|int, mixed>
On renvoi la query sans textes et les textes séparés, dans leur ordre d'apparition dans la query
Réinjecter les textes d'une requete SQL à leur place initiale, après traitement de la requête
query_reinjecte_textes(string $query, array<string|int, mixed> $textes) : string
Exécute une requête sur le serveur SQL
Pour compatibilité.
spip_query(string $query[, string $serveur = '' ]) : bool|mixed
texte de la requête
Nom du connecteur pour la base de données
Determiner le flag autoinc pour une table en fonction de si c'est une table principale
base_determine_autoinc(string $table[, array<string|int, mixed> $desc = [] ]) : bool
Créer une table, ou ajouter les champs manquants si elle existe déjà
creer_ou_upgrader_table(string $table, array<string|int, mixed> $desc, bool|string $autoinc[, bool $upgrade = false ][, string $serveur = '' ]) : mixed
'auto' pour detecter automatiquement si le champ doit etre autoinc ou non en fonction de la table
Creer ou mettre à jour un ensemble de tables en fonction du flag `$up`
alterer_base(array<string|int, mixed> $tables_inc, mixed $tables_noinc[, bool|array<string|int, mixed> $up = false ][, string $serveur = '' ]) : mixed
tables avec autoincrement sur la cle primaire
tables sans autoincrement sur la cle primaire
upgrader (true) ou creer (false) si un tableau de table est fournie, seules l'intersection de ces tables et des $tables_inc / $tables_noinc seront traitees
serveur sql
Créer une base de données à partir des tables principales et auxiliaires
creer_base([string $serveur = '' ]) : mixed
Lorsque de nouvelles tables ont été déclarées, cette fonction crée les tables manquantes.
mais ne crée pas des champs manquant d'une table déjà présente.
Pour cela, c’est maj_tables()
qu’il faut appeler.
Mettre à jour une liste de tables
maj_tables([array<string|int, mixed> $upgrade_tables = [] ][, string $serveur = '' ]) : mixed
Fonction facilitatrice utilisée pour les maj de base dans les plugins.
Elle permet de créer les champs manquants d'une table déjà présente.
Destruction des tables SQL de SPIP
base_delete_all_dist(string $titre) : mixed
La liste des tables à supprimer est à poster sur le nom (tableau) delete
Inutilisé
Crée un répertoire recevant la sauvegarde de la base de données et retourne son chemin.
base_dump_dir(string $meta) : string
Lister toutes les tables d'un serveur en excluant eventuellement une liste fournie
base_lister_toutes_tables([string $serveur = '' ][, array<string|int, mixed> $tables = [] ][, array<string|int, mixed> $exclude = [] ][, bool $affiche_vrai_prefixe = false ]) : array<string|int, mixed>
Retrouver le prefixe des tables
base_prefixe_tables([string $serveur = '' ]) : string
Fabrique la liste a cocher des tables a traiter (copie, delete, sauvegarde)
base_saisie_tables(string $name, array<string|int, mixed> $tables[, array<string|int, mixed> $exclude = [] ][, array<string|int, mixed>|null $post = null ][, string $serveur = '' ]) : array<string|int, mixed>
Lister les tables non exportables par defaut (liste completable par le pipeline lister_tables_noexport
lister_tables_noexport() : array<string|int, mixed>
Lister les tables non importables par defaut (liste completable par le pipeline lister_tables_noimport
lister_tables_noimport() : array<string|int, mixed>
Lister les tables a ne pas effacer (liste completable par le pipeline lister_tables_noerase
lister_tables_noerase() : array<string|int, mixed>
construction de la liste des tables pour le dump : toutes les tables principales + toutes les tables auxiliaires hors relations + les tables relations dont les deux tables liees sont dans la liste
base_liste_table_for_dump([array<string|int, mixed> $exclude_tables = [] ]) : array<string|int, mixed>
Vider les tables de la base de destination pour la copie dans une base
base_vider_tables_destination_copie(array<string|int, mixed> $tables[, array<string|int, mixed> $exclure_tables = [] ][, string $serveur = '' ]) : mixed
peut etre utilise pour l'import depuis xml, ou la copie de base a base (mysql<->sqlite par exemple)
Conserver le copieur si besoin
base_conserver_copieur([bool $move = true ][, string $serveur = '' ]) : mixed
Effacement de la bidouille ci-dessus Toutefois si la table des auteurs ne contient plus qu'elle c'est que la copie etait incomplete et on restaure le compte pour garder la connection au site
base_detruire_copieur_si_besoin([string $serveur = '' ]) : mixed
(mais il doit pas etre bien beau et ca ne marche que si l'id_auteur est sur moins de 3 chiffres)
Preparer la table dans la base de destination : la droper si elle existe (sauf si auteurs ou meta sur le serveur principal) la creer si necessaire, ou ajouter simplement les champs manquants
base_preparer_table_dest(string $table, array<string|int, mixed> $desc, string $serveur_dest[, bool $init = false ]) : array<string|int, mixed>
Copier de base a base
base_copier_tables(string $status_file, array<string|int, mixed> $tables, string $serveur_source, string $serveur_dest[, array<string|int, mixed> $options = [] ]) : bool
nom avec chemin complet du fichier ou est stocke le status courant
liste des tables a copier
parametres optionnels sous forme de tableau : param string $callback_progression fonction a appeler pour afficher la progression, avec les arguments (compteur,total,table) param int $max_time limite de temps au dela de laquelle sortir de la fonction proprement (de la forme time()+15) param bool $drop_source vider les tables sources apres copie param array $no_erase_dest liste des tables a ne pas vider systematiquement (ne seront videes que si existent dans la base source) param array $where liste optionnelle de condition where de selection des donnees pour chaque table param string $racine_fonctions_dest racine utilisee pour charger_fonction() des operations elementaires sur la base de destination. Permet de deleguer vers une autre voie de communication. Par defaut on utilise 'base', ce qui route vers les fonctions de ce fichier. Concerne :
fonction d'insertion en base lors de la copie de base a base
base_inserer_copie(string $table, array<string|int, mixed> $rows, array<string|int, mixed> $desc_dest, string $serveur_dest) : mixed
Merge dans un tableau une de ses clés avec une valeur
array_set_merge(array<string|int, mixed> &$table, string $index, array<string|int, mixed> $valeur) : mixed
Tableau dont on veut compléter une clé
Clé du tableau que l'on souhaite compléter
Sous tableau à merger dans la clé.
Lister les infos de toutes les tables sql declarées
lister_tables_objets_sql([string|null $table_sql = null ][, array<string|int, mixed> $desc = [] ]) : array<string|int, mixed>|string
Si un argument est fourni, on ne renvoie que les infos de cette table. Elle est auto-declarée si inconnue jusqu'alors.
table_sql demandee explicitement
description connue de la table sql demandee
Déclare les tables principales du Core
base_serial(array<string|int, mixed> &$tables_principales) : mixed
Tables principales, hors objets éditoriaux.
Description des tables principales déjà déclarées
Déclare les tables auxiliaires du Core
base_auxiliaires(array<string|int, mixed> &$tables_auxiliaires) : mixed
Description des tables auxiliaires déjà déclarées
Auto remplissage des informations non explicites sur un objet d'une table sql
renseigner_table_objet_sql(string $table_sql, array<string|int, mixed> &$infos) : array<string|int, mixed>
table_objet
table_objet_surnoms
type
type_surnoms
url_voir
url_edit
icone_objet
texte_retour
texte_modifier
texte_creer
texte_creer_associer
texte_ajouter
texte_objets
texte_objet
info_aucun_objet
info_1_objet
info_nb_objets
texte_logo_objet
texte_langue_objet
texte_definir_comme_traduction_objet
principale
champs_contenu : utlisé pour générer l'affichage par défaut du contenu
editable
champs_editables : utilisé pour prendre en compte le post lors de l'édition
champs_versionnes
L'objet doit définir de lui même ces champs pour gérer des statuts : - statut - statut_images - statut_titres - statut_textes_instituer - texte_changer_statut - aide_changer_statut
Les infos non renseignées sont auto-déduites par conventions ou laissées vides
Renseigner les infos d'interface compilateur pour les tables objets complete la declaration precedente
renseigner_table_objet_interfaces(string $table_sql, array<string|int, mixed> &$infos) : array<string|int, mixed>
titre date statut tables_jointures
Retourne la liste des tables principales et leurs descriptions
lister_tables_principales() : array<string|int, mixed>
Liste et descriptions des tables principales
Retourne la liste des tables auxiliaires et leurs descriptions
lister_tables_auxiliaires() : array<string|int, mixed>
Liste et descriptions des tables auxiliaires
Recenser les surnoms de table_objet
lister_tables_objets_surnoms() : array<string|int, mixed>
Recenser les surnoms de table_objet
lister_types_surnoms() : array<string|int, mixed>
Retourne la liste des tables SQL qui concernent SPIP
lister_tables_spip([string $serveur = '' ]) : array<string|int, mixed>
Cette liste n'est calculée qu'une fois par serveur pour l'ensemble du hit
Nom du fichier de connexion à la base de données
Couples (nom de la table SQL => même nom, sans 'spip_' devant)
Retourne la liste des tables SQL, Spip ou autres
lister_toutes_tables(string $serveur) : array<string|int, mixed>
Cette liste n'est calculée qu'une fois par serveur pour l'ensemble du hit
Nom du fichier de connexion à la base de données
Couples (nom de la table SQL => même nom)
Retrouve le nom d'objet à partir de la table
table_objet(string $type[, string|false $serveur = '' ]) : string
Nom de la table SQL (le plus souvent) Tolère un nom de clé primaire.
Nom de l'objet
Retrouve la table sql à partir de l'objet ou du type
table_objet_sql(string $type[, string|false $serveur = '' ]) : string
Nom ou type de l'objet Tolère un nom de clé primaire.
Nom de la table SQL
Retrouve la clé primaire à partir du nom d'objet ou de table
id_table_objet(string $type[, string $serveur = '' ]) : string|null
Nom de la table SQL ou de l'objet
Nom du connecteur
Nom de la clé primaire
Retrouve le type d'objet à partir du nom d'objet ou de table
objet_type(string $table_objet[, string|false $serveur = '' ]) : string|null
Nom de l'objet ou de la table SQL
Type de l'objet
Determiner si un objet est publie ou non
objet_test_si_publie(string $objet, int $id_objet[, string $serveur = '' ]) : bool
On se base pour cela sur sa declaration de statut pour des cas particuliers non declarables, on permet de fournir une fonction base_xxxx_test_si_publie qui sera appele par la fonction
Cherche les contenus parent d'un contenu précis.
objet_lister_parents(string $objet, int $id_objet[, bool $parent_direct_seulement = false ]) : array<string|int, mixed>
comme :
$tables['spip_auteurs']['parent'] = array(
'type' => 'organisation',
'champ' => 'id_organisation',
'table' => 'spip_organisations_liens',
'table_condition' => 'role="parent"',
'source_champ' => 'id_objet',
'champ_type' => 'objet'
);
La fonction retourne un tableau de parents, chacun de la forme ['objet' => '...', 'id_objet' => X, 'table' => '...', 'champ' => '...'] Si la table utilisée pour trouver le parent est une table de liens (finissant par _liens), le tableau contient en plus en entrée 'lien' qui contient les informations complètes du lien (rang, role...)
Type de l'objet dont on cherche les parent
Identifiant de l'objet dont on cherche les parent
ne considerer que les relations directes et non via table de liens
Retourne un tableau décrivant les parents trouvés
Fonction helper qui permet de récupérer une liste simplifiée des parents, regroupés par objet [ 'objet1' => [ids...], 'objet2' => [ids...] ]
objet_lister_parents_par_type(string $objet, int $id_objet) : array<string|int, mixed>
Cherche tous les contenus enfants d'un contenu précis
objet_lister_enfants(string $objet, int $id_objet) : array<string|int, mixed>
comme :
$tables['spip_auteurs']['parent'] = array(
'type' => 'organisation',
'champ' => 'id_organisation',
'table' => 'spip_organisations_liens',
'table_condition' => 'role="parent"',
'source_champ' => 'id_objet',
'champ_type' => 'objet'
);
La fonction retourne un tableau des enfants, chacun de la forme ['objet' => '...', 'id_objet' => X, 'table' => '...', 'champ' => '...'] Si la table utilisée pour trouver l'eenfant est une table de liens (finissant par _liens), le tableau contient en plus en entrée 'lien' qui contient les informations complètes du lien (rang, role...)
Type de l'objet dont on cherche les enfants
Identifiant de l'objet dont on cherche les enfants
Retourne un tableau de tableaux, avec comme clés les types des objets, et dans chacun un tableau des identifiants trouvés
Fonction helper qui permet de récupérer une liste simplifiée des enfants, regroupés par objet [ 'objet1' => [ids...], 'objet2' => [ids...] ]
objet_lister_enfants_par_type(string $objet, int $id_objet) : array<string|int, mixed>
Donne les informations de parenté directe d'un type d'objet si on en trouve
objet_type_decrire_infos_parents(string $objet) : array<string|int, mixed>|false
Type de l'objet dont on cherche les informations de parent
Retourne un tableau de tableau contenant les informations de type et de champ pour trouver le parent ou false sinon
Donne les informations des enfants directs d'un type d'objet si on en trouve
objet_type_decrire_infos_enfants(string $objet) : array<string|int, mixed>
Type de l'objet dont on cherche les informations des enfants
Retourne un tableau de tableaux contenant chacun les informations d'un type d'enfant
Action de réparation de la base de données
base_repair_dist([string $titre = '' ][, string $reprise = '' ]) : mixed
Tente de réparer les tables, recalcule les héritages et secteurs de rubriques. Affiche les erreurs s'il y en a eu.
Inutilisé
Inutilisé
Exécute une réparation de la base de données
admin_repair_tables() : string
Crée les tables et les champs manquants. Applique sur les tables un REPAIR en SQL (si le serveur SQL l'accepte).
Code HTML expliquant les actions réalisées
Retourne la description d'une table SQL
base_trouver_table_dist(string $nom[, string $serveur = '' ][, bool $table_spip = true ][, array<string|int, mixed> $options = [] ]) : array<string|int, mixed>|null
Cela sert notamment au moment de la compilation des boucles, critères et balise.
Les champs et clés de la tables sont retrouvés prioritairement via le gestionnaire de base de données. Les descriptions sont complétées, pour les tables éditoriales, des informations déclarées ou construites par la déclaration des objets éditoriaux.
Nom de la table Vide '' demande de vider le cache des discriptions
Nom du connecteur
Indique s'il faut transformer le préfixe de table
null si pas de connexion sql ou table introuvable tableau de description de la table sinon, en particulier :
Programme de mise à jour des tables SQL lors d'un changement de version.
base_upgrade_dist([string $titre = '' ][, string $reprise = '' ]) : mixed
L'entrée dans cette fonction est reservée aux mises à jour de SPIP coeur.
Marche aussi pour les plugins en appelant directement la fonction maj_plugin
Pour que ceux-ci profitent aussi de la reprise sur interruption,
ils doivent simplement indiquer leur numero de version installée dans une meta
et fournir le tableau $maj
à la fonction maj_plugin
.
La reprise sur timeout se fait alors par la page admin_plugin et jamais par ici.
Inutilisé
Mise à jour de base de SPIP
maj_base([int $version_cible = 0 ][, string $redirect = '' ][, mixed $debut_page = true ]) : array<string|int, mixed>|bool
Exécute toutes les fonctions de mises à jour de SPIP nécessaires,
en fonction de la meta version_installee
indiquant le numéro de
schéma actuel de la base de données.
Les fonctions de mises à jour se trouvent dans ecrire/maj/
Mise à jour d'un plugin de SPIP
maj_plugin(string $nom_meta_base_version, string $version_cible, array<string|int, mixed> $maj[, string $table_meta = 'meta' ]) : mixed
Fonction appelée par la fonction de mise à jour d'un plugin. On lui fournit un tableau de fonctions élementaires dont l'indice est la version.
Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
Version du schéma de données dans le plugin (déclaré dans paquet.xml)
Tableau d'actions à faire à l'installation (clé create
) et pour chaque
version intermédiaire entre la version actuelle du schéma du plugin dans SPIP
et la version du schéma déclaré dans le plugin (ex. clé 1.1.0
).
Chaque valeur est un tableau contenant une liste de fonctions à exécuter, cette liste étant elle-même un tableau avec premier paramètre le nom de la fonction et les suivant les paramètres à lui passer
Exemple :
```
array(
'create' => array(
array('maj_tables', array('spip_rubriques', 'spip_articles')),
array('creer_base)),
'1.1.0' => array(
array('sql_alter', 'TABLE spip_articles ADD INDEX truc (truc)'))
)
```
Nom de la table meta (sans le prefixe spip_) dans laquelle trouver la meta $nom_meta_base_version
Relancer le hit de mise à jour avant timeout
relance_maj(string $meta, string $table[, string $redirect = '' ]) : mixed
si pas de redirect fourni, on redirige vers exec=upgrade
pour finir
ce qui doit être une mise à jour SPIP
Initialiser la page pour l'affichage des progrès de l'upgrade uniquement si la page n'a pas déjà été initilalisée
maj_debut_page(string $installee, string $meta, string $table) : mixed
Gestion des mises à jour de SPIP et des plugins
maj_while(string $installee, string $cible, array<string|int, mixed> $maj[, string $meta = '' ][, string $table = 'meta' ][, string $redirect = '' ][, bool $debut_page = false ]) : array<string|int, mixed>
À partir des versions > 1.926 (i.e SPIP > 1.9.2), cette fonction gere les MAJ.
Se relancer soi-même pour éviter l'interruption pendant une operation SQL (qu'on espère pas trop longue chacune) évidemment en ecrivant dans la meta à quel numero on en est.
Cette fonction peut servir aux plugins qui doivent donner comme arguments :
$table_prefix . '_meta'
par défaut)
(cf début de fichier)les fonctions sql_xx
appelées lors des mises à jour sont supposées
atomiques et ne sont pas relancées en cas de timeout, mais les fonctions
spécifiques sont relancées jusqu'à ce qu'elles finissent.
Elles doivent donc s'assurer de progresser à chaque reprise.
Appliquer une serie de changements qui risquent de partir en timeout
serie_alter(string $serie[, array<string|int, mixed> $q = [] ][, string $meta = '' ][, string $table = 'meta' ][, string $redirect = '' ]) : int
Alter crée une copie temporaire d'une table, c'est lourd.
numero de version upgrade
tableau des operations pour cette version
nom de la meta qui contient le numero de version
nom de la table meta
url de redirection en cas d'interruption
Vérifie qu'il est possible d'ajouter une colonne à une table SQL
upgrade_test() : bool
True si possible.
Indique si on est dans l'espace prive
test_espace_prive() : bool
true si c'est le cas, false sinon.
Prédicat sur les scripts de ecrire qui n'authentifient pas par cookie et beneficient d'une exception
autoriser_sans_cookie(string $nom[, bool $strict = false ]) : bool
Retourne le statut du visiteur s'il s'annonce.
verifier_visiteur() : string|0|false
Pour que cette fonction marche depuis mes_options, il faut forcer l'init si ce n'est fait mais on risque de perturber des plugins en initialisant trop tot certaines constantes.
Renvoie une chaîne qui identifie la session courante
spip_session([bool $force = false ]) : string
Permet de savoir si on peut utiliser un cache enregistré pour cette session. Cette chaîne est courte (8 cars) pour pouvoir être utilisée dans un nom de fichier cache.
Identifiant de la session
Retourne un formulaire (POST par défaut) vers un script exec de l’interface privée
generer_form_ecrire(string $script, string $corps[, string $atts = '' ][, string $submit = '' ]) : string
Nom de la page exec
Contenu du formulaire
Si présent, remplace les arguments par défaut (method=post) par ceux indiqués
Si indiqué, un bouton de soumission est créé avec texte sa valeur.
Code HTML du formulaire
Générer un formulaire pour lancer une action vers $script
generer_form_action(string $script, string $corps[, string $atts = '' ][, bool $public = false ]) : string
Attention, JS/Ajax n'aime pas le melange de param GET/POST On n'applique pas la recommandation ci-dessus pour les scripts publics qui ne sont pas destines a etre mis en signets
Traduction des textes de SPIP
_T(string $texte[, array<string|int, mixed> $args = [] ][, array<string|int, mixed> $options = [] ]) : string
Traduit une clé de traduction en l'obtenant dans les fichiers de langues.
Clé de traduction
Couples (variable => valeur) pour passer des variables à la chaîne traduite. la variable spip_lang permet de forcer la langue
texte
Remplace les variables `@...@` par leur valeur dans une chaîne de langue.
_L(string $text[, array<string|int, mixed> $args = [] ][, array<string|int, mixed> $options = [] ]) : string
Cette fonction est également appelée dans le code source de SPIP quand une chaîne n'est pas encore dans les fichiers de langue.
texte
Couples (variable => valeur) à transformer dans le texte
texte
Sélectionne la langue donnée en argument et mémorise la courante
lang_select([null|string $lang = null ]) : string
Restaure l'ancienne langue si appellée sans argument.
Fonction d'initialisation groupée pour compatibilité ascendante
spip_initialisation([string $pi = null ][, string $pa = null ][, string $ti = null ][, string $ta = null ]) : mixed
Répertoire permanent inaccessible
Répertoire permanent accessible
Répertoire temporaire inaccessible
Répertoire temporaire accessible
Fonction d'initialisation, appellée dans inc_version ou mes_options
spip_initialisation_core([string $pi = null ][, string $pa = null ][, string $ti = null ][, string $ta = null ]) : mixed
Elle définit les répertoires et fichiers non partageables et indique dans $test_dirs ceux devant être accessibles en écriture mais ne touche pas à cette variable si elle est déjà définie afin que mes_options.php puisse en spécifier d'autres.
Elle définit ensuite les noms des fichiers et les droits. Puis simule un register_global=on sécurisé.
Répertoire permanent inaccessible
Répertoire permanent accessible
Répertoire temporaire inaccessible
Répertoire temporaire accessible
Complements d'initialisation non critiques pouvant etre realises par les plugins
spip_initialisation_suite() : mixed
Repérer les variables d'URL spéciales `var_mode` qui conditionnent la validité du cache ou certains affichages spéciaux.
init_var_mode() : mixed
Le paramètre d'URL var_mode
permet de
modifier la pérennité du cache, recalculer des urls
ou d'autres petit caches (trouver_table, css et js compactes ...),
d'afficher un écran de débug ou des traductions non réalisées.
En fonction de ces paramètres dans l'URL appelante, on définit
da constante _VAR_MODE
qui servira ensuite à SPIP.
Le paramètre var_mode
accepte ces valeurs :
calcul
: force un calcul du cache de la page (sans forcément recompiler les squelettes)recalcul
: force un calcul du cache de la page en recompilant au préabable les squelettesinclure
: modifie l'affichage en ajoutant visuellement le nom de toutes les inclusions qu'elle contientdebug
: modifie l'affichage activant le mode "debug"preview
: modifie l'affichage en ajoutant aux boucles les éléments prévisualisablestraduction
: modifie l'affichage en affichant des informations sur les chaînes de langues utiliséesurls
: permet de recalculer les URLs des objets appelés dans la page par les balises #URL_xx
images
: permet de recalculer les filtres d'images utilisés dans la pageEn dehors des modes calcul
et recalcul
, une autorisation 'previsualiser' ou 'debug' est testée.
Action qui déclenche une tache de fond
action_cron() : mixed
Exécution des tâches de fond
cron([array<string|int, mixed> $taches = [] ][, array<string|int, mixed> $taches_old = [] ]) : bool
Tâches forcées
Tâches forcées, pour compat avec ancienne syntaxe
True si la tache a pu être effectuée
Ajout d'une tache dans la file d'attente
job_queue_add(string $function, string $description[, array<string|int, mixed> $arguments = [] ][, string $file = '' ][, bool $no_duplicate = false ][, int $time = 0 ][, int $priority = 0 ]) : int
Le nom de la fonction PHP qui doit être appelée.
Une description humainement compréhensible de ce que fait la tâche (essentiellement pour l’affichage dans la page de suivi de l’espace privé)
Facultatif, vide par défaut : les arguments qui seront passés à la fonction, sous forme de tableau PHP
Facultatif, vide par défaut : nom du fichier à inclure, via include_spip($file)
exemple : 'inc/mail'
: il ne faut pas indiquer .php
Si le nom finit par un '/' alors on considère que c’est un répertoire et SPIP fera un charger_fonction($function, $file)
Facultatif, false
par défaut
true
la tâche ne sera pas ajoutée si elle existe déjà en file d’attente avec la même fonction et les mêmes arguments.function_only
la tâche ne sera pas ajoutée si elle existe déjà en file d’attente avec la même fonction indépendamment de ses argumentsFacultatif, 0
par défaut : indique la date sous forme de timestamp à laquelle la tâche doit être programmée.
Si 0
ou une date passée, la tâche sera exécutée aussitôt que possible (en général en fin hit, en asynchrone).
Facultatif, 0
par défaut : indique un niveau de priorité entre -10 et +10.
Les tâches sont exécutées par ordre de priorité décroissante, une fois leur date d’exécution passée. La priorité est surtout utilisée quand une tâche cron indique qu’elle n’a pas fini et doit être relancée : dans ce cas SPIP réduit sa priorité pour être sûr que celle tâche ne monopolise pas la file d’attente.
Le numéro de travail ajouté ou 0
si aucun travail n’a été ajouté.
Supprimer une tache de la file d'attente
job_queue_remove(int $id_job) : bool
id of jonb to delete
Associer une tache a un/des objets de SPIP
job_queue_link(int $id_job, array<string|int, mixed> $objets) : mixed
id of job to link
can be a simple array('objet'=>'article', 'id_objet'=>23) or an array of simple array to link multiples objet in one time
Renvoyer le temps de repos restant jusqu'au prochain job
queue_sleep_time_to_next_job([int|bool $force = null ]) : int|null
Utilisée par queue_set_next_job_time()
pour mettre à jour la valeur :
true
, force la relecture depuis le fichier0
si un job est à traiternull
si la queue n'est pas encore initialiséeCherche une fonction surchargeable et en retourne le nom exact, après avoir chargé le fichier la contenant si nécessaire.
charger_fonction(string $nom[, string $dossier = 'exec' ][, bool $continue = false ]) : string
Charge un fichier (suivant les chemins connus) et retourne si elle existe
le nom de la fonction homonyme $dir_$nom
, ou suffixé $dir_$nom_dist
Peut être appelé plusieurs fois, donc optimisé.
Nom de la fonction (et du fichier)
Nom du dossier conteneur
true pour ne pas râler si la fonction n'est pas trouvée
Nom de la fonction, ou false.
Inclusion unique avec verification d'existence du fichier + log en crash sinon
include_once_check(string $file) : bool
Inclut un fichier PHP (en le cherchant dans les chemins)
include_spip(string $f[, bool $include = true ]) : string|bool
Nom du fichier (sans l'extension)
Requiert un fichier PHP (en le cherchant dans les chemins)
require_spip(string $f) : string|bool
Nom du fichier (sans l'extension)
Raccourci pour inclure mes_fonctions.php et tous les fichiers _fonctions.php des plugin quand on a besoin dans le PHP de filtres/fonctions qui y sont definis
include_fichiers_fonctions() : mixed
Charger la fonction de gestion des urls si elle existe
charger_fonction_url(string $quoi[, string $type = '' ]) : string
'page' 'objet' 'decoder' ou objet spip pour lequel on cherche la fonction url par defaut (si type==='defaut')
type des urls (par defaut la meta type_urls) ou 'defaut' pour trouver la fonction par defaut d'un type d'objet
Trouve un squelette dans le repertoire modeles/
trouve_modele(mixed $nom) : string
Trouver un squelette dans le chemin on peut specifier un sous-dossier dans $dir si $pathinfo est a true, retourne un tableau avec les composantes du fichier trouve + le chemin complet sans son extension dans fond
trouver_fond(string $nom[, string $dir = '' ][, bool $pathinfo = false ]) : array<string|int, mixed>|string
Retourne un lien vers une aide
aider([string $aide = '' ][, bool $distante = false ]) : Lien
Aide, aussi depuis l'espace privé à présent. Surchargeable mais pas d'erreur fatale si indisponible.
Cle d'identification de l'aide desiree
Generer une url locale (par defaut) ou une url distante [directement sur spip.net]
sur une icone d'aide
Teste, pour un nom de page de l'espace privé, s'il est possible de générer son contenu.
tester_url_ecrire(string $nom) : string
Dans ce cas, on retourne la fonction d'exécution correspondante à utiliser
(du répertoire ecrire/exec
). Deux cas particuliers et prioritaires :
fond
est retourné si des squelettes existent.
fond
: pour des squelettes de prive/squelettes/contenu
ou pour des objets éditoriaux dont les squelettes seront échaffaudésNom de la page
Nom de l'exec, sinon chaîne vide.
Obtenir un logger compatible Psr\Log
spip_logger([string|null $name = null ]) : LoggerInterface
Enregistrement des événements
Utiliser spip_logger()
spip_log(mixed $message[, int|string|null $name = null ]) : void
Signature : spip_log(message, ?name)
Message à consigner
Nom du fichier de log, "spip" par défaut
Enregistrement des journaux
journal(string $phrase[, array<string|int, mixed> $opt = [] ]) : mixed
texte du journal
Tableau d'options
Return unique Aggregator class
spip_paths([null|array<string|int, mixed> $add = null ]) : AggregatorInterface
List of «plugins» directories to add
spip_paths_loader() : Loader
Gestion des chemins (ou path) de recherche de fichiers par SPIP
_chemin([string|array<string|int, mixed>|null $dir_path = null ]) : array<string|int, mixed>
Empile de nouveaux chemins (à la suite de ceux déjà présents, mais avant
le répertoire squelettes
ou les dossiers squelettes), si un répertoire
(ou liste de répertoires séparés par :
) lui est passé en paramètre.
Ainsi, si l'argument est de la forme dir1:dir2:dir3
, ces 3 chemins sont placés
en tête du path, dans cet ordre (hormis squelettes
& la globale
$dossier_squelette
si définie qui resteront devant)
Retourne dans tous les cas la liste des chemins.
Liste des chemins, par ordre de priorité.
Retourne la liste des chemins connus de SPIP, dans l'ordre de priorité
creer_chemin() : array<string|int, mixed>
Liste de chemins
Retourne la liste des thèmes du privé utilisables pour cette session
lister_themes_prives() : array<string|int, string>
Nom des thèmes.
find_in_theme(mixed $file[, mixed $subdir = '' ][, mixed $include = false ]) : mixed
Cherche une image dans les dossiers d'images
chemin_image(string $icone) : string
Cherche en priorité dans les thèmes d'image (prive/themes/X/images) et si la fonction n'en trouve pas, gère le renommage des icones (ex: 'supprimer' => 'del') de facon temporaire le temps de la migration, et cherche de nouveau.
Si l'image n'est toujours pas trouvée, on la cherche dans les chemins,
dans le répertoire défini par la constante _NOM_IMG_PACK
Nom de l'icone cherchée
Recherche un fichier dans les chemins de SPIP (squelettes, plugins, core)
find_in_path(string $file[, string $dirname = '' ][, bool|string $include = false ]) : string|null
Retournera le premier fichier trouvé (ayant la plus haute priorité donc), suivant l'ordre des chemins connus de SPIP.
Fichier recherché
Répertoire éventuel de recherche (est aussi extrait automatiquement de $file)
clear_path_cache() : mixed
load_path_cache() : mixed
save_path_cache() : mixed
Trouve tous les fichiers du path correspondants à un pattern
find_all_in_path(string $dir, string $pattern[, bool $recurs = false ][, bool $all_files = false ]) : array<string|int, mixed>
Pour un nom de fichier donné, ne retourne que le premier qui sera trouvé
par un find_in_path()
, sauf si l'option all_files
est activée.
Exécute une fonction (appellée par un pipeline) avec la donnée transmise.
minipipe(string $fonc, string|array<string|int, mixed> &$val) : string|array<string|int, mixed>
Un pipeline est lie a une action et une valeur chaque element du pipeline est autorise a modifier la valeur le pipeline execute les elements disponibles pour cette action, les uns apres les autres, et retourne la valeur finale
Cf. compose_filtres dans references.php, qui est la version compilee de cette fonctionnalite appel unitaire d'une fonction du pipeline utilisee dans le script pipeline precompile
on passe $val par reference pour limiter les allocations memoire
Nom de la fonction appelée par le pipeline
Les paramètres du pipeline, son environnement
Les paramètres du pipeline modifiés
Appel d’un pipeline
pipeline(string $action[, mixed $val = null ]) : mixed|null
Exécute le pipeline souhaité, éventuellement avec des données initiales. Chaque plugin qui a demandé à voir ce pipeline vera sa fonction spécifique appelée. Les fonctions (des plugins) appelées peuvent modifier à leur guise le contenu.
Deux types de retours. Si $val
est un tableau de 2 éléments, avec une clé data
on retourne uniquement ce contenu ($val['data']
) sinon on retourne tout $val
.
Nom du pipeline
Données à l’entrée du pipeline
Résultat
Renvoie le `$_GET` ou le `$_POST` émis par l'utilisateur ou pioché dans un tableau transmis
_request(string $var[, bool|array<string|int, mixed> $c = false ]) : mixed|null
Clé souhaitée
Tableau transmis (sinon cherche dans GET ou POST)
Affecte une valeur à une clé (pour usage avec `_request()`)
set_request(string $var[, string $val = null ][, bool|array<string|int, mixed> $c = false ]) : array<string|int, mixed>|bool
Nom de la clé
Valeur à affecter
Tableau de données (sinon utilise $_GET
et $_POST
)
Sanitizer une valeur *SI* elle provient du GET ou POST Utile dans les squelettes pour les valeurs qu'on attrape dans le env, dont on veut permettre à un squelette de confiance appelant de fournir une valeur complexe mais qui doit etre nettoyee si elle provient de l'URL
spip_sanitize_from_request(string|array<string|int, mixed> $value, string|array<string|int, mixed> $key[, string $sanitize_function = 'entites_html' ]) : array<string|int, mixed>|mixed|string
On peut sanitizer
$where = spip_sanitize_from_request($value, 'where')
$env = spip_sanitize_from_request($env, ['key1','key2'])
$env = spip_sanitize_from_request($env, '*')
Supprimer les éventuels caracteres nuls %00, qui peuvent tromper la commande is_readable('chemin/vers/fichier/interdit%00truc_normal').
spip_desinfecte(array<string|int, mixed> &$t[, bool $deep = true ]) : mixed
Cette fonction est appliquée par SPIP à son initialisation sur GET/POST/COOKIES/GLOBALS
le tableau ou la chaine à desinfecter (passage par référence)
= true : appliquer récursivement
Nettoie une chaine pour servir comme classes CSS.
spip_sanitize_classname(string|array<string|int, string> $classes) : string|array<string|int, string>
Génère une erreur de squelette
erreur_squelette([bool|string|array<string|int, mixed> $message = '' ][, string|array<string|int, mixed>|object $lieu = '' ]) : null|string
Génère une erreur de squelette qui sera bien visible par un administrateur authentifié lors d'une visite de la page en erreur
Lieu d'origine de l'erreur
Calcule un squelette avec un contexte et retourne son contenu
recuperer_fond(mixed $fond[, array<string|int, mixed> $contexte = [] ][, array<string|int, mixed> $options = [] ][, string $connect = '' ]) : string|array<string|int, mixed>
La fonction de base de SPIP : un squelette + un contexte => une page. $fond peut etre un nom de squelette, ou une liste de squelette au format array. Dans ce dernier cas, les squelettes sont tous evalues et mis bout a bout $options permet de selectionner les options suivantes :
Options complémentaires :
Non du connecteur de bdd a utiliser
Transformation XML des `&` en `&`
quote_amp(string $u) : string
Tester si une URL est absolue
tester_url_absolue(string $url) : bool
On est sur le web, on exclut certains protocoles, notamment 'file://', 'php://' et d'autres…
Prend une URL et lui ajoute/retire un paramètre
parametre_url(string $url, string $c[, string|array<string|int, mixed>|null $v = null ][, string $sep = '&' ]) : string
URL
Nom du paramètre
Valeur du paramètre
Séparateur entre les paramètres
URL
Ajoute (ou retire) une ancre sur une URL
ancre_url(string $url[, string|null $ancre = '' ]) : string
L’ancre est nettoyée : on translitère, vire les non alphanum du début,
et on remplace ceux à l'interieur ou au bout par -
Pour le nom du cache, les `types_urls` et `self`
nettoyer_uri([string|null $reset = null ]) : string
Nettoie une URI de certains paramètres (var_xxx, utm_xxx, etc.)
nettoyer_uri_var(string $request_uri) : string
La regexp des paramètres nettoyés est calculée à partir de la constante _CONTEXTE_IGNORE_LISTE_VARIABLES
(qui peut être redéfinie dans mes_options.php)
Donner l'URL de base d'un lien vers "soi-meme", modulo les trucs inutiles
self([string $amp = '&' ][, bool $root = false ]) : string
Style des esperluettes
URL vers soi-même
Fonction codant les URLs des objets SQL mis en page par SPIP
generer_objet_url(int|string|null $id, string $entite[, string $args = '' ][, string $ancre = '' ][, bool|null $public = null ][, string $type = '' ][, string $connect = '' ]) : string
numero de la cle primaire si nombre
surnom de la table SQL (donne acces au nom de cle primaire)
query_string a placer apres cle=$id&....
ancre a mettre a la fin de l'URL a produire
produire l'URL publique ou privee (par defaut: selon espace)
fichier dans le repertoire ecrire/urls determinant l'apparence
serveur de base de donnee (nom du connect)
url codee ou fonction de decodage
generer_url_entite([mixed $id = 0 ][, mixed $entite = '' ][, mixed $args = '' ][, mixed $ancre = '' ][, mixed $public = null ][, mixed $type = null ]) : mixed
Generer l'url vers la page d'edition dans ecrire/
generer_objet_url_ecrire_edit(int|string|null $id, string $entite[, string $args = '' ][, string $ancre = '' ]) : string
generer_url_ecrire_entite_edit(mixed $id, mixed $entite[, mixed $args = '' ][, mixed $ancre = '' ]) : mixed
urls_connect_dist(mixed $i, mixed &$entite[, mixed $args = '' ][, mixed $ancre = '' ][, mixed $public = null ]) : mixed
Transformer les caractères utf8 d'une URL (farsi par exemple) selon la RFC 1738
urlencode_1738(string $url) : string
Generer l'url absolue vers un objet
generer_objet_url_absolue([int|string|null $id = 0 ][, string $entite = '' ][, string $args = '' ][, string $ancre = '' ][, bool|null $public = null ][, string $type = '' ][, string $connect = '' ]) : string
generer_url_entite_absolue([mixed $id = 0 ][, mixed $entite = '' ][, mixed $args = '' ][, mixed $ancre = '' ][, mixed $connect = null ]) : mixed
Calcule l'url de base du site
url_de_base([int|bool|array<string|int, mixed> $profondeur = null ]) : string|array<string|int, mixed>
Calcule l'URL de base du site, en priorité sans se fier à la méta (adresse_site) qui peut être fausse (sites avec plusieurs noms d’hôtes, déplacements, erreurs). En dernier recours, lorsqu'on ne trouve rien, on utilise adresse_site comme fallback.
fonction testable de construction d'une url appelee par url_de_base()
url_de_(string $http, string $host, string $request[, int $prof = 0 ]) : string
Crée une URL vers un script de l'espace privé
generer_url_ecrire([string $script = '' ][, string $args = '' ][, bool $no_entities = false ][, bool|string $rel = false ]) : string
Nom de la page privée (xx dans exec=xx)
Arguments à transmettre, tel que arg1=yy&arg2=zz
Si false : transforme les &
en &
URL relative ?
URL
Retourne le nom du fichier d'exécution de SPIP
get_spip_script([string $default = '' ]) : string
Script par défaut
Nom du fichier (constante _SPIP_SCRIPT), sinon nom par défaut
Crée une URL vers une page publique de SPIP
generer_url_public([string $script = '' ][, string|array<string|int, mixed> $args = '' ][, bool $no_entities = false ][, bool $rel = true ][, string $action = '' ]) : string
Nom de la page
Arguments à transmettre a l'URL,
soit sous la forme d'un string tel que arg1=yy&arg2=zz
soit sous la forme d'un array tel que array( arg1
=> yy
, arg2
=> zz
)
Si false : transforme les &
en &
URL relative ?
URL
generer_url_prive(mixed $script[, mixed $args = '' ][, mixed $no_entities = false ]) : mixed
Créer une URL
generer_url_action(string $script[, string $args = '' ][, bool $no_entities = false ][, bool $public = false ]) : string
Nom du script à exécuter
Arguments à transmettre a l'URL sous la forme arg1=yy&arg2=zz
Si false : transforme les & en &
URL relative ? false : l’URL sera complète et contiendra l’URL du site. true : l’URL sera relative.
URL
Créer une URL
generer_url_api(string $script, string $path, string $args[, bool $no_entities = false ][, bool $public = null ]) : string
Nom du script à exécuter
Arguments à transmettre a l'URL sous la forme arg1=yy&arg2=zz
Si false : transforme les & en &
URL public ou relative a l'espace ou l'on est ?
URL
Vérifie la présence d'un plugin actif, identifié par son préfixe
test_plugin_actif(string $plugin) : bool
Retourne un joli chemin de répertoire
joli_repertoire(string $rep) : string
Pour afficher ecrire/action/
au lieu de action/
dans les messages
ou tmp/
au lieu de ../tmp/
Chemin d’un répertoire
Débute ou arrête un chronomètre et retourne sa valeur
spip_timer([string $t = 'rien' ][, bool $raw = false ]) : float|int|string|void
On exécute 2 fois la fonction, la première fois pour démarrer le chrono, la seconde fois pour l’arrêter et récupérer la valeur
Nom du chronomètre
spip_touch(mixed $fichier[, mixed $duree = 0 ][, mixed $touch = true ]) : mixed
Produit une balise `<script>` valide
http_script(string $script[, string $src = '' ][, string $noscript = '' ]) : string
Code source du script
Permet de faire appel à un fichier javascript distant
Contenu de la balise <noscript>
Balise HTML <script>
et son contenu
Sécurise du texte à écrire dans du PHP ou du Javascript.
texte_script(string|null $texte) : string
Transforme n'importe quel texte en une chaîne utilisable
en PHP ou Javascript en toute sécurité, à l'intérieur d'apostrophes
simples ('
uniquement ; pas "
)
Utile particulièrement en filtre dans un squelettes pour écrire un contenu dans une variable JS ou PHP.
Échappe les apostrophes (') du contenu transmis.
texte à échapper
texte échappé
Tester qu'une variable d'environnement est active
test_valeur_serveur(string|bool $truc) : bool
Sur certains serveurs, la valeur 'Off' tient lieu de false dans certaines
variables d'environnement comme $_SERVER['HTTPS']
ou ini_get('display_errors')
La valeur de la variable d'environnement
true si la valeur est considérée active ; false sinon.
Page `exec=info` : retourne le contenu de la fonction php `phpinfo()`
exec_info_dist() : mixed
Si l’utiliseur est un webmestre.
Indique si le code HTML5 est permis sur le site public
html5_permis() : bool
true si la constante _VERSION_HTML n'est pas définie ou égale à html5
Lister les formats image acceptes par les lib et fonctions images
formats_image_acceptables([bool|null $gd = null ][, bool $svg_allowed = true ]) : array<string|int, mixed>
Extension de la fonction getimagesize pour supporter aussi les images SVG
spip_getimagesize(string $fichier) : array<string|int, mixed>|bool
Lorsque la fonction renvoie un tableau, celui-ci peut contenir jusqu'à 7 entrées (cf. https://www.php.net/manual/en/function.getimagesize.php) :
<img>
;Poser une alerte qui sera affiche aux auteurs de bon statut ('' = tous) au prochain passage dans l'espace prive chaque alerte doit avoir un nom pour eviter duplication a chaque hit les alertes affichees une fois sont effacees
avertir_auteurs(string $nom, string $message[, string $statut = '' ]) : mixed
Compare 2 numéros de version entre elles.
spip_version_compare(string $v1, string $v2[, string $op = null ]) : int|bool
Cette fonction est identique (arguments et retours) a la fonction PHP version_compare() qu'elle appelle. Cependant, cette fonction reformate les numeros de versions pour ameliorer certains usages dans SPIP ou bugs dans PHP. On permet ainsi de comparer 3.0.4 à 3.0.* par exemple.
Numero de version servant de base a la comparaison. Ce numero ne peut pas comporter d'etoile.
Numero de version a comparer. Il peut posseder des etoiles tel que 3.0.*
Un operateur eventuel (<, >, <=, >=, =, == ...)
Sans operateur : int. -1 pour inferieur, 0 pour egal, 1 pour superieur Avec operateur : bool.
Un exec d'acces interdit
exec_403_dist([string $message = '' ]) : mixed
Un exec d'erreur
exec_404_dist() : mixed
Affichage de la page de gestion des plugins
exec_admin_plugin_dist([string $retour = '' ]) : mixed
Relance la page si des plugins ont été modifiés, sinon affiche la liste.
Inutilisé
Affichage spécifique de la page de gestion des plugins
admin_plug_args(string $quoi, string $erreur, string $format) : mixed
Affiche la liste des plugins demandés et les erreurs éventuelles.
Quels plugins afficher ? actifs, ou autre
Erreur éventuelle à afficher
Format d'affichage (liste ou arborescence)
Crée le code HTML de la liste des plugins verrouillés
affiche_les_plugins_verrouilles(array<string|int, mixed> $actifs) : string
Liste des plugins actifs
Code HTML
Crée le code HTML de la liste des librairies présentes
afficher_librairies() : string
Code HTML
Faire la liste des librairies disponibles
liste_librairies() : array<string|int, mixed>
Tableau (nom de la lib => repertoire , ...)
Exec de la page de destruction des tables de SPIP
exec_base_delete_all_dist() : mixed
Réparer la base de données
exec_base_repair_dist() : mixed
Demander à mettre à jour la base de données
exec_demande_mise_a_jour_dist() : mixed
Fonction appelée en cas d'arrêt de php sur une erreur
shutdown_error() : mixed
Un exec générique qui branche sur un squelette Z pour écrire
exec_fond_dist() : mixed
La fonction ne fait rien, c'est l'inclusion du fichier qui déclenche le traitement
Affichage de la description d'un plugin (en ajax)
exec_info_plugin_dist() : mixed
Affiche en ajax des informations d'une rubrique selectionnée dans le mini navigateur
exec_informer_dist() : mixed
Affiche un des écrans d'installation de SPIP
exec_install_dist() : mixed
Affiche l'étape d'installation en cours, en fonction du paramètre
d'url etape
Afficher en ajax les sous-rubriques d'une rubrique (composant du mini-navigateur)
exec_plonger_dist() : mixed
Gestion de l'affichage ajax des puces d'action rapide
exec_puce_statut_dist() : void
Récupère l'identifiant id et le type d'objet dans les données postées et appelle la fonction de traitement de cet exec.
Traitement de l'affichage ajax des puces d'action rapide
exec_puce_statut_args(int $id, string $type) : void
Appelle la fonction de traitement des puces statuts après avoir retrouvé le statut en cours de l'objet et son parent (une rubrique)
Identifiant de l'objet
Type d'objet
Prépare la fonction de recherche ajax du mini navigateur de rubriques
exec_rechercher_dist() : mixed
Formate le rendu de la recherche ajax du mini navigateur de rubriques
exec_rechercher_args(int $id, string $type, string|int|array<string|int, mixed> $exclus, string|bool $rac, string $do) : string
Résultat de la recherche intéractive demandée par la fonction JS `onkey_rechercher`
proposer_item(array<string|int, mixed> $ids, array<string|int, mixed>|string $titles, string|bool $rac, string $type, string $do) : string
Affichage en ajax du sélecteur (mini-navigateur) de rubrique AJAX
exec_selectionner_dist() : mixed
Fonction d'installation et de mise à jour du core de SPIP
exec_upgrade_dist() : mixed
Envoi du Mail des nouveautés
genie_mail_dist(int $t) : int
Ce mail est basé sur le squelette nouveautes.html
La meta dernier_envoi_neuf
permet de marquer la date du dernier envoi
et de determiner les nouveautes publiees depuis cette date
Diverses tâches de maintenance
genie_maintenance_dist(object $t) : bool
Toujours à true.
Vérifier si une table a crashé
verifier_crash_tables() : bool|array<string|int, mixed>
Pour cela, on vérifie si on peut se connecter à la base de données.
Si pas de table de crashée, on retourne false
.
Sinon, retourne un tableau contenant tous les noms
des tables qui ont crashé.
Vérifier si une table a crashé et crée un message en conséquence.
message_crash_tables() : string
S'il y a un crash, on affiche un message avec le nom de la ou des tables qui ont crashé. On génère un lien vers la page permettant la réparation de la base de données.
Verifier si une mise a jour est disponible
genie_mise_a_jour_dist(int $t) : int
Mise a jour automatisee de l'ecran de securite On se base sur le filemtime de l'ecran source avec un en-tete if_modified_since Mais on fournit aussi le md5 de notre ecran actuel et la version branche de SPIP Cela peut permettre de diffuser un ecran different selon la version de SPIP si besoin ou de ne repondre une 304 que si le md5 est bon
mise_a_jour_ecran_securite() : mixed
Indique les mises à jour majeures et mineures pour une version de SPIP
info_maj_exists(string $version) : array{mineure: string, majeure: string}
Version du SPIP à comparer
Vérifier si une nouvelle version de SPIP est disponible
info_maj(string $version) : string
Repérer aussi si cette version est une version majeure de SPIP.
Version du SPIP à comparer
HTML présentant les mises à jour disponibles, s’il y en a
Notifier les webmestre d’une nouvelle version existante (pour mettre à jour)
info_maj_notifier(string $version) : mixed
La constante si définie _MAJ_NOTIF_EMAILS
peut servir
Cron d'optimisation de la base de données
genie_optimiser_dist(int $t) : int
Tache appelée régulièrement
Timestamp de la date de dernier appel de la tâche
Timestamp de la date du prochain appel de la tâche
Vider les contextes ajax de plus de 48h
optimiser_caches_contextes() : mixed
Optimise la base de données
optimiser_base([int $attente = 86400 ]) : mixed
Supprime les relicats d'éléments qui ont disparu
Attente entre 2 exécutions de la tache en secondes
Lance une requête d'optimisation sur une des tables SQL de la base de données.
optimiser_base_une_table() : mixed
À chaque appel, une nouvelle table est optimisée (la suivante dans la liste par rapport à la dernière fois).
Supprime des enregistrements d'une table SQL dont les ids à supprimer se trouvent dans les résultats de ressource SQL transmise, sous la colonne 'id'
optimiser_sansref(string $table, string $id, object $sel[, string $and = '' ]) : int
Nom de la table SQL, exemple : spip_articles
Nom de la clé primaire de la table, exemple : id_article
Ressource SQL issue d'une sélection (sql_select) et contenant une colonne 'id' ayant l'identifiant de la clé primaire à supprimer
Condition AND à appliquer en plus sur la requête de suppression
Nombre de suppressions
Suppression des liens morts entre tables
optimiser_base_disparus([int $attente = 86400 ]) : mixed
Supprime des liens morts entre tables suite à la suppression d'articles, d'auteurs, etc...
Attente entre 2 exécutions de la tache en secondes
Créer un mot de passe
creer_pass_aleatoire([int $longueur = 16 ][, string $sel = '' ]) : string
Longueur du password créé
Clé pour un salage supplémentaire
Mot de passe
Créer un identifiant aléatoire
creer_uniqid() : string
Identifiant
Charge les aléas ehpémères s'il ne sont pas encore dans la globale
charger_aleas() : string
Si les métas 'alea_ephemere' et 'alea_ephemere_ancien' se sont pas encore chargées en méta (car elles ne sont pas stockées, pour sécurité, dans le fichier cache des métas), alors on les récupère en base. Et on les ajoute à nos métas globales.
Retourne l'alea éphemère actuel au passage
Renouveller l'alea (utilisé pour sécuriser les scripts du répertoire `action/`)
renouvelle_alea() : mixed
Retourne une clé de sécurité faible (low_sec) pour l'auteur indiqué
low_sec(int $id_auteur) : string
low-security est un ensemble de fonctions pour gérer de l'identification faible via les URLs (suivi RSS, iCal...)
Retourne la clé de sécurité low_sec de l'auteur (la génère si elle n'exite pas) ou la clé de sécurité low_sec du site (si auteur invalide)(la génère si elle n'existe pas).
Identifiant de l'auteur
Clé de sécurité.
Vérifie un accès à faible sécurité
securiser_acces_low_sec(int $id_auteur, string $cle, string $dir[, string $op = '' ][, string $args = '' ]) : bool
Vérifie qu'un visiteur peut accéder à la page demandée, qui est protégée par une clé, calculée à partir du low_sec de l'auteur, et des paramètres le composant l'appel (op, args)
L'auteur qui demande la page
La clé à tester
Un type d'accès (nom du répertoire dans lequel sont rangés les squelettes demandés, tel que 'rss')
Nom de l'opération éventuelle
Nom de l'argument calculé
True si on a le droit d'accès, false sinon.
*@example
[(#ID_AUTEUR|securiser_acces{#ENV{cle}, rss, #ENV{op}, #ENV{args}}|sinon_interdire_acces)]
Generer une url xxx.api/$id_auteur/$cle/$format/$fond?$args
generer_url_api_low_sec(string $script, string $format, string $fond, string $path, string $args[, bool $no_entities = false ][, bool|null $public = null ]) : string
Retourne une clé basée sur le low_sec de l'auteur et l'action demandé
afficher_low_sec(int $id_auteur[, string $action = '' ]) : string
Identifiant de l'auteur
Action désirée
Clé
Vérifie une clé basée sur le low_sec de l'auteur et l'action demandé
verifier_low_sec(int $id_auteur, string $cle[, string $action = '' ]) : bool
Identifiant de l'auteur
Clé à comparer
Action désirée
true si les clés corresponde, false sinon
Efface la clé de sécurité faible (low_sec) d'un auteur
effacer_low_sec(int $id_auteur) : mixed
Identifiant de l'auteur
Créer un fichier htpasswd
ecrire_acces() : null|void
Cette fonction ne sert qu'à la connexion en mode http_auth.non LDAP. Voir le plugin «Accès Restreint»
S'appuie sur la meta creer_htpasswd
pour savoir s'il faut créer
le .htpasswd
.
Generer le fichier de htpasswd contenant les htpass
generer_htpasswd_files(string $htpasswd, string $htpasswd_admin) : mixed
Créer un password htaccess
generer_htpass(string $pass) : void|string
Le mot de passe
La chaîne hachée si fonction crypt présente, rien sinon.
Installe ou vérifie un fichier .htaccess, y compris sa prise en compte par Apache
verifier_htaccess(string $rep[, bool $force = false ]) : bool
Nom du répertoire où SPIP doit vérifier l'existence d'un fichier .htaccess
Créer un fichier .htaccess pour chaque répertoire d'extension dans `_DIR_IMG` si la configuration le demande
gerer_htaccess() : string
Valeur de la configuration creer_htaccess
Retourne une URL ou un formulaire securisé
generer_action_auteur(string $action[, string $arg = '' ][, string $redirect = '' ][, bool|int|string $mode = false ][, string|int $att = '' ][, bool $public = false ]) : array<string|int, mixed>|string
Nom du fichier/action appelé (dans le répertoire action)
Arguments pour l'action sécurisée, peut etre vide
Adresse de redirection souhaitée à la fin du bon déroulement de l’action
&
(false) ou &
(true)URL, code HTML du formulaire ou tableau (action, arg, hash)
Génère une URL ou un formulaire dirigé vers un fichier action (action/xx.php)
redirige_action_auteur(string $action, string $arg, string $ret[, string $gra = '' ][, bool|string|int $mode = false ][, string $atts = '' ][, bool $public = false ]) : string
Le génère à condition que $mode="texte".
Nom du fichier action/xx.php
Argument passé à l'action, qui sera récupéré par la fonction
securiser_action()
Nom du script exec sur lequel on revient après l'action (redirection),
que l'on peut récupérer dans une fonction d'action par _request('redirect')
Arguments transmis au script exec de retour arg1=yy&arg2=zz
&
(false) ou &
(true)?
true produit une URL d'espace public false (par défaut) produit une URL d'espace privé
Code HTML du formulaire
Retourne une URL ou un formulaire sécurisé en méthode POST
redirige_action_post(string $action, string $arg, string $ret, string $gra, bool|int|string $corps[, string|int $att = '' ]) : array<string|int, mixed>|string
Nom du fichier/action appelé (dans le répertoire action)
Arguments pour l'action sécurisée
Adresse de redirection souhaitée à la fin du bon déroulement de l’action
Arguments à transmettre, tel que arg1=yy&arg2=zz
&
(false) ou &
(true)URL, code HTML du formulaire ou tableau (action, arg, hash)
Fonction de formatage du contenu renvoyé en ajax
ajax_retour(string $corps[, string $content_type = null ]) : void
Echo la réponse directement
permet de definir le type de contenu renvoye. Si rien de précisé, ou si true c'est "text/html" avec un entete xml en plus. La valeur speciale false fournit text/html sans entete xml. Elle equivaut a passer "text/html" comme $content_type
Teste qu'un utilisateur a des droits sur les fichiers du site et exécute l'action (en base) demandée si c'est le cas.
inc_admin_dist(string $script, string $titre[, string $comment = '' ][, bool $anonymous = false ]) : string
Demande / vérifie le droit de création de répertoire par le demandeur; Mémorise dans les meta que ce script est en cours d'exécution. Si elle y est déjà c'est qu'il y a eu suspension du script, on reprend.
Script d'action (en base) à exécuter si on a des droits d'accès aux fichiers
Titre de l'action demandée
Commentaire supplémentaire
?
Code HTML de la page (pour vérifier les droits), sinon code HTML de la page après le traitement effectué.
Gestion dans la meta "admin" du script d'administation demandé, pour éviter des exécutions en parallèle, notamment après Time-Out.
admin_verifie_session(string $script[, bool $anonymous = false ]) : string
Cette meta contient le nom du script et, à un hachage près, du demandeur. Le code de ecrire/index.php dévie toute demande d'exécution d'un script vers le script d'administration indiqué par cette meta si elle est là.
Au niveau de la fonction inc_admin, on controle la meta 'admin'.
Script d'action (en base)
?
Code HTML si message d'erreur, '' sinon;
Retourne l'emplacement du répertoire où sera testé l'accès utilisateur
dir_admin() : string
Dans le répertoire temporaire si on est admin, sinon dans le répertoire de transfert des admins restreints
Chemin du répertoire.
Retourne le nom d'un fichier de teste d'authentification par accès aux fichiers
fichier_admin(string $action[, string $pref = 'admin_' ]) : string
Le nom calculé est un hash basé sur l’heure, l’action et l’auteur.
Nom du script d'action (en base)
Préfixe au nom du fichier calculé
Nom du fichier
Demande la création d'un répertoire (pour tester l'accès de l'utilisateur) et sort ou quitte sans rien faire si le répertoire est déjà là.
debut_admin(string $script[, string $action = '' ][, string $corps = '' ]) : string
Si l'on est webmestre, la plupart des actions n'ont pas besoin de tester la création du répertoire (toutes sauf repair ou delete_all). On considère qu'un webmestre a déjà du prouver ses droits sur les fichiers. Dans ce cas, on quitte sans rien faire également.
Script d'action (en base) à exécuter ensuite
Titre de l'action demandée
Commentaire supplémentaire
Code HTML de la page (pour vérifier les droits), sinon chaîne vide si déjà fait.
Clôture la phase d'administration en supprimant le répertoire testant l'accès au fichiers ainsi que les metas d'exécution
fin_admin(string $action) : mixed
Nom de l'action (en base) qui a été exécutée
Génère un formulaire avec les données postées
copy_request(string $script, string $suite[, string $submit = '' ]) : string
Chaque donnée est mise en input hidden pour les soumettre avec la validation du formulaire.
Nom du script (pour l'espace privé) de destination
Corps du formulaire
texte du bouton de validation
Code HTML du formulaire
Teste l'authentification d'un visiteur
inc_auth_dist() : array<string|int, mixed>|int|string
Cette fonction ne fait pas l'authentification en soit ; elle vérifie simplement qu'une personne est connectée ou non.
Vérifier qu'un mot de passe saisi pour confirmer une action est bien celui de l'auteur connecté
auth_controler_password_auteur_connecte(string $password) : bool
fonction appliquee par ecrire/index sur le resultat de la precedente en cas de refus de connexion.
auth_echec(mixed $raison) : array<string|int, mixed>|string
Retourne un message a afficher ou redirige illico.
Retourne la description d'un authentifie par cookie ou http_auth Et affecte la globale $connect_login
auth_mode() : array<string|int, mixed>|bool|string
Initialisation des globales pour tout l'espace privé si visiteur connu
auth_init_droits(array<string|int, mixed> $row) : array<string|int, mixed>|string|bool
Le tableau global visiteur_session contient toutes les infos pertinentes et
à jour (tandis que $visiteur_session
peut avoir des valeurs un peu datées
s'il est pris dans le fichier de session)
Les plus utiles sont aussi dans les variables simples ci-dessus si la globale est vide ce n'est pas un tableau, on la force pour empêcher un warning.
Enlever les clés sensibles d'une ligne auteur
auth_desensibiliser_session(array<string|int, mixed> $auteur) : array<string|int, mixed>
Retourne l'url de connexion
auth_a_loger() : string
Tracer en base la date de dernière connexion de l'auteur
auth_trace(array<string|int, mixed> $row[, null|string $date = null ]) : mixed
Fonction privée d'aiguillage des fonctions d'authentification
auth_administrer(string $fonction, array<string|int, mixed> $args[, mixed $defaut = false ]) : mixed
Charge une fonction d'authentification présente dans un répertoire auth/
.
Ainsi, utiliser auth_administrer('informer_login', array('spip', ...)
appellera
auth_spip_informer_login()
de ecrire/auth/spip.php
.
Nom de la fonction d'authentification
Le premier élément du tableau doit être le nom du système d'authentification
choisi, tel que spip
(par défaut) ou encore ldap
.
Pipeline pour inserer du contenu dans le formulaire de login
auth_formulaire_login(array<string|int, mixed> $flux) : array<string|int, mixed>
Retrouver le login interne lie a une info login saisie la saisie peut correspondre a un login delegue qui sera alors converti en login interne apres verification
auth_retrouver_login(string $login[, string $serveur = '' ]) : mixed
informer sur un login Ce dernier transmet le tableau ci-dessous a la fonction JS informer_auteur Il est invoque par la fonction JS actualise_auteur via la globale JS page_auteur=#URL_PAGE{informer_auteur} dans le squelette login N'y aurait-il pas plus simple ?
auth_informer_login(string $login[, string $serveur = '' ]) : array<string|int, mixed>
Essayer les differentes sources d'authenfication dans l'ordre specifie.
auth_identifier_login(string $login, string $password[, string $serveur = '' ][, bool $phpauth = false ]) : mixed
S'en souvenir dans visiteur_session['auth']
Fournir une url de retour apres login par un SSO pour finir l'authentification
auth_url_retour_login(string $auth_methode, string $login[, string $redirect = '' ][, string $serveur = '' ]) : string
Terminer l'action d'authentification d'un auteur
auth_terminer_identifier_login(string $auth_methode, string $login[, string $serveur = '' ]) : mixed
Loger un auteur suite a son identification
auth_loger(array<string|int, mixed> $auteur) : bool
Déconnexion de l'auteur
auth_deloger() : mixed
Tester la possibilité de modifier le login d'authentification pour la méthode donnée
auth_autoriser_modifier_login(string $auth_methode[, string $serveur = '' ]) : bool
Verifier la validite d'un nouveau login pour modification pour la methode donnee
auth_verifier_login(string $auth_methode, string $new_login[, int $id_auteur = 0 ][, string $serveur = '' ]) : string
message d'erreur ou chaine vide si pas d'erreur
Modifier le login d'un auteur pour la methode donnee
auth_modifier_login(string $auth_methode, string $new_login, int $id_auteur[, string $serveur = '' ]) : bool
Tester la possibilité de modifier le pass pour la méthode donnée
auth_autoriser_modifier_pass(string $auth_methode[, string $serveur = '' ]) : bool
succès ou échec
Verifier la validite d'un pass propose pour modification pour la methode donnee
auth_verifier_pass(string $auth_methode, string $login, string $new_pass[, int $id_auteur = 0 ][, string $serveur = '' ]) : string
message d'erreur ou chaine vide si pas d'erreur
Modifier le mot de passe d'un auteur pour la methode donnee
auth_modifier_pass(string $auth_methode, string $login, string $new_pass, int $id_auteur[, string $serveur = '' ]) : bool
succes ou echec
Synchroniser un compte sur une base distante pour la methode donnée lorsque des modifications sont faites dans la base auteur
auth_synchroniser_distant([string|bool $auth_methode = true ][, int $id_auteur = 0 ][, array<string|int, mixed> $champs = [] ][, array<string|int, mixed> $options = [] ][, string $serveur = '' ]) : mixed
ici true permet de forcer la synchronisation de tous les acces pour toutes les methodes
Vérifier si l'auteur est bien authentifié
lire_php_auth(string $login, string $pw[, string $serveur = '' ]) : array<string|int, mixed>|bool
entête php_auth (est-encore utilisé ?)
ask_php_auth(string $pb, string $raison[, string $retour = '' ][, string $url = '' ][, string $re = '' ][, string $lien = '' ]) : mixed
Autoriser une action
autoriser(string $faire[, string|null $type = '' ][, string|int|null $id = null ][, null|int|array<string|int, mixed> $qui = null ][, array<string|int, mixed> $opt = [] ]) : bool
Teste si une personne (par défaut le visiteur en cours) peut effectuer une certaine action. Cette fonction est le point d'entrée de toutes les autorisations.
La fonction se charge d'appeler des fonctions d'autorisations spécifiques aux actions demandées si elles existent. Elle cherche donc les fonctions dans cet ordre :
Seul le premier argument est obligatoire.
une action ('modifier', 'publier'...)
Type d’objet ou élément sur lequel appliquer l’action.
id de l'objet ou élément sur lequel on veut agir, si pertinent.
options sous forme de tableau associatif
true si la personne peut effectuer l'action
Autoriser une action
autoriser_dist(string $faire[, string|null $type = '' ][, int|string|null $id = null ][, null|int|array<string|int, mixed> $qui = null ][, array<string|int, mixed> $opt = [] ]) : bool
Voir autoriser() pour une description complète
une action ('modifier', 'publier'...)
type d'objet ('article') ou élément
id de l'objet ou élément sur lequel on veut agir, si pertinent.
options sous forme de tableau associatif
true si la personne peut effectuer l'action
Accorder une autorisation exceptionnelle pour le hit en cours, ou la révoquer
autoriser_exception(string $faire[, string $type = '' ][, int|string|null $id = null ][, string|bool $autoriser = true ]) : bool
Action demandée
Type d'objet ou élément
Identifiant (* pour tous les ids)
accorder (true) ou revoquer (false)
Adapte un type pour les autorisations
autoriser_type([string|null $type = '' ]) : string
Cela sert à trouver le nom des autorisations correspondantes.
Autorisation par defaut
autoriser_defaut_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Les admins complets OK, les autres non
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation à se loger ?
autoriser_loger_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Retourne true pour tous les statuts sauf 5poubelle Peut être surchargée pour interdire statut=nouveau à se connecter et forcer l'utilisation du lien de confirmation email pour valider le compte
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation d'accès à l'espace privé ?
autoriser_ecrire_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de créer un contenu
autoriser_creer_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Accordée par defaut ceux qui accèdent à l'espace privé, peut-être surchargée au cas par cas
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de prévisualiser un contenu
autoriser_previsualiser_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Teste qu'un objet éditorial peut être prévisualisé
test_previsualiser_objet_champ([string $type = '' ][, int|string|null $id = null ][, array<string|int, mixed> $qui = [] ][, array<string|int, mixed> $opt = [] ]) : bool
Cela permet ainsi de commander l'affichage dans l'espace prive du bouton "previsualiser"
voir prive/objets/infos/article.html
etc.
Cela dépend du statut actuel de l'objet d'une part, et d'autre part de la
clé previsu
dans le tableau statut
de la déclaration de l'objet éditorial.
Cette clé previsu
liste des statuts, séparés par des virgules,
qui ont le droit d'avoir une prévisualisation. La présence de xx/auteur
indique que pour le
statut xx
, l'auteur en cours doit être un des auteurs de l'objet éditorial en question
pour que ce statut autorise la prévisualisation.
Exemple pour les articles : 'previsu' => 'publie,prop,prepa/auteur',
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de changer de langue un contenu
autoriser_changerlangue_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de changer le lien de traduction
autoriser_changertraduction_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de changer la date d'un contenu
autoriser_dater_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation d'instituer un contenu
autoriser_instituer_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
C'est à dire de changer son statut ou son parent. Par défaut, il faut l'autorisation de modifier le contenu
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de publier dans une rubrique $id
autoriser_rubrique_publierdans_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut être administrateur ou administrateur restreint de la rubrique
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de créer une rubrique
autoriser_rubrique_creer_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut être administrateur pour pouvoir publier à la racine
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de créer une sous rubrique dans une rubrique $id
autoriser_rubrique_creerrubriquedans_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut être administrateur et pouvoir publier dans la rubrique
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de créer un article dans une rubrique $id
autoriser_rubrique_creerarticledans_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut pouvoir voir la rubrique et pouvoir créer un article…
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de modifier une rubrique $id
autoriser_rubrique_modifier_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut pouvoir publier dans cette rubrique
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de supprimer une rubrique $id
autoriser_rubrique_supprimer_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut quelle soit vide (pas d'enfant) et qu'on ait le droit de la modifier
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de modifier un article $id
autoriser_article_modifier_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut pouvoir publier dans le parent ou, si on change le statut en proposé ou préparation être auteur de l'article
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de créer un article
autoriser_article_creer_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut qu'une rubrique existe et être au moins rédacteur
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de voir un article
autoriser_article_voir_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut être admin ou auteur de l'article, sinon il faut que l'article soit publié ou proposé.
Peut-être appelée sans $id, mais avec un $opt['statut'] pour tester la liste des status autorisés en fonction de $qui['statut']
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de voir un objet
autoriser_voir_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Tout est visible par défaut, sauf les auteurs où il faut au moins être rédacteur.
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de webmestre
autoriser_webmestre_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Est-on webmestre ? Signifie qu'on n'a même pas besoin de passer par ftp pour modifier les fichiers, cf. notamment inc/admin
On regarde l'état "webmestre" de l'auteur
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation Configurer le site
autoriser_configurer_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut être administrateur complet
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de sauvegarder la base de données
autoriser_sauvegarder_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut être administrateur (y compris restreint)
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation d'effacer la base de données
autoriser_detruire_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut être webmestre
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de prévisualiser un auteur
autoriser_auteur_previsualiser_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut être administrateur ou que l'auteur à prévisualiser ait au moins publié un article
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de créer un auteur
autoriser_auteur_creer_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut être administrateur (restreint compris).
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de modifier un auteur
autoriser_auteur_modifier_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Attention tout depend de ce qu'on veut modifier. Il faut être au moins rédacteur, mais on ne peut pas promouvoir (changer le statut) un auteur avec des droits supérieurs au sien.
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation d'associer un auteur sur un objet
autoriser_associerauteurs_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut pouvoir modifier l'objet en question
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation d'upload FTP
autoriser_chargerftp_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut être administrateur.
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation d'activer le mode debug
autoriser_debug_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut être administrateur.
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Liste les rubriques d'un auteur
liste_rubriques_auteur(int $id_auteur[, bool $raz = false ]) : array<string|int, mixed>
Renvoie la liste des rubriques liées à cet auteur, independamment de son statut (pour les admins restreints, il faut donc aussi vérifier statut)
Mémorise le resultat dans un tableau statique indéxé par les id_auteur. On peut reinitialiser un élément en passant un 2e argument non vide
Identifiant de l'auteur
Recalculer le résultat connu pour cet auteur
Liste des rubriques
Autorisation de prévisualiser une rubrique
autoriser_rubrique_previsualiser_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut pouvoir prévisualiser.
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation d'iconifier une rubrique (mettre un logo)
autoriser_rubrique_iconifier_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut pouvoir publier dans la rubrique.
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation d'iconifier un auteur (mettre un logo)
autoriser_auteur_iconifier_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut un administrateur ou que l'auteur soit celui qui demande l'autorisation
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation d'iconifier un objet (mettre un logo)
autoriser_iconifier_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut pouvoir modifier l'objet
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation OK
autoriser_ok_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : true
Autorise toujours ! Fonction sans surprise pour permettre les tests.
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
Autorisation NIET
autoriser_niet_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : false
Refuse toujours ! Fonction sans surprise pour permettre les tests.
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
Autorisation de réparer la base de données
autoriser_base_reparer_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut pouvoir la détruire (et ne pas être en cours de réinstallation)
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de voir l'onglet infosperso
autoriser_infosperso_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : true
Toujours OK
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
Autorisation de voir le formulaire configurer_langage
autoriser_langage_configurer_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : true
Toujours OK
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
Autorisation de voir l'onglet configurerlangage
autoriser_configurerlangage_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Calquée sur l'autorisation de voir le formulaire configurer_langage
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de voir le formulaire configurer_preferences
autoriser_preferences_configurer_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : true
Toujours OK
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
Autorisation de voir l'onglet configurerpreferences
autoriser_configurerpreferences_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Calquée sur l'autorisation de voir le formulaire configurer_preferences
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation d'afficher le menu développement
autoriser_menudeveloppement_menugrandeentree_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Dépend de la préférences utilisateur
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation d'afficher une grande entrée de menu
autoriser_menugrandeentree_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : true
Par defaut les grandes entrees (accueil, édition, publication, etc.) sont visibles de tous
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
Autorisation de voir la page auteurs
autoriser_auteurs_voir_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : true
Toujours OK
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
Autorisation de voir les emails des autres auteurs
autoriser_auteurs_voiremails_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de voir le menu auteurs
autoriser_auteurs_menu_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Toujours OK
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de voir la page articles
autoriser_articles_voir_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : true
Toujours OK
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
Autorisation de voir le menu articles
autoriser_articles_menu_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Toujours OK
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de voir la page rubriques
autoriser_rubriques_voir_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : true
Toujours OK
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
Autorisation de voir le menu rubriques
autoriser_rubriques_menu_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Toujours OK
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de voir le menu articlecreer
autoriser_articlecreer_menu_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut au moins une rubrique présente.
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de voir le menu auteurcreer
autoriser_auteurcreer_menu_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut pouvoir créer un auteur !
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de voir le menu "afficher les visiteurs"
autoriser_visiteurs_menu_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Être admin complet et il faut qu'il en existe ou que ce soit activé en config
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de voir le menu suiviedito
autoriser_suiviedito_menu_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut être administrateur (y compris restreint).
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de voir le menu synchro
autoriser_synchro_menu_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut être administrateur (y compris restreint).
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de voir le menu configurer_interactions
autoriser_configurerinteractions_menu_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut avoir accès à la page configurer_interactions
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de voir le menu configurer_langue
autoriser_configurerlangue_menu_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut avoir accès à la page configurer_langue
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de voir le menu configurer_multilinguisme
autoriser_configurermultilinguisme_menu_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut avoir accès à la page configurer_multilinguisme
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de voir le menu configurer_contenu
autoriser_configurercontenu_menu_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut avoir accès à la page configurer_contenu
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de voir le menu configurer_avancees
autoriser_configureravancees_menu_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut avoir accès à la page configurer_avancees
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de voir le menu admin_plugin
autoriser_adminplugin_menu_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut avoir accès à la page admin_plugin
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de voir le menu admin_bdd
autoriser_adminbdd_menu_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut avoir accès à la page admin_bdd, et donc le droit de détruire la BDD (rien que cela)
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de purger la queue de travaux
autoriser_queue_purger_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut être webmestre.
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation l'échafaudage de squelettes en Z
autoriser_echafauder_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut être dans l'espace privé (et authentifié), sinon il faut être webmestre (pas de fuite d'informations publiées)
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Retourne les identifiants d'auteurs liés à un objet
auteurs_objet(string $objet, int $id_objet[, string|array<string|int, mixed> $cond = '' ]) : array<string|int, int>
Condition(s) supplémentaire(s) pour le where de la requête
Identifiants d'auteurs
Tester si on est admin restreint sur une rubrique donnée
acces_restreint_rubrique(int $id_rubrique) : bool
Fonction générique utilisee dans des autorisations ou assimilée
Identifiant de la rubrique
true si administrateur de cette rubrique, false sinon.
Verifier qu'il existe au moins un parent
verifier_table_non_vide([string $table = 'spip_rubriques' ]) : bool
Fonction utilisee dans des autorisations des boutons / menus du prive des objets enfants (articles, breves, sites)
la table a vérifier
true si un parent existe
Détermine la possibilité de s'inscire sur le site
autoriser_inscrireauteur_dist(string $faire, mixed $quoi, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Pour un statut et un éventuel id_rubrique donné, indique, à l'aide de la liste globale des statuts (tableau mode => nom du mode) si le visiteur peut s'inscrire sur le site.
Utile pour le formulaire d'inscription.
Par défaut, seuls 6forum
et 1comite
sont possibles, les autres sont
en false
. Pour un nouveau mode il suffit de définir l'autorisation
spécifique.
Action demandée
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation de relancer une inscription
autoriser_inscription_relancer_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut être administrateur complet
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Autorisation à voir le phpinfo
autoriser_phpinfos_dist(string $faire, string $type, int|string|null $id, array<string|int, mixed> $qui, array<string|int, mixed> $opt) : bool
Il faut être webmestre
Action demandée
Type d'objet ou élément
Identifiant
Description de l'auteur demandant l'autorisation
Options de cette autorisation
true s'il a le droit, false sinon
Calcule le contexte pour le menu du bandeau
definir_barre_contexte([null|array<string|int, mixed> $contexte = null ]) : array<string|int, mixed>
La fonction tente de retrouver la rubrique et le secteur d'appartenance à partir du nom du fichier exec, si celui ci correspond à un objet éditorial de SPIP (et qu'il possède ces champs), et dans ce cas, l'ajoute au contexte.
contexte connu.
S'il n'est pas transmis, on prend $_GET
contexte
Définir la liste des boutons du haut et de ses sous-menus
definir_barre_boutons([array<string|int, mixed> $contexte = [] ][, bool $icones = true ][, bool $autorise = true ]) : array<string|int, mixed>
On defini les boutons à mettre selon les droits de l'utilisateur puis on balance le tout au pipeline "ajouter_menus" pour que des plugins puissent y mettre leur grain de sel
Rechercher les icones
Ne renvoyer que les boutons autorisés
Trie les entrées des sous menus par ordre alhabétique
trier_boutons_enfants_par_alpha(array<string|int, Bouton> $menus[, bool $avec_favoris = false ]) : array<string|int, Bouton>
Si true, tri en premier les sous menus favoris, puis l'ordre alphabétique
Trie les entrées des sous menus par favoris (selon leur ordre) puis les autres par ordre alhabétique
trier_boutons_enfants_par_favoris_alpha(array<string|int, Bouton> $menus) : array<string|int, Bouton>
Créer l'URL à partir de exec et args, sauf si c'est déjà une url formatée
bandeau_creer_url(string $url[, string $args = '' ][, array<string|int, mixed>|null $contexte = null ]) : string
Construire tout le bandeau supérieur de l'espace privé
inc_bandeau_dist() : string
Code HTML du bandeau
Retourne la liste des noms d'entrées de menus favoris de l'auteur connecté
obtenir_menus_favoris() : array<string|int, mixed>
Définir la liste des onglets dans une page de l'interface privée.
definir_barre_onglets(string $script) : array<string|int, mixed>
On passe la main au pipeline "ajouter_onglets".
Création de la barre d'onglets
barre_onglets(string $rubrique, string $ongletCourant[, string $class = 'barre_onglet' ]) : string
Initialisation
init_charset() : void
Charge en mémoire la liste des caractères d'un charset
load_charset([string $charset = 'AUTO' ]) : string|bool
Charsets supportés en natif : voir les tables dans ecrire/charsets/ Les autres charsets sont supportés via mbstring()
Charset à charger. Par défaut (AUTO), utilise le charset du site
Vérifier qu'on peut utiliser mb_string avec notre charset
init_mb_string() : bool
Les fonctions mb_* sont tout le temps présentes avec symfony/polyfill-mbstring
true si notre charset est utilisable par mb_strsing
Test le fonctionnement correct d'iconv
test_iconv() : bool
Celui-ci coupe sur certaines versions la chaine quand un caractère n'appartient pas au charset
true si iconv fonctionne correctement
Corriger des caractères non-conformes : 128-159
corriger_caracteres_windows(string|array<string|int, mixed> $texte[, string $charset = 'AUTO' ][, string $charset_cible = 'unicode' ]) : string|array<string|int, mixed>
Cf. charsets/iso-8859-1.php (qu'on recopie ici pour aller plus vite) On peut passer un charset cible en parametre pour accelerer le passage iso-8859-1 -> autre charset
Le texte à corriger
Charset d'origine du texte Par défaut (AUTO) utilise le charset du site
Charset de destination (unicode par défaut)
texte corrigé
Transforme les entités HTML en unicode
html2unicode(string $texte[, bool $secure = false ]) : string
Transforme les é en {
texte à convertir
true pour ne pas convertir les caracteres malins < & etc.
texte converti
Transforme les entités mathématiques (MathML) en unicode
mathml2unicode(string $texte) : string
Transforme ∠ en ∠ ainsi que toutes autres entités mathématiques
texte à convertir
texte converti
Transforme les entites unicode  dans le charset specifie
unicode2charset(string $texte[, string $charset = 'AUTO' ]) : string
Attention on ne transforme pas les entites < car si elles ont ete encodees ainsi c'est a dessein
texte unicode à transformer
Charset à appliquer au texte Par défaut (AUTO), le charset sera celui du site.
texte transformé dans le charset souhaité
Importer un texte depuis un charset externe vers le charset du site
importer_charset(string $texte[, string $charset = 'AUTO' ]) : string
Les caractères non resolus sont transformés en {
;
texte unicode à importer
Charset d'origine du texte Par défaut (AUTO), le charset d'origine est celui du site.
texte transformé dans le charset site
Transforme un texte UTF-8 en unicode
utf_8_to_unicode(string $source) : string
Utilise la librairie mb si présente
texte UTF-8 à transformer
texte transformé en unicode
Transforme un texte UTF-32 en unicode
utf_32_to_unicode(string $source) : string
UTF-32 ne sert plus que si on passe par iconv, c'est-a-dire quand mb_string est absente ou ne connait pas notre charset.
Mais on l'optimise quand meme par mb_string => tout ca sera osolete quand on sera surs d'avoir mb_string
texte UTF-8 à transformer
texte transformé en unicode
Transforme un numéro unicode en caractère utf-8
caractere_utf_8(int $num) : string
Ce bloc provient de php.net
Numéro de l'entité unicode
Caractère utf8 si trouvé, '' sinon
Convertit un texte unicode en utf-8
unicode_to_utf_8(string $texte) : string
texte à convertir
texte converti
Convertit les unicode Ĉ en javascript \u0108
unicode_to_javascript(string $texte) : string
texte à convertir
texte converti
Convertit les %uxxxx (envoyés par javascript) en &#yyy unicode
javascript_to_unicode(string $texte) : string
texte à convertir
texte converti
Convertit les %E9 (envoyés par le browser) en chaîne du charset du site (binaire)
javascript_to_binary(string $texte) : string
texte à convertir
texte converti
Substition rapide de chaque graphème selon le charset sélectionné.
translitteration_rapide(string|null $texte[, string $charset = 'AUTO' ][, string $complexe = '' ]) : string
Translittération charset => ascii (pour l'indexation)
translitteration(string|null $texte[, string $charset = 'AUTO' ][, string $complexe = '' ]) : string
Permet, entre autres, d’enlever les accents, car la table ASCII non étendue ne les comporte pas.
Attention les caractères non reconnus sont renvoyés en utf-8
Translittération complexe
translitteration_complexe(string|null $texte[, bool $chiffres = false ]) : string
à
est retourné sous la forme a`
et pas à
mais si $chiffre=true
, on retourne a8
(vietnamien)
Translittération chiffrée
translitteration_chiffree(string $car) : string
Remplace des caractères dans une chaîne par des chiffres
Reconnaitre le BOM utf-8 (0xEFBBBF)
bom_utf8(string $texte) : bool
texte dont on vérifie la présence du BOM
true s'il a un BOM
Vérifie qu'une chaîne est en utf-8 valide
is_utf8(string $string) : bool
Note: preg_replace permet de contourner un "stack overflow" sur PCRE
texte dont on vérifie qu'il est de l'utf-8
true si c'est le cas
Vérifie qu'une chaîne est en ascii valide
is_ascii(string $string) : bool
texte dont on vérifie qu'il est de l'ascii
true si c'est le cas
Transcode une page vers le charset du site
transcoder_page(string $texte[, string $headers = '' ]) : string
Transcode une page (attrapée sur le web, ou un squelette) vers le charset du site en essayant par tous les moyens de deviner son charset (y compris dans les headers HTTP)
Page à transcoder, dont on souhaite découvrir son charset
Éventuels headers HTTP liés à cette page
texte transcodé dans le charset du site
Coupe un texte selon substr()
spip_substr(string $c[, int $start = 0 ][, null|int $length = null ]) : string
Coupe une chaîne en utilisant les outils mb* lorsque le site est en utf8
Le texte
Début
Longueur ou fin
Le texte coupé
Rend majuscule le premier caractère d'une chaîne utf-8
spip_ucfirst(string $c) : string
Version utf-8 d'ucfirst
La chaîne à transformer
La chaîne avec une majuscule sur le premier mot
Passe une chaîne utf-8 en minuscules
spip_strtolower(string $c) : string
Version utf-8 de strtolower
La chaîne à transformer
La chaîne en minuscules
Retourne la longueur d'une chaîne utf-8
spip_strlen(string $c) : int
Version utf-8 de strlen
La chaîne à compter
Longueur de la chaîne
Transforme une chaîne utf-8 en utf-8 sans "planes" ce qui permet de la donner à MySQL "utf8", qui n'est pas un utf-8 complet L'alternative serait d'utiliser utf8mb4
utf8_noplanes(string $x) : string
La chaîne à transformer
La chaîne avec les caractères utf8 des hauts "planes" échappée en unicode : 💩
Cherche le logo d'un élément d'objet
inc_chercher_logo_dist(int $id, string $_id_objet[, string $mode = 'on' ][, bool $compat_old_logos = false ]) : array<string|int, mixed>
Identifiant de l'objet
Nom de la clé primaire de l'objet
Mode de survol du logo désiré (on ou off)
(unused) @deprecated 5.0
Sélecteur de rubriques pour l'espace privé
inc_chercher_rubrique_dist(int $id_rubrique, string $type, bool $restreint[, int $idem = 0 ][, string $do = 'aff' ]) : string
Identifiant de rubrique courante (0 si NEW)
Type de l'objet à placer.
Une rubrique peut aller à la racine mais pas dans elle-même, les articles et sites peuvent aller n'importe où (défaut), et les brèves dans les secteurs.
True pour indiquer qu'il faut limiter les rubriques affichées aux rubriques éditables par l'admin restreint
En mode rubrique, identifiant de soi-même
Type d'action
Code HTML du sélecteur
Styles appliqués sur le texte d'une rubrique pour créer visuellement une indentation en fonction de sa profondeur dans le sélecteur
style_menu_rubriques(int $i) : array<string|int, mixed>
Profondeur de la rubrique
Liste (classe CSS, styles en ligne, Espaces insécables)
Sélecteur de sous rubriques pour l'espace privé
sous_menu_rubriques(int $id_rubrique, int $root, int $niv, array<string|int, mixed> &$data, array<string|int, mixed> &$enfants, int $exclus, bool $restreint, string $type) : string
Identifiant de parente
True pour indiquer qu'il faut limiter les rubriques affichées aux rubriques éditables par l'admin restreint
Type de l'objet à placer.
Code HTML du sélecteur
Sélecteur de rubriques pour l'espace privé en mode classique (menu)
selecteur_rubrique_html(int $id_rubrique, string $type, bool $restreint[, int $idem = 0 ]) : string
Identifiant de rubrique courante (0 si NEW)
Type de l'objet à placer.
True pour indiquer qu'il faut limiter les rubriques affichées aux rubriques éditables par l'admin restreint
En mode rubrique, identifiant de soi-même
Code HTML du sélecteur
Sélecteur de rubrique pour l'espace privé, en mode AJAX
selecteur_rubrique_ajax(int $id_rubrique, string $type, bool $restreint[, int $idem = 0 ][, string $do = 'aff' ]) : string
Identifiant de rubrique courante (0 si NEW)
Type de l'objet à placer.
True pour indiquer qu'il faut limiter les rubriques affichées aux rubriques éditables par l'admin restreint. Ne fonctionne actuellement pas ici.
En mode rubrique, identifiant de soi-même
Type d'action
Code HTML du sélecteur
Construit un bloc permettant d'activer le sélecteur de rubrique AJAX
construire_selecteur(string $url, string $js, string $idom, string $name[, string $init = '' ][, int $id = 0 ]) : string
Construit un bloc comportant une icone clicable avec image animée à côté pour charger en Ajax du code à mettre sous cette icone.
URL qui retournera le contenu du sélecteur en AJAX
Code javascript ajouté sur onclick
Identifiant donné à l'image activant l'ajax et au block recevant son contenu
Nom du champ à envoyer par le formulaire
Code HTML à l'intérieur de l'input titreparent
Valeur actuelle du champ
Code HTML du sélecteur de rubrique AJAX
Débute une page HTML pour l'espace privé
inc_commencer_page_dist([string $titre = '' ][, string $rubrique = 'accueil' ][, string $sous_rubrique = 'accueil' ][, string $id_rubrique = '' ][, bool $menu = true ][, bool $minipres = false ][, bool $alertes = true ]) : string
Préferer l'usage des squelettes prive/squelettes/.
Titre de la page
?
?
?
?
?
?
Code HTML
Envoi du DOCTYPE et du `<head><title> </head>`
init_entete([string $titre = '' ][, int $dummy = 0 ][, bool $minipres = false ]) : string
Titre de la page
Valeur non utilisée…
Entête du fichier HTML avec le DOCTYPE
Retourne le code HTML du head (intégration des JS et CSS) de l'espace privé
init_head([string $titre = '' ][, int $dummy = 0 ][, bool $minipres = false ]) : string
Code HTML récupéré du squelette prive/squelettes/head/dist
Fonction envoyant la double série d'icônes de rédac
init_body([string $rubrique = 'accueil' ][, string $sous_rubrique = 'accueil' ][, int $id_rubrique = '' ][, bool $menu = true ]) : string
Calcule les classes CSS à intégrer à la balise `<body>` de l'espace privé
init_body_class() : string
Les classes sont calculées en fonction des préférences de l'utilisateur, par exemple s'il choisit d'avoir ou non les icônes.
Classes CSS (séparées par des espaces)
Afficher la liste des auteurs connectés à l'espace privé
auteurs_recemment_connectes(int $id_auteur) : string
Compléter une nouvelle traduction avec des éléments utiles.
inc_completer_traduction_dist(string $objet, int $id_objet, int $id_trad) : string
Objet
Identifiant du nouvel objet
Identifiant de l’objet qu'on a traduit
Erreur éventuelle
Appliquer les valeurs par défaut pour les options non initialisées (pour les langues c'est fait)
inc_config_dist() : mixed
Expliquer une clé de configuration
expliquer_config(string $cfg) : array<string|int, mixed>
Analyser la clé de configuration pour déterminer
Clé de configuration, tel que 'dada/truc/muche'
Liste (table, casier, sous_casier)
Lecture de la configuration
lire_config([string $cfg = '' ][, mixed $def = null ][, bool $unserialize = true ]) : mixed
lire_config() permet de recuperer une config depuis le php
memes arguments que la balise (forcement)
$cfg: la config, lire_config('montruc') est un tableau
lire_config('/table/champ') lit le valeur de champ dans la table des meta 'spip_table'
lire_config('montruc/sub') est l'element "sub" de cette config equivalent a lire_config('/meta/montruc/sub')
lire_config('methode::montruc/sub') delegue la lecture a methode_lire_config_dist via un charger_fonction permet de brancher CFG ou autre outil externe qui etend les methodes de stockage de config
$unserialize est mis par l'histoire
Clé de configuration
Valeur par défaut
N'affecte que le dépôt 'meta' : True pour désérialiser automatiquement la valeur
Contenu de la configuration obtenue
metapack est inclue dans lire_config, mais on traite le cas ou il est explicite metapack:: dans le $cfg de lire_config.
lire_config_metapack_dist([string $cfg = '' ][, mixed $def = null ][, bool $unserialize = true ]) : mixed
On renvoie simplement sur lire_config
Ecrire une configuration
ecrire_config(string $cfg, mixed $store) : bool
metapack est inclue dans ecrire_config, mais on traite le cas ou il est explicite metapack:: dans le $cfg de ecrire_config.
ecrire_config_metapack_dist(string $cfg, mixed $store) : bool
On renvoie simplement sur ecrire_config
Effacer une configuration : revient a ecrire une valeur null
effacer_config(string $cfg) : bool
Définir les `meta` de configuration
liste_metas() : array<string|int, mixed>
Couples nom de la meta
=> valeur par défaut
Mets les `meta` à des valeurs conventionnelles quand elles sont vides et recalcule les langues
actualise_metas(array<string|int, mixed> $liste_meta) : mixed
Appliquer les modifications apportées aux `metas`
appliquer_modifs_config([bool $purger_skel = false ]) : mixed
Si $purger_skel
est à true
, on purge le répertoire de cache des squelettes
Mettre à jour l'adresse du site à partir d'une valeur saisie (ou auto détection si vide)
appliquer_adresse_site(string $adresse_site) : string
Place un cookie (préfixé) sur le poste client
spip_setcookie([string $name = '' ][, string $value = '' ][, int|array{expires: int, path: string, domain: string, secure: bool, samesite: string} $expires_or_options = 0 ][, string|null $path = null ][, string $domain = '' ][, bool $secure = false ][, bool $httponly = false ]) : bool
Nom du cookie
Valeur à stocker
int: Date d'expiration du cookie (timestamp) Tableau clé => valeur de l’option
Chemin sur lequel le cookie sera disponible
Domaine à partir duquel le cookie est disponible
Indique si le cookie doit être envoyé par le navigateur uniquement en connexion HTTPS (true) ou systématiquement (false)
Indique si le cookie doit être accessible en Javascript (false) ou non (true)
true si le cookie a été posé, false sinon.
Teste si un cookie a déjà été envoyé ou pas
spip_cookie_envoye([bool|string $set = '' ]) : bool
Permet par exemple à redirige_par_entete()
de savoir le type de
redirection à appliquer (serveur ou navigateur)
true pour déclarer les cookies comme envoyés
Adapte le tableau PHP `$_COOKIE` pour prendre en compte le préfixe des cookies de SPIP
recuperer_cookies_spip(string $cookie_prefix) : mixed
Si le préfixe des cookies de SPIP est différent de spip
alors
la fonction modifie les $_COOKIE
ayant le préfixe spécifique + '_'
pour remettre le préfixe spip_
à la place.
Ainsi les appels dans le code n'ont pas besoin de gérer le préfixe,
ils appellent simplement $_COOKIE['spip_xx']
qui sera forcément
la bonne donnée.
Préfixe des cookies de SPIP
Teste si javascript est supporté par le navigateur et pose un cookie en conséquence
exec_test_ajax_dist() : mixed
Si la valeur d'environnement js
arrive avec la valeur
-1
c'est un appel via une balise <noscript>
.1
c'est un appel via javascriptInscrit le résultat dans le cookie spip_accepte_ajax
Obtenir ou définir les différents jeux de couleurs de l'espace privé
inc_couleurs_dist([null|int|array<string|int, mixed> $choix = null ][, bool $ajouter = false ]) : array<string|int, mixed>|string
$ajouter
vaut true
.Retourne les données d'un texte au format CSV
analyse_csv(string $t) : array<string|int, mixed>
Contenu du CSV
Tableau des données en 3 index :
Nettoyer les échappements
autosave_clean_value(string $val) : string
Repérer une demande de formulaire autosave et la conditionner
cvtautosave_formulaire_charger(array<string|int, mixed> $flux) : array<string|int, mixed>
Traitement d'un formulaire ayant activé `autosave`
cvtautosave_formulaire_traiter(array<string|int, mixed> $flux) : array<string|int, mixed>
Quand on poste définitivement un formulaire autosave
,
on peut vider la session autosave
et on vide aussi toutes les autosave
de plus de 72H (délai par défaut) ou sans __timestamp
(vieilles sessions)
Proposer un chargement par defaut pour les #FORMULAIRE_CONFIGURER_XXX
cvtconf_formulaire_charger(array<string|int, mixed> $flux) : array<string|int, mixed>|false
Proposer un traitement par defaut pour les #FORMULAIRE_CONFIGURER_XXX
cvtconf_formulaire_traiter(array<string|int, mixed> $flux) : array<string|int, mixed>
Enregistrer les donnees d'un formulaire $form appele avec les arguments $args Cette fonction peut etre appellee manuellement et explicitement depuis la fonction traiter() d'un formulaire configurer_xxx dont on veut personaliser le traitement sans reecrire le stockage des donnees
cvtconf_formulaires_configurer_enregistre(string $form, array<string|int, mixed> $args) : string
nom du formulaire "configurer_xxx"
arguments de l'appel de la fonction traiter ($args = func_get_args();)
Définir la règle de conteneur, en fonction de la présence de certaines données
cvtconf_definir_configurer_conteneur(string $form, array<string|int, mixed> $valeurs) : array<string|int, mixed>
_meta_table
: nom de la table spip_metas
ou stocker (par défaut 'meta')_meta_casier
: nom du casier dans lequel sérialiser (par défaut xx de formulaire_configurer_xx
)_meta_prefixe
: préfixer les meta
(alternative au casier) dans la table des meta (par defaur rien)_meta_stockage
: Méthode externe de stockage. Aucune n'est fournie par le core.Retrouver les champs d'un formulaire en parcourant son squelette et en extrayant les balises input, textarea, select
cvtconf_formulaires_configurer_recense(string $form) : array<string|int, mixed>
Stocker les metas
cvtconf_configurer_stocker(string $form, array<string|int, mixed> $valeurs, array<string|int, mixed> $store) : string
Lecture en base des metas d'un form
cvtconf_configurer_lire_meta(string $form, array<string|int, mixed> &$valeurs) : mixed
Reinjecter dans _request() les valeurs postees dans les etapes precedentes
cvtmulti_recuperer_post_precedents(string $form) : array<string|int, mixed>|false
Sauvegarder les valeurs postees dans une variable encodee pour les recuperer a la prochaine etape
cvtmulti_sauver_post(string $form, bool $je_suis_poste, array<string|int, mixed> &$valeurs) : array<string|int, mixed>
Charger une etape du cvt multi
cvtmulti_formulaire_charger_etapes(array<string|int, mixed> $args, array<string|int, mixed> $valeurs) : array<string|int, mixed>
Verifier les etapes de saisie
cvtmulti_formulaire_verifier_etapes(array<string|int, mixed> $args, array<string|int, mixed> $erreurs) : array<string|int, mixed>
Selectionner le bon fond en fonction de l'etape L'etape 1 est sur le fond sans suffixe Les autres etapes x sont sur le fond _x
cvtmulti_styliser(array<string|int, mixed> $flux) : array<string|int, mixed>
Retourne la liste des menus favoris par défaut ainsi que leur rang
inc_definir_menus_favoris_dist() : mixed
Crée au besoin la copie locale d'un fichier distant
copie_locale(string $source[, string $mode = 'auto' ][, string $local = null ][, int $taille_max = null ][, string $callback_valider_url = null ]) : bool|string
Prend en argument un chemin relatif au rep racine, ou une URL Renvoie un chemin relatif au rep racine, ou false
permet de specifier le nom du fichier local (stockage d'un cache par exemple, et non document IMG)
taille maxi de la copie local, par defaut _COPIE_LOCALE_MAX_SIZE
fonction de callback pour valider l'URL finale apres redirection eventuelle
Valider qu'une URL d'un document distant est bien distante et pas une url localhost qui permet d'avoir des infos sur le serveur inspiree de https://core.trac.wordpress.org/browser/trunk/src/wp-includes/http.php?rev=36435#L500
valider_url_distante(string $url[, array<string|int, mixed> $known_hosts = [] ]) : false|string
url/hosts externes connus et acceptes
url ou false en cas d'echec
Preparer les donnes pour un POST si $donnees est une chaine - charge a l'envoyeur de la boundariser, de gerer le Content-Type, de séparer les entetes des données par une ligne vide etc... - on traite les retour ligne pour les mettre au bon format - on decoupe en entete/corps (separes par ligne vide) si $donnees est un tableau - structuration en chaine avec boundary si necessaire ou fournie et bon Content-Type
prepare_donnees_post(string|array<string|int, mixed> $donnees[, string $boundary = '' ]) : array{: string, : string}
entete,corps
Convertir une URL dont le host est en utf8 en ascii
url_to_ascii(string $url_idn) : array<string|int, mixed>|string
Récupère le contenu d'une URL au besoin encode son contenu dans le charset local
recuperer_url(string $url[, array<string|int, mixed> $options = [] ]) : array<string|int, mixed>|bool
bool transcoder : true si on veut transcoder la page dans le charset du site string methode : Type de requête HTTP à faire (HEAD, GET, POST, PUT, DELETE) int taille_max : Arrêter le contenu au-delà (0 = seulement les entetes ==> requête HEAD). Par defaut taille_max = 1Mo ou 16Mo si copie dans un fichier array headers : tableau associatif d'entetes https a envoyer string|array datas : Pour envoyer des donnees (array) et/ou entetes au complet, avec saut de ligne entre headers et donnees ( string @see prepare_donnees_post()) (force la methode POST si donnees non vide) string boundary : boundary pour formater les datas au format array bool refuser_gz : Pour forcer le refus de la compression (cas des serveurs orthographiques) int if_modified_since : Un timestamp unix pour arrêter la récuperation si la page distante n'a pas été modifiée depuis une date donnée string uri_referer : Pour préciser un référer différent string file : nom du fichier dans lequel copier le contenu int follow_location : nombre de redirections a suivre (0 pour ne rien suivre) string version_http : version du protocole HTTP a utiliser (par defaut defini par la constante _INC_DISTANT_VERSION_HTTP)
false si echec array sinon : int status : le status de la page string headers : les entetes de la page string page : le contenu de la page (vide si copie dans un fichier) int last_modified : timestamp de derniere modification string location : url de redirection envoyee par la page string url : url reelle de la page recuperee int length : taille du contenu ou du fichier récupéré int content_length : (optionnel) taille annoncée par le serveur distant dans ses headers (si annoncée)
string file : nom du fichier si enregistre dans un fichier
Récuperer une URL si on l'a pas déjà dans un cache fichier
recuperer_url_cache(string $url[, array<string|int, mixed> $options = [] ]) : array<string|int, mixed>|bool|mixed
Le délai de cache est fourni par l'option delai_cache
Les autres options et le format de retour sont identiques à la fonction recuperer_url
int delai_cache : anciennete acceptable pour le contenu (en seconde)
Recuperer le contenu sur lequel pointe la resource passee en argument $taille_max permet de tronquer de l'url dont on a deja recupere les en-tetes
recuperer_body(resource $handle[, int $taille_max = _INC_DISTANT_MAX_SIZE ][, string $fichier = '' ]) : bool|int|string
fichier dans lequel copier le contenu de la resource
bool false si echec int taille du fichier si argument fichier fourni string contenu de la resource
Lit les entetes de reponse HTTP sur la socket $handle et retourne false en cas d'echec, un tableau associatif en cas de succes, contenant : - le status - le tableau complet des headers - la date de derniere modif si connue - l'url de redirection si specifiee
recuperer_entetes_complets(resource $handle[, int|bool $if_modified_since = false ]) : bool|array<string|int, mixed>
int status string headers int last_modified string location
Calcule le nom canonique d'une copie local d'un fichier distant
nom_fichier_copie_locale(string $source, string $extension) : string
Si on doit conserver une copie locale des fichiers distants, autant que ca soit à un endroit canonique
URL de la source
Extension du fichier
Nom du fichier pour copie locale
Donne le nom de la copie locale de la source
fichier_copie_locale(string $source) : string|null
Soit obtient l'extension du fichier directement de l'URL de la source, soit tente de le calculer.
URL de la source distante
Récupérer les infos d'un document distant, sans trop le télécharger
recuperer_infos_distantes(string $source[, array<string|int, mixed> $options = [] ]) : array<string|int, mixed>|false
URL de la source
int $taille_max : Taille maximum du fichier à télécharger bool $charger_si_petite_image : Pour télécharger le document s'il est petit string $callback_valider_url : callback pour valider l'URL finale du document apres redirection
Couples des informations obtenues parmis :
Retrouver un mime type depuis les headers
distant_trouver_mime_type_selon_headers(string $source, string $headers) : string
Retrouver une extension de fichier depuis les headers
distant_trouver_extension_selon_headers(string $source, string $headers) : false|string
Tester si un host peut etre recuperer directement ou doit passer par un proxy
need_proxy(string $host[, string $http_proxy = null ][, string $http_noproxy = null ]) : string
On peut passer en parametre le proxy et la liste des host exclus, pour les besoins des tests, lors de la configuration
Initialise une requete HTTP avec entetes
init_http(string $method, string $url[, bool $refuse_gz = false ][, string $referer = '' ][, string $datas = '' ][, string $vers = 'HTTP/1.0' ][, string $date = '' ]) : array<string|int, mixed>
Décompose l'url en son schema+host+path+port et lance la requete. Retourne le descripteur sur lequel lire la réponse.
HEAD, GET, POST
Lancer la requete proprement dite
lance_requete(string $method, string $scheme, array<string|int, mixed> $user, string $host, string $path, string $port, bool $noproxy[, bool $refuse_gz = false ][, string $referer = '' ][, string $datas = '' ][, string $vers = 'HTTP/1.0' ][, int|string $date = '' ]) : bool|resource
type de la requete (GET, HEAD, POST...)
protocole (http, tls, ftp...)
couple (utilisateur, mot de passe) en cas d'authentification http
nom de domaine
chemin de la page cherchee
port utilise pour la connexion
protocole utilise si requete sans proxy
refuser la compression GZ
referer
donnees postees
version HTTP
timestamp pour entente If-Modified-Since
false|int si echec resource socket vers l'url demandee
Donne le chemin du fichier relatif à `_DIR_IMG` pour stockage 'tel quel' dans la base de données
set_spip_doc(string|null $fichier) : string
Donne le chemin complet du fichier
get_spip_doc(string|null $fichier) : bool|string
Créer un sous-répertoire IMG/$ext/ tel que IMG/pdf
creer_repertoire_documents(string $ext) : string
Efface le répertoire de manière récursive !
effacer_repertoire_temporaire(string $nom) : mixed
Copier un document `$source` dans un dossier `IMG/$ext/$orig.$ext` ou `IMG/$subdir/$orig.$ext` si `$subdir` est fourni en numérotant éventuellement si un fichier de même nom existe déjà
copier_document(string $ext, string $orig, string $source[, string $subdir = null ]) : bool|mixed|string
Trouver le dossier utilisé pour upload un fichier
determine_upload([string $type = '' ]) : bool|string
Déplacer ou copier un fichier
deplacer_fichier_upload(string $source, string $dest[, bool $move = false ]) : bool|mixed|string
Fichier source à copier
Fichier de destination
true
: on déplace le fichier source vers le fichier de destinationfalse
: valeur par défaut. On ne fait que copier le fichier source vers la destination.Erreurs d'upload
check_upload_error(int $error[, string $msg = '' ][, bool $return = false ]) : bool|string
Renvoie false
si pas d'erreur
et true
s'il n'y a pas de fichier à uploader.
Pour les autres erreurs, on affiche le message d'erreur et on arrête l'action.
Corrige l'extension du fichier dans quelques cas particuliers
corriger_extension(string $ext) : string
Retourne le tableau des éléments édités en cours après avoir supprimé les éléments trop vieux (de plus d'une heure) du tableau.
lire_tableau_edition() : array<string|int, mixed>
Tableau des éléments édités actuellement, par objet et auteur, du type :
[ type d'objet ][id_objet][id_auteur][nom de l'auteur] = time()
Enregistre la liste des éléments édités
ecrire_tableau_edition(array<string|int, mixed> $edition) : mixed
Tableau des éléments édités actuellement, par objet et auteur, du type :
[ type d'objet ][id_objet][id_auteur][nom de l'auteur] = time()
Signale qu'un auteur édite tel objet
signale_edition(int $id, array<string|int, mixed> $auteur[, string $type = 'article' ]) : mixed
Si l'objet est non éditable dans l'espace privé, ne pas retenir le signalement qui correspond à un process unique.
Identifiant de l'objet
Session de l'auteur
Type d'objet édité
Qui édite mon objet ?
qui_edite(int $id[, string $type = 'article' ]) : array<string|int, mixed>
Identifiant de l'objet
Type de l'objet
Tableau sous la forme ["id_auteur"]["nom de l'auteur"] = time()
Afficher les auteurs ayant édités récemment l'objet.
mention_qui_edite(int $id[, string $type = 'article' ]) : array<string, string>
Identifiant de l'objet
Type de l'objet
Liste de tableaux ['nom_auteur_modif' => x|y|z, 'date_diff' => n]
Quels sont les objets en cours d'édition par `$id_auteur` ?
liste_drapeau_edition(int $id_auteur) : array<string|int, mixed>
Identifiant de l'auteur
Liste de tableaux ['objet' => x, 'id_objet' => n]
Quand l'auteur veut libérer tous ses objets (tous types)
debloquer_tous(int $id_auteur) : mixed
Quand l'auteur libère un objet précis
debloquer_edition(int $id_auteur, int $id_objet[, string $type = 'article' ]) : mixed
Identifiant de l'auteur
Identifiant de l'objet édité
Type de l'objet
Effectue les traitements d'un formulaire d'édition d'objet éditorial
formulaires_editer_objet_traiter(string $type[, int|string $id = 'new' ][, int $id_parent = 0 ][, int $lier_trad = 0 ][, string $retour = '' ][, string $config_fonc = 'articles_edit_config' ][, array<string|int, mixed> $row = [] ][, string $hidden = '' ]) : array<string|int, mixed>
Exécute une action d'édition spécifique au type d'objet s'il elle existe (fonction action_editer_$type), sinon exécute l'action générique d'édition d'objet (action_editer_objet_dist())
Si une traduction était demandée, crée le lien avec l'objet qui est traduit.
Type d'objet
Identifiant de l'objet à éditer, 'new' pour un nouvel objet
Identifiant de l'objet parent
Identifiant de l'objet servant de source à une nouvelle traduction
URL de redirection après les traitements
Nom de fonction appelée au chargement permettant d'ajouter des valeurs de configurations dans l'environnement du formulaire
Ligne SQL de l'objet édité, si connu. En absence, les données sont chargées depuis l'objet en base s'il existe ou depuis l'objet source d'une traduction si c'est un nouvel objet (et une traduction).
Contenu HTML ajouté en même temps que les champs cachés (input hidden) du formulaire.
Retour des traitements.
Teste les erreurs de validation d'un formulaire d'édition d'objet éditorial
formulaires_editer_objet_verifier(string $type[, int|string $id = 'new' ][, array<string|int, mixed> $oblis = [] ]) : array<string|int, mixed>
La fonction teste que :
Type d'objet
Identifiant de l'objet à éditer, 'new' pour un nouvel objet
Liste de champs obligatoires : ils doivent avoir un contenu posté.
Tableau des erreurs
Construit les valeurs de chargement d'un formulaire d'édition d'objet éditorial
formulaires_editer_objet_charger(string $type[, int|string $id = 'new' ][, int|null $id_parent = 0 ][, int $lier_trad = 0 ][, string $retour = '' ][, string $config_fonc = 'articles_edit_config' ][, array<string|int, mixed> $row = [] ][, string $hidden = '' ]) : array<string|int, mixed>
La fonction calcule les valeurs qui seront transmises à l'environnement du formulaire pour son affichage. Ces valeurs sont les champs de l'objet éditorial d'une part, mais aussi d'autres calculant la clé d'action, les pipelines devant faire transiter le contenu HTML du formulaire, ainsi que différents champs cachés utilisés ensuite dans les traitements.
Lorsqu'une création d'objet est demandée, ou lorsqu'on demande une traduction d'un autre, la fonction tente de précharger le contenu de l'objet en utilisant une fonction inc_precharger_{type}_dist permettant par exemple de remplir le contenu avec du texte, notamment avec la traduction source.
Type d'objet
Identifiant de l'objet à éditer, 'new' pour un nouvel objet
Identifiant de l'objet parent
Si null, le calcule d'après le résultat de la fonction precharger_objet()
.
Identifiant de l'objet servant de source à une nouvelle traduction
URL de redirection après les traitements
Nom de fonction appelée au chargement permettant d'ajouter des valeurs de configurations dans l'environnement du formulaire
Ligne SQL de l'objet édité, si connu. En absence, les données sont chargées depuis l'objet en base s'il existe ou depuis l'objet source d'une traduction si c'est un nouvel objet (et une traduction).
Contenu HTML ajouté en même temps que les champs cachés (input hidden) du formulaire.
Environnement du formulaire.
Gestion des textes trop longs (limitation brouteurs) utile pour les textes > 32ko
coupe_trop_long(string $texte) : array<string|int, mixed>
auto-renseigner le titre si il n'existe pas
titre_automatique(string $champ_titre, array<string|int, mixed> $champs_contenu[, int $longueur = null ]) : mixed
Déterminer un titre automatique, à partir des champs textes de contenu
inc_titrer_contenu_dist(array<string|int, mixed> $champs_contenu[, array<string|int, mixed>|null $c = null ][, int $longueur = 50 ]) : string
Les textes et le titre sont pris dans les champs postés (via _request()
)
et le titre calculé est de même affecté en tant que champ posté.
Liste des champs contenu textuels
tableau qui contient les valeurs des champs de contenu
si null
on utilise les valeurs du POST
Longueur de coupe du texte
Calcule des clés de contrôles md5 d'un tableau de données.
controles_md5(array<string|int, mixed> $data[, string $prefixe = 'ctr_' ][, string $format = 'html' ]) : string|array<string|int, mixed>
Produit la liste des md5 d'un tableau de données, normalement un tableau des colonnes/valeurs d'un objet éditorial.
Couples (colonne => valeur). La valeur est un entier ou un texte.
Préfixe à appliquer sur les noms des clés de contrôles, devant le nom de la colonne
Contrôle les contenus postés d'un objet en vérifiant qu'il n'y a pas de conflit d'édition
controler_contenu(string $type, int $id[, array<string|int, mixed> $options = [] ][, array<string|int, mixed>|bool $c = false ][, string $serveur = '' ]) : bool|null|array<string|int, mixed>
Repère les conflits d'édition sur un ou plusieurs champs. C'est à dire lorsqu'une autre personne a modifié le champ entre le moment où on a édité notre formulaire et le moment où on a validé le formulaire
Type d'objet
Identifiant de l'objet
Tableau d'options. Accèpte les index :
Tableau de couples (colonne=>valeur) à tester. Non renseigné, la fonction prend toutes les colonne de l'objet via _request()
Nom du connecteur de base de données
False si aucun champ posté. Null si aucune modification sur les champs. Tableau vide si aucun de conflit d'édition. Tableau (clé => tableau du conflit). L'index est la colonne en conflit, la valeur un tableau avec 2 index :
Contrôle la liste des md5 envoyés, supprime les inchangés, signale les modifiés depuis telle date
controler_md5(array<string|int, mixed> &$champs, array<string|int, mixed> $ctr, string $type, int $id, string $serveur[, string $prefix = 'ctr_' ]) : null|array<string|int, mixed>
Couples des champs saisis dans le formulaire (colonne => valeur postée)
Tableau contenant les clés de contrôles. Couples (clé => md5)
Type d'objet
Identifiant de l'objet
Nom du connecteur de base de données
Préfixe des clés de contrôles : le nom du champ est préfixé de cette valeur dans le tableau $ctr pour retrouver son md5.
Null si aucun champ ou aucune modification sur les champs Tableau vide si aucune erreur de contrôle. Tableau (clé => tableau du conflit). L'index est la colonne en conflit, la valeur un tableau avec 2 index :
Afficher le contenu d'un champ selon sa longueur soit dans un `textarea`, soit dans un `input`
display_conflit_champ(string $x) : string
texte à afficher
Vérifier la conformité d'une ou plusieurs adresses email (suivant RFC 822)
inc_email_valide_dist(string $adresses) : bool|string
Adresse ou liste d'adresse (separees pas des virgules)
Nettoyer le titre d'un email
nettoyer_titre_email(string $titre) : string
Utiliser le bon encodage de caractères selon le charset
nettoyer_caracteres_mail(string $t) : string
Caractères pris en compte : apostrophe, double guillemet, le tiret cadratin, le tiret demi-cadratin
Envoi d'un mail
inc_envoyer_mail_dist(string $destinataire, string $sujet, string|array<string|int, mixed> $corps[, string $from = '' ][, string $headers = '' ]) : bool
(deprecie, utiliser l'entree from de $corps)
(deprecie, utiliser l'entree headers de $corps)
Formater correctement l'entête d'un email
mail_normaliser_headers(string $headers, string $from, string $to, string $texte[, string $parts = '' ]) : array<string|int, mixed>
Retourne l'EXIF d'orientation d'une image JPEG ou TIFF, si elle en possède bien un.
exif_obtenir_orientation(string $fichier) : int|null
Détermine si un EXIF d'orientation correspond à une image en mode portrait.
exif_determiner_si_portrait(int|null $orientation) : bool
(cf. https://www.daveperrett.com/articles/2012/07/28/exif-orientation-handling-is-a-ghetto/#eh-exif-orientation).
Détermine l'axe de la symétrie à appliquer sur une image porteuse d'un EXIF d'orientation.
exif_determiner_axe_symetrie(int $orientation) : int|null
En l'état, on renvoie toujours 1 s'il faut appliquer une symétrie, puisque, l'image générée par SPIP étant toujours en mode paysage (, l'axe de la symétrie à appliquer est toujours le même, à savoir horizontal (on n'utilise cependant pas la constante IMG_FLIP_HORIZONTAL fournie par la librairie GD).
Détermine l'angle de la rotation à appliquer sur une image porteuse d'un EXIF d'orientation.
exif_determiner_angle_rotation(int $orientation) : int|null
Exporter un champ pour un export CSV : pas de retour a la ligne, et echapper les guillements par des doubles guillemets
exporter_csv_champ(string $champ) : string
Exporter une ligne complete au format CSV, avec delimiteur fourni
exporter_csv_ligne_numerotee(int $nb, array<string|int, mixed> $ligne[, string $delim = ',' ][, string|null $importer_charset = null ][, callable|null $callback = null ]) : string
Si défini exporte dans le charset indiqué
Exporte une ressource sous forme de fichier CSV
inc_exporter_csv_dist(string $titre, array<string|int, mixed>|resource $resource[, array<string|int, mixed> $options = [] ]) : string
La ressource peut etre un tableau ou une resource SQL issue d'une requete Le nom du fichier est défini en fonction du titre s'il n'est pas indiqué dans les options. L'extension est choisie en fonction du délimiteur si elle n'est pas indiquée dans les options :
Titre utilisé pour nommer le fichier si celui-ci n'est pas indiqué dans les options Il peut s'agir d'un texte contenant de la syntaxe SPIP
csv
| xls
, par défaut choisie en fonction du délimiteur,
| ;
| \t
| TAB
Charger un filtre depuis le php
charger_filtre(string $fonc[, string $default = 'filtre_identite_dist' ]) : string
Pour éviter de perdre le texte si le filtre demandé est introuvable,
on transmet filtre_identite_dist
en filtre par défaut.
Nom du filtre
Filtre par défaut
Fonction PHP correspondante du filtre
Retourne le texte tel quel
filtre_identite_dist(string $texte) : string
texte
texte
Cherche un filtre
chercher_filtre(string $fonc[, string|null $default = null ]) : string
Pour une filtre F
retourne la première fonction trouvée parmis :
Peut gérer des appels par des fonctions statiques de classes tel que Foo::Bar
En absence de fonction trouvée, retourne la fonction par défaut indiquée.
Nom du filtre
Nom du filtre appliqué par défaut si celui demandé n'est pas trouvé
Fonction PHP correspondante du filtre demandé
Applique un filtre s'il existe, sinon retourne une chaîne vide
appliquer_filtre(mixed $arg, string $filtre) : string
Fonction générique qui prend en argument l’objet (texte, etc) à modifier et le nom du filtre.
filtrer()
, celle-ci ne lève
pas d'erreur de squelettes si le filtre n'est pas trouvé.appliquer_si_filtre()
le contenu
d'origine n'est pas retourné si le filtre est absent.Les arguments supplémentaires transmis à cette fonction sont utilisés comme arguments pour le filtre appelé.
texte (le plus souvent) sur lequel appliquer le filtre
Nom du filtre à appliquer
texte traité par le filtre si le filtre existe, Chaîne vide sinon.
Applique un filtre s'il existe, sinon retourne le contenu d'origine sans modification
appliquer_si_filtre(mixed $arg, string $filtre) : string
Se référer à appliquer_filtre()
pour les détails.
texte (le plus souvent) sur lequel appliquer le filtre
Nom du filtre à appliquer
texte traité par le filtre si le filtre existe, texte d'origine sinon
Retourne la version de SPIP
spip_version() : string
Si l'on retrouve un numéro de révision GIT ou SVN, il est ajouté entre crochets. Si effectivement le SPIP est installé par Git ou Svn, 'GIT' ou 'SVN' est ajouté avant sa révision.
Version de SPIP
Masque la version de SPIP si la globale spip_header_silencieux le demande.
header_silencieux(string $version) : string
Retourne une courte description d’une révision VCS d’un répertoire
version_vcs_courante(string $dir[, array<string|int, mixed> $raw = false ]) : mixed
Le répertoire à tester
True pour avoir les données brutes, false pour un texte à afficher
Retrouve un numéro de révision Git d'un répertoire
decrire_version_git(string $dir) : array<string|int, mixed>|null
Chemin du répertoire
null si aucune info trouvée array ['branch' => xx, 'commit' => yy] sinon.
Charge et exécute un filtre (graphique ou non)
filtrer(string $filtre, mixed ...$args) : string
Recherche la fonction prévue pour un filtre (qui peut être un filtre graphique image_*
)
et l'exécute avec les arguments transmis à la fonction, obtenus avec func_get_args()
Nom du filtre à appliquer
Arguments du filtre appelé
Code HTML retourné par le filtre
Cherche un filtre spécial indiqué dans la globale `spip_matrice` et charge le fichier éventuellement associé contenant le filtre.
trouver_filtre_matrice(string $filtre) : bool
Les filtres d'images par exemple sont déclarés de la sorte, tel que :
$GLOBALS['spip_matrice']['image_reduire'] = true;
$GLOBALS['spip_matrice']['image_monochrome'] = 'filtres/images_complements.php';
true si on trouve le filtre dans la matrice, false sinon.
Filtre `set` qui sauve la valeur en entrée dans une variable
filtre_set(array<string|int, mixed> &$Pile, mixed $val, string $key[, bool $continue = null ]) : mixed
La valeur pourra être retrouvée avec #GET{variable}
.
Pile de données
Valeur à sauver
Clé d'enregistrement
True pour retourner la valeur
Filtre `setenv` qui enregistre une valeur dans l'environnement du squelette
filtre_setenv(array<string|int, mixed> &$Pile, mixed $val, mixed $key[, null|mixed $continue = null ]) : string|mixed
La valeur pourra être retrouvée avec #ENV{variable}
.
Valeur à enregistrer
Nom de la variable
Si présent, retourne la valeur en sortie
Retourne $val
si $continue
présent, sinon ''.
filtre_sanitize_env(array<string|int, mixed> &$Pile, array<string|int, mixed>|string $keys) : string
Filtre `debug` qui affiche un debug de la valeur en entrée
filtre_debug(mixed $val[, mixed|null $key = null ]) : mixed
Log la valeur dans debug.log
et l'affiche si on est webmestre.
La valeur à debugguer
Clé pour s'y retrouver
Retourne la valeur (sans la modifier).
Exécute un filtre image
image_filtrer(array<string|int, mixed> $args) : string
Fonction générique d'entrée des filtres images. Accepte en entrée :
<img ...>
complet,|copie_locale
si on veut
l'appliquer à un document distant).Applique le filtre demande à chacune des occurrences
Liste des arguments :
texte qui a reçu les filtres
Retourne les informations d'une image
infos_image(string $img[, mixed $force_refresh = false ]) : array<string|int, mixed>
Pour les filtres largeur
et hauteur
taille_image
et poids_image
Balise HTML <img ...>
ou chemin de l'image (qui peut être une URL distante).
largeur hauteur poids
Retourne les dimensions d'une image
poids_image(string $img[, mixed $force_refresh = false ]) : array<string|int, mixed>
Pour les filtres largeur
et hauteur
Balise HTML <img ...>
ou chemin de l'image (qui peut être une URL distante).
largeur hauteur poids
taille_image(mixed $img[, mixed $force_refresh = false ]) : mixed
Retourne la largeur d'une image
largeur(string $img) : int|null
Balise HTML <img ...>
ou chemin de l'image (qui peut être une URL distante).
Largeur en pixels, NULL ou 0 si aucune image.
Retourne la hauteur d'une image
hauteur(string $img) : int|null
Balise HTML <img ...>
ou chemin de l'image (qui peut être une URL distante).
Hauteur en pixels, NULL ou 0 si aucune image.
Échappement des entités HTML avec correction des entités « brutes »
corriger_entites_html(string $texte) : string
Ces entités peuvent être générées par les butineurs lorsqu'on rentre des caractères n'appartenant pas au charset de la page [iso-8859-1 par défaut]
Attention on limite cette correction aux caracteres « hauts » (en fait > 99
pour aller plus vite que le > 127 qui serait logique), de manière à
préserver des eéhappements de caractères « bas » (par exemple [
ou "
)
et au cas particulier de &
qui devient &amp;
dans les URL
Échappement des entités HTML avec correction des entités « brutes » ainsi que les `&eacute;` en `é`
corriger_toutes_entites_html(string $texte) : string
Identique à corriger_entites_html()
en corrigeant aussi les
&eacute;
en é
Échappe les `&` en `&`
proteger_amp(string $texte) : string
Échappe en entités HTML certains caractères d'un texte
entites_html(string $texte[, bool $tout = false ][, bool $quote = true ]) : mixed|string
Traduira un code HTML en transformant en entités HTML les caractères
en dehors du charset de la page ainsi que les "
, <
et >
.
Ceci permet d’insérer le texte d’une balise dans un <textarea> </textarea>
sans dommages.
chaine a echapper
corriger toutes les &xx;
en &xx;
Échapper aussi les simples quotes en '
Convertit les caractères spéciaux HTML dans le charset du site.
filtrer_entites(string $texte) : string
texte à convertir
texte converti
Version sécurisée de filtrer_entites
filtre_filtrer_entites_dist(string $t) : string
Supprime des caractères illégaux
supprimer_caracteres_illegaux(string|array<string|int, mixed> $texte) : string|array<string|int, mixed>
Remplace les caractères de controle par le caractère -
Correction de caractères
corriger_caracteres(string|array<string|int, mixed> $texte) : string|array<string|int, mixed>
Supprimer les caracteres windows non conformes et les caracteres de controle illégaux
Encode du HTML pour transmission XML notamment dans les flux RSS
texte_backend(string|null $texte) : string
Ce filtre transforme les liens en liens absolus, importe les entitées html et échappe les tags html.
texte à transformer
texte encodé pour XML
Encode et quote du HTML pour transmission XML notamment dans les flux RSS
texte_backendq(string|null $texte) : string
Comme texte_backend(), mais avec addslashes final pour squelettes avec PHP (rss)
texte à transformer
texte encodé et quote pour XML
Enlève un numéro préfixant un texte
supprimer_numero(string|null $texte) : string
Supprime 10.
dans la chaine 10. Titre
Texte
Texte sans son numéro éventuel
Récupère un numéro préfixant un texte
recuperer_numero(string|null $texte) : string
Récupère le numéro 10
dans la chaine 10. Titre
Texte
Numéro de titre, sinon chaîne vide
Suppression basique et brutale de tous les tags
supprimer_tags(string|array<string|int, mixed>|null $texte[, string $rempl = '' ]) : string|array<string|int, mixed>
Supprime tous les tags <...>
.
Utilisé fréquemment pour écrire des RSS.
texte ou tableau de textes à échapper
Inutilisé.
texte ou tableau de textes converti
Convertit les chevrons de tag en version lisible en HTML
echapper_tags(string $texte[, string $rempl = '' ]) : string
Transforme les chevrons de tag <...>
en entité HTML.
texte à échapper
Inutilisé.
texte converti
Convertit un texte HTML en texte brut
textebrut(string $texte) : string
Enlève les tags d'un code HTML, élimine les doubles espaces.
texte à convertir
texte converti
Remplace les liens SPIP en liens ouvrant dans une nouvelle fenetre (target=blank)
liens_ouvrants(string $texte) : string
texte avec des liens
texte avec liens ouvrants
Ajouter un attribut rel="nofollow" sur tous les liens d'un texte
liens_nofollow(string $texte) : string
Transforme les sauts de paragraphe HTML `p` en simples passages à la ligne `br`
PtoBR(string $texte) : string
texte à transformer
texte sans paraghaphes
Passe un texte en majuscules, y compris les accents, en HTML
majuscules(string $texte) : string
Encadre le texte du style CSS text-transform: uppercase;
.
Le cas spécifique du i turc est géré.
texte
texte en majuscule
Renvoie une taille de dossier ou de fichier humainement lisible en ajustant le format et l'unité.
taille_en_octets(int $octets[, string $systeme = 'BI' ]) : string
La fonction renvoie la valeur et l'unité en fonction du système utilisé (binaire ou décimal).
Taille d'un dossier ou fichier en octets
Système d'unité dans lequel calculer et afficher la taille lisble. Vaut BI
(défaut) ou SI
.
Taille affichée de manière humainement lisible
Rend une chaine utilisable sans dommage comme attribut HTML
attribut_html(string|null $texte[, bool $textebrut = true ]) : string
texte à mettre en attribut
Passe le texte en texte brut (enlève les balises html) ?
texte prêt pour être utilisé en attribut HTML
Rend une URL utilisable sans dommage comme attribut d'une balise HTML
attribut_url(string|null $texte) : string
texte à mettre en attribut
texte prêt pour être utilisé en attribut HTML
Vider les URL nulles
vider_url(string $url[, bool $entites = true ]) : string
http://
ou mailto:
(sans rien d'autre)&
URL à vérifier et échapper
true
pour échapper les entités HTML.
URL ou chaîne vide
Maquiller une adresse e-mail
antispam(string $texte) : string
Remplace @
par 3 caractères aléatoires.
Adresse email
Adresse email maquillée
Vérifie un accès à faible sécurité
filtre_securiser_acces_dist(int $id_auteur, string $cle, string $dir[, string $op = '' ][, string $args = '' ]) : bool
Vérifie qu'un visiteur peut accéder à la page demandée, qui est protégée par une clé, calculée à partir du low_sec de l'auteur, et des paramètres le composant l'appel (op, args)
L'auteur qui demande la page
La clé à tester
Un type d'accès (nom du répertoire dans lequel sont rangés les squelettes demandés, tel que 'rss')
Nom de l'opération éventuelle
Nom de l'argument calculé
True si on a le droit d'accès, false sinon.
Retourne le second paramètre lorsque le premier est considere vide, sinon retourne le premier paramètre.
sinon(mixed $texte[, mixed $sinon = '' ]) : mixed
En php sinon($a, 'rien')
retourne $a
, ou 'rien'
si $a
est vide.
Contenu de reference a tester
Contenu a retourner si le contenu de reference est vide
Retourne $texte, sinon $sinon.
Filtre `|choixsivide{vide, pas vide}` alias de `|?{si oui, si non}` avec les arguments inversés
choixsivide(mixed $a, mixed $vide, mixed $pasvide) : mixed
La valeur à tester
Ce qui est retourné si $a
est considéré vide
Ce qui est retourné sinon
Filtre `|choixsiegal{valeur, sioui, sinon}`
choixsiegal(mixed $a1, mixed $a2, mixed $v, mixed $f) : mixed
La valeur à tester
La valeur de comparaison
Ce qui est retourné si la comparaison est vraie
Ce qui est retourné sinon
Adapte un texte pour être inséré dans une valeur d'un export ICAL
filtrer_ical(string $texte) : string
Passe le texte en utf8, enlève les sauts de lignes et échappe les virgules.
Transforme les sauts de ligne simples en sauts forcés avec `_ `
post_autobr(string $texte[, string $delim = "
_ " ]) : string
Ne modifie pas les sauts de paragraphe (2 sauts consécutifs au moins), ou les retours à l'intérieur de modèles ou de certaines balises html.
Ce par quoi sont remplacés les sauts
Extrait une langue des extraits idiomes (`<:module:cle_de_langue:>`)
extraire_idiome(string $letexte[, string $lang = null ][, array<string|int, mixed> $options = [] ]) : string
Retrouve les balises <:cle_de_langue:>
d'un texte et remplace son contenu
par l'extrait correspondant à la langue demandée (si possible), sinon dans la
langue par défaut du site.
Ne pas mettre de span@lang=fr si on est déjà en fr.
Langue à retrouver (si vide, utilise la langue en cours).
Options { @var bool $echappe_span True pour échapper les balises span (false par défaut) @var string $lang_defaut Code de langue : permet de définir la langue utilisée par défaut, en cas d'absence de traduction dans la langue demandée. Par défaut la langue du site. Indiquer 'aucune' pour ne pas retourner de texte si la langue exacte n'a pas été trouvée. }
Extrait une langue des extraits polyglottes (`<multi>`)
extraire_multi(string $letexte[, string $lang = null ][, array<string|int, mixed> $options = [] ]) : string
Retrouve les balises <multi>
d'un texte et remplace son contenu
par l'extrait correspondant à la langue demandée.
Si la langue demandée n'est pas trouvée dans le multi, ni une langue
approchante (exemple fr
si on demande fr_TU
), on retourne l'extrait
correspondant à la langue par défaut (option 'lang_defaut'), qui est
par défaut la langue du site. Et si l'extrait n'existe toujours pas
dans cette langue, ça utilisera la première langue utilisée
dans la balise <multi>
.
Ne pas mettre de span@lang=fr si on est déjà en fr.
Langue à retrouver (si vide, utilise la langue en cours).
Options { @var bool $echappe_span True pour échapper les balises span (false par défaut) @var string $lang_defaut Code de langue : permet de définir la langue utilisée par défaut, en cas d'absence de traduction dans la langue demandée. Par défaut la langue du site. Indiquer 'aucune' pour ne pas retourner de texte si la langue exacte n'a pas été trouvée. }
Calculer l'initiale d'un nom
filtre_initiale(string $nom) : string
L'initiale en majuscule
Retourne la donnée si c'est la première fois qu'il la voit
unique(string $donnee[, string $famille = '' ][, bool $cpt = false ]) : string|int|array<string|int, mixed>|null|void
Il est possible de gérer différentes "familles" de données avec le second paramètre.
Donnée que l'on souhaite unique
Famille de stockage (1 unique donnée par famille)
True pour obtenir le nombre d'éléments différents stockés
Filtre qui alterne des valeurs en fonction d'un compteur
alterner(int $i, array<string|int, mixed> ...$args) : mixed
Affiche à tour de rôle et dans l'ordre, un des arguments transmis à chaque incrément du compteur.
S'il n'y a qu'un seul argument, et que c'est un tableau, l'alternance se fait sur les valeurs du tableau.
Souvent appliqué à l'intérieur d'une boucle, avec le compteur #COMPTEUR_BOUCLE
Le compteur
Liste des éléments à alterner
Une des valeurs en fonction du compteur.
Récupérer un attribut d'une balise HTML
extraire_attribut(string|array<string|int, mixed> $balise, string $attribut[, bool $complet = false ]) : string|array<string|int, mixed>|null
la regexp est mortelle : cf. tests/unit/filtres/extraire_attribut.php
Si on a passé un tableau de balises, renvoyer un tableau de résultats
(dans ce cas l'option $complet
n'est pas disponible)
texte ou liste de textes dont on veut extraire des balises
Nom de l'attribut désiré
true pour retourner un tableau avec
Insérer (ou modifier) un attribut html dans une balise
inserer_attribut(string|null $balise, string $attribut, string|null $val[, bool $proteger = true ][, bool $vider = false ]) : string
Code html de la balise (ou contenant une balise)
Nom de l'attribut html à modifier
Valeur de l'attribut à appliquer
Prépare la valeur en tant qu'attribut de balise (mais conserve les balises html).
True pour vider l'attribut. Une chaîne vide pour $val
fera pareil.
Code html modifié
Supprime un attribut HTML
vider_attribut(string|null $balise, string $attribut) : string
Code HTML de l'élément
Nom de l'attribut à enlever
Code HTML sans l'attribut
Fonction support pour les filtres |ajouter_class |supprimer_class |commuter_class
modifier_class(string $balise, string|array<string|int, mixed> $class[, string $operation = 'ajouter' ]) : string
Ajoute une ou plusieurs classes sur une balise (si pas deja presentes)
ajouter_class(string $balise, string|array<string|int, mixed> $class) : string
Supprime une ou plusieurs classes sur une balise (si presentes)
supprimer_class(string $balise, string|array<string|int, mixed> $class) : string
Bascule une ou plusieurs classes sur une balise : ajoutees si absentes, supprimees si presentes
commuter_class(string $balise, string|array<string|int, mixed> $class) : string
Un filtre pour déterminer le nom du statut des inscrits
tester_config(int|null $id[, string $mode = '' ]) : string
floatstr(mixed $a) : mixed
strize(mixed $f, mixed $a, mixed $b) : mixed
Additionne 2 nombres
plus(int $a, int $b) : int
$a+$b
strplus(mixed $a, mixed $b) : mixed
Soustrait 2 nombres
moins(int $a, int $b) : int
$a-$b
strmoins(mixed $a, mixed $b) : mixed
Multiplie 2 nombres
mult(int $a, int $b) : int
$a*$b
strmult(mixed $a, mixed $b) : mixed
Divise 2 nombres
div(int $a, int $b) : int
$a/$b (ou 0 si $b est nul)
strdiv(mixed $a, mixed $b) : mixed
Retourne le modulo 2 nombres
modulo(int $nb, int $mod[, int $add = 0 ]) : int
($nb % $mod) + $add
Vérifie qu'un nom (d'auteur) ne comporte pas d'autres tags que <multi> et ceux volontairement spécifiés dans la constante
nom_acceptable(string $nom) : bool
Nom (signature) proposé
Vérifier la conformité d'une ou plusieurs adresses email (suivant RFC 822)
email_valide(string|array<string|int, mixed> $adresses) : bool|string|array<string|int, mixed>
Adresse ou liste d'adresse si on fournit un tableau, il est filtre et la fonction renvoie avec uniquement les adresses email valides (donc possiblement vide)
Permet d'afficher un symbole à côté des liens pointant vers les documents attachés d'un article (liens ayant `rel=enclosure`).
afficher_enclosures(string $tags) : string
texte
texte
Filtre des liens HTML `<a>` selon la valeur de leur attribut `rel` et ne retourne que ceux là.
afficher_tags(string $tags[, string $rels = 'tag,directory' ]) : string
texte
Attribut rel
à capturer (ou plusieurs séparés par des virgules)
Liens trouvés
Convertir les médias fournis par un flux RSS (podcasts) en liens conformes aux microformats
enclosure2microformat(string $e) : string
Passe un <enclosure url="fichier" length="5588242" type="audio/mpeg"/>
au format microformat <a rel="enclosure" href="fichier" ...>fichier</a>
.
Peut recevoir un <link
ou un <media:content
parfois.
Attention : length="zz"
devient title="zz"
, pour rester conforme.
Tag RSS <enclosure>
Tag HTML <a>
avec microformat.
Convertir les liens conformes aux microformats en médias pour flux RSS, par exemple pour les podcasts
microformat2enclosure(string $tags) : string
Passe un texte ayant des liens avec microformat
<a rel="enclosure" href="fichier" ...>fichier</a>
au format RSS <enclosure url="fichier" ... />
.
texte HTML ayant des tag <a>
avec microformat
Tags RSS <enclosure>
.
Créer les éléments ATOM `<dc:subject>` à partir des tags
tags2dcsubject(string $tags) : string
Convertit les liens avec attribut rel="tag"
en balise <dc:subject></dc:subject>
pour les flux RSS au format Atom.
texte
Tags RSS Atom <dc:subject>
.
Retourne la premiere balise html du type demandé
extraire_balise(string|array<string|int, mixed> $texte[, string $tag = 'a' ][, mixed $profondeur = 1 ]) : string|array<string|int, mixed>
Retourne dans un tableau le contenu de chaque balise jusqu'à sa fermeture correspondante. Si on a passe un tableau de textes, retourne un tableau de resultats.
texte(s) dont on souhaite extraire une balise html
Nom de la balise html à extraire
Extrait toutes les balises html du type demandé
extraire_balises(string|array<string|int, mixed> $texte[, string $tag = 'a' ][, array<string|int, mixed> $options = [] ]) : array<string|int, mixed>
Retourne dans un tableau le contenu de chaque balise jusqu'à sa fermeture correspondante. Si on a passe un tableau de textes, retourne un tableau de resultats.
texte(s) dont on souhaite extraire une balise html
Nom de la balise html à extraire
int nb_max : nombre d'occurence maxi à extraire int profondeur : niveau de profondeur d'extraction en cas d'intrication de balises identiques
Indique si le premier argument est contenu dans le second
in_any(string $val, array<string|int, mixed>|string $vals[, string $def = '' ]) : string
Cette fonction est proche de in_array()
en PHP avec comme principale
différence qu'elle ne crée pas d'erreur si le second argument n'est pas
un tableau (dans ce cas elle tentera de le désérialiser, et sinon retournera
la valeur par défaut transmise).
Valeur à chercher dans le tableau
Tableau des valeurs. S'il ce n'est pas un tableau qui est transmis, la fonction tente de la désérialiser.
Valeur par défaut retournée si $vals
n'est pas un tableau.
$def
si on n'a pas transmis de tableauRetourne le résultat d'une expression mathématique simple
valeur_numerique(string $expr) : int
N'accepte que les *, + et - (à ameliorer si on l'utilise vraiment).
Expression mathématique nombre operateur nombre
comme 3*2
Résultat du calcul
Retourne un calcul de règle de trois
regledetrois(int $a, int $b, int $c) : int
Retourne $a*$b/$c
Crée des tags HTML input hidden pour chaque paramètre et valeur d'une URL
form_hidden([string|null $action = '' ]) : string
Fournit la suite de Input-Hidden correspondant aux paramètres de l'URL donnée en argument, compatible avec les types_urls
URL
Suite de champs input hidden
Retourne la première valeur d'un tableau
filtre_reset(array<string|int, mixed> $array) : mixed|null|false
Plus précisément déplace le pointeur du tableau sur la première valeur et la retourne.
Retourne la dernière valeur d'un tableau
filtre_end(array<string|int, mixed> $array) : mixed|null|false
Plus précisément déplace le pointeur du tableau sur la dernière valeur et la retourne.
Empile une valeur à la fin d'un tableau
filtre_push(array<string|int, mixed> $array, mixed $val) : array<string|int, mixed>|string
Indique si une valeur est contenue dans un tableau
filtre_find(array<string|int, mixed> $array, mixed $val) : bool
false
si $array
n'est pas un tableautrue
si la valeur existe dans le tableau, false
sinon.Passer les url relatives à la css d'origine en url absolues
urls_absolues_css(string $contenu, string $source) : string
Contenu du fichier CSS
Chemin du fichier CSS
Contenu avec urls en absolus
Inverse le code CSS (left <--> right) d'une feuille de style CSS
direction_css(string $css[, string $voulue = '' ]) : string
Récupère le chemin d'une CSS existante et :
_DIR_VAR/cache_css/
Si on lui donne à manger une feuille nommée *_rtl.css
il va faire l'inverse.
Chemin vers le fichier CSS
Permet de forcer le sens voulu (en indiquant ltr
, rtl
ou un
code de langue). En absence, prend le sens de la langue en cours.
Chemin du fichier CSS inversé
Transforme les urls relatives d'un fichier CSS en absolues
url_absolue_css(string $css) : string
Récupère le chemin d'une css existante et crée (ou recrée) dans _DIR_VAR/cache_css/
une css dont les url relatives sont passées en url absolues
Le calcul n'est pas refait si le fichier cache existe déjà et que la source n'a pas été modifiée depuis.
Chemin ou URL du fichier CSS source
Récupère la valeur d'une clé donnée dans un tableau (ou un objet).
table_valeur(mixed $table, string $cle[, mixed $defaut = '' ][, bool $conserver_null = false ]) : mixed
Tableau ou objet PHP (ou chaîne serialisée de tableau, ce qui permet d'enchaîner le filtre)
Clé du tableau (ou paramètre public de l'objet)
Cette clé peut contenir des caractères / pour sélectionner
des sous éléments dans le tableau, tel que sous/element/ici
pour obtenir la valeur de $tableau['sous']['element']['ici']
Valeur par defaut retournée si la clé demandée n'existe pas
Permet de forcer la fonction à renvoyer la valeur null d'un index et non pas $defaut comme cela est fait naturellement par la fonction isset. On utilise alors array_key_exists() à la place de isset().
Valeur trouvée ou valeur par défaut.
Retrouve un motif dans un texte à partir d'une expression régulière
filtre_match_dist(string|null $texte, string|int $expression[, string $modif = 'UuimsS' ][, int $capte = 0 ]) : bool|string
S'appuie sur la fonction preg_match()
en PHP
texte dans lequel chercher
Expression régulière de recherche, sans le délimiteur
Numéro de parenthèse capturante
Remplacement de texte à base d'expression régulière
replace(string $texte, string $expression[, string $replace = '' ][, string $modif = 'UimsS' ]) : string
Texte dans lequel faire le remplacement
Expression régulière
Texte de substitution des éléments trouvés
Modificateurs pour l'expression régulière.
Texte
Cherche les documents numerotés dans un texte traite par `propre()`
traiter_doublons_documents(array<string|int, mixed> &$doublons, string $letexte) : string
Affecte la liste des doublons['documents']
Liste des doublons
Le texte
Le texte
Filtre vide qui ne renvoie rien
vide(mixed $texte) : string
Chaîne vide
Écrit des balises HTML `<param...>` à partir d'un tableau de données tel que `#ENV`
env_to_params(array<string|int, mixed>|string $env[, array<string|int, mixed> $ignore_params = [] ]) : string
Permet d'écrire les balises <param>
à indiquer dans un <object>
en prenant toutes les valeurs du tableau transmis.
Certaines clés spécifiques à SPIP et aux modèles embed sont omises : id, lang, id_document, date, date_redac, align, fond, recurs, emb, dir_racine
Tableau cle => valeur des paramètres à écrire, ou chaine sérialisée de ce tableau
Permet de compléter les clés ignorées du tableau.
Code HTML résultant
Écrit des attributs HTML à partir d'un tableau de données tel que `#ENV`
env_to_attributs(array<string|int, mixed>|string $env[, array<string|int, mixed> $ignore_params = [] ]) : string
Permet d'écrire des attributs d'une balise HTML en utilisant les données du tableau transmis. Chaque clé deviendra le nom de l'attribut (et la valeur, sa valeur)
Certaines clés spécifiques à SPIP et aux modèles embed sont omises : id, lang, id_document, date, date_redac, align, fond, recurs, emb, dir_racine
Tableau cle => valeur des attributs à écrire, ou chaine sérialisée de ce tableau
Permet de compléter les clés ignorées du tableau.
Code HTML résultant
Concatène des chaînes
concat(array<string|int, mixed> ...$args) : string
Chaînes concaténés
Retourne le contenu d'un ou plusieurs fichiers
charge_scripts(array<string|int, mixed>|string $files[, bool $script = true ]) : string
Les chemins sont cherchés dans le path de SPIP
|
javascript/
Contenu du ou des fichiers, concaténé
Trouver la potentielle variante SVG -xx.svg d'une image -xx.png Cette fonction permet le support multi-version SPIP des plugins qui fournissent une icone PNG et sa variante SVG
http_img_variante_svg_si_possible(string $img_file) : string
Produit une balise img avec un champ alt d'office si vide
http_img_pack(string $img, string $alt[, string $atts = '' ][, string $title = '' ][, array<string|int, mixed> $options = [] ]) : string
Attention le htmlentities et la traduction doivent être appliqués avant.
chemin_image : utiliser chemin_image sur $img fourni, ou non (oui par dafaut) utiliser_suffixe_size : utiliser ou non le suffixe de taille dans le nom de fichier de l'image sous forme -xx.png (pour les icones essentiellement) (oui par defaut) variante_svg_si_possible: utiliser l'image -xx.svg au lieu de -32.png par exemple (si la variante svg est disponible)
Générer une directive `style='background:url()'` à partir d'un fichier image
http_style_background(string $img[, string $att = '' ][, string $size = null ]) : string
helper_filtre_balise_img_svg_arguments(mixed $alt_or_size, mixed $class_or_size, mixed $size) : mixed
helper_filtre_balise_img_svg_size(mixed $img, mixed $size) : mixed
Générer une balise HTML `img` à partir d'un nom de fichier et/ou renseigne son alt/class/width/height selon les arguments passés
filtre_balise_img_dist(string $img[, string $alt = '' ][, string $class = null ][, string|int $size = null ]) : string
Le class et le alt peuvent etre omis et dans ce cas size peut-être renseigné comme dernier argument : [(#FICHIER|balise_img)] [(#FICHIER|balise_img{1024})] [(#FICHIER|balise_img{1024x*})] [(#FICHIER|balise_img{1024x640})] [(#FICHIER|balise_img{'un nuage',1024x640})] [(#FICHIER|balise_img{'un nuage','spip_logo',1024x640})] Si le alt ou la class sont ambigu et peuvent etre interpretes comme une taille, il suffit d'indiquer une taille vide pour lever l'ambiguite [(#FICHIER|balise_img{'@2x','',''})]
chemin vers un fichier ou balise <img src='...'>
(generee par un filtre image par exemple)
texte alternatif ; une valeur nulle pour explicitement ne pas avoir de balise alt sur l'image (au lieu d'un alt vide)
attribut class ; null par defaut (ie si img est une balise, son attribut class sera inchange. pas de class inseree
taille imposee @2x : pour imposer une densite x2 (widht et height seront divisees par 2) largeur : pour une image carree largeurx* : pour imposer uniquement la largeur (un attribut height sera aussi ajoute, mais calcule automatiquement pour respecter le ratio initial de l'image) largeurxhauteur pour fixer les 2 dimensions
Code HTML de la balise IMG
Inserer un svg inline http://www.accede-web.com/notices/html-css-javascript/6-images-icones/6-2-svg-images-vectorielles/
filtre_balise_svg_dist(string $img[, string $alt = '' ][, string $class = null ][, string|int $size = null ]) : string
pour l'inserer avec une balise , utiliser le filtre |balise_img
Le class et le alt peuvent etre omis et dans ce cas size peut-être renseigné comme dernier argument : [(#FICHIER|balise_svg{1024x640})] [(#FICHIER|balise_svg{'un nuage',1024x640})] [(#FICHIER|balise_svg{'un nuage','spip_logo',1024x640})] Si le alt ou la class sont ambigu et peuvent etre interpretes comme une taille, il suffit d'indiquer une taille vide pour lever l'ambiguite [(#FICHIER|balise_svg{'un nuage','@2x',''})]
chemin vers un fichier ou balise <svg ... >... </svg>
deja preparee
texte alternatif ; une valeur nulle pour explicitement ne pas avoir de balise alt sur l'image (au lieu d'un alt vide)
attribut class ; null par defaut (ie si img est une balise, son attribut class sera inchange. pas de class inseree
taille imposee @2x : pour imposer une densite x2 (widht et height seront divisees par 2) largeur : pour une image carree largeurx* : pour imposer uniquement la largeur (un attribut height sera aussi ajoute, mais calcule automatiquement pour respecter le ratio initial de l'image) largeurxhauteur pour fixer les 2 dimensions
Code HTML de la balise SVG
Génère une balise HTML `img` ou un `svg` inline suivant le nom du fichier.
filtre_balise_img_svg_dist(mixed $src[, string $alt = '' ][, string $class = null ][, string|int $size = null ]) : string
texte alternatif ; une valeur nulle pour explicitement ne pas avoir de balise alt sur l'image (au lieu d'un alt vide)
attribut class ; null par defaut (ie si img est une balise, son attribut class sera inchange. pas de class inseree
taille imposee @2x : pour imposer une densite x2 (widht et height seront divisees par 2) largeur : pour une image carree largeurx* : pour imposer uniquement la largeur (un attribut height sera aussi ajoute, mais calcule automatiquement pour respecter le ratio initial de l'image) largeurxhauteur pour fixer les 2 dimensions
Code HTML de la balise IMG
Obtient des informations sur les plugins actifs
filtre_info_plugin_dist(string $plugin, string $type_info[, bool $reload = false ]) : array<string|int, mixed>|string|bool
Préfixe du plugin ou chaîne vide
Type d'info demandée
true (à éviter) pour forcer le recalcul du cache des informations des plugins.
Affiche la puce statut d'un objet, avec un menu rapide pour changer de statut si possibilité de l'avoir
puce_changement_statut(int $id_objet, string $statut, int $id_rubrique, string $type[, bool $ajax = false ]) : string
Identifiant de l'objet
Statut actuel de l'objet
Identifiant du parent
Type d'objet
Indique s'il ne faut renvoyer que le coeur du menu car on est dans une requete ajax suite à un post de changement rapide
Code HTML de l'image de puce de statut à insérer (et du menu de changement si présent)
Affiche la puce statut d'un objet, avec un menu rapide pour changer de statut si possibilité de l'avoir
filtre_puce_statut_dist(string $statut, string $objet[, int $id_objet = 0 ][, int $id_parent = 0 ]) : string
Utilisable sur tout objet qui a declaré ses statuts
Statut actuel de l'objet
Type d'objet
Identifiant de l'objet
Identifiant du parent
Code HTML de l'image de puce de statut à insérer (et du menu de changement si présent)
Encoder un contexte pour l'ajax
encoder_contexte_ajax(string|array<string|int, mixed> $c[, string $form = '' ][, string $emboite = null ][, string $ajaxid = '' ]) : string
Encoder le contexte, le signer avec une clé, le crypter avec le secret du site, le gziper si possible.
L'entrée peut-être sérialisée (le #ENV**
des fonds ajax et ajax_stat)
contexte, peut etre un tableau serialize
nom du formulaire eventuel
contenu a emboiter dans le conteneur ajax
ajaxid pour cibler le bloc et forcer sa mise a jour
hash du contexte
Décoder un hash de contexte pour l'ajax
decoder_contexte_ajax(string $c[, string $form = '' ]) : array<string|int, mixed>|string|bool
Précude inverse de encoder_contexte_ajax()
hash du contexte
nom du formulaire eventuel
Encrypte ou décrypte un message
_xor(string $message[, null|string $key = null ]) : string
Message à encrypter ou décrypter
Clé de cryptage / décryptage. Une clé sera calculée si non transmise
Message décrypté ou encrypté
Retourne une URL de réponse de forum (aucune action ici)
url_reponse_forum(string $texte) : string
retourne une URL de suivi rss d'un forum (aucune action ici)
url_rss_forum(string $texte) : string
Génère des menus avec liens ou `<strong class='on'>` non clicable lorsque l'item est sélectionné Le parametre $on peut recevoir un selecteur simplifié de type 'a.active' 'strong.active.expose' pour préciser la balise (a, span ou strong uniquement) et la/les classes à utiliser quand on est expose
lien_ou_expose(string $url[, string $libelle = null ][, bool $on = false ][, string $class = '' ][, string $title = '' ][, string $rel = '' ][, string $evt = '' ]) : string
URL du lien
texte du lien
État exposé ou non (génère un lien). Si $on vaut true ou 1 ou ' ', l'etat expose est rendu par un ... Si $on est de la forme span.active.truc par exemple, l'etat expose est rendu par ... Seules les balises a, span et strong sont acceptees dans ce cas
classes CSS ajoutées au lien
Title ajouté au lien
Attribut rel
ajouté au lien
Complement à la balise a
pour gérer un événement javascript,
de la forme onclick='...'
Code HTML
Afficher un message "un truc"/"N trucs" Les items sont à indiquer comme pour la fonction _T() sous la forme : "module:chaine"
singulier_ou_pluriel(int $nb, string $chaine_un, string $chaine_plusieurs[, string $var = 'nb' ][, array<string|int, mixed> $vars = [] ]) : string
: le nombre
: l'item de langue si $nb vaut un
: l'item de lanque si $nb >= 2
: La variable à remplacer par $nb dans l'item de langue (facultatif, défaut "nb")
: Les autres variables nécessaires aux chaines de langues (facultatif)
: la chaine de langue finale en utilisant la fonction _T()
Fonction de base pour une icone dans un squelette.
prepare_icone_base(string $type, string $lien, string $texte, string $fond[, string $fonction = '' ][, string $class = '' ][, string $javascript = '' ]) : string
Il peut s'agir soit d'un simple lien, structure html : <span><a><img><b>texte</b></span>
,
soit d'un bouton d'action, structure identique au retour de #BOUTON_ACTION
.
'lien' ou 'bouton'
url
texte du lien / alt de l'image
objet avec ou sans son extension et sa taille (article, article-24, article-24.png)
new/del/edit
Classes supplémentaires (horizontale, verticale, ajax…)
code javascript tel que "onclick='...'" par exemple ou texte du message de confirmation s'il s'agit d'un bouton
Crée un lien ayant une icone
icone_base(string $lien, string $texte, string $fond[, string $fonction = '' ][, string $class = '' ][, string $javascript = '' ]) : string
URL du lien
texte du lien
Objet avec ou sans son extension et sa taille (article, article-24, article-24.png)
Fonction du lien (edit
, new
, del
)
classe CSS, tel que left
, right
pour définir un alignement
Javascript ajouté sur le lien
Code HTML du lien
Crée un lien précédé d'une icone au dessus du texte
filtre_icone_verticale_dist(string $lien, string $texte, string $fond[, string $fonction = '' ][, string $class = '' ][, string $javascript = '' ]) : string
URL du lien
texte du lien
Objet avec ou sans son extension et sa taille (article, article-24, article-24.png)
Fonction du lien (edit
, new
, del
)
classe CSS à ajouter, tel que left
, right
, center
pour définir un alignement.
Il peut y en avoir plusieurs : left ajax
Javascript ajouté sur le lien
Code HTML du lien
Crée un lien précédé d'une icone horizontale
filtre_icone_horizontale_dist(string $lien, string $texte, string $fond[, string $fonction = '' ][, string $class = '' ][, string $javascript = '' ]) : string
URL du lien
texte du lien
Objet avec ou sans son extension et sa taille (article, article-24, article-24.png)
Fonction du lien (edit
, new
, del
)
classe CSS à ajouter
Javascript ajouté sur le lien
Code HTML du lien
Crée un bouton d'action intégrant une icone horizontale
filtre_bouton_action_horizontal_dist(string $lien, string $texte, string $fond[, string $fonction = '' ][, string $class = '' ][, string $confirm = '' ]) : string
URL de l'action
texte du bouton
Objet avec ou sans son extension et sa taille (article, article-24, article-24.png)
Fonction du bouton (edit
, new
, del
)
classes à ajouter au bouton, à l'exception de ajax
qui est placé sur le formulaire.
Message de confirmation à ajouter en javascript sur le bouton
Code HTML du lien
Explose un texte en tableau suivant un séparateur
filtre_explode_dist(string $a, string $b) : array<string|int, mixed>
texte
Séparateur
Liste des éléments
Implose un tableau en chaine en liant avec un séparateur
filtre_implode_dist(array<string|int, mixed> $a, string $b) : string
Tableau
Séparateur
texte
Produire les styles privés qui associent item de menu avec icone en background
bando_images_background() : string
Code CSS
Générer un bouton_action utilisé par #BOUTON_ACTION
bouton_action(string $libelle, string $url[, string $class = '' ][, string $confirm = '' ][, string $title = '' ][, string $callback = '' ]) : string
Libellé du bouton
URL d'action sécurisée, généralement obtenue avec generer_action_auteur()
Classes à ajouter au bouton, à l'exception de ajax
qui est placé sur le formulaire.
Message de confirmation oui/non avant l'action
Attribut title à ajouter au bouton
Callback js a appeler lors de l'évènement action et avant execution de l'action (ou après confirmation éventuelle si $confirm est non vide). Si la callback renvoie false, elle annule le déclenchement de l'action.
Donner n'importe quelle information sur un objet de maniere generique.
generer_objet_info(int|string|null $id_objet, string $type_objet, string $info[, string $etoile = '' ][, array<string|int, mixed> $params = [] ]) : string
La fonction va gerer en interne deux cas particuliers les plus utilises : l'URL et le titre (qui n'est pas forcemment le champ SQL "titre").
On peut ensuite personnaliser les autres infos en creant une fonction generer_objet_<nom_info>($id_objet, $type_objet, $ligne). $ligne correspond a la ligne SQL de tous les champs de l'objet, les fonctions de personnalisation n'ont donc pas a refaire de requete.
Tableau de paramètres supplémentaires transmis aux fonctions generer_xxx
Fonction privée pour donner l'introduction d'un objet de manière générique.
generer_objet_introduction(int $id_objet, string $type_objet, array<string|int, mixed> $ligne_sql[, int $introduction_longueur = null ][, int|string $longueur_ou_suite = null ][, string $suite = null ][, string $connect = '' ]) : string
Cette fonction est mutualisée entre les balises #INTRODUCTION et #INFO_INTRODUCTION. Elle se charge de faire le tri entre descriptif, texte et chapo, et normalise les paramètres pour la longueur et la suite. Ensuite elle fait appel au filtre 'introduction' qui construit celle-ci à partir de ces données.
Numéro de l'objet
Type d'objet
Ligne SQL de l'objet avec au moins descriptif, texte et chapo
Longueur de l'introduction donnée dans la description de la table l'objet
Longueur de l'introduction OU points de suite si on coupe
Points de suite si on coupe
Nom du connecteur à la base de données
Appliquer a un champ SQL le traitement qui est configure pour la balise homonyme dans les squelettes
appliquer_traitement_champ(string $texte, string $champ[, string $table_objet = '' ][, array<string|int, mixed> $env = [] ][, string $connect = '' ]) : string
Generer un lien (titre clicable vers url) vers un objet
generer_objet_lien(int $id_objet, string $objet[, int $longueur = 80 ][, null|string $connect = '' ]) : string
Englobe (Wrap) un texte avec des balises
wrap(string $texte, string $wrap) : string
afficher proprement n'importe quoi On affiche in fine un pseudo-yaml qui premet de lire humainement les tableaux et de s'y reperer
filtre_print_dist(mixed $u[, string $join = '<br>' ][, int $indent = 0 ]) : array<string|int, mixed>|mixed|string
Les textes sont retournes avec simplement mise en forme typo
le $join sert a separer les items d'un tableau, c'est en general un \n ou
selon si on fait du html ou du texte
les tableaux-listes (qui n'ont que des cles numeriques), sont affiches sous forme de liste separee par des virgules :
c'est VOULU !
Renvoyer l'info d'un objet telles que definies dans declarer_tables_objets_sql
objet_info(string $objet, string $info) : string|array<string|int, mixed>
Filtre pour afficher 'Aucun truc' ou '1 truc' ou 'N trucs' avec la bonne chaîne de langue en fonction de l'objet utilisé
objet_afficher_nb(int $nb, string $objet) : mixed|string
Nombre d'éléments
Objet
texte traduit du comptage, tel que '3 articles'
Filtre pour afficher l'img icone d'un objet
objet_icone(string $objet[, int $taille = 24 ][, string $class = '' ]) : string
Renvoyer une traduction d'une chaine de langue contextuelle à un objet si elle existe, la traduction de la chaine generique
objet_T(string $objet, string $chaine[, array<string|int, mixed> $args = [] ][, array<string|int, mixed> $options = [] ]) : string
Ex : [(#ENV{objet}|objet_label{trad_reference})] va chercher si une chaine objet:trad_reference existe et renvoyer sa trad le cas echeant sinon renvoie la trad de la chaine trad_reference Si la chaine fournie contient un prefixe il est remplacé par celui de l'objet pour chercher la chaine contextuelle
Les arguments $args et $options sont ceux de la fonction _T
Fonction de secours pour inserer le head_css de facon conditionnelle
insert_head_css_conditionnel(string $flux) : string
Appelée en filtre sur le squelette qui contient #INSERT_HEAD, elle vérifie l'absence éventuelle de #INSERT_HEAD_CSS et y suplée si besoin pour assurer la compat avec les squelettes qui n'utilisent pas.
Code HTML
Code HTML
Produire un fichier statique à partir d'un squelette dynamique
produire_fond_statique(string $fond[, array<string|int, mixed> $contexte = [] ][, array<string|int, mixed> $options = [] ][, string $connect = '' ]) : string
Permet ensuite à Apache de le servir en statique sans repasser par spip.php à chaque hit sur le fichier.
Formats supportés : html, css, js, json, xml, svg
Si le format est passé dans contexte['format']
, on l'utilise
sinon on regarde l'extension du fond, sinon on utilise "html"
Ajouter un timestamp a une url de fichier [(#CHEMIN{monfichier}|timestamp)]
timestamp(string $fichier) : string
Le chemin du fichier sur lequel on souhaite ajouter le timestamp
$fichier auquel on a ajouté le timestamp
Supprimer le timestamp d'une url
supprimer_timestamp(string $url) : string
Nettoyer le titre d'un email
filtre_nettoyer_titre_email_dist(string $titre) : string
Éviter une erreur lorsqu'on utilise |nettoyer_titre_email
dans un squelette de mail
Afficher le sélecteur de rubrique
filtre_chercher_rubrique_dist(string $titre, int $id_objet, int $id_parent, string $objet, int $id_secteur, bool $restreint[, bool $actionable = false ][, bool $retour_sans_cadre = false ]) : string
Il permet de placer un objet dans la hiérarchie des rubriques de SPIP
true : fournit le selecteur dans un form directement postable
Rediriger une page suivant une autorisation, et ce, n'importe où dans un squelette, même dans les inclusions.
sinon_interdire_acces([bool $ok = false ][, string $url = '' ][, int $statut = 0 ][, string $message = null ]) : string|void
En l'absence de redirection indiquée, la fonction redirige par défaut sur une 403 dans l'espace privé et 404 dans l'espace public.
Indique si l'on doit rediriger ou pas
Adresse eventuelle vers laquelle rediriger
Statut HTML avec lequel on redirigera
message d'erreur
Chaîne vide si l'accès est autorisé
Assurer le fonctionnement de |compacte meme sans l'extension compresseur
filtre_compacte_dist(string $source[, null|string $format = null ]) : string
Afficher partiellement un mot de passe que l'on ne veut pas rendre lisible par un champ hidden
spip_affiche_mot_de_passe_masque(string|null $passe[, bool $afficher_partiellement = false ][, int|null $portion_pourcent = null ]) : string
Cette fonction permet de transformer un texte clair en nom court pouvant servir d'identifiant, class, id, url... en ne conservant que des caracteres alphanumeriques et un separateur
identifiant_slug(string $texte[, string $type = '' ][, array<string|int, mixed> $options = [] ]) : string
texte à transformer en nom machine
string separateur : par défaut, un underscore _
.
int longueur_maxi : par defaut 60
int longueur_mini : par defaut 0
Prépare un texte pour un affichage en label ou titre
label_nettoyer(string $text[, bool $ucfirst = true ]) : string
Enlève un ':' à la fin d'une chaine de caractère, ainsi que les espaces qui pourraient l'accompagner, Met la première lettre en majuscule (par défaut)
Utile afficher dans un contexte de titre des chaines de langues qui contiennent des ':'
Prépare un texte pour un affichage en label ou titre en ligne, systématiquement avec ' :' à la fin
label_ponctuer(string $text[, bool $ucfirst = true ]) : string
Ajoute ' :' aux chaines qui n'en ont pas (ajoute le caractère adapté à la langue utilisée). Passe la première lettre en majuscule par défaut.
Helper pour les filtres associés aux fonctions objet_lister_(parents|enfants)(_par_type)?
helper_filtre_objet_lister_enfants_ou_parents(string $objet, int|string $id_objet, mixed $fonction) : array<string|int, mixed>
Cherche les contenus parents d'un objet Supporte l'ecriture inverseee sous la forme [(#ID_OBJET|objet_lister_parents{#OBJET})]
filtre_objet_lister_parents_dist(string $objet, int|string $id_objet) : array<string|int, mixed>
Cherche les contenus parents d'un objet Supporte l'ecriture inverseee sous la forme [(#ID_OBJET|objet_lister_parents_par_type{#OBJET})]
filtre_objet_lister_parents_par_type_dist(string $objet, int|string $id_objet) : array<string|int, mixed>
Cherche les contenus enfants d'un objet Supporte l'ecriture inverseee sous la forme [(#ID_OBJET|objet_lister_enfants{#OBJET})]
filtre_objet_lister_enfants_dist(string $objet, int|string $id_objet) : array<string|int, mixed>
Cherche les contenus enfants d'un objet Supporte l'ecriture inverseee sous la forme [(#ID_OBJET|objet_lister_enfants_par_type{#OBJET})]
filtre_objet_lister_enfants_par_type_dist(string $objet, int|string $id_objet) : array<string|int, mixed>
Filtre `propre()` pour les squelettes
filtre_propre_dist(mixed &$Pile, mixed $texte) : mixed
Permet d'envoyer l’environnement au filtre propre Dans l'espace privé il faut
Compile la balise `#ALERTE_MESSAGE` produisant le HTML d'un message d'alerte complet.
balise_ALERTE_MESSAGE_dist(Champ $p) : Champ
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#ALERTE_OUVRIR` produisant le HTML ouvrant d'un message d’alerte
balise_ALERTE_OUVRIR_dist(Champ $p) : Champ
Doit être suivie du texte de l'alerte, puis de la balise #ALERTE_FERMER
.
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#ALERTE_FERMER` produisant le HTML clôturant un message d’alerte
balise_ALERTE_FERMER_dist(Champ $p) : Champ
Doit être précédée du texte de l'alerte et de la balise #ALERTE_OUVRIR
.
Pile au niveau de la balise
Pile complétée par le code à générer
Générer un message d’alerte
message_alerte(string $texte[, string $titre = null ][, string $class = null ][, string $role = null ][, string $id = null ]) : string
Peut-être surchargé par filtre_message_alerte_dist
ou filtre_message_alerte
Contenu de l'alerte
Titre de l'alerte : texte simple,
Classes CSS ajoutées au conteneur
Doit contenir le type : notice
, error
, success
, info
Défaut = notice
(sauf en cas de chaîne vide)
Attribut role ajouté au conteneur : alert
ou status
, selon l'importance
Défaut = alert
(sauf en cas de chaîne vide)
Identifiant HTML du conteneur
HTML de l'alerte
Ouvrir un message d’alerte
message_alerte_ouvrir([string $titre = null ][, string $class = null ][, string $role = null ][, string $id = null ]) : string
Peut-être surchargé par filtre_message_alerte_ouvrir_dist
ou filtre_message_alerte_ouvrir
Titre de l'alerte : texte simple,
Classes CSS ajoutées au conteneur
Doit contenir le type : notice
, error
, success
, info
Défaut = notice
(sauf en cas de chaîne vide)
Attribut role ajouté au conteneur : alert
ou status
, selon l'importance
Défaut = alert
(sauf en cas de chaîne vide)
Identifiant HTML du conteneur
HTML d'ouverture de l'alerte
Fermer un message d’alerte
message_alerte_fermer() : string
Peut-être surchargé par filtre_message_alerte_fermer_dist
ou filtre_message_alerte_fermer
HTML de fin de l'alerte
Compile la balise `#BOITE_OUVRIR` ouvrant une boîte de contenu
balise_BOITE_OUVRIR_dist(Champ $p) : Champ
Racourci pour ouvrir une boîte (info, simple, pour noisette ...)
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#BOITE_PIED` cloturant une boîte de contenu
balise_BOITE_PIED_dist(Champ $p) : Champ
Racourci pour passer au pied de la boite, avant sa fermeture. On peut
lui transmettre une classe CSS avec #BOITE_PIED{class}
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#BOITE_FERMER` clôturant une boîte de contenu
balise_BOITE_FERMER_dist(Champ $p) : Champ
Racourci pour fermer une boîte ouverte
Pile au niveau de la balise
Pile complétée par le code à générer
Ouvrir une boîte
boite_ouvrir(string $titre[, string $class = '' ][, string $head_class = '' ][, string $id = '' ]) : string
Peut-être surchargé par filtre_boite_ouvrir_dist
ou filtre_boite_ouvrir
Titre de la boîte
Classes CSS de la boîte
Classes CSS sur l'entête
Identifiant HTML de la boîte
HTML du début de la boîte
Passer au pied d'une boîte
boite_pied([string $class = 'act' ]) : string
Peut-être surchargé par filtre_boite_pied_dist
ou filtre_boite_pied
Classes CSS de la boîte
HTML de transition vers le pied de la boîte
Fermer une boîte
boite_fermer() : string
Peut-être surchargé par filtre_boite_fermer_dist
ou filtre_boite_fermer
HTML de fin de la boîte
Normaliser une date vers le format datetime (Y-m-d H:i:s)
normaliser_date(string $date[, bool $forcer_jour = false ]) : string
La date à normaliser
true pour forcer à indiquer un jour et mois (01) s'il n'y en a pas.
Enlève une date considérée comme vide
vider_date(string $letexte[, bool $verif_format_date = false ]) : string
Retrouve à partir d'une chaîne les valeurs heures, minutes, secondes.
recup_heure(string $date) : array<string|int, mixed>
Les formats 11:29:55
ou 11:29
sont autorisés.
Chaîne de date contenant éventuellement un horaire
Retourne l'heure d'une date
heures(string $numdate) : string
La date à extraire
heures, sinon 0
Retourne les minutes d'une date
minutes(string $numdate) : string
La date à extraire
minutes, sinon 0
Retourne les secondes d'une date
secondes(string $numdate) : string
La date à extraire
secondes, sinon 0
Retourne l'horaire (avec minutes) d'une date, tel que `12h36min`
heures_minutes(string $numdate[, string $forme = '' ]) : string
La date à extraire
.
L'heure formatée dans la langue en cours.
Retrouve à partir d'une date les valeurs année, mois, jour, heures, minutes, secondes
recup_date(string $numdate[, bool $forcer_jour = true ]) : array<string|int, mixed>
Annee, mois, jour sont retrouvés si la date contient par exemple :
Dans ces cas, les heures, minutes, secondes sont retrouvés avec recup_heure()
Annee, mois, jour, heures, minutes, secondes sont retrouvés si la date contient par exemple :
La date à extraire
True pour tout le temps renseigner un jour ou un mois (le 1) s'il ne sont pas indiqués dans la date.
[année, mois, jour, heures, minutes, secondes] ou []
Retourne une date relative si elle est récente, sinon une date complète
date_interface(string $date[, int $decalage_maxi = 43200 ]) : string
En fonction de la date transmise, peut retourner par exemple :
La date fournie
Durée écoulée, en secondes, à partir de laquelle on bascule sur une date complète. Par défaut +/- 12h.
La date relative ou complète
Retourne une date relative (passée ou à venir)
date_relative(string $date[, int $decalage_maxi = 0 ][, string $ref_date = null ]) : string
En fonction de la date transmise ainsi que de la date de référence (par défaut la date actuelle), peut retourner par exemple :
La date fournie
Durée écoulée, en secondes, au delà de laquelle on ne retourne pas de date relative
Indiquer 0
(par défaut) pour ignorer.
La date de référence pour le calcul relatif, par défaut la date actuelle
Retourne une date relative courte (passée ou à venir)
date_relativecourt(string $date[, int $decalage_maxi = 0 ]) : string
Retourne «hier», «aujourd'hui» ou «demain» si la date correspond, sinon
utilise date_relative()
La date fournie
Durée écoulée, en secondes, au delà de laquelle on ne retourne pas de date relative
Indiquer 0
(par défaut) pour ignorer.
Formatage humain de la date `$numdate` selon le format `$vue`
affdate_base(string $numdate, string $vue[, array<string|int, mixed> $options = [] ]) : string
Une écriture de date
Type de format souhaité ou expression pour strtotime()
tel que Y-m-d h:i:s
{param: string, annee_courante: int}
Affiche le nom du jour pour une date donnée
nom_jour(string $numdate[, string $forme = '' ]) : string
Une écriture de date
Forme spécifique de retour :
Nom du jour
Affiche le numéro du jour (1er à 31) pour une date donnée
jour(string $numdate) : string
Utilise une abbréviation (exemple "1er") pour certains jours, en fonction de la langue utilisée.
Une écriture de date
Numéro du jour
Affiche le numéro du jour (1 à 31) pour une date donnée
journum(string $numdate) : string
Une écriture de date
Numéro du jour
Affiche le numéro du mois (01 à 12) pour une date donnée
mois(string $numdate) : string
Une écriture de date
Numéro du mois (sur 2 chiffres)
Affiche le nom du mois pour une date donnée
nom_mois(string $numdate[, string $forme = '' ]) : string
Une écriture de date
Forme spécifique de retour :
Nom du mois
Affiche l'année sur 4 chiffres d'une date donnée
annee(string $numdate) : string
Une écriture de date
Année (sur 4 chiffres)
Affiche le nom boréal ou austral de la saison
saison(string $numdate[, string $hemisphere = 'nord' ]) : string
Une écriture de date
Nom optionnel de l'hémisphère (sud ou nord) ; par défaut nord
La date formatée
Affiche le nom boréal ou austral de la saison suivi de l'année en cours
saison_annee(string $numdate[, string $hemisphere = 'nord' ]) : string
Une écriture de date
Nom optionnel de l'hémisphère (sud ou nord) ; par défaut nord
La date formatée
Formate une date
affdate(string $numdate[, string $format = 'entier' ]) : string
Une écriture de date
Type de format souhaité ou expression pour strtotime()
tel que Y-m-d h:i:s
La date formatée
Formate une date, omet l'année si année courante, sinon omet le jour
affdate_court(string $numdate[, int|null $annee_courante = null ]) : string
Si l'année actuelle (ou indiquée dans $annee_courante
) est 2015,
retournera "21 juin" si la date en entrée est le 21 juin 2015,
mais retournera "juin 2013" si la date en entrée est le 21 juin 2013.
Une écriture de date
L'année de comparaison, utilisera l'année en cours si omis.
La date formatée
Formate une date, omet l'année si année courante
affdate_jourcourt(string $numdate[, int|null $annee_courante = null ]) : string
Si l'année actuelle (ou indiquée dans $annee_courante
) est 2015,
retournera "21 juin" si la date en entrée est le 21 juin 2015,
mais retournera "21 juin 2013" si la date en entrée est le 21 juin 2013.
Une écriture de date
L'année de comparaison, utilisera l'année en cours si omis.
La date formatée
Retourne le mois en toute lettre et l’année d'une date
affdate_mois_annee(string $numdate) : string
Ne retourne pas le jour donc.
Une écriture de date
La date formatée
Retourne la date suivie de l'heure
affdate_heure(string $numdate) : string
Une écriture de date
La date formatée, sinon ''
Afficher de facon textuelle les dates de début et fin en fonction des cas
affdate_debut_fin(string $date_debut, string $date_fin[, string $horaire = 'oui' ][, string $forme = '' ]) : string
$horaire='oui'
ou true
permet d'afficher l'horaire,
toute autre valeur n'indique que le jour
$forme
peut contenir une ou plusieurs valeurs parmi
abbr
(afficher le nom des jours en abrege)hcal
(generer une date au format hcal)jour
(forcer l'affichage des jours)annee
(forcer l'affichage de l'annee)abbr
pour afficher le nom du jour en abrege (Dim. au lieu de Dimanche)annee
pour forcer l'affichage de l'annee courantejour
pour forcer l'affichage du nom du jourhcal
pour avoir un markup microformat abbrtexte de la date
Adapte une date pour être insérée dans une valeur de date d'un export ICAL
date_ical(string $date[, int $addminutes = 0 ]) : string
Retourne une date au format Ymd\THis\Z
, tel que '20150428T163254Z'
La date
Ajouter autant de minutes à la date
Date au format ical
Retourne une date formattée au format "RFC 3339" ou "ISO 8601"
date_iso(string $date_heure) : string
Une écriture de date
La date formatée
Retourne une date formattée au format "RFC 822"
date_822(string $date_heure) : string
Utilisé pour <pubdate>
dans certains flux RSS
Une écriture de date
La date formatée
Pour une date commençant par `Y-m-d`, retourne `Ymd`
date_anneemoisjour(string $d) : string
Une écriture de date commençant par un format Y-m-d
(comme date ou datetime SQL).
Si vide, utilise la date actuelle.
Date au format Ymd
Pour une date commençant par `Y-m`, retourne `Ym`
date_anneemois(string $d) : string
Une écriture de date commençant par un format Y-m
(comme date ou datetime SQL).
Si vide, utilise la date actuelle.
Date au format Ym
Retourne le premier jour (lundi) de la même semaine au format `Ymd`
date_debut_semaine(int $annee, int $mois, int $jour) : string
Date au lundi de la même semaine au format Ymd
Retourne le dernier jour (dimanche) de la même semaine au format `Ymd`
date_fin_semaine(int $annee, int $mois, int $jour) : string
Date au dimanche de la même semaine au format Ymd
Retourne les paramètres de personnalisation css de l'espace privé
parametres_css_prive() : string
Ces paramètres sont (ltr et couleurs) ce qui permet une écriture comme : generer_url_public('style_prive', parametres_css_prive()) qu'il est alors possible de récuperer dans le squelette style_prive.html avec
#SET{claire,##ENV{couleur_claire,edf3fe}} #SET{foncee,##ENV{couleur_foncee,3874b0}} #SET{left,#ENV{ltr}|choixsiegal{left,left,right}} #SET{right,#ENV{ltr}|choixsiegal{left,right,left}}
Afficher le sélecteur de rubrique
chercher_rubrique(string $titre, int $id_objet, int $id_parent, string $objet, int $id_secteur, bool $restreint[, bool $actionable = false ][, bool $retour_sans_cadre = false ]) : string
Il permet de placer un objet dans la hiérarchie des rubriques de SPIP
true : fournit le selecteur dans un form directement postable
Tester si le site peut avoir des visiteurs
avoir_visiteurs([bool $past = false ][, bool $accepter = true ]) : bool
si true, prendre en compte le fait que le site a deja des visiteurs comme le droit d'en avoir de nouveaux
Lister les status d'article visibles dans l'espace prive en fonction du statut de l'auteur
statuts_articles_visibles(string $statut_auteur) : array<string|int, mixed>
Pour l'extensibilie de SPIP, on se repose sur autoriser('voir','article') en testant un à un les status présents en base
On mémorise en static pour éviter de refaire plusieurs fois.
Traduire le statut technique de l'auteur en langage compréhensible
traduire_statut_auteur(string $statut[, string $attente = '' ]) : string
Si $statut=='nouveau' et que le statut en attente est fourni, le prendre en compte en affichant que l'auteur est en attente
Afficher la mention des autres auteurs ayant modifié un objet
afficher_qui_edite(int $id_objet, string $objet) : string
Lister les statuts des auteurs
auteurs_lister_statuts([string $quoi = 'tous' ][, bool $en_base = true ]) : array<string|int, mixed>
si true, ne retourne strictement que les status existants en base dans tous les cas, les statuts existants en base sont inclus
Déterminer la rubrique pour la création d'un objet heuristique
trouver_rubrique_creer_objet(int $id_rubrique, string $objet) : int
Rubrique courante si possible,
Identifiant de rubrique (si connu)
Objet en cours de création
Identifiant de la rubrique dans laquelle créer l'objet
Afficher le lien de redirection d'un article virtuel si il y a lieu (rien si l'article n'est pas redirige)
lien_article_virtuel(string $virtuel) : string
Filtre pour générer un lien vers un flux RSS privé
bouton_spip_rss(string $op[, array<string|int, mixed> $args = [] ][, string $lang = '' ][, string $title = 'RSS' ]) : string
Le RSS est protegé par un hash de faible sécurité
Code HTML du lien
Vérifier la présence d'alertes pour les auteur
alertes_auteur(int $id_auteur) : string
Filtre pour afficher les rubriques enfants d'une rubrique
filtre_afficher_enfant_rub_dist(int $id_rubrique) : string
Afficher un petit "i" pour lien vers autre page
afficher_plus_info(string $lien[, string $titre = '+' ][, string $titre_lien = '' ]) : string
URL du lien desire
Titre au survol de l'icone pointant le lien
Si present, ajoutera en plus apres l'icone un lien simple, vers la meme URL, avec le titre indique
Lister les id objet_source associés à l'objet id_objet via la table de lien objet_lien
lister_objets_lies(string $objet_source, string $objet, int $id_objet, string $objet_lien) : array<string|int, mixed>
Utilisé pour les listes de #FORMULAIRE_EDITER_LIENS
Transforme une couleur vectorielle R,G,B en hexa (par exemple pour usage css)
_couleur_dec_to_hex(int $red, int $green, int $blue) : string
Valeur du rouge de 0 à 255.
Valeur du vert de 0 à 255.
Valeur du bleu de 0 à 255.
Le code de la couleur en hexadécimal.
Transforme une couleur hexa en vectorielle R,G,B
_couleur_hex_to_dec(string $couleur) : array<string|int, mixed>
Code couleur en hexa (#000000 à #FFFFFF).
Un tableau des 3 éléments : rouge, vert, bleu.
Transforme une couleur vectorielle H,S,L en hexa (par exemple pour usage css)
_couleur_hsl_to_hex(int $hue, int $saturation, int $lightness) : string
Valeur de teinte de 0 à 1.
Valeur de saturation de 0 à 1.
Valeur de luminosité de 0 à 1.
Le code de la couleur en hexadécimal.
Transforme une couleur vectorielle H,S,L en hexa (par exemple pour usage css)
_couleur_hex_to_hsl(string $couleur) : array<string|int, mixed>
Code couleur en hexa (#000000 à #FFFFFF).
Un tableau des 3 éléments : teinte, saturation, luminosité.
Transformation d'une couleur RGB en HSL
_couleur_rgb_to_hsl(int $R, int $G, int $B) : array<string|int, mixed>
HSL float entre 0 et 1 RGB entiers entre 0 et 255
Transformation d'une couleur HSL en RGB
_couleur_hsl_to_rgb(float $H, float $S, float $L) : array<string|int, mixed>
HSL float entre 0 et 1 RGB entiers entre 0 et 255
Donne un statut au fichier-image intermédiaire servant au traitement d'image selon qu'il doit être gravé (fichier .src) ou pas.
statut_effacer_images_temporaires(bool|string $stat) : bool|void
Un appel PHP direct aux fonctions de filtre d'image produira ainsi une image
permanente (gravée) ; un appel généré par le compilateur via
filtrer('image_xx, ...)
effacera automatiquement le fichier-image temporaire.
true si il faut supprimer le fichier temporaire ; false sinon.
Fonctions de preparation aux filtres de traitement d'image les fonctions de lecture et d'ecriture renseignees traitent uniquement le cas GD2 qui est le cas general des filtres images
_image_valeurs_trans(string $img, string $effet[, bool|string $forcer_format = false ][, array<string|int, mixed> $fonction_creation = null ][, bool $find_in_path = false ][, bool $support_svg = false ]) : bool|string|array<string|int, mixed>
mais image_reduire utilise aussi cette fonction en adaptant le traitement en fonction de la librairie graphique choisie dans la configuration de SPIP
Chemin de l'image ou balise html <img src=...>
.
Les nom et paramètres de l'effet à apporter sur l'image (par exemple : reduire-300-200).
Un nom d'extension spécifique demandé (par exemple : jpg, png, txt...). Par défaut false : GD se débrouille seule).
Un tableau à 2 éléments :
image_reduire
) ;$img
et chacun des arguments passés au filtre utilisé.false (par défaut) indique que l'on travaille sur un fichier temporaire (.src) ; true, sur un fichier définitif déjà existant.
false (par defaut) indique que le filtre ne sait pas traiter le cas particulier du SVG on lui substitue un filtre generique qui ne fait rien pour ne pas briser la chaine des filtres images true si le filtre appelant sait traiter les SVG
<img
,
_imagecreatefrom{extension}
n'existe pas ;Extensions d’images acceptées en tant que logos
_image_extensions_logos([array{objet?: string, id_objet?: int} $args = [] ]) : array<string|int, mixed>
Arguments transmis au pipeline. Tableau contenant des informations sur le contexte d'appel.
Extensions d’images acceptées en entrée
_image_extensions_acceptees_en_entree() : array<string|int, mixed>
Extensions d’images acceptées en sortie
_image_extensions_acceptees_en_sortie() : array<string|int, mixed>
_image_extension_normalisee(mixed $extension) : mixed
_image_extensions_conservent_transparence() : mixed
Retourne la terminaison d’un fichier image
_image_trouver_extension(string $path) : string
Tente de trouver le véritable type d’une image, même si une image est d’extension .jpg alors que son contenu est autre chose (gif ou png)
_image_trouver_extension_pertinente(string $path) : string
Extension, dans le format attendu par les fonctions 'gd' ('jpeg' pour les .jpg par exemple)
Retourne une extension d’image depuis un mime-type
_image_trouver_extension_depuis_mime(string $mime) : string
Crée une image depuis un fichier ou une URL (en indiquant la fonction GD à utiliser)
_imagecreatefrom_func(string $func, string $filename) : resource|null
Utilise les fonctions spécifiques GD.
Fonction GD à utiliser tel que 'imagecreatefromjpeg'
Le path vers l'image à traiter (par exemple : IMG/distant/jpg/image.jpg ou local/cache-vignettes/L180xH51/image.jpg).
Une ressource de type Image GD.
Crée une image depuis un fichier ou une URL (au format jpeg)
_imagecreatefromjpeg(string $filename) : resource|null
Utilise les fonctions spécifiques GD.
Le path vers l'image à traiter (par exemple : IMG/distant/jpg/image.jpg ou local/cache-vignettes/L180xH51/image.jpg).
Une ressource de type Image GD.
Crée une image depuis un fichier ou une URL (au format png)
_imagecreatefrompng(string $filename) : resource|null
Utilise les fonctions spécifiques GD.
Le path vers l'image à traiter (par exemple : IMG/distant/png/image.png ou local/cache-vignettes/L180xH51/image.png).
Une ressource de type Image GD.
Crée une image depuis un fichier ou une URL (au format gif)
_imagecreatefromgif(string $filename) : resource|null
Utilise les fonctions spécifiques GD.
Le path vers l'image à traiter (par exemple : IMG/distant/gif/image.gif ou local/cache-vignettes/L180xH51/image.gif).
Une ressource de type Image GD.
Crée une image depuis un fichier ou une URL (au format webp)
_imagecreatefromwebp(string $filename) : resource|null
Utilise les fonctions spécifiques GD.
Le path vers l'image à traiter (par exemple : IMG/distant/png/image.webp ou local/cache-vignettes/L180xH51/image.webp).
Une ressource de type Image GD.
Affiche ou sauvegarde une image au format PNG
_image_imagepng(resource $img, string $fichier) : bool