_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
Utilise les fonctions spécifiques GD.
Une ressource de type Image GD.
Le path vers l'image (ex : local/cache-vignettes/L180xH51/image.png).
Affiche ou sauvegarde une image au format GIF
_image_imagegif(resource $img, string $fichier) : bool
Utilise les fonctions spécifiques GD.
Une ressource de type Image GD.
Le path vers l'image (ex : local/cache-vignettes/L180xH51/image.gif).
Affiche ou sauvegarde une image au format JPG
_image_imagejpg(resource $img, string $fichier[, int $qualite = _IMG_GD_QUALITE ]) : bool
Utilise les fonctions spécifiques GD.
Une ressource de type Image GD.
Le path vers l'image (ex : local/cache-vignettes/L180xH51/image.jpg).
Le niveau de qualité du fichier résultant : de 0 (pire qualité, petit fichier) à 100 (meilleure qualité, gros fichier). Par défaut, prend la valeur (85) de la constante _IMG_GD_QUALITE (modifiable depuis mes_options.php).
Crée un fichier-image au format ICO
_image_imageico(resource $img, string $fichier) : bool
Utilise les fonctions de la classe phpthumb_functions.
Une ressource de type Image GD.
Le path vers l'image (ex : local/cache-vignettes/L180xH51/image.jpg).
true si le fichier a bien été créé ; false sinon.
Affiche ou sauvegarde une image au format WEBP
_image_imagewebp(resource $img, string $fichier[, mixed $qualite = _IMG_GD_QUALITE ]) : bool
Utilise les fonctions spécifiques GD.
Une ressource de type Image GD.
Le path vers l'image (ex : local/cache-vignettes/L180xH51/image.webp).
Sauvegarde une image au format SVG
_image_imagesvg(string $img, string $fichier) : bool
contenu du SVG ou chemin vers le SVG source (et c'est alors une copie)
Le path vers l'image (ex : local/cache-vignettes/L180xH51/image.png).
Finalise le traitement GD
_image_gd_output(resource|string $img, array<string|int, mixed> $valeurs[, int $qualite = _IMG_GD_QUALITE ][, mixed $fonction = null ]) : bool
Crée un fichier_image temporaire .src ou vérifie que le fichier_image définitif a bien été créé.
Une ressource de type Image GD (ou une string pour un SVG)
Un tableau des informations (tailles, traitement, path...) accompagnant l'image.
N'est utilisé que pour les images jpg. Le niveau de qualité du fichier résultant : de 0 (pire qualité, petit fichier) à 100 (meilleure qualité, gros fichier). Par défaut, prend la valeur (85) de la constante _IMG_GD_QUALITE (modifiable depuis mes_options.php).
Reconstruit une image à partir des sources de contrôle de son ancienne construction
reconstruire_image_intermediaire(string $fichier_manquant) : mixed
Chemin vers le fichier manquant
Indique qu'un fichier d'image calculé est à conserver
ramasse_miettes(string $fichier) : mixed
Permet de rendre une image définitive et de supprimer les images intermédiaires à son calcul.
Supprime le fichier de contrôle de l’image cible (le $fichier.src) ce qui indique que l'image est définitive.
Remonte ensuite la chaîne des fichiers de contrôle pour supprimer les images temporaires (mais laisse les fichiers de contrôle permettant de les reconstruire).
Chemin du fichier d'image calculé
Clôture une série de filtres d'images
image_graver(string $img) : string
Ce filtre est automatiquement appelé à la fin d'une série de filtres d'images dans un squelette.
Code HTML de l'image
Code HTML de l'image
Applique des attributs de taille (width, height) à une balise HTML
_image_tag_changer_taille(string $tag, int $width, int $height[, bool|string $style = false ]) : string
Utilisé avec des balises <img>
tout particulièrement.
Modifie l'attribut style s'il était renseigné, en enlevant les informations éventuelles width / height dedans.
Code html de la balise
Hauteur
Largeur
Attribut html style à appliquer. False extrait celui présent dans la balise
Code html modifié de la balise.
Écriture de la balise img en sortie de filtre image
_image_ecrire_tag(array<string|int, mixed> $valeurs[, array<string|int, mixed> $surcharge = [] ]) : string
Reprend le tag initial et surcharge les attributs modifiés
Description de l'image tel que retourné par _image_valeurs_trans()
Permet de surcharger certaines descriptions présentes dans $valeurs
tel que 'style', 'width', 'height'
Retourne le code HTML de l'image
Crée si possible une miniature d'une image
_image_creer_vignette(array<string|int, mixed> $valeurs, int $maxWidth, int $maxHeight[, string $process = 'AUTO' ][, bool $force = false ]) : array<string|int, mixed>|null
Description de l'image, telle que retournée par _image_valeurs_trans()
Largeur maximum en px de la miniature à réaliser
Hauteur maximum en px de la miniateure à réaliser
Librairie graphique à utiliser (gd2, ou autre fournie par plugin). AUTO utilise la librairie sélectionnée dans la configuration.
Description de l'image, sinon null.
Réduire des dimensions en respectant un ratio
_image_ratio(int $srcWidth, int $srcHeight, int $maxWidth, int $maxHeight) : array<string|int, mixed>
Réduit des dimensions (hauteur, largeur) pour qu'elles soient incluses dans une hauteur et largeur maximum fournies en respectant la proportion d'origine
Largeur de l'image source
Hauteur de l'image source
Largeur maximum souhaitée
Hauteur maximum souhaitée
Liste [ largeur, hauteur, ratio de réduction ]
Réduire des dimensions en respectant un ratio sur la plus petite dimension
ratio_passe_partout(int $srcWidth, int $srcHeight, int $maxWidth, int $maxHeight) : array<string|int, mixed>
Réduit des dimensions (hauteur, largeur) pour qu'elles soient incluses dans la plus grande hauteur ou largeur maximum fournie en respectant la proportion d'origine
Largeur de l'image source
Hauteur de l'image source
Largeur maximum souhaitée
Hauteur maximum souhaitée
Liste [ largeur, hauteur, ratio de réduction ]
Fonction identite de traitement par defaut des images SVG (quand un filtre n'annonce pas qu'il sait traiter un SVG on applique cette fonction a la place)
process_image_svg_identite(array<string|int, mixed> $image) : string
tableau des valeurs crees par _image_valeurs_trans
Réduit une image
process_image_reduire(array<string|int, mixed> $fonction, string $img, int $taille, int $taille_y, bool $force[, string $process = 'AUTO' ]) : string
Un tableau à 2 éléments :
image_reduire
) ;$img
et chacun des arguments passés au filtre utilisé.Chemin de l'image ou texte contenant une balise img
Largeur désirée
Hauteur désirée
Librairie graphique à utiliser (gd2 ou autre fournie par plugin). AUTO utilise la librairie sélectionnée dans la configuration.
Code HTML de la balise img produite
Transforme un code couleur textuel (black, white, green...) et code hexadécimal
couleur_html_to_hex(string $couleur) : string
Le code couleur textuel
Le code hexadécimal de la couleur (sans le #) ou le code couleur textuel si non trouvé
Retourne une couleur hsl a partir d'une couleur hex
couleur_hex_to_hsl(string $couleur[, string|null $format = null ]) : string
Si précisé, remplace h, s ou l par sa valeur dans la chaine passée.
Couleur tel que "hsl(200, 40%, 34%)" ou valeur formattée
Retourne une couleur rgb a partir d'une couleur hex
couleur_hex_to_rgb(string $couleur[, string|null $format = null ]) : string
Si précisé, remplace r, g ou b par sa valeur dans la chaine passée.
Couleur tel que "rgb(200, 40, 84)" ou valeur formattée
Rend une couleur (code hexadécimal) plus foncée
couleur_foncer(string $couleur[, float $coeff = 0.5 ]) : string
Code hexadécimal d'une couleur
Coefficient (de 0 à 1)
Code hexadécimal de la couleur plus foncée
Eclaircit une couleur (code hexadécimal)
couleur_eclaircir(string $couleur[, float $coeff = 0.5 ]) : string
Code hexadécimal d'une couleur
Coefficient (de 0 à 1)
Code hexadécimal de la couleur éclaircie
Selectionne les images qui vont subir une transformation sur un critere de taille
image_select(string $img[, int $width_min = 0 ][, int $height_min = 0 ][, int $width_max = 10000 ][, int $height_max = 1000 ]) : Le
Les images exclues sont marquees d'une class filtre_inactif qui bloque les filtres suivants dans la fonction image_filtrer
Un tag html <img src=...>
.
Largeur minimale de l'image à traiter (0 par défaut)
Hauteur minimale de l'image à traiter (0 par défaut)
Largeur minimale de l'image à traiter (10000 par défaut)
Hauteur minimale de l'image à traiter (10000 par défaut)
tag html <img src=...>
avec une class filtre_inactif
ou pas
Réduit les images à une taille maximale (chevauchant un rectangle)
image_passe_partout(string $img[, int $taille_x = -1 ][, int $taille_y = -1 ][, bool $force = false ][, bool $cherche_image = false ][, string $process = 'AUTO' ]) : string
L'image possède un côté réduit dans les dimensions indiquées et l'autre côté (hauteur ou largeur) de l'image peut être plus grand que les dimensions du rectangle.
Alors que image_reduire produit la plus petite image tenant dans un rectangle, image_passe_partout produit la plus grande image qui remplit ce rectangle.
Chemin de l'image ou code html d'une balise img
Inutilisé
Librairie graphique à utiliser (gd2 ou autre librairie prise en charge par plugin). AUTO utilise la librairie sélectionnée dans la configuration.
Code HTML de l'image ou du texte.
Réduit les images à une taille maximale (inscrite dans un rectangle)
image_reduire(string $img[, int $taille = -1 ][, int $taille_y = -1 ][, bool $force = false ][, bool $cherche_image = false ][, string $process = 'AUTO' ]) : string
L'image possède un côté dans les dimensions indiquées et l'autre côté (hauteur ou largeur) de l'image peut être plus petit que les dimensions du rectangle.
Peut être utilisé pour réduire toutes les images d'un texte.
Chemin de l'image ou code html d'une balise img
Inutilisé
Librairie graphique à utiliser (gd2 ou autre librairie prise en charge par plugin). AUTO utilise la librairie sélectionnée dans la configuration.
Code HTML de l'image ou du texte.
Usage espace privé: recadre une image uniquement si GD2 et image_recadre (plugin activé) existe sinon retourne le image_passe_partout usuel
image_recadre_avec_fallback(mixed $im, mixed $width[, mixed $height = '-' ][, mixed $position = 'focus' ][, mixed $background_color = 'white' ]) : mixed
Réduit les images d'un certain facteur
image_reduire_par(string $img[, int $val = 1 ][, bool $force = false ]) : string
Chemin de l'image ou code html d'une balise img
Facteur de réduction
Code HTML de l'image ou du texte.
Modifie la saturation de la couleur transmise
filtre_couleur_saturation_dist(string $couleur, float $val[, bool|string $strict = false ]) : string
Couleur en écriture hexadécimale, tel que ff3300
Pourcentage désiré (entre 0 et 1)
Si true, ne change vraiment que la saturation, sans toucher à la luminosité
Couleur en écriture hexadécimale.
Modifie la luminance de la couleur transmise
filtre_couleur_luminance_dist(string $couleur, float $val) : string
Couleur en écriture hexadécimale, tel que ff3300
Pourcentage désiré (entre 0 et 1)
Couleur en écriture hexadécimale.
Filtre d'incrustation d'un document image
filtre_image_dist(string $t) : string
Ne fait rien.
Contenu
Rien.
Filtre d'incrustation d'un document audio
filtre_audio_dist(string $t) : string
Ne fait rien.
Contenu
Rien.
Filtre d'incrustation d'un document video
filtre_video_dist(string $t) : string
Ne fait rien.
Contenu
Rien.
Filtre d'incrustation d'un document application
filtre_application_dist(string $t) : string
Ne fait rien.
Contenu
Rien.
Filtre d'incrustation d'un document message
filtre_message_dist(string $t) : string
Ne fait rien.
Contenu
Rien.
Filtre d'incrustation d'un document multipart
filtre_multipart_dist(string $t) : string
Ne fait rien.
Contenu
Rien.
Filtre d'incrustation d'un document test
filtre_text_dist(string $t) : string
Échappe les chevrons et l'esperluette.
Contenu
Contenu échappé.
Filtre d'incrustation d'un document CSV
filtre_text_csv_dist(string $t) : string
Produit un joli tableau à partir du texte CSV
texte CSV
Tableau (formaté en SPIP)
Filtre d'incrustation d'un document text/html
filtre_text_html_dist(string $t) : string
Incrustation de HTML, si on est capable de le sécuriser, sinon, afficher la source
Code html
Code html sécurisé ou texte échappé
Filtre d'incrustation d'un document RealAudio
filtre_audio_x_pn_realaudio(string $id) : string
Retourne les paramètres <param>
nécessaires à la balise <object>
Code HTML des balises <param>
Nettoyer une URL contenant des `../`
resolve_path(string $url) : string
Inspiré (de loin) par PEAR:NetURL:resolvePath
URL
URL nettoyée
Suivre un lien depuis une URL donnée vers une nouvelle URL
suivre_lien(string $url, string $lien) : string
URL de base
Lien ajouté à l'URL
URL complète.
Transforme une URL relative en URL absolue
url_absolue(string $url[, string $base = '' ]) : string
S'applique sur une balise SPIP d'URL.
URL
URL de base de destination (par défaut ce sera l'URL de notre site)
texte ou URL (en absolus)
Supprimer le protocole d'une url absolue pour le rendre implicite (URL commencant par "//")
protocole_implicite(string $url_absolue) : string
Verifier qu'une url est absolue et que son protocole est bien parmi une liste autorisee
protocole_verifier(string $url_absolue[, array<string|int, mixed> $protocoles_autorises = ['http', 'https'] ]) : bool
Transforme les URLs relatives en URLs absolues
liens_absolus(string|null $texte[, string $base = '' ]) : string
Ne s'applique qu'aux textes contenant des liens
texte
URL de base de destination (par défaut ce sera l'URL de notre site)
texte avec des URLs absolues
Transforme une URL ou des liens en URL ou liens absolus
Uses url_absolue
or liens_absolus
.
abs_url(string $texte[, string $base = '' ]) : string
texte ou URL
URL de base de destination (par défaut ce sera l'URL de notre site)
texte ou URL (en absolus)
htmlspecialchars wrapper (PHP >= 5.4 compat issue)
spip_htmlspecialchars(string $string[, int $flags = null ][, string $encoding = 'UTF-8' ][, bool $double_encode = true ]) : string
htmlentities wrapper (PHP >= 5.4 compat issue)
spip_htmlentities(string $string[, int $flags = null ][, string $encoding = 'UTF-8' ][, bool $double_encode = true ]) : string
Fournit la liste des objets ayant un sélecteur
selecteur_lister_objets([array<string|int, mixed> $includelist = [] ][, array<string|int, mixed> $excludelist = [] ]) : array<string|int, mixed>
Concrètement, va chercher tous les formulaires/selecteur/hierarchie-{trucs}.html
Ensuite on ajoute les parents obligatoires éventuels
Liste d’inclusion décrivant les objets à lister
Liste d’exclusion décrivant les objets à ne pas lister
Retourne un tableau de deux entrées listant les objets à lister et les objets sélectionnables
Extrait des informations d'un tableau d'entrées `array("rubrique|9", "article|8", ...)` ou une chaine brute `rubrique|9,article|8,...`
picker_selected(array<string|int, mixed>|string $selected[, string $type = '' ]) : array<string|int, mixed>
Peut retourner un tableau de couples (objet => id_objet) ou la liste
des identifiants d'un objet précis si $type
est fourni.
Liste des entrées : tableau ou chaine séparée par des virgules
Type de valeur à recuperer tel que rubrique
, article
liste des couples (objets => id_objet) ou liste des identifiants d'un type d'objet.
Récupère des informations sur un objet pour pouvoir l'ajouter aux éléments sélectionnés
picker_identifie_id_rapide(string|int $ref[, array<string|int, mixed>|bool $rubriques_ou_objets = false ][, bool $articles = false ]) : mixed
Référence de l'objet à chercher sous forme raccourcie rub123 art123 ou meme 123 si pas d'ambiguité ou si un article
Soit un booléen (pouvant être une chaîne vide aussi) indiquant que les rubriques sont sélectionnables soit un tableau complet des objets sélectionnables.
Booléen indiquant si les articles sont sélectionnables
Déterminer si une rubrique a des enfants à afficher ou non
test_enfants_rubrique(int $id_rubrique[, array<string|int, mixed> $types = [] ]) : string
On test d'abord si la rubrique a des sous rubriques, et sinon on regarde les autres types sélectionnables, puis on regarde si la rubrique contient certains de ces objets
Identifiant de la rubrique
Liste de type d'objets. Si l'un de ces objet est présent dans la rubrique, alors cette rubrique est à afficher
Comme le filtre oui
: espace (
) si rubrique à afficher, chaîne vide sinon.
Ouvre un fichier et le vérrouille
spip_fopen_lock(string $fichier, string $mode, int $verrou) : resource|bool
Chemin du fichier
Mode d'ouverture du fichier (r,w,...)
Type de verrou (avec _SPIP_LOCK_MODE = 1)
Ressource sur le fichier ouvert, sinon false.
Dévérrouille et ferme un fichier
spip_fclose_unlock(resource $handle) : bool
Chemin du fichier
true si succès, false sinon.
Retourne le contenu d'un fichier, même si celui ci est compréssé avec une extension en `.gz`
spip_file_get_contents(string $fichier) : string
Chemin du fichier
Contenu du fichier
Lit un fichier et place son contenu dans le paramètre transmis.
lire_fichier(string $fichier, string &$contenu[, array<string|int, mixed> $options = [] ]) : bool
Décompresse automatiquement les fichiers .gz
Chemin du fichier
Le contenu du fichier sera placé dans cette variable
Options tel que :
true si l'opération a réussie, false sinon.
Écrit un fichier de manière un peu sûre
ecrire_fichier(string $fichier, string $contenu[, bool $ignorer_echec = false ][, bool $truncate = true ]) : bool
Cette écriture s’exécute de façon sécurisée en posant un verrou sur le fichier avant sa modification. Les fichiers .gz sont compressés.
Chemin du fichier
Contenu à écrire
Écriture avec troncation ?
Écrire un contenu dans un fichier encapsulé en PHP pour en empêcher l'accès en l'absence de fichier htaccess
ecrire_fichier_securise(string $fichier, string $contenu[, bool $ecrire_quand_meme = false ][, bool $truncate = true ]) : mixed
Chemin du fichier
Contenu à écrire
Écriture avec troncation ?
ecrire_fichier_calcule_si_modifie(string $fichier, string $contenu[, bool $force = false ]) : bool|null
false en cas d'erreur true en cas d'ecriture suite à modification null si fichier inchangé car pas de modif
Lire un fichier encapsulé en PHP
lire_fichier_securise(string $fichier, string &$contenu[, array<string|int, mixed> $options = [] ]) : bool
Chemin du fichier
Le contenu du fichier sera placé dans cette variable
Options tel que :
true si l'opération a réussie, false sinon.
Affiche un message d’erreur bloquant, indiquant qu’il n’est pas possible de créer le fichier à cause des droits sur le répertoire parent au fichier.
raler_fichier(string $fichier) : never
Arrête le script PHP par un exit;
Teste si un fichier est récent (moins de n secondes)
jeune_fichier(string $fichier, int $n) : bool
Chemin du fichier
Âge testé, en secondes
Supprimer un fichier de manière sympa (flock)
supprimer_fichier(string $fichier[, bool $lock = true ]) : bool
Chemin du fichier
true pour utiliser un verrou
Supprimer brutalement un fichier ou un dossier, s'il existe
spip_unlink(string $f) : mixed
Chemin du fichier
Invalidates a PHP file from any active opcode caches.
spip_clear_opcode_cache(string $filepath) : mixed
If the opcode cache does not support the invalidation of individual files, the entire cache will be flushed. kudo : http://cgit.drupalcode.org/drupal/commit/?id=be97f50
The absolute path of the PHP file to invalidate.
Attendre l'invalidation de l'opcache
spip_attend_invalidation_opcode_cache([mixed $timestamp = null ]) : mixed
Si opcache est actif et en mode validate_timestamps
,
le timestamp du fichier ne sera vérifié qu'après une durée
en secondes fixée par revalidate_freq
.
Il faut donc attendre ce temps là pour être sûr qu'on va bien bénéficier de la recompilation du fichier par l'opcache.
Ne fait rien en dehors de ce cas
Suppression complete d'un repertoire.
supprimer_repertoire(string $dir) : bool
Chemin du repertoire
Suppression reussie.
Crée un sous répertoire
sous_repertoire(string $base[, string $subdir = '' ][, bool $nobase = false ][, bool $tantpis = false ]) : string
Retourne $base/{$subdir}/
si le sous-repertoire peut être crée
$subdir
vaut alors ce qui suit le dernier /
dans $base
true pour ne pas avoir le chemin du parent $base/
dans le retour
true pour ne pas raler en cas de non création du répertoire
Chemin du répertoire créé.
Parcourt récursivement le repertoire `$dir`, et renvoie les fichiers dont le chemin vérifie le pattern (preg) donné en argument.
preg_files(string $dir[, int|string $pattern = -1 ][, int $maxfiles = 10000 ][, array<string|int, mixed> $recurs = [] ]) : array<string|int, mixed>
En cas d'echec retourne un array()
vide
Répertoire à parcourir
Expression régulière pour trouver des fichiers, tel que [.]lock$
Nombre de fichiers maximums retournés
false pour ne pas descendre dans les sous répertoires
Chemins des fichiers trouvés.
Prévoit l'exécution de la tâche cron la plus urgente
inc_genie_dist([array<string|int, mixed> $taches = [] ]) : mixed
Les tâches sont dans un tableau 'nom de la tâche' => périodicité
Cette fonction exécute la tache la plus urgente, c'est à dire celle dont la date de dernière exécution + la périodicité est minimale.
La date de la prochaîne exécution de chaque tâche est indiquée dans la
table SQL spip_jobs
La fonction exécutant la tâche est (généralement) un homonyme de préfixe "genie_". Le fichier homonyme du repertoire "genie/" est automatiquement lu et il est supposé définir cette fonction.
Tâches dont on force maintenant l'exécution le plus tôt possible. Sinon, prendra la tâche la plus prioritaire.
taches_generales([mixed $taches_generales = [] ]) : mixed
Une tâche périodique pour surveiller les tâches crons et les relancer si besoin
genie_queue_watch_dist() : int
Quand ce cron s'execute, il n'est plus dans la queue, donc il se replanifie lui même, avec last=time() avec une dose d'aleatoire pour ne pas planifier toutes les taches au meme moment
Replanifier une tache periodique
queue_genie_replan_job(string $function, int $period[, int $last = 0 ][, int $time = null ][, int $priority = 0 ]) : mixed
nom de la fonction a appeler
periodicite en secondes
date du dernier appel (timestamp)
date de replanification si null calculee automaitquement a partir de $last et $period si 0 = asap mais on n'insere pas le job si deja en cours d'execution
priorite
Envoyer le navigateur sur une nouvelle adresse
redirige_par_entete(string $url[, string $equiv = '' ][, int $status = 302 ]) : mixed
Le tout en évitant les attaques par la redirection (souvent indique par un $_GET
)
URL de redirection
?
Code de redirection (301 ou 302)
redirige_formulaire(mixed $url[, mixed $equiv = '' ][, mixed $format = 'message' ]) : mixed
Effectue une redirection par header PHP vers un script de l’interface privée
redirige_url_ecrire([string $script = '' ][, string $args = '' ][, string $equiv = '' ]) : mixed
Nom de la page privée (exec)
Arguments à transmettre. Exemple etape=1&autre=oui
http_no_cache() : mixed
inc_icone_renommer_dist(mixed $fond, mixed $fonction) : mixed
Retourne le formulaire de gestion de logo sur les objets.
inc_iconifier_dist(string $objet, int $id, string $script[, bool $visible = false ][, bool $flag_modif = true ]) : string|array<string|int, mixed>
Importer le charset d'une ligne
importer_csv_importcharset(string $texte[, bool|string $definir_charset_source = false ]) : array<string|int, mixed>
Importe un texte de CSV dans un charset et le passe dans le charset du site (utf8 probablement) Les CSV peuvent sous ms@@@ avoir le charset 'iso-8859-1', mais pasfois aussi 'windows-1252' :/
false : ne fait rien string : utilisera pour les prochains imports le charset indiqué true : remet le charset d'import par défaut de la fonction
enlever les accents des cles presentes dans le head, sinon ca pose des problemes .
importer_csv_nettoie_key(string $key) : string
..
Lit un fichier csv et retourne un tableau si $head est true, la premiere ligne est utilisee en header pour generer un tableau associatif
inc_importer_csv_dist(string $file[, array<string|int, mixed> $options = [] ]) : false|array<string|int, mixed>
bool $head string $delim string $enclos int $len string $charset_source : Permet de définir un charset source du CSV, si différent de utf-8 ou iso-8859-1
Cherche un fichier module.js (statique ou dynamique) présent dans un dossier javascript/ du path, ou bien copie localement une ressource distante, et renvoie son url locale
chemin_import_js(string $fichier) : string
Nom du fichier
URL absolue du fichier local sinon chaîne vide.
Liste des paramètres utiles à la compilation des fonds dynamiques pour les fichiers `_initjs` ou la balise `#IMPORT_JS{}`
importmap_contexte_produire_fond_statique([mixed $contexte = [] ]) : mixed
Insertion de la balise <script type="importmap"></script>, au plus tôt dans le <head>, côté privé, et côté public, pour en faire bénéficier les <script type="module"></script>
importmap_insert_head(mixed $flux) : mixed
Insertion du module d'initialisation, côté privé, et côté public
inc_informer_dist(mixed $id, mixed $col, mixed $exclus, mixed $rac, mixed $type[, mixed $do = 'aff' ]) : mixed
Écrit un fichier PHP nécessitant SPIP
install_fichier_connexion(string $nom, string $texte) : mixed
Écrit le texte transmis dans un fichier PHP. Cette fonction ajoute les entêtes PHP et le test de sécurité vérifiant que SPIP est chargé.
Chemin du fichier à créer
Code source du fichier (sans l'ouverture/fermeture PHP)
Analyse un fichier de connexion à une base de données
analyse_fichier_connection(string $file) : array<string|int, mixed>
Le fichier contient normalement le résultat de la fonction install_connexion(). L'analyse tient également compte des syntaxes des versions précédentes.
Chemin du fichier de connexion à analyser
Tableau des informations sur la connexion
Liste les connecteurs aux bases SQL disponibles
bases_referencees([string $exclu = '' ]) : array<string|int, mixed>
Dans le code SPIP ces connecteurs sont souvent appelés $connect ou $serveur
Exclure un connecteur particulier (nom du fichier)
Liste des noms de connecteurs
install_mode_appel(mixed $server_db[, mixed $tout = true ]) : mixed
tester_compatibilite_hebergement() : mixed
info_etape(mixed $titre[, mixed $complement = '' ]) : mixed
Retourne le code HTML d'un bouton `suivant>>` pour les phases d'installation
bouton_suivant([string $code = '' ]) : string
texte du bouton
Code HTML du bouton
info_progression_etape(mixed $en_cours, mixed $phase, mixed $dir[, mixed $erreur = false ]) : mixed
fieldset(mixed $legend[, mixed $champs = [] ][, mixed $apres = '' ][, mixed $avant = '' ]) : mixed
fieldset_champs([mixed $champs = [] ]) : mixed
install_select_serveur() : mixed
install_connexion_form(mixed $db, mixed $login, mixed $pass, mixed $predef, mixed $hidden, mixed $etape[, mixed $jquery = true ]) : mixed
predef_ou_cache(mixed $adresse_db, mixed $login_db, mixed $pass_db, mixed $server_db) : mixed
install_etape_liste_bases(mixed $server_db, mixed $login_db[, mixed $disabled = [] ]) : mixed
install_propager(mixed $hidden) : mixed
Évalue approximativement la taille du cache
taille_du_cache() : int
Pour de gros volumes, impossible d'ouvrir chaque fichier, on y va donc à l'estime !
Taille approximative en octets
Invalider les caches liés à telle condition
inc_suivre_invalideur_dist(string $cond[, bool $modif = true ]) : mixed
Les invalideurs sont de la forme 'objet/id_objet'. La condition est géneralement "id='objet/id_objet'".
Ici on se contente de noter la date de mise à jour dans les metas,
pour le type d'objet en question (non utilisé cependant) et pour
tout le site (sur la meta derniere_modif
)
Condition d'invalidation
Inutilisé
Purge un répertoire de ses fichiers
purger_repertoire(string $dir[, array<string|int, mixed> $options = [] ]) : int
Utilisée entre autres pour vider le cache depuis l'espace privé
Chemin du répertoire à purger
Tableau des options. Peut être :
Nombre de fichiers supprimés
inc_retire_caches_dist([mixed $chemin = '' ]) : mixed
retire_caches([mixed $chemin = '' ]) : mixed
calcul_invalideurs(mixed $corps, mixed $primary, mixed &$boucles, mixed $id_boucle) : mixed
supprime_invalideurs() : mixed
maj_invalideurs(mixed $fichier, mixed &$page) : mixed
insere_invalideur(mixed $inval, mixed $fichier) : mixed
applique_invalideur(mixed $depart) : mixed
suivre_invalideur(mixed $cond[, mixed $modif = true ]) : mixed
inc_journal_dist(mixed $phrase[, mixed $opt = [] ]) : mixed
Changer la langue courante
changer_langue(string $lang[, string|array<string|int, mixed> $liste_langues = null ]) : string|bool
Définit la langue utilisée par la langue désignée si elle fait partie des langues utilisables dans le site.
Cette fonction définit les globales : spip_lang, spip_lang_rtl, spip_lang_right, spip_lang_left
La langue à utiliser
La liste des langues valides
string : La langue qui a été utilisée si trouvée false : aucune langue ne correspondait à la demande
choisir_traduction(mixed $trads[, mixed $lang = '' ]) : mixed
approcher_langue(mixed $trads[, mixed $lang = '' ]) : mixed
Traduit un code de langue (fr, en, etc...) vers le nom de la langue en toute lettres dans cette langue (français, English, etc....).
traduire_nom_langue(string $lang) : string
Si le spip ne connait pas le nom de la langue, il retourne le code
Code de langue
Nom de la langue, sinon son code.
lang_dir([mixed $lang = '' ][, mixed $droitier = 'ltr' ][, mixed $gaucher = 'rtl' ]) : mixed
lang_typo([mixed $lang = '' ]) : mixed
changer_typo([mixed $lang = '' ]) : mixed
menu_langues(mixed $nom_select[, mixed $default = '' ]) : mixed
select_langues(mixed $nom_select, mixed $change, mixed $options[, mixed $label = '' ]) : mixed
Lister les langues disponibles
liste_options_langues(string $nom_select) : array<string|int, mixed>
Retourne un tableau de langue utilisables, triées par code de langue, mais pas le même tableau en fonction du paramètre $nom_select.
Attribut name du select Selon son nom, retourne une liste différente :
Liste des langues
Redirige sur la bonne langue lorsque l'option forcer_lang est active
verifier_lang_url() : mixed
Cette fonction est appelee depuis ecrire/public.php si on a installé la variable de personnalisation $forcer_lang ; elle renvoie le brouteur si necessaire vers l'URL xxxx?lang=ll
Utilise la langue du site
utiliser_langue_site([string|array<string|int, mixed>|null $liste_langues = null ]) : string
Change la langue en cours d'utilisation par la langue du site si ce n'est pas déjà le cas.
Note : Cette fonction initialise la globale spip_lang au chargement de inc/lang
liste des langues valides
La langue sélectionnée
Initialise la langue pour un visiteur du site
utiliser_langue_visiteur([string|array<string|int, mixed>|null $liste_langues = null ]) : string
La langue est choisie dans cet ordre :
liste des langues valides
La langue utilisée
Verifier qu'une chaine suceptible d'etre un nom de langue a le bon format
match_langue(string $chaine) : int
Initialisation des listes de langues
init_langues() : mixed
Initialise les métas :
Lorsque ces métas n'existent pas encore (c'est à dire à l'installation), elles sont calculées en obtenant la liste des langues dans les fichiers de lang
Retourne une balise <html>
html_lang_attributes() : string
Retourne une balise HTML contenant les attributs 'lang' et 'dir' définis sur la langue en cours d'utilisation, ainsi que des classes CSS de ces du nom de la langue et direction choisie.
Code html de la balise
Calcul de la direction du texte et la mise en page selon la langue
aide_lang_dir(string $spip_lang, string $spip_lang_rtl) : string
En hébreu le ? ne doit pas être inversé.
Affiche un cadre complet muni d’un bouton pour le déplier.
cadre_depliable(string $icone, string $titre, bool $deplie, string $contenu[, string $ids = '' ][, string $style_cadre = 'r' ]) : string
Chemin vers l’icone que prendra le cadre
Titre du cadre
true ou false, défini si le cadre est déplié au chargement de la page (true) ou pas (false)
Contenu du cadre
id que prendra la partie pliée ou dépliée
classe CSS que prendra le cadre
Code HTML du cadre dépliable
block_parfois_visible(mixed $nom, mixed $invite, mixed $masque[, mixed $style = '' ][, mixed $visible = false ]) : mixed
debut_block_depliable(mixed $deplie[, mixed $id = '' ]) : mixed
fin_block() : mixed
bouton_block_depliable(mixed $texte, mixed $deplie[, mixed $ids = '' ]) : mixed
Production de la balise a+href à partir des raccourcis `[xxx->url]` etc.
inc_lien_dist(string $lien[, string $texte = '' ][, string $class = '' ][, string $title = '' ][, string $hlang = '' ][, string $rel = '' ][, string $connect = '' ][, array<string|int, mixed> $env = [] ]) : string
expanser_liens(mixed $t[, string $connect = '' ][, mixed $env = [] ]) : mixed
nettoyer_raccourcis_typo(mixed $texte[, string $connect = '' ]) : mixed
traiter_raccourci_lien_atts(mixed $texte) : mixed
Retourne la valeur d'un champ de redirection (articles virtuels)
virtuel_redirige(string $virtuel[, bool $url = false ]) : string
calculer_url(mixed $ref[, mixed $texte = '' ][, mixed $pour = 'url' ][, string $connect = '' ][, mixed $echappe_typo = true ]) : mixed
traiter_lien_explicite(mixed $ref[, mixed $texte = '' ][, mixed $pour = 'url' ][, string $connect = '' ][, mixed $echappe_typo = true ]) : mixed
liens_implicite_glose_dist(mixed $texte, mixed $id, mixed $type, mixed $args, mixed $ancre[, string $connect = '' ]) : mixed
Transformer un lien raccourci art23 en son URL Par defaut la fonction produit une url prive si on est dans le prive ou publique si on est dans le public.
traiter_lien_implicite(string $ref[, string $texte = '' ][, string $pour = 'url' ][, string $connect = '' ]) : array<string|int, mixed>|bool|string
La globale lien_implicite_cible_public permet de forcer un cas ou l'autre : $GLOBALS['lien_implicite_cible_public'] = true; => tous les liens raccourcis pointent vers le public $GLOBALS['lien_implicite_cible_public'] = false; => tous les liens raccourcis pointent vers le prive unset($GLOBALS['lien_implicite_cible_public']); => retablit le comportement automatique
typer_raccourci(mixed $lien) : mixed
Retourne le titre et la langue d'un objet éditorial
traiter_raccourci_titre(int $id, string $type[, string|null $connect = null ]) : array<string|int, mixed>
Identifiant de l'objet
Type d'objet
Connecteur SQL utilisé
{
traiter_raccourci_ancre(mixed $letexte) : mixed
traiter_raccourci_glossaire(mixed $texte) : mixed
glossaire_std(mixed $terme) : mixed
inc_lien_court(mixed $url) : mixed
Envoyer un fichier dont on fourni le chemin, le mime type, en attachment ou non, avec un expire
spip_livrer_fichier(string $fichier[, string $content_type = 'application/octet-stream' ][, array<string|int, mixed> $options = [] ]) : mixed
bool|string $attachment int $expires int|null range
Envoyer les entetes du fichier, sauf ce qui est lie au mode d'envoi (entier ou par parties)
spip_livrer_fichier_entetes(string $fichier[, string $content_type = 'application/octet-stream' ][, bool|string $attachment = false ][, int|string $expires = 0 ]) : mixed
Envoyer les contenu entier du fichier
spip_livrer_fichier_entier(string $fichier) : mixed
Envoyer une partie du fichier Prendre en charge l'entete Range:bytes=0-456 utilise par les player medias source : https://github.com/pomle/php-serveFilePartial/blob/master/ServeFilePartial.inc.php
spip_livrer_fichier_partie(string $fichier[, string $range = null ]) : mixed
Utiliser spip_logger()
inc_log_dist(mixed $message[, mixed $logname = null ][, mixed $logdir = null ][, mixed $logsuf = null ]) : mixed
produire_image_math(mixed $tex) : mixed
Active la recherche et l'affichage d'expressions mathématiques dans le texte transmis, dans tous les textes à l'intérieur d'une balise `<math>`.
traiter_math(string $letexte[, string $source = '' ][, bool $defaire_amp = false ]) : string
Encadrer un texte de balises <math> ... </math>
active la recherche
d'expressions mathématiques écrites entre caractères $
au sein de ce texte :
$$expression$$
traitera l'expression comme un paragraphe centré (p)$expression$
traitera l'expression comme un texte en ligne (span)Un serveur distant calculera une image à partir de l'expression mathématique donnée. Cette image est mise en cache localement (local/cache-Tex)
true pour passer les &
en &
dans les expressions mathématiques.
inc_meta_dist([mixed $table = 'meta' ]) : mixed
lire_metas([mixed $table = 'meta' ]) : mixed
Mettre en cache la liste des meta, sauf les valeurs sensibles pour qu'elles ne soient pas visibiles dans un fichier (souvent en 777)
touch_meta([bool|int $antidate = false ][, string $table = 'meta' ]) : mixed
Date de modification du fichier à appliquer si indiqué (timestamp)
Table SQL d'enregistrement des meta.
Supprime une meta
effacer_meta(string $nom[, string $table = 'meta' ]) : mixed
Nom de la meta
Table SQL d'enregistrement de la meta.
Met à jour ou crée une meta avec la clé et la valeur indiquée
ecrire_meta(string $nom, string $valeur[, string|null $importable = null ][, string $table = 'meta' ]) : mixed
Nom de la meta
Valeur à enregistrer
Cette meta s'importe-elle avec une restauration de sauvegarde ? 'oui' ou 'non'
Table SQL d'enregistrement de la meta.
Retourne le nom du fichier cache d'une table SQL de meta
cache_meta([string $table = 'meta' ]) : string
Table SQL d'enregistrement des meta.
Nom du fichier cache
Installer une table de configuration supplementaire
installer_table_meta(string $table) : mixed
Supprimer une table de configuration supplémentaire
supprimer_table_meta(string $table[, bool $force = false ]) : mixed
Si $force=true, on ne verifie pas qu'elle est bien vide
Retourne le début d'une page HTML minimale (de type installation)
Utiliser Spip\Afficher\Minipage\Admin
install_debut_html([string $titre = 'AUTO' ][, string $onLoad = '' ][, bool $all_inline = false ]) : string
Titre. AUTO
, indique que l'on est dans le processus d'installation de SPIP
Attributs pour la balise <body>
Inliner les css et js dans la page (limiter le nombre de hits)
Code HTML
Retourne la fin d'une page HTML minimale (de type installation ou erreur)
Utiliser Spip\Afficher\Minipage\Admin
install_fin_html() : string
Code HTML
Retourne une page HTML contenant, dans une présentation minimale, le contenu transmis dans `$titre` et `$corps`.
Utiliser Spip\Afficher\Minipage\Admin
minipres([string $titre = '' ][, string $corps = '' ][, array<string|int, mixed> $options = [] ]) : string
Appelée pour afficher un message d’erreur (l’utilisateur n’a pas accès à cette page par exemple).
Lorsqu’aucun argument n’est transmis, un header 403 est renvoyé, ainsi qu’un message indiquant une interdiction d’accès.
Titre de la page
Corps de la page
string onload : Attribut onload de <body>
bool all_inline : Inliner les css et js dans la page (limiter le nombre de hits)
int status : status de la page
HTML de la page
Traiter les modeles d'un texte
traiter_modeles(string $texte[, bool|array<string|int, mixed> $doublons = false ][, string $echap = '' ][, string $connect = '' ][, Liens|null $collecteurLiens = null ][, array<string|int, mixed> $env = [] ]) : string
Collecte des champs postés
collecter_requests(array<string|int, mixed> $include_list[, array<string|int, mixed> $exclude_list = [] ][, array<string|int, mixed>|null $set = null ][, bool $tous = false ]) : array<string|int, mixed>
Fonction générique pour la collecte des posts dans action/editer_xxx
Les champs à récupérer
Les champs à ignorer
array : Tableau des champs postés null : Les champs sont obtenus par des _request() sur les noms de la liste d’inclusion
true : Recupère tous les champs de white_list meme ceux n'ayant pas ete postés
Tableau des champs et valeurs collectées
Modifie le contenu d'un objet
objet_modifier_champs(string $objet, int $id_objet, array<string|int, mixed> $options[, array<string|int, mixed>|null $c = null ][, string $serveur = '' ]) : bool|string
Fonction generique pour l'API de modification de contenu, qui se charge entre autres choses d'appeler les pipelines pre_edition et post_edition
Attention, pour éviter des hacks on interdit des champs (statut, id_secteur, id_rubrique, id_parent), mais la securite doit étre assurée en amont
Type d'objet
Identifiant de l'objet
array data : tableau des donnees sources utilisees pour la detection de conflit ($_POST sinon fourni ou si nul) array nonvide : valeur par defaut des champs que l'on ne veut pas vide string date_modif : champ a mettre a date('Y-m-d H:i:s') s'il y a modif string invalideur : id de l'invalideur eventuel array champs : non documente (utilise seulement par inc/rechercher ?) string action : action realisee, passee aux pipelines pre/post edition (par defaut 'modifier') bool indexation : deprecie
Couples champ/valeur à modifier
Nom du connecteur à la base de données
Crée un verrou pour NFS
spip_nfslock(string $fichier[, int $max_age = 0 ]) : int|bool
(Excerpts from Chuck's notes: this becomes complex, due to our dear friend, the NFS mounted mail spool. the netbsd code didn't do this properly, as far as I could tell.
NB: It is critical that nfslock()ed files be unlocked by nfsunlock(). Simply unlinking the lock file is a good way to trash someone else's lock file. All it takes is for the process doing the unlink to get hung for a few minutes when it doesn't expect it. Meanwhile, its lock expires and a second process forces the lock and creates its own. Then the first process comes along and kills the second process' lock while it's still valid.
Security considerations: If we're root, be very careful to see that the temp file we opened is what we think it is. The problem is that we could lose a race with someone who takes our tmp file and replaces it with, say, a hard link to /etc/passwd. Then, if the first lock attempt fails, we'll write a char to the file (see 4. below); this would truncate the passwd file. So we make sure that the link count is 1. We don't really care about any other screwing around since we don't write anything sensitive to the lock file, nor do we change its owner or mode. If someone beats us on a race and replaces our temp file with anything else, it's no big deal- the file may get truncated, but there's no possible security breach. ...Actually the possibility of the race ever happening, given the random name of the file, is virtually nil.
args: path = path to directory of lock file (/net/u/1/a/alexis/.mailspool) namelock = file name of lock file (alexis.lock) max_age = age of lockfile, in seconds, after which the lock is stale. stale locks are always broken. Defaults to DEFAULT_LOCKTIME if zero. Panix mail locks go stale at 300 seconds, the default. notify = 1 if we should tell stdout that we're sleeping on a lock
Returns the time that the lock was created on the other system. This is important for nfsunlock(). If the lock already exists, returns NFSL_LOCKED. If there is some other failure, return NFSL_SYSF. If NFSL_LOCKED is returned, errno is also set to EEXIST. If we're root and the link count on the tmp file is wrong, return NFSL_SECV.
Mods of 7/13/95: Change a bit of code to re-stat the lockfile after closing it. This is to work around a bug in SunOS that appears to to affect some SunOS 4.1.3 machines (but not all). The bug is that close() updates the stat st_ctime field for that file. So use lstat on fullpath instead of fstat on tmpfd. This alteration applies to both nfslock and nfslock1.
Mod of 5/4/95: Change printf's to fprintf(stderr... in nfslock and nfslock1.
Mods of 4/29/95: Fix freeing memory before use if a stat fails. Remove code that forbids running as root; instead, if root, check link count on tmp file after opening it.
Mods of 4/27/95: Return the create time instead of the lockfile's fd, which is useless. Added new routines nfsunlock(), nfslock_test(), nfslock_renew().
Mods of 1/8/95: Eliminate some security checks since this code never runs as root. In particular, we completely eliminate the safeopen routine. But add one check: if we are root, fail immediately.
Change arguments: take a path and a filename. Don't assume a global or macro pointing to a mailspool.
Add notify argument; if 1, tell user when we're waiting for a lock.
Add max_age argument and DEFAULT_LOCKTIME.
Change comments drastically.
Chemin du fichier
Age maximum du verrou
Timestamp du verrou, false si erreur
Unlock an nfslock()ed file
spip_nfsunlock(string $fichier, int $birth[, int $max_age = 0 ][, bool $test = false ]) : mixed
This can get tricky because the lock may have expired (perhaps even during a process that should be "atomic"). We have to make sure we don't unlock some other process' lock, and return a panic code if we think our lock file has been broken illegally. What's done in reaction to that panic (of anything) is up to the caller. See the comments on nfslock()!
args: path = path to directory of lock file (/net/u/1/a/alexis/.mailspool) namelock = file name of lock file (alexis.lock) max_age = age of lockfile, in seconds, after which the lock is stale. stale locks are always broken. Defaults to DEFAULT_LOCKTIME if zero. Panix mail locks go stale at 300 seconds, the default. birth = time the lock was created (as returned by nfslock()).
Returns NFSL_OK if successful, NFSL_LOST if the lock has been lost legitimately (because more than max_age has passed since the lock was created), and NFSL_STOLEN if it's been tampered with illegally (i.e. while this program is within the expiry period). Returns NFSL_SYSF if another system failure prevents it from even trying to unlock the file.
Note that for many programs, a return code of NFSL_LOST or NFSL_STOLEN is equally disastrous; a NFSL_STOLEN means that some other program may have trashed your file, but a NFSL_LOST may mean that you have trashed someone else's file (if in fact you wrote the file that you locked after you lost the lock) or that you read inconsistent information.
In practice, a return code of NFSL_LOST or NFSL_STOLEN will virtually never happen unless someone is violating the locking protocol.
Chemin du fichier
Timestamp de l'heure de création du verrou
Age maximum du verrou
Mode de test return bool true si déverrouillé, false sinon
Test a lock to see if it's still valid.
spip_nfslock_test(string $fichier, int $birth[, int $max_age = 0 ]) : mixed
Args, return codes, and behavior are identical to nfsunlock except that nfslock_test doesn't remove the lock. NFSL_OK means the lock is good, NFLS_LOST and NFSL_STOLEN means it's bad, and NFSL_SYSF means we couldn't tell due to system failure.
The source for this routine is almost identical to nfsunlock(), but it's coded separately to make things as clear as possible.
Chemin du fichier
Timestamp de l'heure de création du verrou
Age maximum du verrou return bool true si déverrouillé, false sinon
La fonction de notification de base, qui dispatche le travail
inc_notifications_dist(string $quoi[, int $id = 0 ][, array<string|int, mixed> $options = [] ]) : mixed
Événement de notification
id de l'objet en relation avec l'événement
Options de notification, interprétées en fonction de la notification
Néttoyage des emails avant un envoi
notifications_nettoyer_emails(array<string|int, mixed> &$emails[, array<string|int, mixed> $exclure = [] ]) : mixed
On passe par référence pour la perf
les emails liste par $exclure seront exclus de la liste
Envoyer un email de notification
notifications_envoyer_mails(array<string|int, mixed>|string $emails, string $texte[, string $sujet = '' ][, string $from = '' ][, string $headers = '' ]) : mixed
Le sujet peut être vide, dans ce cas il reprendra la première ligne non vide du texte
Notifier un événement sur un objet
email_notification_objet(int $id_objet, string $type_objet, string $modele) : string
Récupère le fond désigné dans $modele, prend la première ligne comme sujet et l'interprète pour envoyer l'email
Notifier un événement sur un article
email_notification_article(int $id_article, string $modele) : string
Récupère le fond désigné dans $modele, prend la première ligne comme sujet et l'interprète pour envoyer l'email
Indente un code HTML
f_tidy(string $texte) : string
Indente et valide un code HTML si la globale 'xhtml' est définie à true.
Cette fonction est appelée par le pipeline affichage_final
Contenu de la page envoyée au navigateur
Contenu de la page envoyée au navigateur
Offre `#INSERT_HEAD` sur tous les squelettes (bourrin)
f_insert_head(string $texte) : string
À activer dans mes_options via :
$GLOBALS['spip_pipeline']['affichage_final'] .= '|f_insert_head';
Ajoute le contenu du pipeline insert head dans la page HTML si cela n'a pas été fait.
Contenu de la page envoyée au navigateur
Contenu de la page envoyée au navigateur
Insérer au besoin les boutons admins
f_admin(string $texte) : string
Cette fonction est appelée par le pipeline affichage_final
Contenu de la page envoyée au navigateur
Contenu de la page envoyée au navigateur
Actions sur chaque inclusion
f_recuperer_fond(array<string|int, mixed> $flux) : array<string|int, mixed>
Appelle f_afficher_blocs_ecrire() sur les inclusions dans l'espace privé. Ne change rien dans l'espace public.
Cette fonction est appelée par le pipeline recuperer_fond
Description et contenu de l'inclusion
Description et contenu de l'inclusion
Gérer le lancement du cron si des tâches sont en attente
f_queue(string $texte) : string
Contenu de la page envoyée au navigateur
Contenu de la page envoyée au navigateur
Inserer jQuery et ses plugins pour l'espace privé
f_jQuery_prive(string $texte) : string
La fonction ajoute les balises scripts dans le texte qui appelent les scripts jQuery ainsi que certains de ses plugins. La liste des js chargée peut être complété par le pipeline 'jquery_plugins'
Cette fonction est appelée par le pipeline header_prive
Contenu qui sera inséré dans le head HTML
Contenu complété des scripts javascripts, dont jQuery
Ajout automatique du title dans les pages du privé en squelette
affichage_final_prive_title_auto(string $texte) : string
Appellé dans le pipeline affichage_final_prive
f_boite_infos(mixed $flux) : mixed
Utilisation du pipeline recuperer_fond dans le prive
f_afficher_blocs_ecrire(array<string|int, mixed> $flux) : array<string|int, mixed>
Branchement automatise de affiche_gauche, affiche_droite, affiche_milieu pour assurer la compat avec les versions precedentes des exec en php Branche de affiche_objet
Les pipelines ne recevront plus exactement le meme contenu en entree, mais la compat multi vertions pourra etre assuree par une insertion au bon endroit quand le contenu de depart n'est pas vide
Données du pipeline
Données du pipeline
Vérifie la présence d'un marqueur dans le HTML et l'ajoute si nécessaire.
afficher_blocs_ecrire_preparer_marqueur(string $texte, string $marqueur, string $inserer_avant[, string $ouvrir = '' ][, string $fermer = '' ]) : string
Fonction à appeler avant d'insérer des contenus via pipelines. Le marqueur peut optionnellement être encapsulé dans des balises. S'il est déjà présent et encapsulé, il ne faut PAS qu'il y ait d'espace blanc en trop.
Contenu HTML
Marqueur cherché, tel que <!--affiche_milieu-->
Expression régulière indiquant avant quel élément insérer le marqueur s'il est absent
Exemple : <div id=["\']wysiwyg
Balise ouvrante si le marqueur doit être encapsulé
Exemple : <div class="affiche_milieu">
Balise fermante si le marqueur doit être encapsulé
Exemple : </div>
HTML avec le marqueur, ou inchangé si ajout impossible.
Afficher les taches en attente liees a un objet
f_queue_affiche_milieu(string $flux) : string
Afficher le message de mise à jour dans toutes les pages du privé pour les webmestres
mise_a_jour_affiche_milieu(string $flux) : string
Trouver l'objet qui correspond à l'exec de l'espace privé passé en argument
trouver_objet_exec(string|null $exec) : array<string|int, mixed>|bool
renvoie false si pas d'objet en cours, ou un tableau associatif contenant les informations table_objet_sql,table,type,id_table_objet,edition
nom de la page testee
inc_plonger_dist(mixed $id_rubrique[, mixed $idom = '' ][, mixed $list = [] ][, mixed $col = 1 ][, mixed $exclu = 0 ][, mixed $do = 'aff' ]) : mixed
Retourne la description de chaque plugin présent dans un répertoire
liste_plugin_files([string|null $dir_plugins = null ]) : array<string|int, mixed>
Lecture des sous repertoire plugin existants
_DIR_PLUGINS
.Recherche rapide des répertoires de plugins contenus dans un répertoire
fast_find_plugin_dirs(string $dir[, int $max_prof = 100 ]) : array<string|int, mixed>
Chemin du répertoire dont on souhaite retourner les sous répertoires
Profondeur maximale des sous répertoires
Liste complète des répeertoires
Indique si un répertoire (ou plusieurs) est la racine d'un plugin SPIP
is_plugin_dir(string|array<string|int, string> $dir[, string|null $dir_plugins = null ]) : string|array<string|int, string>
Vérifie le ou les chemins relatifs transmis pour vérifier qu'ils contiennent
un paquet.xml
. Les chemins valides sont retournés.
Chemin (relatif à $dir_plugins
), ou liste de chemins à tester
_DIR_RACINE
), départ des chemin(s) à tester_DIR_PLUGINS
$dir
était array)Teste si le numéro de version d'un plugin est dans un intervalle donné.
plugin_version_compatible(string $intervalle, string $version[, string $avec_quoi = '' ]) : bool
Cette fonction peut être volontairement trompée (phase de développement) : voir commentaire infra sur l'utilisation de la constante _DEV_VERSION_SPIP_COMPAT
Un intervalle entre 2 versions. ex: [2.0.0-dev;2.1.*]
Un numéro de version. ex: 3.1.99]
Ce avec quoi est testée la compatibilité. par défaut ('') avec un plugin (cas des 'necessite'), parfois ('spip') avec SPIP.
True si dans l'intervalle, false sinon.
Construire la liste des infos strictement necessaires aux plugins à activer afin de les mémoriser dans une meta pas trop grosse
liste_plugin_valides(array<string|int, mixed> $liste_plug[, bool $force = false ]) : array<string|int, mixed>
Ne retenir un plugin que s'il est valide et dans leur plus recente version compatible avec la version presente de SPIP
plugin_valide_resume(array<string|int, mixed> &$liste, string $plug, array<string|int, mixed> $infos, string $dir_type) : string|array<string|int, mixed>
string prefixe dans $liste si on a accepte le plugin array description short si on ne le retient pas (pour memorisation dans une table des erreurs)
Compléter la liste des plugins avec les éventuels procure
plugin_fixer_procure(array<string|int, mixed> &$liste, array<string|int, mixed> &$infos) : mixed
les balises <procure>
sont considerées comme des plugins proposés,
mais surchargeables (on peut activer un plugin qui procure ça pour l'améliorer,
donc avec le même prefixe, qui sera pris en compte si il a une version plus grande)
Extrait les chemins d'une liste de plugin
liste_chemin_plugin(array<string|int, mixed> $liste[, string $dir_plugins = _DIR_PLUGINS ]) : array<string|int, mixed>
Sélectionne au passage ceux qui sont dans $dir_plugins
uniquement
si valeur non vide
Liste les chemins vers les plugins actifs du dossier fourni en argument a partir d'une liste d'elelements construits par plugin_valide_resume
liste_chemin_plugin_actifs([string $dir_plugins = _DIR_PLUGINS ]) : array<string|int, mixed>
Chemin du répertoire de plugins
Trier les plugins en vériant leur dépendances (qui doivent être présentes)
plugin_trier(array<string|int, mixed> $infos, array<string|int, mixed> $liste_non_classee) : array<string|int, mixed>
Pour tester "utilise", il faut connaître tous les plugins qui seront forcément absents à la fin, car absent de la liste des plugins actifs.
Il faut donc construire une liste ordonnée.
Cette fonction détecte des dépendances circulaires, avec un doute sur un "utilise" qu'on peut ignorer. Mais ne pas insérer silencieusement et risquer un bug sournois latent
Répertoire (plugins, plugins-dist, ...) => Couples (prefixes => infos completes) des plugins qu'ils contiennent
Couples (prefixe => description) des plugins qu'on souhaite utiliser
Tableau de 3 éléments :
Collecte les erreurs de dépendances des plugins dans la meta `plugin_erreur_activation`
plugins_erreurs(array<string|int, mixed> $liste_non_classee, array<string|int, mixed> $liste, array<string|int, mixed> $infos[, mixed $msg = [] ]) : mixed
Couples (prefixe => description) des plugins en erreur
Couples (prefixe => description) des plugins qu'on souhaite utiliser
Répertoire (plugins, plugins-dist, ...) => Couples (prefixes => infos completes) des plugins qu'ils contiennent
Retourne les erreurs d'activation des plugins, au format html ou brut
plugin_donne_erreurs([bool $raw = false ][, bool $raz = true ]) : string|array<string|int, mixed>
Teste des dépendances
plugin_necessite(array<string|int, mixed> $n, array<string|int, mixed> $liste[, mixed $balise = 'necessite' ]) : array<string|int, mixed>
Et vérifie que chaque dépendance est présente dans la liste de plugins donnée
Tableau de dépendances dont on souhaite vérifier leur présence
Tableau des plugins présents
Tableau des messages d'erreurs reçus. Il sera vide si tout va bien.
Vérifie qu'une dépendance (plugin) est bien présente.
plugin_controler_necessite(array<string|int, mixed> $liste, string $nom, string $intervalle, string $balise) : mixed
Liste de description des plugins
Le plugin donc on cherche la presence
L'éventuelle intervalle de compatibilité de la dépendance. ex: [1.1.0;]
Permet de définir si on teste un utilise ou un nécessite
plugin_message_incompatibilite(string $intervalle, string $version, string $nom, string $balise) : string
L'éventuelle intervalle de compatibilité de la dépendance. ex: [1.1.0;]
La version en cours active pour le plugin demandé (ou php ou extension php demandée)
Le plugin (ou php ou extension php) qui est absent
Le type de balise utilisé (necessite ou utilise)
Le message d'erreur.
plugin_controler_lib(mixed $lib, mixed $url) : mixed
Calcule la liste des plugins actifs et recompile les fichiers caches qui leurs sont relatifs
actualise_plugins_actifs([bool $pipe_recherche = false ]) : bool
?
true si il y a eu des modifications sur la liste des plugins actifs, false sinon
Calcule ou modifie la liste des plugins actifs et recompile les fichiers caches qui leurs sont relatifs
ecrire_plugin_actifs(string|array<string|int, string> $plugin[, bool $pipe_recherche = false ][, string $operation = 'raz' ]) : bool
Plugin ou plugins concernés (leur chemin depuis le répertoire plugins)
?
true si il y a eu des modifications sur la liste des plugins actifs, false sinon
Écrit le fichier de déclaration des chemins (path) des plugins actifs
plugins_precompile_chemin(array<string|int, mixed> $plugin_valides, array<string|int, mixed> $ordre) : mixed
Le fichier créé, une fois exécuté permet à SPIP de rechercher des fichiers dans les répertoires des plugins concernés.
Couples (prefixe => description) des plugins qui seront actifs
Couples (prefixe => infos complètes) des plugins qui seront actifs, dans l'ordre de leurs dépendances
Écrit les fichiers de chargement des fichiers d'options et de fonctions des plugins
plugins_precompile_xxxtions(array<string|int, mixed> $plugin_valides, array<string|int, mixed> $ordre) : mixed
Les onglets et menus déclarés dans le fichier paquet.xml des plugins sont également ajoutés au fichier de fonctions créé.
Couples (prefixe => description) des plugins qui seront actifs
Couples (prefixe => infos complètes) des plugins qui seront actifs, dans l'ordre de leurs dépendances
Compile les entrées d'un menu et retourne le code php d'exécution
plugin_ongletbouton(string $nom, array<string|int, mixed> $val) : string
Génère et retourne un code php (pour enregistrement dans un fichier de cache) permettant d'obtenir la liste des entrées de menus, ou des onglets de l'espace privé.
Définit également une constante (UPDATED$nom et UPDATED_md5$nom), signalant une modification de ces menus
Nom du type de menu Exemple: boutons_plugins, onglets_plugins
Liste des entrées de ce menu
Code php
Chargement des plugins actifs dans le path de SPIP et exécution de fichiers d'options des plugins
plugins_amorcer_plugins_actifs() : mixed
Les fichiers d'options peuvent déclarer des pipelines ou de nouveaux chemins.
La connaissance chemins peut être nécessaire pour la construction du fichier d'exécution des pipelines.
Crée la liste des filtres à traverser pour chaque pipeline
pipeline_matrice_precompile(array<string|int, mixed> $plugin_valides, array<string|int, mixed> $ordre, string $pipe_recherche) : array<string|int, mixed>
Complète la globale spip_pipeline
des fonctions que doit traverser un pipeline,
et la globale spip_matrice
des fichiers à charger qui contiennent ces fonctions.
Retourne aussi pour certaines balises présentes dans les paquet.xml (script, style, genie), un code PHP à insérer au début de la chaîne du ou des pipelines associés à cette balise (insert_head, insert_head_css, taches_generales_cron, ...). Ce sont des écritures raccourcies pour des usages fréquents de ces pipelines.
Couples (prefixe => description) des plugins qui seront actifs
Couples (prefixe => infos complètes) des plugins qui seront actifs, dans l'ordre de leurs dépendances
Couples (nom du pipeline => Code PHP à insérer au début du pipeline)
Précompilation des pipelines
pipeline_precompile([array<string|int, mixed> $prepend_code = [] ]) : mixed
Crée le fichier d'exécution des pipelines
dont le chemin est défini par _CACHE_PIPELINES
La liste des pipelines est définie par la globale spip_pipeline
qui a été remplie soit avec les fichiers d'options, soit avec
des descriptions de plugins (paquet.xml) dont celui de SPIP lui-même.
Les fichiers à charger pour accéder aux fonctions qui doivent traverser
un pipeline se trouve dans la globale spip_matrice
.
Code PHP à insérer avant le passage dans la chaîne des fonctions d'un pipeline Couples 'Nom du pipeline' => Code PHP à insérer
Indique si un chemin de plugin fait parti des plugins activés sur le site
plugin_est_installe(string $plug_path) : bool
Chemin du plugin
true si le plugin est actif, false sinon
Parcours les plugins activés et appelle leurs fonctions d'installation si elles existent.
plugin_installes_meta() : mixed
Elle ajoute ensuite les plugins qui ont été installés dans la valeur "plugin_installes" de la table meta. Cette meta ne contient que les noms des plugins qui ont une version_base.
Écrit un fichier PHP
ecrire_fichier_php(string $nom, string $contenu[, string $comment = '' ]) : mixed
Chemin du fichier
Contenu du fichier (sans les balises ouvrantes et fermantes de PHP)
Commentaire : code écrit en tout début de fichier, après la balise PHP ouvrante
Retourne les valeurs à charger pour un formulaire d'édition d'un article
inc_precharger_article_dist(string|int $id_article[, int $id_rubrique = 0 ][, int $lier_trad = 0 ]) : array<string|int, mixed>
Lors d'une création, certains champs peuvent être préremplis (c'est le cas des traductions)
Identifiant de l'article, ou "new" pour une création
Identifiant éventuel de la rubrique parente
Identifiant éventuel de la traduction de référence
Couples clés / valeurs des champs du formulaire à charger.
Récupère les valeurs d'une traduction de référence pour la création d'un article (préremplissage du formulaire).
inc_precharger_traduction_article_dist(string|int $id_article[, int $id_rubrique = 0 ][, int $lier_trad = 0 ]) : array<string|int, mixed>
Identifiant de l'article, ou "new" pour une création
Identifiant éventuel de la rubrique parente
Identifiant éventuel de la traduction de référence
Couples clés / valeurs des champs du formulaire à charger
Retourne les valeurs à charger pour un formulaire d'édition d'un objet
precharger_objet(string $type, string|int $id_objet[, int $id_rubrique = 0 ][, int $lier_trad = 0 ][, string $champ_titre = 'titre' ]) : array<string|int, mixed>
Lors d'une création, certains champs peuvent être préremplis (c'est le cas des traductions)
Type d'objet (article, breve...)
Identifiant de l'objet, ou "new" pour une création
Identifiant éventuel de la rubrique parente
Identifiant éventuel de la traduction de référence
Nom de la colonne SQL de l'objet donnant le titre : pas vraiment idéal ! On devrait pouvoir le savoir dans la déclaration de l'objet
Couples clés / valeurs des champs du formulaire à charger.
Récupère les valeurs d'une traduction de référence pour la création d'un objet (préremplissage du formulaire).
precharger_traduction_objet(string $type, string|int $id_objet[, int $id_rubrique = 0 ][, int $lier_trad = 0 ][, string $champ_titre = 'titre' ]) : array<string|int, mixed>
Type d'objet (article, breve...)
Identifiant de l'objet, ou "new" pour une création
Identifiant éventuel de la rubrique parente
Identifiant éventuel de la traduction de référence
Nom de la colonne SQL de l'objet donnant le titre
Couples clés / valeurs des champs du formulaire à charger
Préparer les listes `id_article IN (...)` pour les parties WHERE et calcul des `points` pour la partie SELECT des requêtes du moteur de recherche
inc_prepare_recherche_dist(string $recherche[, string $table = 'articles' ][, bool $cond = false ][, string $serveur = '' ][, array<string|int, mixed> $modificateurs = [] ][, string $primary = '' ]) : array<string|int, mixed>
Le paramètre $serveur est utilisé pour savoir sur quelle base on cherche mais l'index des résultats est toujours stocké sur le serveur principal car on ne sait pas si la base distante dispose d'une table spip_resultats ni meme si on aurait le droit d'ecrire dedans
chaine recherchee
table dans laquelle porte la recherche
critere conditionnel sur {recherche?}
serveur de base de donnees
modificateurs de boucle, ie liste des criteres presents
cle primaire de la table de recherche
Generer le select et where qui contiennent explicitement les id et points (ie comme dans SPIP 1.9.x) quand on fait une recherche sur une table externe
generer_select_where_explicites(string $table, string $primary, array<string|int, mixed> $rows, string $serveur) : array<string|int, mixed>
Preselectionner la rubrique lors de la creation desactive par defaut suite a remontee utilisateur mais activable par define ou surchargeable
inc_preselectionner_parent_nouvel_objet_dist(string $objet, array<string|int, mixed> $row) : string
Uses boite_ouvrir
debut_cadre(mixed $style[, mixed $icone = '' ][, mixed $fonction = '' ][, mixed $titre = '' ][, mixed $id = '' ][, mixed $class = '' ][, mixed $padding = true ]) : mixed
Uses boite_fermer
fin_cadre() : mixed
Uses boite_ouvrir
debut_cadre_relief([mixed $icone = '' ][, mixed $dummy = '' ][, mixed $fonction = '' ][, mixed $titre = '' ][, mixed $id = '' ][, mixed $class = '' ]) : mixed
Uses boite_fermer
fin_cadre_relief() : mixed
Uses boite_ouvrir
debut_cadre_enfonce([mixed $icone = '' ][, mixed $dummy = '' ][, mixed $fonction = '' ][, mixed $titre = '' ][, mixed $id = '' ][, mixed $class = '' ]) : mixed
Uses boite_fermer
fin_cadre_enfonce() : mixed
Uses boite_ouvrir
debut_cadre_sous_rub([mixed $icone = '' ][, mixed $dummy = '' ][, mixed $fonction = '' ][, mixed $titre = '' ][, mixed $id = '' ][, mixed $class = '' ]) : mixed
Uses boite_fermer
fin_cadre_sous_rub() : mixed
Uses boite_ouvrir
debut_cadre_couleur([mixed $icone = '' ][, mixed $dummy = '' ][, mixed $fonction = '' ][, mixed $titre = '' ][, mixed $id = '' ][, mixed $class = '' ]) : mixed
Uses boite_fermer
fin_cadre_couleur() : mixed
Uses boite_ouvrir
debut_cadre_trait_couleur([mixed $icone = '' ][, mixed $dummy = '' ][, mixed $fonction = '' ][, mixed $titre = '' ][, mixed $id = '' ][, mixed $class = '' ]) : mixed
Uses boite_fermer
fin_cadre_trait_couleur() : mixed
Uses boite_ouvrir
debut_boite_alerte() : mixed
Uses boite_fermer
fin_boite_alerte() : mixed
Uses boite_ouvrir
debut_boite_info() : mixed
Uses boite_fermer
fin_boite_info() : mixed
Affiche le titre d’une page de l’interface privée. Utilisée par la plupart des fichiers `exec/xx.php`.
gros_titre(string $titre[, string $ze_logo = '' ]) : string
Le titre en question
Une image de logo
Code PHP.
bloc_des_raccourcis(mixed $bloc) : mixed
debut_onglet([mixed $classe = 'barre_onglet' ]) : mixed
fin_onglet() : mixed
onglet(mixed $texte, mixed $lien, mixed $onglet_ref, mixed $onglet[, mixed $icone = '' ]) : mixed
Crée un lien précédé d'une icone au dessus du texte
icone_verticale(string $texte, string $lien, string $fond[, string $fonction = '' ][, string $align = '' ][, string $javascript = '' ]) : string
texte du lien
URL 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 horizontale
icone_horizontale(string $texte, string $lien, string $fond[, string $fonction = '' ][, string $dummy = '' ][, string $javascript = '' ]) : string
texte du lien
URL du lien
Objet avec ou sans son extension et sa taille (article, article-24, article-24.png)
Fonction du lien (edit
, new
, del
)
Inutilisé
Javascript ajouté sur le lien
Code HTML du lien
Retourne le code HTML d'un début de cadre pour le centre de page (haut de page)
debut_grand_cadre() : string
Code HTML
Retourne le code HTML d'une fin de cadre pour le centre de page (haut de page)
fin_grand_cadre() : string
Code HTML
Retourne le code HTML du début de la colonne gauche
debut_gauche() : string
Code HTML
Retourne le code HTML de la fin de la colonne
fin_gauche() : string
Code HTML
Retourne le code HTML du changement de colonne (passer de la gauche à la droite)
creer_colonne_droite() : string
Code HTML
Retourne le code HTML de la colonne droite et du centre de page
debut_droite() : string
Code HTML
Retourne la liste des objets édités récemment (si les drapeaux d'édition sont actifs)
liste_objets_bloques(string $exec[, array<string|int, mixed> $contexte = [] ][, array<string|int, mixed>|null $auteur = null ]) : string
Si notre page est une page d'édition d'un objet, on déclare au passage l'auteur comme éditant l'objet
Nom de la page exec en cours
contexte de la page
Session de l'auteur. Sera prise sur l'auteur connecté si non indiquée.
Code HTML
Retourne le code HTML de fin de page de l'interface privée.
fin_page() : string
Elle génère au passage un appel pour déclencher les tâches cron
Code HTML
Retourne des tests javascript à exécuter
html_tests_js() : string
Code HTML
Retourne la liste des mises à jour de SPIP possibles
info_maj_spip() : string
texte présentant la liste des mises à jour existantes
Retourne les informations de copyright (version de SPIP, de l'écran de sécurité) pour le pied de page de l'espace privé
info_copyright() : string
Code HTML
Crée l'affichage des listes de rubriques dans le privé
enfant_rub(int $collection[, int $debut = 0 ][, int $limite = 500 ]) : array<string|int, mixed>
L'identifiant numérique de la rubrique à lister
Le numéro de la pagination si paginé (> 500)
Le pas de pagination si paginé (> 500)
Un tableau des sous rubriques
Affiche les enfants d'une sous rubrique dans un bloc dépliable (Utilisé dans les pages du privé)
sous_enfant_rub(int $collection2) : string
L'identifiant numérique de la rubrique parente
Le contenu du bloc dépliable
Affiche la liste des rubriques enfants d'une rubrique (Utilisé dans les pages du privé notamment ?exec=rubriques)
afficher_enfant_rub([int $id_rubrique = 0 ]) : string
Si plus de 500 rubriques enfants, on pagine par 500 les résultats
L'identifiant numérique de la rubrique parente (0 par défaut, la racine)
Le contenu textuel affiché, la liste des sous rubriques
Afficher la puce statut d'un objet
inc_puce_statut_dist(int $id_objet, string $statut, int $id_parent, string $type[, bool $ajax = false ][, bool $menu_rapide = _ACTIVER_PUCE_RAPIDE ]) : string
Utilise une fonction spécifique pour un type d'objet si elle existe, tel que puce_statut_$type_dist(), sinon tente avec puce_statut_changement_rapide().
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
Indique si l'on peut changer le statut, ou si on l'affiche simplement
Code HTML de l'image de puce de statut à insérer (et du menu de changement si présent)
Récuperer l'image correspondant au statut pour un objet éditorial indiqué
statut_image(string $objet, string $statut) : string|null
Retrouve l'image correspondant au statut, telle que declarée dans
declarer_tables_objets_sql
sous la forme :
```
array(
'imagepardefaut.png',
'statut1' => 'imagestatut1.png',
'statut2' => 'imagestatut2.png',
...
)
```
Mettre une chaine vide pour ne pas avoir d'image pour un statut particulier.
Si rien n'est declaré et que le statut est dans un des cas connus habituels (prepa, prop, publie, refuse, poubelle), alors on renvoie l'image par défaut pour ce statut
null si pas capable de déterminer l'image
Récupérer le titre correspondant au statut pour un objet éditorial indiqué
statut_titre(string $objet, string $statut) : string
Retrouve le titre correspondant au statut, tel qu'il a été declaré dans
declarer_tables_objets_sql
sous la forme :
```
array(
'titre par defaut',
'statut1' => 'titre statut 1',
'statut2' => 'titre statut 2',
...
)
Mettre une chaine vide pour ne pas avoir de titre pour un statut particulier.
Si rien n'est declaré et que le statut est dans un des cas connus habituels
(prepa, prop, publie, refuse, poubelle), alors on renvoie le texte par défaut pour ce statut
Recuperer le texte correspondant au choix de statut, tel que declare dans declarer_tables_objets_sql sous la forme array('statut1'=>'texte statut 1','statut2'=>'texte statut 2' ...) mettre une chaine vide pour ne pas proposer un statut les statuts seront proposes dans le meme ordre que dans la declaration
statut_texte_instituer(string $objet, string $statut) : string
si rien de declare et que le statut est dans les cas connus (prepa, prop, publie, refuse, poubelle) renvoyer le texte par defaut
Afficher la puce statut d'un auteur
puce_statut_auteur_dist(int $id, string $statut, int $id_parent, string $type[, string $ajax = '' ][, bool $menu_rapide = _ACTIVER_PUCE_RAPIDE ]) : string
Ne semble plus servir : desactive Hack de compatibilite: les appels directs ont un $type != 'auteur' si l'auteur ne peut pas se connecter
puce_statut_rubrique_dist(mixed $id, mixed $statut, mixed $id_rubrique, mixed $type[, mixed $ajax = '' ][, mixed $menu_rapide = _ACTIVER_PUCE_RAPIDE ]) : mixed
Retourne le contenu d'une puce avec changement de statut possible si on en a l'autorisation, sinon simplement l'image de la puce
puce_statut_changement_rapide(int $id, string $statut, int $id_rubrique[, string $type = 'article' ][, bool $ajax = false ][, bool $menu_rapide = _ACTIVER_PUCE_RAPIDE ]) : string
Identifiant de l'objet
Statut actuel de l'objet
Identifiant du parent, une rubrique
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
Indique si l'on peut changer le statut, ou si on l'affiche simplement
Code HTML de l'image de puce de statut à insérer (et du menu de changement si présent)
afficher_script_statut(mixed $id, mixed $type, mixed $n, mixed $img, mixed $statut, mixed $titre[, mixed $act = '' ]) : mixed
puce_statut(mixed $statut[, mixed $atts = '' ]) : mixed
Ajouter une tâche à la file
queue_add_job(string $function, string $description[, array<string|int, mixed> $arguments = [] ][, string $file = '' ][, bool $no_duplicate = false ][, int $time = 0 ][, int $priority = 0 ]) : int
Les tâches sont ensuites exécutées par date programmée croissant/priorité décroissante
The function name to call.
A human-readable description of the queued job.
Optional array of arguments to pass to the function.
Optional file path which needs to be included for $fucntion.
If TRUE, do not add the job to the queue if one with the same function and arguments already exists. If 'function_only' test of existence is only on function name (for cron job)
time for starting the job. If 0, job will start as soon as possible
-10 (low priority) to +10 (high priority), 0 is the default
id of job
Purger la file de tâche et reprogrammer les tâches périodiques
queue_purger() : mixed
Retirer une tache de la file d'attente
queue_remove_job(int $id_job) : int|bool
id de la tache a retirer
Associer une tache avec un objet
queue_link_job(int $id_job, array<string|int, mixed> $objets) : mixed
id de la tache a lier
peut être un simple tableau array('objet'=>'article','id_objet'=>23) ou un tableau composé de tableaux simples pour lieur plusieurs objets en une fois
Dissocier une tache d'un objet
queue_unlink_job(int $id_job) : mixed
id de la tache à dissocier
Lancer une tache decrite par sa ligne SQL
queue_start_job(array<string|int, mixed> $row) : mixed
describe the job, with field of table spip_jobs
return the result of job
Exécute les prochaînes tâches cron et replanifie les suivantes
queue_schedule([array<string|int, mixed> $force_jobs = null ]) : null|bool
Prend une par une les tâches en attente et les lance, dans la limite d'un temps disponible total et d'un nombre maxi de tâches
La date de la prochaine tâche à exécuter est mise à jour après chaque chaque tâche finie afin de relancer le scheduler uniquement quand c'est nécessaire
list of id_job to execute when provided
Terminer un job au status _JQ_PENDING
queue_close_job(array<string|int, mixed> &$row, int $time[, int $result = 0 ]) : mixed
Récuperer des erreurs autant que possible en terminant la gestion de la queue
queue_error_handler() : mixed
Tester si une tâche était une tâche périodique à reprogrammer
queue_is_cron_job(string $function, string $inclure) : bool|int
Nom de la fonction de tâche
Nom de l'inclusion contenant la fonction
Périodicité de la tâche en secondes, si tâche périodique, sinon false.
Mettre a jour la date du prochain job a lancer Si une date est fournie (au format time unix) on fait simplement un min entre la date deja connue et celle fournie (cas de l'ajout simple ou cas $next_time=0 car l'on sait qu'il faut revenir ASAP)
queue_update_next_job_time([int $next_time = null ]) : mixed
temps de la tache ajoutee ou 0 pour ASAP
Mettre a jour la date de prochain job
queue_set_next_job_time(int $next) : mixed
Déclenche le cron en asynchrone ou retourne le code HTML pour le déclencher
queue_affichage_cron() : string
Retourne le HTML à ajouter à la page pour declencher le cron ou rien si on a réussi à le lancer en asynchrone.
Un verrou (cron.lock) empêche l'exécution du cron plus d'une fois par seconde.
Lancer le cron via un hit http sans attendre le resultat
queue_lancer_url_http_async(string $url_cron) : bool
: true si l'url a pu être appelée en asynchrone, false sinon
inc_recherche_to_array_dist(mixed $recherche[, mixed $options = [] ]) : mixed
Donne la liste des champs/tables où l'on sait chercher / remplacer avec un poids pour le score
liste_des_champs() : array<string|int, mixed>
Utilise l'information rechercher_champs
sur la déclaration
des objets éditoriaux.
Couples (type d'objet => Couples (champ => score))
liste_des_jointures() : mixed
expression_recherche(mixed $recherche, mixed $options) : mixed
Effectue une recherche sur toutes les tables de la base de données
recherche_en_base([string $recherche = '' ][, null|array<string|int, mixed>|string $tables = null ][, array<string|int, mixed> $options = [] ][, string $serveur = '' ]) : array<string|int, mixed>
Le terme de recherche
{ @var pour $toutvoir éviter autoriser(voir) @var pour $flags éviter les flags regexp par défaut (UimsS) @var pour $champs retourner les champs concernés @var pour $score retourner un score }
remplace_en_base([mixed $recherche = '' ][, mixed $remplace = null ][, mixed $tables = null ][, mixed $options = [] ]) : mixed
Vérifie qu'un objet dispose de rôles fonctionnels
roles_presents(string $objet[, string $objet_destination = '' ]) : bool|array<string|int, mixed>
Retourne une description des rôles si c'est le cas
Objet source qui possède la table de liaison
Objet sur quoi on veut lier Si défini, le retour ne contient que les roles possibles pour cet objet Sinon retourne tous les roles possibles quelque soit l'objet
false si rôles indisponibles on non déclarés array : description des roles applicables dans 3 index : colonne, titres, roles
Retrouve la colonne de liaison d'un rôle si définie entre 2 objets
roles_colonne(string $objet, string $objet_destination) : string
Objet source qui possède la table de liaison
Objet sur quoi on veut lier
Nom de la colonne, sinon vide
Extrait le rôle et la colonne de role d'un tableau de qualification
roles_trouver_dans_qualif(string $objet, string $objet_destination[, array<string|int, mixed> $qualif = [] ]) : array<string|int, mixed>
Calcule également une condition where pour ce rôle.
Pour un objet pouvant recevoir des roles sur sa liaison avec un autre objet, on retrouve le rôle en question dans le tableau de qualification. Si le rôle n'est pas défini dedans, on prend le rôle par défaut déclaré.
Objet source de la liaison
Objet de destination de la liaison
tableau de qualifications array(champ => valeur)
Liste (role, colonne, (array)condition) si role possible Liste ('', '', array()) sinon.
Gérer l'ajout dans la condition where du rôle
roles_creer_condition_role(string $objet_source, string $objet, array<string|int, mixed> $cond[, bool $tous_si_absent = false ]) : array<string|int, mixed>
On ajoute la condition uniquement si la liaison entre les 2 objets a une colonne de rôle !
Objet source (qui possède la table de liens)
Objet de destination
Tableau de conditions where qui peut avoir un index spécial 'role' définissant le role à appliquer ou valant '*' pour tous les roles.
true pour ne pas appliquer une condition sur le rôle s'il n'est pas indiqué dans la liste des conditions entrantes. Autrement dit, on n'applique pas de rôle par défaut si aucun n'est défini.
Liste (Tableau de conditions where complété du role, Colonne du role, role utilisé)
Liste des identifiants dont on ne peut ajouter de rôle
roles_complets(string $objet_source, string $objet, int $id_objet, string $objet_lien) : array<string|int, mixed>
Lister les id objet_source associés à l'objet id_objet via la table de lien objet_lien, et détermine dans cette liste lesquels ont les rôles complets, c'est à dire qu'on ne peut leur affecteur d'autres rôles parmi ceux qui existe pour cette liaison.
Objet dont on veut récupérer la liste des identifiants
Objet sur lequel est liée la source
Identifiant d'objet sur lequel est liée la source
Objet dont on utilise la table de liaison (c'est forcément soit $objet_source, soit $objet)
Liste des identifiants
Liste les roles attribués entre 2 objets/id_objet sur une table de liaison donnée
roles_presents_sur_id(string $id_objet_source, string $objet_source, string $objet, int $id_objet, string $objet_lien) : array<string|int, mixed>
Identifiant de l'objet qu'on lie
Objet qu'on lie
Objet sur lequel est liée la source
Identifiant d'objet sur lequel est liée la source
Objet dont on utilise la table de liaison (c'est forcément soit $objet_source, soit $objet)
Liste des roles
Lister des rôles présents sur une liaion, pour un objet sur un autre, classés par identifiant de l'objet
roles_presents_liaisons(string $objet_source, string $objet, int $id_objet, string $objet_lien) : array<string|int, mixed>|bool
Lister les id objet_source associés à l'objet id_objet via la table de lien objet_lien, et groupe cette liste par identifiant (la clé) et ses roles attribués (tableau de valeur)
On retourne cette liste dans l'index 'ids' et la description des roles pour la liaison dans l'index 'roles' pour éviter le le faire recalculer aux fonctions utilisant celle ci.
Objet dont on veut récupérer la liste des identifiants
Objet sur lequel est liée la source
Identifiant d'objet sur lequel est liée la source
Objet dont on utilise la table de liaison (c'est forcément soit $objet_source, soit $objet)
Lister des rôles connus en base pour une liaion, pour un objet source
roles_connus_en_base(string $objet_source, string $objet, string $objet_lien) : array<string|int, mixed>|bool
On retourne cette liste dans le datalist de saisie libre role.
Objet dont on veut récupérer la liste des identifiants
Objet sur lequel est liée la source
Objet dont on utilise la table de liaison (c'est forcément soit $objet_source, soit $objet)
Recalcule les statuts d'une rubrique
calculer_rubriques_if(int $id_rubrique, array<string|int, mixed> $modifs[, array<string|int, mixed> $infos = [] ][, bool $postdate = false ]) : mixed
Fonction à appeler lorsque le statut d'un objet change dans une rubrique ou que la rubrique est deplacée.
Si le statut passe a "publie", la rubrique et ses parents y passent aussi et les langues utilisees sont recalculées. Conséquences symétriques s'il est depublié.
S'il est deplacé alors qu'il était publiée, double conséquence.
Tout cela devrait passer en SQL, sous forme de Cascade SQL.
Identifiant de la rubrique
Tableau de description des modifications. Peut avoir 2 index, 'statut' étant obligatoire :
Infos sur l'objet modifié : statut_ancien, objet, id_objet…
true pour recalculer aussi la date du prochain article post-daté
Publie une rubrique et sa hiérarchie de rubriques
publier_branche_rubrique(int $id_rubrique) : bool
Fonction à appeler lorsqu'on dépublie ou supprime quelque chose dans une rubrique.
Identifiant de la rubrique
true si le statut change effectivement
Dépublie si nécessaire des éléments d'une hiérarchie de rubriques
depublier_branche_rubrique_if(int $id_rubrique) : bool
Fonction à appeler lorsqu'on dépublie ou supprime quelque chose dans une rubrique.
Identifiant de la rubrique
true si le statut change effectivement
Dépublier une rubrique si aucun contenu publié connu n'est trouvé dedans
depublier_rubrique_if(int $id_rubrique[, string|null $date = null ]) : bool
Identifiant de la rubrique à tester
Date pour le calcul des éléments post-datés. null = date actuelle.
true si la rubrique a été dépubliée
Recalcule des héritages de rubriques
calculer_rubriques() : mixed
Recalcule le statut des rubriques, les langues héritées et la date du prochain article post-daté
Cette fonction est appelée après importation: elle calcule les meta-donnes resultantes et remet de la coherence au cas où la base importée en manquait
Cette fonction doit etre invoquée sans processus concurrent potentiel.
Recalcule l'ensemble des données associées à l'arborescence des rubriques
calculer_rubriques_publiees() : mixed
Attention, faute de SQL transactionnel on travaille sur des champs temporaires afin de ne pas casser la base pendant la demi seconde de recalculs
Recalcule les secteurs et les profondeurs des rubriques (et articles)
propager_les_secteurs() : mixed
Cherche les rubriques ayant des id_secteur ou profondeurs ne correspondant pas avec leur parent, et les met à jour. De même avec les articles et leur id_secteur On procede en iterant la profondeur de 1 en 1 pour ne pas risquer une boucle infinie sur reference circulaire
Recalcule les langues héritées des sous-rubriques
calculer_langues_rubriques_etape() : bool
Cherche les langues incorrectes de sous rubriques, qui doivent hériter de la rubrique parente lorsque langue_choisie est différent de oui, et les corrige.
true si un changement a eu lieu
Recalcule les langues des rubriques et articles
calculer_langues_rubriques() : mixed
Redéfinit la langue du site sur les rubriques sans langue spécifiée (langue_choisie différent de 'oui')
Redéfinit les langues des articles sans langue spécifiée (langue_choisie différent de 'oui') en les rebasant sur la langue de la rubrique parente lorsque ce n'est pas le cas.
Calcule la liste des langues réellement utilisées dans le site public
calculer_langues_utilisees([string $serveur = '' ]) : string
La recherche de langue est effectuée en recréant une boucle pour chaque objet éditorial gérant des langues de sorte que les éléments non publiés ne sont pas pris en compte.
Nom du connecteur à la base de données
Liste des langues utilisées séparées par des virgules
Calcul d'une branche de rubrique
calcul_branche_in(string|int|array<string|int, mixed> $id) : string
Liste des id_rubrique contenues dans une rubrique donnée
Identifiant de la, ou des rubriques noeuds
Liste des identifiants séparés par des virgules, incluant les rubriques noeuds et toutes leurs descendances
Calcul d'une hiérarchie
calcul_hierarchie_in(string|int|array<string|int, mixed> $id[, bool $tout = true ]) : string
Liste des id_rubrique contenant une rubrique donnée
Identifiant de la, ou des rubriques dont on veut obtenir les hierarchies
inclure la rubrique de depart dans la hierarchie ou non
Liste des identifiants séparés par des virgules, incluant les rubriques transmises et toutes leurs parentées
Calcul d'une branche de rubriques
inc_calcul_branche_in_dist(string|int|array<string|int, mixed> $id) : string
Liste des id_rubrique contenues dans une rubrique donnée pour le critere {branche}
Fonction surchargeable pour optimisation
Identifiant de la, ou des rubriques noeuds
Liste des identifiants séparés par des virgules, incluant les rubriques noeuds et toutes leurs descendances
Calcul d'une hiérarchie
inc_calcul_hierarchie_in_dist(string|int|array<string|int, mixed> $id[, bool $tout = true ]) : string
Liste des id_rubrique contenant une rubrique donnée, contrairement à la fonction calcul_branche_in() qui calcule les rubriques contenues
Identifiant de la, ou des rubriques dont on veut obtenir les hierarchies
inclure la rubrique de depart dans la hierarchie ou non
Liste des identifiants séparés par des virgules, incluant les rubriques transmises et toutes leurs parentées
Calcule la date du prochain article post-daté
calculer_prochain_postdate([bool $check = false ]) : mixed
Appelée lorsqu'un (ou plusieurs) article post-daté arrive à terme ou est redaté
true pour affecter le statut des rubriques concernées.
Crée une arborescence de rubrique
creer_rubrique_nommee(string $titre[, int $id_parent = 0 ][, string $serveur = '' ]) : int
creer_rubrique_nommee('truc/machin/chose') va créer une rubrique truc, une sous-rubrique machin, et une sous-sous-rubrique chose, sans créer de rubrique si elle existe déjà à partir de $id_parent (par défaut, à partir de la racine)
NB: cette fonction est très pratique, mais pas utilisée dans le core pour rester légère elle n'appelle pas calculer_rubriques()
Titre des rubriques, séparés par des /
Identifiant de la rubrique parente
Nom du connecteur à la base de données
Identifiant de la rubrique la plus profonde.
Génère ou vérifie une action sécurisée
inc_securiser_action_dist([string $action = '' ][, string $arg = '' ][, string $redirect = '' ][, bool|int|string $mode = false ][, string|int $att = '' ][, bool $public = false ]) : array<string|int, mixed>|string
Interface d'appel:
_request('arg')
, ou exit.id_auteur pour lequel generer l'action en mode url ou array() atributs du formulaire en mode formulaire
Confirmer avant suppression si on arrive par un bouton action a appeler dans la fonction action avant toute action destructrice
demander_confirmation_avant_action(string $titre, string $titre_bouton[, string|null $url_action = null ]) : bool
demander_confirmation_avant_action("Supprimer l'article xxxx", "Oui je veux le supprimer");
L'action affiche le formulaire de demande de confirmation sans rendre la main au premier appel, si l'utilisateur clique, cela relance l'action avec un confirm et quand on repasse ici, la fonction ne fera rien et l'action se finira normalement
Retourne une URL ou un formulaire sécurisés
securiser_action_auteur(string $action, string $arg[, string $redirect = '' ][, bool|int|string $mode = false ][, string|int $att = '' ][, bool $public = false ]) : array<string|int, mixed>|string
Caracteriser un auteur : l'auteur loge si $id_auteur=null
caracteriser_auteur([int|null $id_auteur = null ]) : array<string|int, mixed>
Calcule une cle securisee pour une action et un auteur donnes utilisee pour generer des urls personelles pour executer une action qui modifie la base et verifier la legitimite de l'appel a l'action
_action_auteur(string $action, int $id_auteur, string|null $pass, string $alea) : string
_action_get_alea(string $alea) : string
Calculer le hash qui signe une action pour un auteur
calculer_action_auteur(string $action[, int|null $id_auteur = null ]) : string
Verifier le hash de signature d'une action toujours exclusivement pour l'auteur en cours
verifier_action_auteur(string $action, string $hash) : bool
Renvoyer le secret du site (le generer si il n'existe pas encore)
secret_du_site() : string
Calculer une signature valable pour une action et pour le site
calculer_cle_action(string $action) : string
Verifier la cle de signature d'une action valable pour le site
verifier_cle_action(string $action, string $cle) : bool
Calculer le token de prévisu
calculer_token_previsu(string $url[, int|null $id_auteur = null ][, string $alea = 'alea_ephemere' ]) : string
Il permettra de transmettre une URL publique d’un élément non encore publié, pour qu’une personne tierce le relise. Valable quelques temps.
Url à autoriser en prévisu
qui génère le token de prévisu. Null utilisera auteur courant.
Nom de l’alea à utiliser
Token, de la forme "{id}*{hash}"
Vérifie un token de prévisu
verifier_token_previsu(string $token) : false|array<string|int, mixed>
Découpe le token pour avoir l’id_auteur, Retrouve à partir de l’url un objet/id_objet en cours de parcours Recrée un token pour l’auteur et l’objet trouvé et le compare au token.
Token, de la forme '{id}*{hash}'
False
si echec,Décrire un token de prévisu en session
decrire_token_previsu() : bool|array<string|int, mixed>
Affiche un mini-navigateur ajax positionné sur une rubrique
inc_selectionner_dist(int $sel[, string $idom = '' ][, int $exclus = 0 ][, bool $aff_racine = false ][, bool $recur = true ][, string $do = 'aff' ]) : string
Identifiant de la rubrique
Identifiant dans le dom de l'élément
Type d'action
Code HTML
Construit le sélectionneur de hierarchie
construire_selectionner_hierarchie(string $idom, string $liste, int $racine, string $url, string $name[, string $url_init = '' ]) : string
Identifiant dans le dom de l'élément
Code HTML
Récupère les identifiants de hierarchie d'une rubrique
mini_hier(int $id_rubrique) : array<string|int, mixed>
Liste de tous les id_parent de la rubrique
3 actions sur les sessions, selon le type de l'argument:
inc_session_dist([int|array<string|int, mixed>|bool $auteur = false ]) : bool|null|void
Supprimer toutes les vieilles sessions d'un auteur
supprimer_sessions(int $id_auteur[, bool $toutes = true ][, bool $actives = true ]) : mixed
Cette fonction efface toutes les sessions appartenant a l'auteur On en profite pour effacer toutes les sessions creees il y a plus de 4*RENOUVELLE_ALEA Tenir compte de l'ancien format ou les noms commencaient par "session" et du meme coup des repertoires plats
Attention : id_auteur peut etre negatif (cas des auteurs temporaires pendant le dump)
Identifiant d'auteur dont on veut supprimer les sessions
Supprimer aussi les vieilles sessions des autres auteurs ?
false pour ne pas supprimer les sessions valides de $id_auteur. false revient donc a uniquement supprimer les vieilles sessions !
Ajoute une session pour l'auteur décrit par un tableau issu d'un SELECT-SQL
ajouter_session(array<string|int, mixed> $auteur) : bool|string
Description de la session de l'auteur. Peut contenir (par exemple) les clés : id_auteur, nom, login, email, statut, lang, ...
Calcule le temps de validité en seconde du cookie de session
definir_duree_cookie_session(array<string|int, mixed> $auteur) : int
Applique un coefficient multiplicateur à la durée de renouvellement de l'alea
(noté ensuite dR
, valant 12h par défaut) pour déterminer la durée du cookie.
2 * dR
, par défaut20 * dR
si le visiteur a indiqué vouloir rester connecté quelques jours
sur le formulaire de login (la clé cookie
vaut alors oui
)c * dR
, un coeficient défini manuellement si la clé cookie
est numériqueDescription de l'auteur
Durée en secondes
Lire le cookie de session et le valider de façon centralisée
lire_cookie_session([bool $accepter_test = false ]) : string|null
Annuler le cookie de session
effacer_cookie_session() : void
Prolonger / Changer la valeur du cookie de session
set_cookie_session([string|null $valeur_cookie = null ][, int $expires = 0 ]) : string|null
nouveau cookie (string), prolonger le cookie existant (null)
timestamp d'expiration
Vérifie si le cookie spip_session indique une session valide
verifier_session([bool $change = false ]) : bool|int|null
Si oui, la decrit dans le tableau $visiteur_session et retourne id_auteur La rejoue si IP change puis accepte le changement si $change=true
Retourne false en cas d'echec, l'id_auteur de la session si defini, null sinon
Lire une valeur dans la session SPIP
session_get(string $nom) : mixed|null
Clé dont on souhaite la valeur
Valeur, si trouvée, null
sinon.
Ajouter une donnée dans la session SPIP
session_set(string $nom[, mixed $val = null ]) : void|array<string|int, mixed>
En fin de hit, synchroniser toutes les sessions
terminer_actualiser_sessions() : mixed
Mettre à jour les sessions existantes pour un auteur
actualiser_sessions(array<string|int, mixed> $auteur[, array<string|int, mixed> $supprimer_cles = [] ]) : mixed
Quand on modifie une fiche auteur on appelle cette fonction qui va mettre à jour les fichiers de session de l'auteur en question. (auteurs identifiés seulement)
Ne concerne que les sessions des auteurs loges (id_auteur connu)
Liste des clés à supprimer des tableaux de sessions
lister les sessions et en verifier le nombre maxi en supprimant les plus anciennes si besoin https://core.spip.net/issues/3807
lister_sessions_auteur(int $id_auteur[, int $nb_max = null ]) : array<string|int, mixed>
Préparer le tableau de session avant écriture
preparer_ecriture_session(array<string|int, mixed> $auteur) : array<string|int, mixed>
Nettoyage de quelques variables sensibles, et appel d'un pipeline
Ecrire le fichier d'une session
ecrire_fichier_session(string $fichier, array<string|int, mixed> $auteur) : bool
Calculer le chemin vers le fichier de session
chemin_fichier_session(string $alea, string $cookie_session[, bool $tantpis = false ]) : string
Calculer le nom du fichier session
Use chemin_fichier_session()
with lire_cookie_session()
as 2nd parameter
fichier_session(string $alea[, bool $tantpis = false ]) : string
Code à insérer par `inc/presentation` pour rejouer la session
rejouer_session() : string
On verifie l'IP et le nom du navigateur
hash_env() : string
Démarre une session PHP si ce n'est pas déjà fait.
spip_php_session_start() : bool
True si une session PHP est ouverte.
Indique si une sesssion PHP est active
is_php_session_started() : bool
true si une session PHP est active
Transforme un texte XML en tableau PHP
inc_simplexml_to_array_dist(string|object $u[, bool $utiliser_namespace = false ]) : array<string|int, mixed>
Transforme un objet SimpleXML en tableau PHP http://www.php.net/manual/pt_BR/book.simplexml.php#108688 xaviered at gmail dot com 17-May-2012 07:00
xmlObjToArr(object $obj[, bool $utiliser_namespace = false ]) : array<string|int, mixed>
Charger une image SVG a partir d'une source qui peut etre - l'image svg deja chargee - une data-url - un nom de fichier
svg_charger(string $fichier[, null|int $maxlen = null ]) : false|string
pour limiter la taille chargee en memoire si on lit depuis le disque et qu'on a besoin que du debut du fichier
false si on a pas pu charger l'image
Lire la balise <svg...> qui demarre le fichier et la parser pour renvoyer un tableau de ses attributs
svg_lire_balise_svg(string $fichier) : array<string|int, mixed>|bool
Attributs de la balise SVG
svg_lire_attributs(string $img) : array<string|int, mixed>|bool
Nettoyer le code d'une balise <svg> pour en retirer le marqueur utf8-bom, l'entête xml et les commentaires
svg_nettoyer(mixed $svg) : string
Convertir l'attribut widht/height d'un SVG en pixels (approximatif eventuellement, du moment qu'on respecte le ratio)
svg_dimension_to_pixels(string $dimension[, mixed $precision = 2 ]) : bool|float|int
Modifier la balise SVG en entete du source
svg_change_balise_svg(string $svg, string $old_balise_svg, array<string|int, mixed> $attributs) : string
svg_insert_shapes(string $svg, string $shapes[, bool|string $start = true ]) : string
inserer au debut (true) ou a la fin (false)
Clipper le SVG dans une box
svg_clip_in_box(string $svg, int $x, int $y, int $width, int $height) : string
Redimensionner le SVG via le width/height de la balise
svg_redimensionner(string $img, string $new_width, string $new_height) : bool|string
Transformer une couleur extraite du SVG en hexa
svg_couleur_to_hexa(string $couleur) : string
Transformer une couleur extraite du SVG en rgb
svg_couleur_to_rgb(string $couleur) : array<string|int, mixed>
Calculer les dimensions width/heigt/viewBox du SVG d'apres les attributs de la balise <svg>
svg_getimagesize_from_attr(array<string|int, mixed> $attributs) : array<string|int, mixed>
Forcer la viewBox du SVG, en px cree l'attribut viewBox si il n'y en a pas convertit les unites en px si besoin
svg_force_viewBox_px(string $img[, bool $force_width_and_height = false ]) : string
Les manipulations d'image par les filtres images se font en px, on a donc besoin d'une viewBox en px Certains svg produits avec des unites exotiques subiront donc peut etre des deformations...
Extract all colors in SVG
svg_extract_couleurs(string $img) : array<string|int, mixed>|mixed
Redimensionner le SVG via le width/height de la balise
svg_recadrer(string $img, string $new_width, string $new_height, mixed $offset_width, mixed $offset_height[, mixed $background_color = '' ]) : string
Ajouter un background au SVG : un rect pleine taille avec la bonne couleur
svg_ajouter_background(string $img, string $background_color) : string
Ajouter un voile au SVG : un rect pleine taille avec la bonne couleur/opacite, en premier plan
svg_ajouter_voile(string $img, string $background_color, mixed $opacity) : bool|string
Ajouter un background au SVG : un rect pleine taille avec la bonne couleur
svg_transformer(string $img, array<string|int, mixed> $attributs) : string
Ajouter + appliquer un filtre a un svg
svg_apply_filter(string $img, string $filter_def) : bool|string
definition du filtre (contenu de
Filtre blur en utilisant <filter>
svg_filter_blur(string $img, int $blur_width) : string
Filtre grayscale en utilisant <filter>
svg_filter_grayscale(string $img, float $intensity) : bool|string
Filtre sepia en utilisant <filter>
svg_filter_sepia(string $img, float $intensity) : bool|string
FIXME: $intensity unused ?
Ajouter un background au SVG : un rect pleine taille avec la bonne couleur
svg_flip(string $img, mixed $HorV) : string
svg_rotate(string $img, int $angle, float $center_x, float $center_y) : string
angle en degres
centre X de la rotation entre 0 et 1, relatif a la pleine largeur (0=bord gauche, 1=bord droit)
centre Y de la rotation entre 0 et 1, relatif a la pleine hauteur (0=bord top, 1=bord bottom)
Filtrer les couleurs d'un SVG avec une callback (peut etre lent si beaucoup de couleurs)
svg_filtrer_couleurs(string $img, string $callback_filter) : bool|mixed|string
Raccourcis dépendant du sens de la langue
definir_raccourcis_alineas() : array<string|int, mixed>
Tablea ('','')
Traitement des raccourcis de tableaux
traiter_tableau(string $bloc) : string
Ne fait rien ici. Voir plugin Textwheel.
Traitement des listes
traiter_listes(string $texte) : string
Ne fais rien. Voir Plugin Textwheel. (merci a Michael Parienti)
Nettoie un texte, traite les raccourcis autre qu'URL, la typo, etc.
traiter_raccourcis(string $letexte) : string
Ne fais rien ici. Voir plugin Textwheel.
Échapper et affichier joliement les `<script` et `<iframe`.
echappe_js(string $t[, string $class = ' class = "echappe-js"' ]) : string
..
Attributs HTML du conteneur à ajouter
Empêcher l'exécution de code PHP et JS
interdire_scripts(string $arg[, int $mode_filtre = null ]) : string
Sécurité : empêcher l'exécution de code PHP, en le transformant en joli code dans l'espace privé. Cette fonction est aussi appelée par propre et typo.
De la même manière, la fonction empêche l'exécution de JS mais selon le mode de protection passe en argument
Il ne faut pas désactiver globalement la fonction dans l'espace privé car elle protège aussi les balises des squelettes qui ne passent pas forcement par propre ou typo après si elles sont appelées en direct
Code à protéger
Mode de protection -1 : protection dans l'espace privé et public 0 : protection dans l'espace public 1 : aucune protection utilise la valeur de la globale filtrer_javascript si non fourni
Code protégé
Applique la typographie générale
typo(string $letexte[, bool|string $echapper = true ][, string|null $connect = null ][, array<string|int, mixed> $env = [] ]) : string
Effectue un traitement pour que les textes affichés suivent les règles
de typographie. Fait une protection préalable des balises HTML et SPIP.
Transforme les balises <multi>
texte d'origine
Échapper ?
Nom du connecteur à la bdd
Environnement (pour les calculs de modèles)
texte transformé
Corrige la typographie
corriger_typo(string $letexte[, string $lang = '' ]) : string
Applique les corrections typographiques adaptées à la langue indiquée.
texte
Langue
texte
Paragrapher seulement
paragrapher(string $letexte[, bool $forcer = true ]) : string
/!\ appelée dans inc/filtres et public/composer
Ne fait rien ici. Voir plugin Textwheel
Harmonise les retours chariots et mange les paragraphes HTML
traiter_retours_chariots(string $letexte) : string
Ne sert plus
texte
texte
Transforme les raccourcis SPIP, liens et modèles d'un texte en code HTML
propre(string $t[, string|null $connect = null ][, array<string|int, mixed> $env = [] ]) : string
Filtre à appliquer aux champs du type #TEXTE*
texte avec des raccourcis SPIP
Nom du connecteur à la bdd
Environnement (pour les calculs de modèles)
texte transformé
Retourne une image d'une puce
definir_puce() : string
Le nom de l'image est déterminé par la globale 'puce' ou 'puce_prive' ou les mêmes suffixées de '_rtl' pour ce type de langues.
Code HTML de la puce
Preparer le markup html pour les extraits de code en ligne ou en bloc
spip_balisage_code(string $corps[, bool $bloc = false ][, string $attributs = '' ][, string $langage = '' ]) : string
Echapper les elements perilleux en les passant en base64
code_echappement(string $rempl[, string $source = '' ][, bool $no_transform = false ][, string|null $mode = null ]) : string
Creer un bloc base64 correspondant a $rempl ; au besoin en marquant une $source differente ; le script detecte automagiquement si ce qu'on echappe est un div ou un span
traiter_echap_html_dist(mixed $regs[, mixed $options = [] ]) : mixed
traiter_echap_pre_dist(mixed $regs[, mixed $options = [] ]) : mixed
traiter_echap_code_dist(mixed $regs[, mixed $options = [] ]) : mixed
traiter_echap_cadre_dist(mixed $regs[, mixed $options = [] ]) : mixed
traiter_echap_frame_dist(mixed $regs[, mixed $options = [] ]) : mixed
traiter_echap_script_dist(mixed $regs[, mixed $options = [] ]) : mixed
pour $source voir commentaire infra (echappe_retour)
echappe_html(string $letexte[, string $source = '' ][, bool $no_transform = false ][, array<string|int, mixed>|null $html_tags = null ][, string $callback_prefix = '' ][, array<string|int, mixed> $callback_options = [] ]) : string|array<string|int, string>
déprécié, cet argument ne doit plus être utilisé, utiliser directement Spip\Texte\Collecteur\HtmlTag::proteger_balisesHtml dans ce cas
le passage d'une preg au format string est déprécié
Réinserer les échappements des modèles
retablir_echappements_modeles(mixed $texte) : mixed
Traitement final des echappements Rq: $source sert a faire des echappements "a soi" qui ne sont pas nettoyes par propre() : exemple dans multi et dans typo()
echappe_retour(string $letexte[, string $source = '' ][, string $filtre = '' ]) : array<string|int, mixed>|mixed|string|array<string|int, string>
echappe_retour_modeles(mixed $letexte[, mixed $interdire_scripts = false ]) : mixed
Coupe un texte à une certaine longueur.
couper(string $texte[, int $taille = 50 ][, string $suite = null ]) : string
Il essaie de ne pas couper les mots et enlève le formatage du texte.
Si le texte original est plus long que l’extrait coupé, alors des points
de suite sont ajoutés à l'extrait, tel que (…)
.
texte à couper
Taille de la coupe
Points de suite ajoutés.
texte coupé
protege_js_modeles(mixed $texte) : mixed
echapper_faux_tags(mixed $letexte) : mixed
Si le html contenu dans un texte ne passe pas sans transformation a travers safehtml on l'echappe si safehtml ne renvoie pas la meme chose on echappe les < en < pour montrer le contenu brut
echapper_html_suspect(string $texte[, array<string|int, mixed> $options = [] ][, string $connect = null ][, array<string|int, mixed> $env = [] ]) : string
bool strict : etre strict ou non sur la detection string wrap_suspect : si le html est suspect, on wrap l'affichage avec la balise indiquee dans cette option via la fonction wrap() string texte_source_affiche : si le html est suspect, on utilise ce texte pour l'affichage final et pas le texte utilise pour la detection
Sécurise un texte HTML
safehtml(string $t) : string
Échappe le code PHP et JS. Applique en plus safehtml si un plugin le définit dans inc/safehtml.php
Permet de protéger les textes issus d'une origine douteuse (forums, syndications...)
texte à sécuriser
texte sécurisé
Detecter si un texte est "safe" ie non modifie significativement par safehtml()
is_html_safe(string $texte) : bool
Supprime les modèles d'image d'un texte
supprime_img(string $letexte[, string|null $message = null ]) : string
Fonction en cas de texte extrait d'un serveur distant:
on ne sait pas (encore) rapatrier les documents joints
Sert aussi à nettoyer un texte qu'on veut mettre dans un <a>
etc.
texte à nettoyer
Message de remplacement pour chaque image enlevée
texte sans les modèles d'image
Rechercher tous les lang/file dans le path qui seront ensuite chargés dans l'ordre du path
find_langs_in_path(string $file[, string $dirname = 'lang' ]) : array<string|int, mixed>
Version dédiée et optimisée pour cet usage de find_in_path
Nom du fichier cherché, tel que mots_fr.php
Nom du répertoire de recherche
Liste des fichiers de langue trouvés, dans l'ordre des chemins
Recherche le ou les fichiers de langue d'un module de langue
chercher_module_lang(string $module[, string $lang = '' ]) : array<string|int, mixed>
Nom du module de langue, tel que mots
ou ecrire
Langue dont on veut obtenir les traductions.
Paramètre optionnel uniquement si le module est local
Liste des fichiers touvés pour ce module et cette langue.
Charge en mémoire les couples cle/traduction d'un module de langue et une langue donnée
charger_langue(string $lang[, string $module = 'spip' ]) : mixed
Interprête un fichier de langue pour le module et la langue désignée
s'il existe, et sinon se rabat soit sur la langue principale du site
(définie par la meta langue_site
), soit sur le français.
Définit la globale idx_lang
qui sert à la lecture du fichier de langue
(include) et aux surcharges via surcharger_langue()
Code de langue
Nom du module de langue
Retourne les entrées d’un fichier de langue
lire_fichier_langue(string $fichier) : string
Les fichiers de langue retournent un array [ cle => valeur ].
Chemin du fichier de langue (un fichier PHP)
Surcharger le fichier de langue courant avec un ou plusieurs autres
surcharger_langue(array<string|int, mixed> $fichiers) : mixed
Charge chaque fichier de langue dont les chemins sont transmis et surcharge les infos de cette langue/module déjà connues par les nouvelles données chargées. Seule les clés nouvelles ou modifiées par la surcharge sont impactées (les clés non présentes dans la surcharge ne sont pas supprimées !).
La fonction suppose la présence de la globale idx_lang
indiquant
la destination des couples de traduction, de la forme
i18n_{$module}_{$lang}
Liste des chemins de fichiers de langue à surcharger.
Traduire une chaine internationalisée
inc_traduire_dist(string $ori, string $lang[, bool $raw = false ]) : string|Description
Lorsque la langue demandée n'a pas de traduction pour la clé de langue
transmise, la fonction cherche alors la traduction dans la langue
principale du site (défini par la meta langue_site
), puis, à défaut
dans la langue française.
Les traductions sont cherchées dans les modules de langue indiqués.
Par exemple le module mots
dans la clé mots:titre_mot
, pour une
traduction es
(espagnol) provoquera une recherche dans tous les fichiers
lang\mots_es.php
.
Des surcharges locales peuvent être présentes également
dans les fichiers lang/local_es.php
ou lang/local.php
Clé de traduction, tel que bouton_enregistrer
ou mots:titre_mot
Code de langue, la traduction doit se faire si possible dans cette langue
Modifie le texte de traduction pour indiquer des éléments servant au debug de celles-ci. (pour var_mode=traduction)
definir_details_traduction(Description $desc, string $modules) : Description
Les modules qui étaient demandés
Décoder une URL en utilisant les fonctions inverses
urls_decoder_url(string $url[, string $fond = '' ][, array<string|int, mixed> $contexte = [] ][, bool $assembler = false ]) : array<string|int, mixed>
Gère les URLs transformées par le htaccess.
URL à décoder
Fond initial par défaut
contexte initial à prendre en compte
true
si l'URL correspond à l'URL principale de la page qu'on est en train d'assembler
dans ce cas la fonction redirigera automatiquement si besoin
et utilisera les eventuelles globales $_SERVER['REDIRECT_url_propre']
et $_ENV['url_propre']
provenant du htaccess
Liste $fond, $contexte, $url_redirect
.
Si l'url n'est pas valide, $fond restera à la valeur initiale passée. Il suffit d'appeler la fonction sans $fond et de vérifier qu'à son retour celui-ci est non vide pour vérifier une URL
Le bloc qui suit sert a faciliter les transitions depuis le mode 'urls-propres' vers les modes 'urls-standard' et 'url-html'
urls_transition_retrouver_anciennes_url_propres(string $url_propre, string $entite[, array<string|int, mixed> $contexte = [] ]) : array<string|int, mixed>
Le bloc qui suit sert a faciliter les transitions depuis le mode 'urls-html/standard' vers les modes 'urls propres|arbos'
urls_transition_retrouver_anciennes_url_html(string $url, string $entite[, array<string|int, mixed> $contexte = [] ]) : array<string|int, mixed>
Lister les objets pris en compte dans les URLs c'est à dire suceptibles d'avoir une URL propre
urls_liste_objets([bool $preg = true ]) : string|array<string|int, mixed>
Permet de définir si la fonction retourne une chaine avec |
comme séparateur
pour utiliser en preg, ou un array()
Nettoyer une URL, en repérant notamment les raccourcis d'objets
nettoyer_url_page(string $url[, array<string|int, mixed> $contexte = [] ]) : array<string|int, mixed>
Repère les entités comme ?article13
, ?rubrique21
...
les traduisant pour compléter le contexte fourni en entrée
Générer l'URL d'un objet dans l'espace privé
generer_objet_url_ecrire(int|string|null $id, string $objet[, string $args = '' ][, string $ancre = '' ][, bool|null $public = null ][, string $connect = '' ]) : string
L'URL est calculée en fonction de son état publié ou non, calculé à partir de la déclaration de statut.
Identifiant de l'objet
Type d'objet
Lit un fichier xml donné et renvoie son arbre.
spip_xml_load(string $fichier[, bool $strict = true ][, bool $clean = true ][, int $taille_max = 1048576 ][, string|array<string|int, mixed> $datas = '' ][, int $profondeur = -1 ]) : array<string|int, mixed>|bool
Chemin local ou URL distante du fichier XML
true pour râler si une balise n'est pas correctement fermée, false sinon.
?
Taille maximale si fichier distant
Données à envoyer pour récupérer le fichier distant
?
Parse une chaine XML donnée et retourne un tableau.
spip_xml_parse(string &$texte[, bool $strict = true ][, bool $clean = true ][, int $profondeur = -1 ]) : array<string|int, mixed>|bool
texte XML
true pour râler si une balise n'est pas correctement fermée, false sinon.
?
?
spip_xml_aplatit(mixed $arbre[, mixed $separateur = ' ' ]) : mixed
spip_xml_tagname(mixed $tag) : mixed
spip_xml_decompose_tag(mixed $tag) : mixed
Recherche dans un arbre XML généré par `spip_xml_parse()` (ou une branche de cet arbre) les clés de l'arbre qui valident la regexp donnée.
spip_xml_match_nodes(string $regexp, array<string|int, mixed> &$arbre, array<string|int, mixed> &$matches[, bool $init = true ]) : bool
Les branches qui valident la regexp sont retournées dans le tableau $matches
.
Expression régulière
Arbre XML
Branches de l'arbre validant la rexgep
?
false si aucun élément ne valide l'expression régulière, true sinon.
Affiche l'étape 0 d'installation : écran d'accueil.
install_etape__dist() : mixed
Affichage de l'étape 1 d'installation : tests des répertoires et hébergement ; demande d'identifiants de connexion à la BDD
install_etape_1_dist() : mixed
Teste que l'hébergement est compatible, que les répertoires qui doivent être accessibles en écriture le sont effectivement, auquel cas demande les identifiants de connexion à une base de données
install_etape_2_dist() : mixed
install_etape_2_bases(mixed $login_db, mixed $server_db) : mixed
install_etape_2_form(mixed $hidden, mixed $checked, mixed $res, mixed $etape) : mixed
install_bases(mixed $adresse_db, mixed $login_db, mixed $pass_db, mixed $server_db, mixed $choix_db, mixed $sel_db, mixed $chmod_db) : mixed
Préparer le préfixe des tables
preparer_prefixe_tables(string $prefixe) : string
Contrairement a ce qui est dit dans le message (trop strict mais c'est pour notre bien), on tolère les chiffres en plus des minuscules. On corrige aussi le préfixe afin qu'il ne commence pas par un chiffre cf https://core.spip.net/issues/3626
Le préfixe demandé
Le préfixe corrigé
install_propose_ldap() : mixed
install_premier_auteur(mixed $email, mixed $login, mixed $nom, mixed $pass, mixed $hidden, mixed $auteur_obligatoire) : mixed
install_etape_3_dist() : mixed
install_etape_3b_dist() : mixed
echouer_etape_3b(mixed $echec) : never
install_etape_4_dist() : mixed
test_ecrire(mixed $my_dir) : mixed
install_etape_chmod_dist() : mixed
install_etape_fin_dist() : mixed
install_verifier_htaccess() : mixed
install_etape_ldap1_dist() : mixed
install_etape_ldap2_dist() : mixed
install_etape_ldap3_dist() : mixed
install_etape_ldap4_dist() : mixed
liste_statuts_ldap() : mixed
install_ldap_correspondances() : mixed
install_etape_ldap5_dist() : mixed
etape_ldap5_save() : mixed
etape_ldap5_suite() : mixed
Créer une boucle sur un itérateur CONDITION
iterateur_CONDITION_dist(Boucle $b) : Boucle
Annonce au compilateur les "champs" disponibles, c'est à dire aucun. Une boucle CONDITION n'a pas de données !
Description de la boucle
Description de la boucle complétée des champs
Créer une boucle sur un itérateur DATA
iterateur_DATA_dist(Boucle $b) : Boucle
Annonce au compilateur les "champs" disponibles, c'est à dire 'cle', 'valeur' et '*' (tout nom possible).
On ne peut effectivement pas connaître à la compilation la structure des données qui seront obtenues. On indique donc au compilateur que toute balise utilisée dans la boucle est possiblement un champ des données reçues.
Description de la boucle
Description de la boucle complétée des champs
file -> tableau
inc_file_to_array_dist(string $data) : array<string|int, mixed>
plugins -> tableau
inc_plugins_to_array_dist() : array<string|int, mixed>
xml -> tableau
inc_xml_to_array_dist(string $data) : array<string|int, mixed>
object -> tableau
inc_object_to_array(object $object) : array<string|int, mixed>
The object to convert
sql -> tableau
inc_sql_to_array_dist(string $data) : array<string|int, mixed>|bool
json -> tableau
inc_json_to_array_dist(string $data) : array<string|int, mixed>|bool
csv -> tableau
inc_csv_to_array_dist(string $data) : array<string|int, mixed>|bool
RSS -> tableau
inc_rss_to_array_dist(string $data) : array<string|int, mixed>|bool
atom, alias de rss -> tableau
inc_atom_to_array_dist(string $data) : array<string|int, mixed>|bool
glob -> tableau lister des fichiers selon un masque, pour la syntaxe cf php.net/glob
inc_glob_to_array_dist(string $data) : array<string|int, mixed>|bool
YAML -> tableau
inc_yaml_to_array_dist(string $data) : bool|array<string|int, mixed>
pregfiles -> tableau lister des fichiers a partir d'un dossier de base et selon une regexp.
inc_pregfiles_to_array_dist(string $dir[, string $regexp = -1 ][, int $limit = 10000 ]) : array<string|int, mixed>|bool
pour la syntaxe cf la fonction spip preg_files
ls -> tableau ls : lister des fichiers selon un masque glob et renvoyer aussi leurs donnees php.net/stat
inc_ls_to_array_dist(string $data) : array<string|int, mixed>|bool
Object -> tableau
XMLObjectToArray(object $object) : array<string|int, mixed>|bool
Créer une boucle sur un itérateur PHP
iterateur_php_dist(Boucle $b, string $iteratorName) : Boucle
Annonce au compilateur les "champs" disponibles, c'est à dire 'cle', 'valeur' et toutes les méthodes de l'itérateur désigné.
Description de la boucle
Nom de l'itérateur à utiliser
Description de la boucle complétée des champs
Supprime toutes les sessions des auteurs si on a pas encore généré de config/cles.php avec son backup
maj2021_supprimer_toutes_sessions_si_aucun_backup_cles() : mixed
Obligera tous les auteurs à se reconnecter :
Mise à jour des bdd Mysql pour réparer les timestamp auto-update absents
maj_timestamp_mysql([mixed $tables = null ]) : mixed
notifications_instituerarticle_dist(mixed $quoi, mixed $id_article, mixed $options) : mixed
Afficher une liste de plugins dans l'interface
plugins_afficher_liste_dist(string $url_page, array<string|int, mixed> $liste_plugins, array<string|int, mixed> $liste_plugins_checked, array<string|int, mixed> $liste_plugins_actifs[, string $dir_plugins = _DIR_PLUGINS ][, string $afficher_un = 'afficher_plugin' ]) : string
affiche_block_initiale(mixed $initiale, mixed $block, mixed $block_actif) : mixed
plugins_afficher_nom_plugin_dist(mixed $url_page, mixed $plug_file, mixed $checked, mixed $actif[, mixed $expose = false ][, mixed $class_li = 'item' ][, mixed $dir_plugins = _DIR_PLUGINS ]) : mixed
plugins_afficher_plugin_dist(mixed $url_page, mixed $plug_file, mixed $checked, mixed $actif[, mixed $expose = false ][, mixed $class_li = 'item' ][, mixed $dir_plugins = _DIR_PLUGINS ]) : mixed
plugin_bouton_config(mixed $nom, mixed $infos, mixed $dir) : mixed
plugin_checkbox(mixed $id_input, mixed $file, mixed $actif) : mixed
plugin_nom(mixed $info, mixed $dir_plugins, mixed $plug_file) : mixed
plugin_resume(mixed $info, mixed $dir_plugins, mixed $plug_file, mixed $url_page) : mixed
plugin_desintalle(mixed $plug_file, mixed $nom[, mixed $dir_plugins = null ]) : mixed
Traduit un type d'état de plugin
plugin_etat_en_clair(string $etat) : string
Si l'état n'existe pas, prendra par défaut 'developpement'
Le type d'état (stable, test, ...)
Traduction de l'état dans la langue en cours
plugin_propre(mixed $texte[, mixed $module = '' ][, mixed $propre = 'propre' ]) : mixed
plugin_typo(mixed $texte[, mixed $module = '' ]) : mixed
affiche_bloc_plugin(mixed $plug_file, mixed $info[, mixed $dir_plugins = null ]) : mixed
formater_credits(mixed $infos[, mixed $sep = ', ' ]) : mixed
plugins_afficher_repertoires_dist(mixed $url_page, mixed $liste_plugins, mixed $liste_plugins_actifs) : mixed
chemin_plug(mixed $racine, mixed $plug) : mixed
tree_open_close_dir(mixed &$current, mixed $target[, mixed $deplie = [] ]) : mixed
Analyser un arbre xml et extraire les infos concernant les boutons et onglets
plugins_extraire_boutons_dist(array<string|int, mixed> $arbre) : array<string|int, mixed>
Extraire les infos de pipeline
plugins_extraire_pipelines_dist(array<string|int, mixed> &$arbre) : mixed
Lecture du fichier de configuration d'un plugin
plugins_get_infos_dist([string|array<string|int, mixed>|bool $plug = false ][, bool $reload = false ][, string $dir = _DIR_PLUGINS ][, bool $clean_old = false ]) : array<string|int, mixed>
plugins_get_infos_un(mixed $plug, mixed $reload, mixed $dir, mixed &$cache) : mixed
lecture d'un texte conforme a la DTD paquet.dtd et conversion en tableau PHP identique a celui fourni par plugin.xml manque la description
plugins_infos_paquet(array<string|int, mixed> $desc[, string $plug = '' ][, string $dir_plugins = _DIR_PLUGINS ]) : array<string|int, mixed>
Verifier le presence des fichiers remarquables options/actions/administrations et le logo et peupler la description du plugin en consequence
paquet_readable_files(array<string|int, mixed> &$tree, string $dir) : mixed
Appeler le validateur, qui memorise le texte dans le tableau "versions" On memorise en plus dans les index de numero de version de SPIP les attributs de la balise rencontree qu'on complete par des entrees nommees par les sous-balises de "paquet", et initialisees par un tableau vide, rempli a leur rencontre.
paquet_debutElement(object $phraseur, string $name, array<string|int, mixed> $attrs) : mixed
La sous-balise "spip", qui ne peut apparaitre qu'apres les autres, reprend les valeurs recuperees precedement (valeurs par defaut)
Appeler l'indenteur pour sa gestion de la profondeur, et memoriser les attributs dans le tableau avec l'oppose de la profondeur comme index, avec '' comme sous-index (les autres sont les attributs)
paquet_textElement(object $phraseur, string $data) : mixed
Si on sait deja que le texte n'est pas valide on ne fait rien.
paquet_finElement(object $phraseur, string $name) : mixed
Pour une balise sans attribut, le traitement est forcement toujours le meme. Pour une balise sans texte, idem mais parce que la DTD est bien fichue
Cas particulier de la balise licence : transformer en lien sur url fournie dans l'attribut lien
info_paquet_licence(object $phraseur, array<string|int, mixed> $attrs, string $texte) : mixed
Cas particulier de la balise chemin : stocker un tableau
info_paquet_chemin(object $phraseur, array<string|int, mixed> $attrs, string $texte) : mixed
Cas particulier de la balise auteur peupler le mail si besoin (en le protegeant, mais est-ce bien la place pour cela ?) et le lien vers le site de l'auteur si fournit
info_paquet_auteur(object $phraseur, array<string|int, mixed> $attrs, string $texte) : mixed
Cas particulier de la balise credit peupler le lien vers le site externe si necessaire
info_paquet_credit(object $phraseur, array<string|int, mixed> $attrs, string $texte) : mixed
Cas particulier de la balise copyright : transformer en lien sur url fournie dans l'attribut lien
info_paquet_copyright(object $phraseur, array<string|int, mixed> $attrs, string $texte) : mixed
Cas particulier de la balise paquet : Remplacer cet index qui ne sert a rien par un index balise=paquet et ajouter la reference a la dtd
info_paquet_paquet(object $phraseur, array<string|int, mixed> $attrs, string $texte) : mixed
Cas particulier sur la balise traduire : Elle n'a pas de 'nom'
info_paquet_traduire(object $phraseur, array<string|int, mixed> $attrs, string $texte) : mixed
Cas particulier de la balise spip : Remplacer cet index qui ne sert a rien par un index balise=spip et ajouter la reference a la dtd
info_paquet_spip(object $phraseur, array<string|int, mixed> $attrs, string $texte) : mixed
Pipelines : plusieurs declarations possibles pour un meme pipeline
info_paquet_pipeline(object $phraseur, array<string|int, mixed> $attrs, string $texte) : mixed
Style : plusieurs declarations possibles.
info_paquet_style(object $phraseur, array<string|int, mixed> $attrs, string $texte) : mixed
Traitement de l'attribut source pour générer en remplacement les attributs url et path
Script : plusieurs declarations possibles.
info_paquet_script(object $phraseur, array<string|int, mixed> $attrs, string $texte) : mixed
Traitement de l'attribut source pour générer en remplacement les attributs url et path
Genie : plusieurs declarations possibles pour les crons
info_paquet_genie(object $phraseur, array<string|int, mixed> $attrs, string $texte) : mixed
Installe ou retire un plugin
plugins_installer_dist(string $plug, string $action[, string $dir_type = '_DIR_PLUGINS' ]) : array<string|int, mixed>|bool
Permet d'installer ou retirer un plugin en incluant les fichiers associés et en lançant les fonctions spécifiques.
test
,false
test
à nouveau.L'index install_test
du tableau résultat est un tableau formé :
Nom du plugin
Nom de l'action (install|uninstall)
Répertoire du plugin
Fonction standard utilisée par defaut pour install/desinstall
spip_plugin_install(string $action, array<string|int, mixed> $infos, string $version_cible) : bool|void
Nom de l'action (install|uninstall)
Tableau des informations du XML du plugin complété par le nom et la table meta
Référence de la version du schéma de données cible
Retourne un tableau des plugins activés sur le site
liste_plugin_actifs() : array<string|int, mixed>
Retourne la meta plugin
désérialisée.
Chaque élément du tableau est lui-même un tableau contenant
les détails du plugin en question : répertoire et version.
Tableau des plugins actifs
plugins_verifie_conformite_dist(mixed $plug, mixed &$arbre[, mixed $dir_plugins = _DIR_PLUGINS ]) : mixed
Ajoute les boutons d'administration de la page s'ils n'y sont pas déjà
affiche_boutons_admin(string $contenu) : string
Insère la feuille de style selon les normes, dans le <head>
puis les boutons.
Feuilles de style admin : d'abord la CSS officielle, puis la perso
Contenu HTML de la page qui va être envoyée au navigateur
Contenu HTML, avec boutons d'administrations et sa CSS
securiser_redirect_action(string $redirect) : string
traiter_appels_actions() : mixed
refuser_traiter_formulaire_ajax() : mixed
traiter_appels_inclusions_ajax() : mixed
traiter_formulaires_dynamiques([mixed $get = false ]) : mixed
assembler(mixed $fond[, string $connect = '' ]) : mixed
Calcul le contexte de la page
calculer_contexte() : array<string|int, mixed>
Un tableau du contexte de la page
Calculer le contexte implicite, qui n'apparait pas dans le ENV d'un cache mais est utilise pour distinguer deux caches differents
calculer_contexte_implicite() : array<string|int, mixed>
auto_content_type(mixed $page) : mixed
inclure_page(mixed $fond, mixed $contexte[, string $connect = '' ]) : mixed
Produire la page et la mettre en cache lorsque c'est necessaire
public_produire_page_dist(string $fond, array<string|int, mixed> $contexte, int $use_cache, string $cache_key, array<string|int, mixed> $contexte_cache, array<string|int, mixed> &$page, int &$lastinclude[, string $connect = '' ]) : array<string|int, mixed>
inserer_balise_dynamique(mixed $contexte_exec, mixed $contexte_compil) : mixed
Inclusion de balise dynamique Attention, un appel explicite a cette fonction suppose certains include
inclure_balise_dynamique(string|array<string|int, mixed> $texte[, bool $echo = true ][, array<string|int, mixed> $contexte_compil = [] ]) : string|void
Faut-il faire echo ou return
contexte de la compilation
message_page_indisponible(mixed $page, mixed $contexte) : mixed
gerer le flag qui permet de reperer qu'une balise dynamique a ete inseree depuis un modele utilisee dans les #FORMULAIRE_xx
arguments_balise_dyn_depuis_modele(string|null $arg[, string $operation = 'set' ]) : mixed
creer_contexte_de_modele(mixed $args) : mixed
Router eventuellement un modele vers un autre * le modele doit etre declare dans la liste 'modeles' d'une table objet * il faut avoir un routeur de modele declare pour le meme objet
styliser_modele(string $modele, int $id[, null|array<string|int, mixed> $contexte = null ]) : string
contexte eventuel : attention sa presence n'est pas garantie et il ne doit etre utilise que pour trouver le id_xx si pas de $id fourni (cas appel depuis styliser)
Calcule le modele et retourne la mini-page ainsi calculee
inclure_modele(string $type, int $id, array<string|int, mixed> $params, array<string|int, mixed> $lien[, string $connect = '' ][, array<string|int, mixed> $env = [] ]) : string|false
Nom du modele
Paramètres du modèle
Informations du lien entourant l'appel du modèle en base de données
Sanitizer une valeur venant de _request() et passée à un modèle : on laisse passer les null, bool et numeriques (id et pagination), les @+nombre (pagination indirecte) ou sinon le \w + espace et tirets uniquement, pour les tris/sens tri etc mais rien de compliqué suceptible d'être interprété
spip_securise_valeur_env_modele(mixed $valeur) : array<string|int, mixed>|float|int|mixed|string|array<string|int, string>|null
evaluer_fond(mixed $fond[, mixed $contexte = [] ][, string $connect = '' ]) : mixed
page_base_href(mixed &$texte) : mixed
Envoyer les entetes (headers)
envoyer_entetes(mixed $entetes) : mixed
Ceux spécifiques à SPIP commencent par X-Spip
Retourne le code PHP d'un argument de balise s'il est présent
interprete_argument_balise(int $n, Champ $p) : string|null
Numéro de l'argument
Pile au niveau de la balise
Code PHP si cet argument est présent, sinon null
Compile la balise `#NOM_SITE_SPIP` retournant le nom du site
balise_NOM_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 `#EMAIL_WEBMASTER` retournant l'adresse courriel du webmestre
balise_EMAIL_WEBMASTER_dist(Champ $p) : Champ
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#DESCRIPTIF_SITE_SPIP` qui retourne le descriptif du site !
balise_DESCRIPTIF_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 `#CHARSET` qui retourne le nom du jeu de caractères utilisé par le site tel que `utf-8`
balise_CHARSET_dist(Champ $p) : Champ
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#LANG_LEFT` retournant 'left' si la langue s'écrit de gauche à droite, sinon 'right'
balise_LANG_LEFT_dist(Champ $p) : Champ
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#LANG_RIGHT` retournant 'right' si la langue s'écrit de gauche à droite, sinon 'left'
balise_LANG_RIGHT_dist(Champ $p) : Champ
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#LANG_DIR` retournant 'ltr' si la langue s'écrit de gauche à droite, sinon 'rtl'
balise_LANG_DIR_dist(Champ $p) : Champ
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#PUCE` affichant une puce
balise_PUCE_dist(Champ $p) : Champ
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#DATE` qui retourne la date de mise en ligne
balise_DATE_dist(Champ $p) : Champ
Cette balise retourne soit le champ date
d'une table si elle est
utilisée dans une boucle, sinon la date de calcul du squelette.
Pile au niveau de la balise.
Pile completée du code PHP d'exécution de la balise
Compile la balise `#DATE_REDAC` qui retourne la date de première publication
balise_DATE_REDAC_dist(Champ $p) : Champ
Cette balise retourne le champ date_redac
d'une table
Pile au niveau de la balise.
Pile completée du code PHP d'exécution de la balise
Compile la balise `#DATE_MODIF` qui retourne la date de dernière modification
balise_DATE_MODIF_dist(Champ $p) : Champ
Cette balise retourne le champ date_modif
d'une table
Pile au niveau de la balise.
Pile completée du code PHP d'exécution de la balise
Compile la balise `#DATE_NOUVEAUTES` indiquant la date de dernier envoi du mail de nouveautés
balise_DATE_NOUVEAUTES_dist(Champ $p) : Champ
Pile au niveau de la balise.
Pile completée du code PHP d'exécution de la balise
Compile la balise `#DOSSIER_SQUELETTE` retournant le chemin vers le répertoire du fichier squelette dans lequel elle est appelee (comme __DIR__ en php)
balise_DOSSIER_SQUELETTE_dist(Champ $p) : Champ
Pile au niveau de la balise.
Pile completée du code PHP d'exécution de la balise
Compile la balise `#SQUELETTE` retournant le chemin du squelette courant
balise_SQUELETTE_dist(Champ $p) : Champ
Pile au niveau de la balise.
Pile completée du code PHP d'exécution de la balise
Compile la balise `#SPIP_VERSION` qui affiche la version de SPIP
balise_SPIP_VERSION_dist(Champ $p) : Champ
Pile au niveau de la balise.
Pile completée du code PHP d'exécution de la balise
Compile la balise `#NOM_SITE` qui affiche le nom du site.
balise_NOM_SITE_dist(Champ $p) : Champ
Affiche le nom du site ou sinon l'URL ou le titre de l'objet
Utiliser #NOM_SITE*
pour avoir le nom du site ou rien.
Cette balise interroge les colonnes nom_site
ou url_site
dans la boucle la plus proche.
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#NOTE` qui affiche les notes de bas de page
balise_NOTES_dist(Champ $p) : Champ
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#RECHERCHE` qui retourne le terme de recherche demandé
balise_RECHERCHE_dist(Champ $p) : Champ
Retourne un terme demandé en recherche, en le prenant dans _request()
sous la clé recherche
.
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#COMPTEUR_BOUCLE` qui retourne le numéro de l’itération actuelle de la boucle
balise_COMPTEUR_BOUCLE_dist(Champ $p) : Champ|null
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#TOTAL_BOUCLE` qui retourne le nombre de résultats affichés par la boucle
balise_TOTAL_BOUCLE_dist(Champ $p) : Champ
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#POINTS` qui affiche la pertinence des résultats
balise_POINTS_dist(Champ $p) : Champ
Retourne le calcul points
réalisé par le critère recherche
.
Cette balise nécessite donc la présence de ce critère.
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#POPULARITE_ABSOLUE` qui affiche la popularité absolue
balise_POPULARITE_ABSOLUE_dist(Champ $p) : Champ
Cela correspond à la popularité quotidienne de l'article
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#POPULARITE_SITE` qui affiche la popularité du site
balise_POPULARITE_SITE_dist(Champ $p) : Champ
La popularité du site est la somme de toutes les popularités absolues.
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#POPULARITE_MAX` qui affiche la popularité maximum parmis les popularités des articles
balise_POPULARITE_MAX_dist(Champ $p) : Champ
Cela correspond à la popularité quotidienne de l'article
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#VALEUR` retournant le champ `valeur`
balise_VALEUR_dist(Champ $p) : Champ
Utile dans une boucle DATA pour retourner une valeur.
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#EXPOSE` qui met en évidence l'élément sur lequel la page se trouve
balise_EXPOSE_dist(Champ $p) : Champ
Expose dans une boucle l'élément de la page sur laquelle on se trouve,
en retournant on
si l'élément correspond à la page, une chaîne vide sinon.
On peut passer les paramètres à faire retourner par la balise.
Pile au niveau de la balise
Pile complétée par le code à générer
Calcul de la balise expose
calculer_balise_expose(Champ $p, string $on, string $off) : Champ
Pile au niveau de la balise
texte à afficher si l'élément est exposé (code à écrire tel que "'on'")
texte à afficher si l'élément n'est pas exposé (code à écrire tel que "''")
Pile complétée par le code à générer
Compile la balise `#INTRODUCTION`
balise_INTRODUCTION_dist(Champ $p) : Champ
Retourne une introduction d'un objet éditorial, c'est à dire les 600
premiers caractères environ du champ 'texte' de l'objet ou le contenu
indiqué entre <intro>
et </intro>
de ce même champ.
Pour les articles, l'introduction utilisée est celle du champ descriptif
s'il est renseigné, sinon il est pris dans les champs chapo
et texte
et
est par défaut limité à 500 caractères.
Pour les rubriques, l'introduction utilisée est celle du champ descriptif
s'il est renseigné, sinon du champ texte.
La balise accèpte 1 paramètre indiquant la longueur en nombre de caractères de l'introduction.
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#LANG` qui affiche la langue de l'objet (ou d'une boucle supérieure), et à defaut la langue courante
balise_LANG_dist(Champ $p) : Champ
La langue courante est celle du site ou celle qui a été passée dans l'URL par le visiteur.
L'étoile #LANG*
n'affiche rien si aucune langue n'est trouvée dans le SQL ou le contexte.
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#LESAUTEURS` chargée d'afficher la liste des auteurs d'un objet
balise_LESAUTEURS_dist(Champ $p) : Champ
lesauteurs
existe dans la table et à ce moment là,
la balise retourne son contenu,lesauteurs.html
en lui passant
le couple objet
et id_objet
dans son environnement.Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#RANG` chargée d'afficher le numéro de l'objet
balise_RANG_dist(Champ $p) : Champ
Affiche le « numero de l'objet ». Soit 1
quand on a un titre 1. Premier article
.
Ceci est transitoire afin de préparer une migration vers un vrai système de
tri des articles dans une rubrique (et plus si affinités).
La balise permet d'extraire le numero masqué par le filtre supprimer_numero
.
La balise recupère le champ declaré dans la définition table_titre
de l'objet, ou à defaut du champ titre
Si un champ rang
existe, il est pris en priorité.
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#POPULARITE` qui affiche la popularité relative.
balise_POPULARITE_dist(Champ $p) : Champ
C'est à dire le pourcentage de la fréquentation de l'article (la popularité absolue) par rapport à la popularité maximum.
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#PAGINATION` chargée d'afficher une pagination
balise_PAGINATION_dist(Champ $p[, string $liste = 'true' ]) : Champ
Elle charge le modèle pagination.html
(par défaut), mais un paramètre
permet d'indiquer d'autres modèles. #PAGINATION{nom}
utilisera le
modèle pagination_nom.html
.
Cette balise nécessite le critère pagination
sur la boucle où elle
est utilisée.
Pile au niveau de la balise
Afficher ou non les liens de pagination (variable de type string
car code à faire écrire au compilateur) :
true
pour les afficherfalse
pour afficher uniquement l'ancre.Pile complétée par le code à générer
Compile la balise `#ANCRE_PAGINATION` chargée d'afficher l'ancre de la pagination
balise_ANCRE_PAGINATION_dist(Champ $p) : Champ
Cette ancre peut ainsi être placée au-dessus la liste des éléments de la boucle alors qu'on mettra les liens de pagination en-dessous de cette liste paginée.
Cette balise nécessite le critère pagination
sur la boucle où elle
est utilisée.
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#GRAND_TOTAL` qui retourne le nombre total de résultats d'une boucle
balise_GRAND_TOTAL_dist(Champ $p) : Champ
Cette balise set équivalente à #TOTAL_BOUCLE
sauf pour les boucles paginées.
Dans ce cas elle indique le nombre total d'éléments répondant aux critères
hors pagination.
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#SELF` qui retourne l’URL de la page appelée.
balise_SELF_dist(Champ $p) : Champ
Cette URL est nettoyée des variables propres à l’exécution de SPIP
tel que var_mode
.
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#CHEMIN` qui cherche un fichier dans les chemins connus de SPIP et retourne son chemin complet depuis la racine
balise_CHEMIN_dist(Champ $p) : Champ
Signature : #CHEMIN{chemin/vers/fichier.ext}
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 `#CHEMIN_IMAGE` qui cherche une image dans le thème de l'espace privé utilisé par SPIP et retourne son chemin complet depuis la racine
balise_CHEMIN_IMAGE_dist(Champ $p) : Champ
Signature : #CHEMIN_IMAGE{image.png}
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 `#ENV` qui permet de récupérer le contexte d'environnement transmis à un squelette.
balise_ENV_dist(Champ $p[, array<string|int, mixed> $src = null ]) : Champ
La syntaxe #ENV{toto, valeur par defaut}
renverra valeur par defaut
si $toto
est vide.
La recherche de la clé s'appuyant sur la fonction table_valeur
il est possible de demander un sous élément d'un tableau :
#ENV{toto/sous/element, valeur par defaut}
retournera l'équivalent de
#ENV{toto}|table_valeur{sous/element}
c'est-à-dire en quelque sorte
$env['toto']['sous']['element']
s'il existe, sinon la valeur par défaut.
Si le tableau est vide on renvoie ''
(utile pour #SESSION
)
Enfin, la balise utilisée seule #ENV
retourne le tableau complet
de l'environnement. À noter que ce tableau est retourné sérialisé.
En standard est appliqué le filtre entites_html
, mais si l'étoile est
utilisée pour désactiver les filtres par défaut, par exemple avec
[(#ENV*{toto})]
, il faut s'assurer de la sécurité
anti-javascript, par exemple en filtrant avec safehtml
: [(#ENV*{toto}|safehtml)]
Pile ; arbre de syntaxe abstrait positionné au niveau de la balise.
Tableau dans lequel chercher la clé demandée en paramètre de la balise. Par defaut prend dans le contexte du squelette.
Pile completée du code PHP d'exécution de la balise
Compile la balise `#CONFIG` qui retourne une valeur de configuration
balise_CONFIG_dist(Champ $p) : Champ
Cette balise appelle la fonction lire_config()
pour obtenir les
configurations du site.
Par exemple #CONFIG{gerer_trad}
donne 'oui ou 'non' selon le réglage.
Le 3ème argument permet de contrôler la sérialisation du résultat
(mais ne sert que pour le dépot meta
) qui doit parfois désérialiser,
par exemple avec |in_array{#CONFIG{toto,#ARRAY,1}}
. Ceci n'affecte
pas d'autres dépots et |in_array{#CONFIG{toto/,#ARRAY}}
sera
équivalent.
Òn peut appeler d'autres tables que spip_meta
avec un
#CONFIG{/infos/champ,defaut}
qui lit la valeur de champ
dans une table des meta qui serait spip_infos
Pile au niveau de la balise.
Pile completée du code PHP d'exécution de la balise
Compile la balise `#CONNECT` qui retourne le nom du connecteur de base de données
balise_CONNECT_dist(Champ $p) : Champ
Retourne le nom du connecteur de base de données utilisé (le nom
du fichier config/xx.php
sans l'extension, utilisé pour calculer
les données du squelette).
Retourne NULL
si le connecteur utilisé est celui par défaut de SPIP
(connect.php), sinon retourne son nom.
Pile au niveau de la balise.
Pile completée du code PHP d'exécution de la balise
Compile la balise `#SESSION` qui permet d’accéder aux informations liées au visiteur authentifié et de différencier automatiquement le cache en fonction du visiteur.
balise_SESSION_dist(Champ $p) : Champ
Cette balise est un tableau des données du visiteur (nom, email etc). Si elle est invoquée, elle lève un drapeau dans le fichier cache, qui permet à public/cacher de créer un cache différent par visiteur
Pile au niveau de la balise.
Pile completée du code PHP d'exécution de la balise
Compile la balise `#SESSION_SET` qui d’insérer dans la session des données supplémentaires
balise_SESSION_SET_dist(Champ $p) : Champ
Pile au niveau de la balise.
Pile completée du code PHP d'exécution de la balise
Compile la balise `#EVAL` qui évalue un code PHP
balise_EVAL_dist(Champ $p) : Champ
À utiliser avec précautions !
Pile au niveau de la balise.
Pile completée du code PHP d'exécution de la balise
Compile la balise `#CHAMP_SQL` qui renvoie la valeur d'un champ SQL
balise_CHAMP_SQL_dist(Champ $p) : Champ
Signature : #CHAMP_SQL{champ}
Cette balise permet de récupérer par exemple un champ notes
dans une table
SQL externe (impossible avec la balise #NOTES
qui est une balise calculée).
Ne permet pas de passer une expression comme argument, qui ne peut être qu'un texte statique !
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#VAL` qui retourne simplement le premier argument qui lui est transmis
balise_VAL_dist(Champ $p) : Champ
Cela permet d'appliquer un filtre à une chaîne de caractère
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#REM` servant à commenter du texte
balise_REM_dist(Champ $p) : Champ
Retourne toujours une chaîne vide.
Pile au niveau de la balise
Pile complétée par le code à générer
Une balise #NULL quand on a besoin de passer un argument null sur l'appel d'un filtre ou formulaire (evite un #EVAL{null})
balise_NULL_dist(Champ $p) : mixed
Compile la balise `#HTTP_HEADER` envoyant des entêtes de retour HTTP
balise_HTTP_HEADER_dist(Champ $p) : Champ
Doit être placée en tête de fichier et ne fonctionne pas dans une inclusion.
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#FILTRE` qui exécute un filtre à l'ensemble du squelette une fois calculé.
balise_FILTRE_dist(Champ $p) : Champ|null
Le filtrage se fait au niveau du squelette, sans s'appliquer aux <INCLURE>
.
Plusieurs filtres peuvent être indiqués, séparés par des barres verticales |
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#CACHE` definissant la durée de validité du cache du squelette
balise_CACHE_dist(Champ $p) : Champ
Signature : #CACHE{duree[,type]}
Le premier argument est la durée en seconde du cache. Le second (aucune valeur par défaut) indique le type de cache :
cache-client
autorise gestion du IF_MODIFIED_SINCEstatique
ne respecte pas l'invalidation par modif de la base
(mais s'invalide tout de même à l'expiration du delai)Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#INSERT_HEAD` permettant d'insérer du contenu dans le `<head>` d'une page HTML
balise_INSERT_HEAD_dist(Champ $p) : Champ
La balise permet aux plugins d'insérer des styles, js ou autre
dans l'entête sans modification du squelette.
Les css doivent être inserées de préférence par #INSERT_HEAD_CSS
pour en faciliter la surcharge.
On insère ici aussi un morceau de PHP qui verifiera à l'exécution
que le pipeline insert_head_css
a bien été vu
et dans le cas contraire l'appelera. Ceal permet de ne pas oublier
les css de #INSERT_HEAD_CSS
même si cette balise n'est pas presente.
Il faut mettre ce php avant le insert_head
car le compresseur y mets
ensuite un php du meme type pour collecter
CSS et JS, et on ne veut pas qu'il rate les css insérées en fallback
par insert_head_css_conditionnel
.
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#INSERT_HEAD_CSS` homologue de `#INSERT_HEAD` pour les CSS
balise_INSERT_HEAD_CSS_dist(Champ $p) : Champ
Et par extension pour le JS inline qui doit préférentiellement être inséré avant les CSS car bloquant sinon.
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#INCLUDE` alias de `#INCLURE`
balise_INCLUDE_dist(Champ $p) : Champ
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#INCLURE` qui inclut un résultat de squelette
balise_INCLURE_dist(Champ $p) : Champ
Signature : [(#INCLURE{fond=nom_du_squelette, argument, argument=xx})]
L'argument env
permet de transmettre tout l'environnement du squelette
en cours au squelette inclus.
On parle d’inclusion « statique » car le résultat de compilation est
ajouté au squelette en cours, dans le même fichier de cache.
Cette balise est donc différente d’une inclusion « dynamique » avec
<INCLURE.../>
qui, elle, crée un fichier de cache séparé
(avec une durée de cache qui lui est propre).
L'inclusion est realisée au calcul du squelette, pas au service
ainsi le produit du squelette peut être utilisé en entrée de filtres
à suivre. On peut faire un #INCLURE{fichier}
sans squelette
(Incompatible avec les balises dynamiques).
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#TRAD` qui traduit une clé de langue
balise_TRAD_dist(Champ $p) : Champ
Signature:
#TRAD{module:cle, #ARRAY{arg,val,...}}
ou #TRAD{module:cle, #ARRAY{arg,val,...}, #ARRAY{sanitize,0}}
Compile la balise `#MODELE` qui inclut un résultat de squelette de modèle
balise_MODELE_dist(Champ $p) : Champ
#MODELE{nom}
insère le résultat d’un squelette contenu dans le
répertoire modeles/
. L’identifiant de la boucle parente est transmis
par défaut avec le paramètre id
à cette inclusion.
Des arguments supplémentaires peuvent être transmis :
[(#MODELE{nom, argument=xx, argument})]
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#SET` qui affecte une variable locale au squelette
balise_SET_dist(Champ $p) : Champ
Signature : #SET{cle,valeur}
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#GET` qui récupère une variable locale au squelette
balise_GET_dist(Champ $p) : Champ
Signature : #GET{cle[,defaut]}
La clé peut obtenir des sous clés séparés par des /
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#DOUBLONS` qui redonne les doublons enregistrés
balise_DOUBLONS_dist(Champ $p) : Champ
#DOUBLONS{mots}
ou #DOUBLONS{mots,famille}
donne l'état des doublons (MOTS)
à cet endroit
sous forme de tableau d'id_mot comme array(1,2,3,...)
#DOUBLONS
tout seul donne la liste brute de tous les doublons#DOUBLONS*{mots}
donne la chaine brute ,1,2,3,...
(changera si la gestion des doublons evolue)Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#PIPELINE` pour permettre d'insérer des sorties de pipeline dans un squelette
balise_PIPELINE_dist(Champ $p) : Champ
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#EDIT` qui ne fait rien dans SPIP
balise_EDIT_dist(Champ $p) : Champ
Cette balise ne retourne rien mais permet d'indiquer, pour certains plugins qui redéfinissent cette balise, le nom du champ SQL (ou le nom d'un contrôleur) correspondant à ce qui est édité. Cela sert particulièrement au plugin Crayons. Ainsi en absence du plugin, la balise est toujours reconnue (mais n'a aucune action).
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#TOTAL_UNIQUE` qui récupère le nombre d'éléments différents affichés par le filtre `unique`
balise_TOTAL_UNIQUE_dist(Champ $p) : Champ
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#ARRAY` créant un tableau PHP associatif
balise_ARRAY_dist(Champ $p) : Champ
Crée un array
PHP à partir d'arguments calculés.
Chaque paire d'arguments représente la clé et la valeur du tableau.
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#LISTE` qui crée un tableau PHP avec les valeurs, sans préciser les clés
balise_LISTE_dist(Champ $p) : Champ
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#AUTORISER` qui teste une autorisation
balise_AUTORISER_dist(Champ $p) : Champ
Appelle la fonction autoriser()
avec les mêmes arguments,
et renvoie un espace ' ' si OK (l'action est autorisée),
sinon une chaine vide '' (l'action n'est pas autorisée).
Cette balise créée un cache par session.
Signature : #AUTORISER{faire[,type[,id[,auteur[,options]]]}
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#PLUGIN` qui permet d’afficher les informations d'un plugin actif
balise_PLUGIN_dist(Champ $p) : Champ
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#AIDER` qui permet d’afficher l’icone de l’aide au sein des squelettes.
balise_AIDER_dist(Champ $p) : Champ
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#ACTION_FORMULAIRE` qui insère le contexte des formulaires charger / vérifier / traiter avec les hidden de l'URL d'action
balise_ACTION_FORMULAIRE(Champ $p) : Champ
Accèpte 2 arguments optionnels :
#ENV{action}
#ENV{form}
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#BOUTON_ACTION` qui génère un bouton d'action en post, ajaxable
balise_BOUTON_ACTION_dist(Champ $p) : Champ
Cette balise s'utilise à la place des liens action_auteur
, sous la forme
#BOUTON_ACTION{libelle[,url[,class[,confirm[,title[,callback]]]]]}
ajax
qui est placé sur le formulaire.
Pour d'autres classes sur le formulaire, utiliser le filtre ajouter_class
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#SLOGAN_SITE_SPIP` qui retourne le slogan du site
balise_SLOGAN_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 `#HTML5` indiquant si l'espace public peut utiliser du HTML5
balise_HTML5_dist(Champ $p) : Champ
Renvoie ' '
si le webmestre souhaite que SPIP génère du code (X)HTML5 sur
le site public, et ''
si le code doit être strictement compatible HTML4
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#TRI` permettant d'afficher un lien de changement d'ordre de tri d'une colonne de la boucle
balise_TRI_dist(Champ $p[, string $liste = 'true' ]) : Champ
La balise #TRI{champ[,libelle]}
champ prend >
ou <
pour afficher
le lien de changement de sens croissant ou decroissant (>
<
indiquent
un sens par une flèche)
Pile au niveau de la balise
Inutilisé
Pile complétée par le code à générer
Compile la balise `#SAUTER{n}` qui permet de sauter en avant n resultats dans une boucle
balise_SAUTER_dist(Champ $p) : Champ
La balise modifie le compteur courant de la boucle, mais pas les autres
champs qui restent les valeurs de la boucle avant le saut. Il est donc
preferable d'utiliser la balise juste avant la fermeture </BOUCLE>
L'argument n
doit être supérieur à zéro sinon la balise ne fait rien
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#PUBLIE` qui indique si un objet est publié ou non
balise_PUBLIE_dist(Champ $p) : Champ
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#PRODUIRE` qui génère un fichier statique à partir d'un squelette SPIP
balise_PRODUIRE_dist(Champ $p) : Champ
Le format du fichier sera extrait de la pre-extension du squelette
(typo.css.html, messcripts.js.html)
ou par l'argument format=css
ou format=js
passé en argument.
S'il n'y a pas de format détectable, on utilise .html
, comme pour les squelettes.
La syntaxe de la balise est la même que celle de #INCLURE
.
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#LAYOUT_PRIVE` relative à la disposition de l'espace privé.
balise_LAYOUT_PRIVE_dist(Champ $p) : Champ
Les dispositions possibles sont listées dans la CSS layout.css Cette balise n'a pas vocation à être utilisée en dehors du privé.
Pile au niveau de la balise
Pile complétée par le code à générer
Compile la balise `#CONST` qui retourne la valeur de la constante passée en argument
balise_CONST_dist(Champ $p) : Champ
Pile au niveau de la balise
Pile complétée par le code à générer
Affiche un paramètre public du container SPIP.
balise_PARAM_dist(Champ $p) : Champ
Compile une boucle standard, sans condition rajoutée
boucle_DEFAUT_dist(string $id_boucle, array<string|int, mixed> &$boucles) : string
Identifiant de la boucle
AST du squelette
Code PHP compilé de la boucle
Compile une boucle récursive
boucle_BOUCLE_dist(string $id_boucle, array<string|int, mixed> &$boucles) : string
<BOUCLE(BOUCLE)>
Identifiant de la boucle
AST du squelette
Code PHP compilé de la boucle
Compile une boucle HIERARCHIE
boucle_HIERARCHIE_dist(string $id_boucle, array<string|int, mixed> &$boucles) : string
La boucle <BOUCLE(HIERARCHIE)>
retourne la liste des RUBRIQUES
qui mènent de la racine du site à la rubrique ou à l’article en cours.
Cette boucle (aliasée sur la table RUBRIQUES)
Le code compilé calculant la hierarchie est ajouté au tout début de la fonction de boucle et quitte la boucle si aucune rubrique n'est trouvée.
Identifiant de la boucle
AST du squelette
Code PHP compilé de la boucle
Returns a key cache (id) for this data
cache_key(array<string|int, mixed> $contexte, array<string|int, mixed> $page) : string
Écrire le cache dans un casier
ecrire_cache(string $cache_key, array<string|int, mixed> $valeur) : bool
lire le cache depuis un casier
lire_cache(string $cache_key) : null|mixed
null: probably cache miss
Signature du cache
cache_signature(mixed &$page) : string
Parano : on signe le cache, afin d'interdire un hack d'injection dans notre memcache
Faut-il compresser ce cache ?
gzip_page(array<string|int, mixed> $page) : array<string|int, mixed>
A partir de 16ko ca vaut le coup (pas de passage par reference car on veut conserver la version non compressee pour l'afficher) on positionne un flag gz si on comprime, pour savoir si on doit decompresser ou pas
Faut-il decompresser ce cache ?
gunzip_page(array<string|int, mixed> &$page) : void
(passage par reference pour alleger) on met a jour le flag gz quand on decompresse, pour ne pas risquer de decompresser deux fois de suite un cache (ce qui echoue)
Gestion des delais d'expiration du cache... $page passee par reference pour accelerer
cache_valide(array<string|int, mixed> &$page, int $date) : int
Creer le fichier cache
creer_cache(array<string|int, mixed> &$page, string &$cache_key) : mixed
Passage par reference de $page par souci d'economie
Interface du gestionnaire de cache
public_cacher_dist(array<string|int, mixed> $contexte, int &$use_cache, string &$cache_key, array<string|int, mixed> &$page, int &$lastmodified) : string|void
Si son 3e argument est non vide, elle passe la main a creer_cache Sinon, elle recoit un contexte (ou le construit a partir de REQUEST_URI) et affecte les 4 autres parametres recus par reference:
argumenter_inclure(mixed $params, mixed $rejet_filtres, mixed $p, mixed &$boucles, mixed $id_boucle[, mixed $echap = true ][, mixed $lang = '' ][, mixed $fond1 = false ]) : mixed
Compile une inclusion <INCLURE> ou #INCLURE
calculer_inclure(Inclure $p, array<string|int, mixed> &$boucles, string $id_boucle) : string
Description de l'inclusion (AST au niveau de l'inclure)
AST du squelette
Identifiant de la boucle contenant l'inclure
Code PHP appelant l'inclusion
Gérer les statuts declarés pour cette table
instituer_boucle(Boucle &$boucle[, bool $echapper = true ][, bool $ignore_previsu = false ]) : mixed
S'il existe des statuts sur cette table, déclarés dans la description d'un objet éditorial, applique leurs contraintes
Descrition de la boucle
true pour échapper le code créé
true pour ne tester que le cas publie et ignorer l'eventuel var_mode=preview de la page
Produit le corps PHP d'une boucle Spip.
calculer_boucle(string $id_boucle, array<string|int, mixed> &$boucles) : string
Ce corps remplit une variable $t0 retournée en valeur. Ici on distingue boucles recursives et boucle à requête SQL et on insère le code d'envoi au debusqueur du resultat de la fonction.
Identifiant de la boucle
AST du squelette
Code PHP compilé de la boucle
Compilation d'une boucle (non recursive).
calculer_boucle_nonrec(string $id_boucle, array<string|int, mixed> &$boucles, string $trace) : string
Identifiant de la boucle
AST du squelette
Code PHP (en mode debug uniquement) servant à conserver une trace des premières valeurs de la boucle afin de pouvoir les afficher dans le débugueur ultérieurement
Code PHP compilé de la boucle récursive
Calcule le code PHP d'une boucle contenant les informations qui produiront une requête SQL
calculer_requete_sql(Boucle $boucle) : string
Le code produit est un tableau associatif $command contenant les informations
pour que la boucle produise ensuite sa requête, tel que $command['from'] = 'spip_articles';
AST de la boucle
Code PHP compilé définissant les informations de requête
Retourne une chaîne des informations du contexte de compilation
memoriser_contexte_compil(object $p) : string
Retourne la source, le nom, l'identifiant de boucle, la ligne, la langue de l'élément dans une chaîne.
Objet de l'AST dont on mémorise le contexte
Informations du contexte séparés par des virgules, qui peut être utilisé pour la production d'un tableau array()
Reconstruit un contexte de compilation
reconstruire_contexte_compil(array<string|int, mixed> $context_compil) : Contexte
Pour un tableau d'information de contexte donné, retourne un objet Contexte (objet générique de l'AST) avec ces informations
Tableau des informations du contexte
Objet Contexte
Calcule le code d'affectation d'une valeur à une commande de boucle
calculer_dec(string $nom, string $val) : array<string|int, mixed>
Décrit le code qui complète le tableau $command qui servira entre autres à l'itérateur. Pour un nom de commande donnée et un code PHP décrivant ou récupérant une valeur, on retourne le code PHP qui fait l'affectation.
L'index 0 du tableau retourné indique, lorsqu'il n'est pas vide, que l'affectation de la variable pourra être statique (c'est à dire qu'il ne dépend pas d'une quelconque variable PHP), et donc attribué une fois pour toutes quelque soit le nombre d'appels de la boucle.
Nom de la commande
Code PHP décrivant la valeur à affecter
Calcule l'expression PHP décrivant un tableau complexe (ou une chaîne)
calculer_dump_array(mixed $a) : string
Lorsqu'un tableau est transmis, reconstruit de quoi créer le tableau en code PHP (une sorte de var_export) en appelant pour chaque valeur cette fonction de manière récursive.
Si le premier index (0) du tableau est "'?'", retourne un code de test entre les 3 autres valeurs (v1 ? v2 : v3). Les valeurs pouvant être des tableaux aussi.
Les données dont on veut construire un équivalent de var_export
Expression PHP décrivant un texte ou un tableau
calculer_dump_join(mixed $a) : mixed
Calcule l'expression PHP décrivant les informations FROM d'une boucle
calculer_from(Boucle &$boucle) : string
Description de la boucle
Code PHP construisant un tableau des alias et noms des tables du FROM
Calcule l'expression PHP décrivant des informations de type de jointure pour un alias de table connu dans le FROM
calculer_from_type(Boucle &$boucle) : string
Description de la boucle
Code PHP construisant un tableau des alias et type de jointure du FROM
calculer_order(mixed &$boucle) : mixed
calculer_liste(mixed $tableau, mixed $descr, mixed &$boucles[, mixed $id_boucle = '' ]) : mixed
compile_cas(array<string|int, mixed> $tableau, array<string|int, mixed> $descr, array<string, Boucle> &$boucles, string $id_boucle) : array<string|int, mixed>|false
Concatene 2 parties de code, en simplifiant si l'une des 2 est vides
compile_concatene_parties_codes(string $partie1, string $partie2) : string
production d'une expression conditionnelle ((v=EXP) ? (p . v .s) : a) mais si EXP est de la forme (t ? 'C' : '') on produit (t ? (p . C . s) : a) de meme si EXP est de la forme (t ? '' : 'C')
compile_retour(string $code, string $avant, string $apres, string $altern, string $tab, int $n) : mixed|string
le code principal, dont le resultat conditionnera le reste
la partie conditionnelle avant, qui est calculee apres le code, mais s'affiche avant si le code produit un resultat
la partie conditionnelle apres, qui est calculee apres le code, et s'affiche apres si le code produit un resultat
la partie alternative apres, qui est calculee apres le code, et s'affiche apres, si le code ne produit pas de resultat
tabulation
compteur
compile_inclure_doublons(mixed $lexemes) : mixed
public_compiler_dist(mixed $squelette, mixed $nom, mixed $gram, mixed $sourcefile[, string $connect = '' ]) : mixed
compiler_squelette(mixed $squelette, mixed $boucles, mixed $nom, mixed $descr, mixed $sourcefile[, string $connect = '' ]) : mixed
Requeteur pour les boucles (php:nom_iterateur)
requeteur_php_dist(array<string, Boucle> &$boucles, Boucle &$boucle, string &$id) : mixed
Analyse si le nom d'iterateur correspond bien a une classe PHP existante et dans ce cas charge la boucle avec cet iterateur. Affichera une erreur dans le cas contraire.
Liste des boucles
La boucle parcourue
L'identifiant de la boucle parcourue
Requeteur pour les boucles (data:type de donnee) note: (DATA) tout court ne passe pas par ici.
requeteur_data_dist(array<string, Boucle> &$boucles, Boucle &$boucle, string &$id) : mixed
Analyse si le type de donnee peut etre traite et dans ce cas charge la boucle avec cet iterateur. Affichera une erreur dans le cas contraire.
Liste des boucles
La boucle parcourue
L'identifiant de la boucle parcourue
public_composer_dist(mixed $squelette, mixed $mime_type, mixed $gram, mixed $source[, string $connect = '' ]) : mixed
squelette_traduit(mixed $squelette, mixed $sourcefile, mixed $phpfile, mixed $boucles) : mixed
squelette_obsolete(mixed $skel, mixed $squelette) : mixed
invalideur_session(mixed &$Cache[, mixed $code = null ]) : mixed
analyse_resultat_skel(mixed $nom, mixed $cache, mixed $corps[, mixed $source = '' ]) : mixed
Synthétise une balise dynamique : crée l'appel à l'inclusion en transmettant les arguments calculés et le contexte de compilation.
synthetiser_balise_dynamique(string $nom, array<string|int, mixed> $args, string $file, array<string|int, mixed> $context_compil) : string
Nom de la balise dynamique
Liste des arguments calculés
Chemin du fichier de squelette à inclure
Tableau d'informations sur la compilation
Code PHP pour inclure le squelette de la balise dynamique
Crée le code PHP pour transmettre des arguments (généralement pour une inclusion)
argumenter_squelette(array<string|int, mixed>|string $v) : string
Arguments à transmettre :
'
(si $v
était une chaîne)Fonction proxy pour retarder le calcul d'un formulaire si on est au depart dans un modele
executer_balise_dynamique_dans_un_modele(mixed ...$args) : string
un modele est toujours inséré en texte dans son contenant donc si on est dans le public avec un cache on va perdre le dynamisme et on risque de mettre en cache les valeurs pre-remplies du formulaire on passe donc par une fonction proxy qui si besoin va collecter les arguments et injecter le PHP qui va appeler la fonction pour generer le formulaire au lieu de directement la fonction (dans l'espace prive on a pas de cache, donc pas de soucis (et un leak serait moins grave))
Calcule et retourne le code PHP retourné par l'exécution d'une balise dynamique.
executer_balise_dynamique(string $nom, array<string|int, mixed> $args, array<string|int, mixed> $context_compil) : string
Vérifier les arguments et filtres et calcule le code PHP à inclure.
balise/
, soit du nom complet de la balise, soit d'un nom générique
(comme 'formulaire_.php'). Dans ce dernier cas, le nom de la balise
est ajouté en premier argument.balise_NOM_stat()
balise_NOM_dyn()
(ou variantes)
est effectivement trouvée.Nom de la balise dynamique
Liste des arguments calculés de la balise
Tableau d'informations sur la compilation
Code PHP d'exécutant l'inclusion du squelette (ou texte) de la balise dynamique
Pour une balise "NOM" donné, cherche s'il existe une balise générique qui peut la traiter
chercher_balise_generique(string $nom) : array<string|int, mixed>|null
Le nom de balise doit contenir au moins un souligné "A_B", auquel cas on cherche une balise générique "A_"
S'il y a plus d'un souligné, tel que "A_B_C_D" on cherche différentes balises génériques en commençant par la plus longue possible, tel que "A_B_C_", sinon "A_B_" sinon "A_"
Selectionner la langue de l'objet dans la boucle
lang_select_public(string $lang, string $lang_select[, null|string $titre = null ]) : mixed
Applique sur un item de boucle la langue de l'élément qui est parcourru. Sauf dans les cas ou il ne le faut pas !
La langue n'est pas modifiée lorsque :
Langue de l'objet
'oui' si critère lang_select est présent, '' sinon.
Titre de l'objet
nettoyer_env_doublons(mixed $envd) : mixed
Cherche la présence d'un opérateur SELF ou SUBSELECT
match_self(string|array<string|int, mixed> $w) : string|bool
Cherche dans l'index 0 d'un tableau, la valeur SELF ou SUBSELECT indiquant pour une expression WHERE de boucle que nous sommes face à une sous-requête.
Cherche de manière récursive également dans les autres valeurs si celles-ci sont des tableaux
Description d'une condition WHERE de boucle (ou une partie de cette description)
Opérateur trouvé (SELF ou SUBSELECT) sinon false.
Remplace une condition décrivant une sous requête par son code
remplace_sous_requete(array<string|int, mixed>|string $w, string $sousrequete) : array<string|int, mixed>|string
Description d'une condition WHERE de boucle (ou une partie de cette description) qui possède une description de sous-requête
Code PHP de la sous requête (qui doit remplacer la description)
Tableau de description du WHERE dont la description de sous-requête est remplacée par son code.
Sépare les conditions de boucles simples de celles possédant des sous-requêtes.
trouver_sous_requetes(array<string|int, mixed> $where) : array<string|int, mixed>
Description d'une condition WHERE de boucle
Liste de 2 tableaux :
calculer_select(mixed ...$args) : mixed
Calcule une requête et l’exécute
preparer_calculer_select([array<string|int, mixed> $select = [] ][, array<string|int, mixed> $from = [] ][, array<string|int, mixed> $from_type = [] ][, array<string|int, mixed> $where = [] ][, array<string|int, mixed> $join = [] ][, array<string|int, mixed> $groupby = [] ][, array<string|int, mixed> $orderby = [] ][, string $limit = '' ][, array<string|int, mixed> $having = [] ][, string $table = '' ][, string $id = '' ][, string $serveur = '' ][, bool|array<string|int, mixed>|string $requeter = true ]) : array{select: array, from: array, where: array, orderby: string, having: array, serveur: string, requeter: bool|array|string, debug: array}
Cette fonction est présente dans les squelettes compilés. Elle peut permettre de générer des requêtes avec jointure.
executer_calculer_select(array<string|int, mixed> $requete) : mixed
compter_calculer_select(array<string|int, mixed> $requete) : int
Analogue a calculer_mysql_expression et autre (a unifier ?)
calculer_where_to_string(string|array<string|int, mixed> $v[, string $join = 'AND' ]) : string
calculer_jointnul(mixed $cle, mixed $exp[, mixed $equiv = '' ]) : mixed
reinjecte_joint(mixed $afrom, mixed $from) : mixed
remplacer_jointnul(mixed $cle, mixed $exp[, mixed $equiv = '' ]) : mixed
calculer_nom_fonction_squel(mixed $skel[, mixed $mime_type = 'html' ][, string $connect = '' ]) : mixed
Compile le critère {racine}
critere_racine_dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : mixed
Ce critère sélectionne les éléments à la racine d'une hiérarchie, c'est à dire ayant id_parent=0
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Compile le critère {exclus}
critere_exclus_dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : void|array<string|int, mixed>
Exclut du résultat l’élément dans lequel on se trouve déjà
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Compile le critère {doublons} ou {unique}
critere_doublons_dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : void|array<string|int, mixed>
Ce critères enlève de la boucle les éléments déjà sauvegardés dans un précédent critère {doublon} sur une boucle de même table.
Il est possible de spécifier un nom au doublon tel que {doublons sommaire}
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Compile le critère {lang_select}
critere_lang_select_dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : mixed
Ce critère indique d'utiliser la langue de l'objet de la boucle comme langue du contexte intérieur de la boucle.
Cela revient à faire [(#LANG|lang_select)]
en tout début de boucle.
En conséquence, _T
utiliseront la langue de l'objet
au lieu de la langue du contexte global.
Certaines boucles telles que articles et rubriques ont ce comportement par défaut.
Le critère accepte un paramètre optionnel :
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Compile le critère {debut_xxx}
critere_debut_dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : mixed
Limite le nombre d'éléments affichés.
Ce critère permet de faire commencer la limitation des résultats par une variable passée dans l’URL et commençant par 'debut_' tel que {debut_page,10}. Le second paramètre est le nombre de résultats à afficher.
Note : il est plus simple d'utiliser le critère pagination.
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Compile le critère `pagination` qui demande à paginer une boucle.
critere_pagination_dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : mixed
Demande à paginer la boucle pour n'afficher qu'une partie des résultats, et gère l'affichage de la partie de page demandée par debut_xx dans dans l'environnement du squelette.
Le premier paramètre indique le nombre d'éléments par page, le second,
rarement utilisé permet de définir le nom de la variable désignant la
page demandée (debut_xx
), qui par défaut utilise l'identifiant de la boucle.
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Compile le critère `recherche` qui permet de sélectionner des résultats d'une recherche.
critere_recherche_dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : mixed
Le texte cherché est pris dans le premier paramètre {recherche xx}
ou à défaut dans la clé recherche
de l'environnement du squelette.
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Compile le critère `traduction`
critere_traduction_dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : mixed
Sélectionne toutes les traductions de l'élément courant (la boucle englobante) en différentes langues (y compris l'élément englobant)
Équivalent à (id_trad>0 AND id_trad=id_trad(precedent)) OR id_xx=id_xx(precedent)
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Compile le critère {origine_traduction}
critere_origine_traduction_dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : mixed
Sélectionne les éléments qui servent de base à des versions traduites (par exemple les articles "originaux" sur une boucle articles)
Équivalent à (id_trad>0 AND id_xx=id_trad) OR (id_trad=0)
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Compile le critère {meme_parent}
critere_meme_parent_dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : void|array<string|int, mixed>
Sélectionne les éléments ayant le même parent que la boucle parente, c'est à dire les frères et sœurs.
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Compile le critère `branche` qui sélectionne dans une boucle les éléments appartenant à une branche d'une rubrique.
critere_branche_dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : mixed
Cherche l'identifiant de la rubrique en premier paramètre du critère {branche XX}
s'il est renseigné, sinon, sans paramètre ({branche}
tout court) dans les
boucles parentes. On calcule avec lui la liste des identifiants
de rubrique de toute la branche.
La boucle qui possède ce critère cherche une liaison possible avec
la colonne id_rubrique
, et tentera de trouver une jointure avec une autre
table si c'est nécessaire pour l'obtenir.
Ce critère peut être rendu optionnel avec {branche ?}
en remarquant
cependant que le test s'effectue sur la présence d'un champ 'id_rubrique'
sinon d'une valeur 'id_rubrique' dans l'environnement (et non 'branche'
donc).
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Compile le critère `logo` qui liste les objets qui ont un logo
critere_logo_dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : mixed
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Compile le critère `groupby` qui regroupe les éléments selon une colonne.
critere_groupby_dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : void|array<string|int, mixed>
C'est la commande SQL «GROUP BY»
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Compile le critère `groupby_supprimer` qui supprime toutes les fusions qui le précèdent
critere_groupby_supprimer_dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : void
Ce critère retire toutes les définitions de «GROUP BY» qui le précèdent. Par exemple pour en ajouter d'autres ensuite.
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Compile le critère `fusion` qui regroupe les éléments selon une colonne.
Utiliser {groupby}
critere_fusion_dist(mixed ...$args) : void|array<string|int, mixed>
Compile le critère `fusion_supprimer` qui supprime toutes les fusions qui le précèdent
Utiliser {groupby_supprimer}
critere_fusion_supprimer_dist(mixed ...$args) : void
Compile le critère `{collate}` qui permet de spécifier l'interclassement à utiliser pour les tris de la boucle.
critere_collate_dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : void|array<string|int, mixed>
Cela permet avec le critère {par}
de trier un texte selon
l'interclassement indiqué. L'instruction s'appliquera sur les critères {par}
qui succèdent ce critère, ainsi qu'au critère {par}
précédent
si aucun interclassement ne lui est déjà appliqué.
Techniquement, c'est la commande SQL "COLLATE" qui utilisée. (elle peut être appliquée sur les order by, group by, where, like ...)
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Compile le critère `{collecte}` qui permet de spécifier l'interclassement à utiliser pour les tris de la boucle.
Utiliser {collate}
critere_collecte_dist(mixed ...$args) : void|array<string|int, mixed>
calculer_critere_arg_dynamique(mixed $idb, mixed &$boucles, mixed $crit[, mixed $suffix = '' ]) : mixed
Compile le critère `{par}` qui permet d'ordonner les résultats d'une boucle
critere_par_dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : mixed
Demande à trier la boucle selon certains champs (en SQL, la commande ORDER BY
).
Si plusieurs tris sont demandés (plusieurs fois le critère {par x}{par y}
dans une boucle ou plusieurs champs
séparés par des virgules dans le critère {par x, y, z}
), ils seront appliqués dans l'ordre.
Quelques particularités :
{par hasard}
: trie par hasard{par num titre}
: trie par numéro de titre{par multi titre}
: trie par la langue extraite d'une balise polyglotte <multi>
sur le champ titre{!par date}
: trie par date inverse en utilisant le champ date principal déclaré pour la table (si c'est un objet éditorial).{!par points}
: trie par pertinence de résultat de recherche (avec le critère {recherche}
){par FUNCTION_SQL(n)}
: trie en utilisant une fonction SQL (peut dépendre du moteur SQL utilisé).
Exemple : {par SUBSTRING_INDEX(titre, ".", -1)}
(tri ~ alphabétique en ignorant les numéros de titres
(exemple erroné car faux dès qu'un titre possède un point.)).{par table.champ}
: trie en effectuant une jointure sur la table indiquée.{par #BALISE}
: trie sur la valeur retournée par la balise (doit être un champ de la table, ou 'hasard').Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Calculs pour le critère `{par}` ou `{inverse}` pour ordonner les résultats d'une boucle
critere_parinverse(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : mixed
Les expressions intermédiaires {par expr champ}
sont calculées dans des fonctions
calculer_critere_par_expression_{expr}()
notamment {par num champ}
ou {par multi champ}
.
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Calculs pour le critère `{par hasard}`
calculer_critere_par_hasard(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : string
Ajoute le générateur d'aléatoire au SELECT de la boucle.
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Clause pour le Order by
Calculs pour le critère `{par num champ}` qui extrait le numéro préfixant un texte
calculer_critere_par_expression_num(string $idb, array<string|int, mixed> &$boucles, Critere $crit, array<string|int, mixed> $tri, string $champ) : string|array<string|int, mixed>
Tri par numéro de texte (tel que "10. titre"). Le numéro calculé est ajouté au SELECT
de la boucle. L'écriture {par num #ENV{tri}}
est aussi prise en compte.
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Paramètre en cours du critère
texte suivant l'expression ('titre' dans {par num titre})
Clause pour le Order by (array si erreur)
Calculs pour le critère `{par sinum champ}` qui ordonne les champs avec numéros en premier
calculer_critere_par_expression_sinum(string $idb, array<string|int, mixed> &$boucles, Critere $crit, array<string|int, mixed> $tri, string $champ) : string|array<string|int, mixed>
Ajoute au SELECT la valeur 'sinum' qui vaut 0 si le champ a un numéro, 1 s'il n'en a pas.
Ainsi {par sinum titre, num titre, titre}
mettra les éléments sans numéro en fin de liste,
contrairement à {par num titre, titre}
seulement.
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Paramètre en cours du critère
texte suivant l'expression ('titre' dans {par sinum titre})
Clause pour le Order by (array si erreur)
Calculs pour le critère `{par multi champ}` qui extrait la langue en cours dans les textes ayant des balises `<multi>` (polyglottes)
calculer_critere_par_expression_multi(string $idb, array<string|int, mixed> &$boucles, Critere $crit, array<string|int, mixed> $tri, string $champ) : string|array<string|int, mixed>
Ajoute le calcul du texte multi extrait dans le SELECT de la boucle.
Il ne peut y avoir qu'un seul critère de tri multi
par boucle.
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Paramètre en cours du critère
texte suivant l'expression ('titre' dans {par multi titre})
Clause pour le Order by (array si erreur)
Retourne le champ de tri demandé en ajoutant éventuellement les jointures nécessaires à la boucle.
calculer_critere_par_champ(string $idb, array<string|int, mixed> &$boucles, Critere $crit, string $par[, bool $raw = false ]) : array<string|int, mixed>|string
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Nom du tri à analyser ('champ' ou 'table.champ')
Retourne le champ pour le compilateur ("'alias.champ'") ou brut ('alias.champ')
Compile le critère `{inverse}` qui inverse l'ordre utilisé par le précédent critère `{par}`
critere_inverse_dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : mixed
Accèpte un paramètre pour déterminer le sens : {inverse #X}
utilisera un tri croissant (ASC)
si la valeur retournée par #X
est considérée vrai (true
),
le sens contraire (DESC) sinon.
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
{par_ordre_liste champ,#LISTE{...}} pour trier selon une liste en retournant en premier les éléments de la liste
critere_par_ordre_liste_dist(string $idb, array<string, Boucle> &$boucles, Critere $crit) : void|array<string|int, mixed>
critere_agenda_dist(mixed $idb, mixed &$boucles, mixed $crit) : mixed
Compile les critères {i,j} et {i/j}
calculer_critere_parties(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : mixed
Le critère {i,j} limite l'affiche de la boucle en commançant l'itération au i-ème élément, et pour j nombre d'éléments. Le critère {n-i,j} limite en commençant au n moins i-ème élément de boucle Le critère {i,n-j} limite en terminant au n moins j-ème élément de boucle.
Le critère {i/j} affiche une part d'éléments de la boucle. Commence à i*n/j élément et boucle n/j éléments. {2/4} affiche le second quart des éléments d'une boucle.
Traduit si possible (absence de n dans {i,j}) la demande en une expression LIMIT du gestionnaire SQL
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Compile certains critères {i,j} et {i/j}
calculer_parties(array<string|int, mixed> &$boucles, string $id_boucle, string $debut, string $mode[, string $total_parties = null ]) : mixed
Calcule une expression déterminant $debut_boucle et $fin_boucle (le début et la fin des éléments de la boucle qui doivent être affichés) et les déclare dans la propriété «mode_partie» de la boucle, qui se charge également de déplacer le pointeur de boucle sur le premier élément à afficher.
Place dans la propriété partie un test vérifiant que l'élément de boucle en cours de lecture appartient bien à la plage autorisée. Trop tôt, passe à l'élément suivant, trop tard, sort de l'itération de boucle.
AST du squelette
Identifiant de la boucle
Valeur ou code pour trouver le début (i dans {i,j})
Mode (++, p+, +- ...) : 2 signes début & fin
Valeur ou code pour trouver la fin (j dans {i,j})
Analyse un des éléments des critères {a,b} ou {a/b}
calculer_critere_parties_aux(string $idb, array<string|int, mixed> &$boucles, array<string|int, mixed> $param) : array<string|int, mixed>
Pour l'élément demandé (a ou b) retrouve la valeur de l'élément, et de combien il est soustrait si c'est le cas comme dans {a-3,b}
Identifiant de la boucle
AST du squelette
Paramètre à analyser (soit a, soit b dans {a,b} ou {a/b})
Valeur de l'élément (peut être une expression PHP), Nombre soustrait
Compile les critères d'une boucle
calculer_criteres(string $idb, array<string|int, mixed> &$boucles) : string|array<string|int, mixed>
Cette fonction d'aiguillage cherche des fonctions spécifiques déclarées pour chaque critère demandé, dans l'ordre ci-dessous :
Émet une erreur de squelette si un critère retourne une erreur.
Identifiant de la boucle
AST du squelette
string : Chaine vide sans erreur array : Erreur sur un des critères
Désemberlificote les guillements et échappe (ou fera échapper) le contenu... Madeleine de Proust, revision MIT-1958 sqq, revision CERN-1989 hum, c'est kwoi cette fonxion ? on va dire qu'elle desemberlificote les guillemets.
kwote(string $lisp[, string $serveur = '' ][, string $type = '' ]) : string
..
Code compilé
Connecteur de bdd utilisé
Type d'échappement (char, int...)
Code compilé rééchappé
Compile un critère possédant l'opérateur IN : {xx IN yy}
critere_IN_dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : void|array<string|int, mixed>
Permet de restreindre un champ sur une liste de valeurs tel que {id_article IN 3,4} {id_article IN #LISTE{3,4}}
Si on a une liste de valeurs dans #ENV{x}, utiliser la double etoile pour faire par exemple {id_article IN #ENV**{liste_articles}}
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
critere_IN_cas(mixed $idb, mixed &$boucles, mixed $crit2, mixed $arg, mixed $op, mixed $val, mixed $col) : mixed
Compile le critère {where}
critere_where_dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : mixed
Ajoute une contrainte sql WHERE, tout simplement pour faire le pont entre php et squelettes, en utilisant la syntaxe attendue par la propriété $where d'une Boucle.
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Compile le critère {having}
critere_having_dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : mixed
Ajoute une contrainte sql HAVING, pour faire le pont entre php et squelettes, en utilisant la syntaxe attendue par la propriété $having d'une Boucle.
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Compile le critère `{id_?}`
critere_id__dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : mixed
Ajoute automatiquement à la boucle des contraintes (nommées sélections conditionnelles)
équivalentes à {id_article ?}{id_rubrique ?}...
, adaptées à la table en cours d’utilisation.
Les champs sélectionnés par défaut sont :
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Liste les champs qui peuvent servir de selection conditionnelle à une table SQL
lister_champs_id_conditionnel(string $table[, array<string|int, mixed>|null $desc = null ][, string $serveur = '' ]) : array<string|int, mixed>
Retourne, pour la table demandée :
Nom de la table SQL
Description de la table SQL, si connu
Connecteur sql a utiliser
Liste de nom de champs (tel que id_article, id_mot, id_parent ...)
Compile le critère `{tri}` permettant le tri dynamique d'un champ
critere_tri_dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : mixed
Le critère {tri}
gère un champ de tri qui peut être modifié dynamiquement par la balise #TRI
.
Il s'utilise donc conjointement avec la balise #TRI
dans la même boucle
pour génerér les liens qui permettent de changer le critère de tri et le sens du tri
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Compile un critère non déclaré explicitement
calculer_critere_DEFAUT_dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : void|array<string|int, mixed>
Compile les critères non déclarés, ainsi que les parties de boucles avec les critères {0,1} ou {1/2}
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Compile un critère non déclaré explicitement, dont on reçoit une analyse
calculer_critere_DEFAUT_args(string $idb, array<string|int, mixed> &$boucles, Critere $crit, array<string|int, mixed> $args) : mixed
Ajoute en fonction des arguments trouvés par calculer_critere_infixe() les conditions WHERE à appliquer sur la boucle.
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Description du critère Cf. retour de calculer_critere_infixe()
Décrit un critère non déclaré explicitement
calculer_critere_infixe(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : array<string|int, mixed>|string
Décrit un critère non déclaré comme {id_article} {id_article>3} en retournant un tableau de l'analyse si la colonne (ou l'alias) existe vraiment.
Ajoute au passage pour chaque colonne utilisée (alias et colonne véritable) un modificateur['criteres'][colonne].
S'occupe de rechercher des exceptions, tel que
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Liste si on trouve le champ :
Chaîne vide si on ne trouve pas le champ...
Décrit un critère non déclaré explicitement, sur un champ externe à la table
calculer_critere_infixe_externe(Boucle $boucle, Critere $crit, string $op, array<string|int, mixed> $desc, string $col, string $col_alias, string $table) : array<string|int, mixed>|string
Décrit un critère non déclaré comme {id_article} {id_article>3} qui correspond à un champ non présent dans la table, et donc à retrouver par jointure si possible.
Description de la boucle
Paramètres du critère dans cette boucle
L'opérateur utilisé, tel que '='
Description de la table
Nom de la colonne à trouver (la véritable)
Alias de la colonne éventuel utilisé dans le critère ex: id_enfant
Nom de la table SQL de la boucle
Liste si jointure possible :
Chaîne vide si on ne trouve pas le champ par jointure...
Calcule une condition WHERE entre un nom du champ et une valeur
primary_doublee(array<string|int, mixed> $decompose, string $table) : array<string|int, string>
Ne pas appliquer sql_quote lors de la compilation, car on ne connait pas le serveur SQL
Liste nom du champ, code PHP pour obtenir la valeur
Nom de la table
Liste de 3 éléments pour une description where du compilateur :
Champ hors table, ça ne peut être qu'une jointure.
calculer_critere_externe_init(Boucle &$boucle, array<string|int, mixed> $joints, string $col, array<string|int, mixed> $desc, bool $cond[, bool|string $checkarrivee = false ]) : string
On cherche la table du champ et on regarde si elle est déjà jointe Si oui et qu'on y cherche un champ nouveau, pas de jointure supplementaire Exemple: criteres {titre_mot=...}{type_mot=...} Dans les 2 autres cas ==> jointure (Exemple: criteres {type_mot=...}{type_mot=...} donne 2 jointures pour selectioner ce qui a exactement ces 2 mots-cles.
Description de la boucle
Liste de jointures possibles (ex: $boucle->jointures ou $boucle->jointures_explicites)
Colonne cible de la jointure
Description de la table
Flag pour savoir si le critère est conditionnel ou non
string : nom de la table jointe où on veut trouver le champ. n'a normalement pas d'appel sans $checkarrivee.
Alias de la table de jointure (Lx) Vide sinon.
Générer directement une jointure via une table de lien spip_xxx_liens pour un critère {id_xxx}
calculer_lien_externe_init(Boucle &$boucle, array<string|int, mixed> $joints, string $col, array<string|int, mixed> $desc, bool $cond[, bool|string $checkarrivee = false ]) : string
Description de la boucle
Liste de jointures possibles (ex: $boucle->jointures ou $boucle->jointures_explicites)
Colonne cible de la jointure
Description de la table
Flag pour savoir si le critère est conditionnel ou non
string : nom de la table jointe où on veut trouver le champ. n'a normalement pas d'appel sans $checkarrivee.
Alias de la table de jointure (Lx)
Recherche la présence d'un champ dans une valeur de tableau
trouver_champ(string $champ, array<string|int, mixed> $where) : bool
Expression régulière pour trouver un champ donné. Exemple : /\barticles.titre\b/
Tableau de valeurs dans lesquels chercher le champ.
true si le champ est trouvé quelque part dans $where false sinon.
Détermine l'operateur et les opérandes d'un critère non déclaré
calculer_critere_infixe_ops(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : array<string|int, mixed>
Lorsque l'opérateur n'est pas explicite comme sur {id_article>0} c'est l'opérateur '=' qui est utilisé.
Traite les cas particuliers id_parent, id_enfant, date, lang
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Liste :
calculer_vieux_in(mixed $params) : mixed
Calcule les cas particuliers de critères de date
calculer_critere_infixe_date(string $idb, array<string|int, mixed> &$boucles, string $col) : string|array<string|int, mixed>
Lorsque la colonne correspond à un critère de date, tel que jour, jour_relatif, jour_x, age, age_relatif, age_x...
Identifiant de la boucle
AST du squelette
Nom du champ demandé
chaine vide si ne correspond pas à une date, sinon liste
Calcule l'expression SQL permettant de trouver un nombre de jours écoulés.
calculer_param_date(string $date_compare, string $date_orig) : string
Le calcul SQL retournera un nombre de jours écoulés entre la date comparée et la colonne SQL indiquée
Code PHP permettant d'obtenir le timestamp référent. C'est à partir de lui que l'on compte les jours
Nom de la colonne SQL qui possède la date
Expression SQL calculant le nombre de jours écoulé entre une valeur de colonne SQL et une date.
Compile le critère {source} d'une boucle DATA
critere_DATA_source_dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : mixed
Permet de déclarer le mode d'obtention des données dans une boucle DATA (premier argument) et les données (la suite).
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Compile le critère {datacache} d'une boucle DATA
critere_DATA_datacache_dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : mixed
Permet de transmettre une durée de cache (time to live) utilisée pour certaines sources d'obtention des données (par exemple RSS), indiquant alors au bout de combien de temps la donnée est à réobtenir.
La durée par défaut est 1 journée.
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Compile le critère {args} d'une boucle PHP
critere_php_args_dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : mixed
Permet de passer des arguments à un iterateur non-spip (PHP:xxxIterator){args argument1, argument2, argument3}
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Compile le critère {liste} d'une boucle DATA
critere_DATA_liste_dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : mixed
Passe une liste de données à l'itérateur DATA
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Compile le critère {enum} d'une boucle DATA
critere_DATA_enum_dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : mixed
Passe les valeurs de début et de fin d'une énumération, qui seront vues comme une liste d'autant d'éléments à parcourir pour aller du début à la fin.
Cela utilisera la fonction range() de PHP.
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Compile le critère {datapath} d'une boucle DATA
critere_DATA_datapath_dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : mixed
Extrait un chemin d'un tableau de données
(DATA){datapath query.results}
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Compile le critère {si}
critere_si_dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : mixed
Le critère {si condition} est applicable à toutes les boucles et conditionne l'exécution de la boucle au résultat de la condition. La partie alternative de la boucle est alors affichée si une condition n'est pas remplie (comme lorsque la boucle ne ramène pas de résultat). La différence étant que si la boucle devait réaliser une requête SQL (par exemple une boucle ARTICLES), celle ci n'est pas réalisée si la condition n'est pas remplie.
Les valeurs de la condition sont forcément extérieures à cette boucle (sinon il faudrait l'exécuter pour connaître le résultat, qui doit tester si on exécute la boucle !)
Si plusieurs critères {si} sont présents, ils sont cumulés : si une seule des conditions n'est pas vérifiée, la boucle n'est pas exécutée.
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Compile le critère {noeud}
critere_noeud_dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : mixed
Trouver tous les objets qui ont des enfants (les noeuds de l'arbre) {noeud} {!noeud} retourne les feuilles
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Compile le critère {feuille}
critere_feuille_dist(string $idb, array<string|int, mixed> &$boucles, Critere $crit) : mixed
Trouver tous les objets qui n'ont pas d'enfants (les feuilles de l'arbre) {feuille} {!feuille} retourne les noeuds
Identifiant de la boucle
AST du squelette
Paramètres du critère dans cette boucle
Point d'entrée pour les erreurs de compilation
public_debusquer_dist([bool|string|array<string|int, mixed> $message = '' ][, string|Contexte $lieu = '' ][, array<string|int, mixed> $opt = [] ]) : null|string|array<string|int, mixed>|true|void
Point d'entrée pour les appels involontaires ($message non vide => erreur) et volontaires (var_mode et var_profile)
Si pas d'autorisation, les erreurs ne sont pas affichées (mais seront dans les logs)
Si l'erreur vient de SPIP, en parler sur spip@rezo.net
Contexte : lieu d'origine de l'erreur
Options pour debug ou tests unitaires
debusquer_compose_message(mixed $msg) : mixed
debusquer_bandeau(mixed $erreurs) : mixed
Affiche proprement dans un tableau le contexte d'environnement
debusquer_contexte(array<string|int, mixed>|string $env) : string
Code HTML
debusquer_loger_erreur(mixed $msg, mixed $lieu) : mixed
debusquer_navigation(mixed $tableau[, mixed $caption = [] ][, mixed $id = 'debug-nav' ]) : mixed
Retourne le texte d'un message d'erreur de requête
debusquer_requete(array<string|int, mixed> $message) : string|array<string|int, mixed>
Si une boucle cree des soucis, on peut afficher la requete fautive avec son code d'erreur
Description du message en 3 éléments :
Retourne le texte de l'erreur a afficher ou un tableau si l'erreur est critique
trouve_boucle_debug(mixed $n, mixed $nom[, mixed $debut = 0 ][, mixed $boucle = '' ]) : mixed
trouve_squelette_inclus(mixed $script) : mixed
reference_boucle_debug(mixed $n, mixed $nom, mixed $self) : mixed
ancre_texte(mixed $texte[, mixed $fautifs = [] ][, mixed $nocpt = false ]) : mixed
debusquer_squelette(mixed $fonc, mixed $mode, mixed $self) : mixed
emboite_texte(mixed $res[, mixed $fonc = '' ][, mixed $self = '' ]) : mixed
count_occ(mixed $regs) : mixed
debusquer_format_millisecondes(mixed $t) : mixed
debusquer_navigation_squelettes(mixed $self) : mixed
debusquer_navigation_boucles(mixed $boucles, mixed $nom_skel, mixed $self, mixed $nom_source) : mixed
debusquer_source(mixed $objet, mixed $affiche) : mixed
debusquer_entete(mixed $titre, mixed $corps) : mixed
decompiler_boucle(mixed $struct[, mixed $fmt = '' ][, mixed $prof = 0 ]) : mixed
decompiler_include(mixed $struct[, mixed $fmt = '' ][, mixed $prof = 0 ]) : mixed
decompiler_texte(mixed $struct[, mixed $fmt = '' ][, mixed $prof = 0 ]) : mixed
decompiler_polyglotte(mixed $struct[, mixed $fmt = '' ][, mixed $prof = 0 ]) : mixed
decompiler_idiome(mixed $struct[, mixed $fmt = '' ][, mixed $prof = 0 ]) : mixed
decompiler_champ(mixed $struct[, mixed $fmt = '' ][, mixed $prof = 0 ]) : mixed
decompiler_liste(mixed $sources[, mixed $fmt = '' ][, mixed $prof = 0 ]) : mixed
decompiler_criteres(mixed $boucle[, mixed $fmt = '' ][, mixed $prof = 0 ]) : mixed
decompiler_(mixed $liste[, mixed $fmt = '' ][, mixed $prof = 0 ]) : mixed
public_decompiler(mixed $liste[, mixed $fmt = '' ][, mixed $prof = 0 ][, mixed $quoi = '' ]) : mixed
Calcul d'une introduction
filtre_introduction_dist(string $descriptif, string $texte, string $longueur, string $connect[, string $suite = null ]) : string
L'introduction est prise dans le descriptif s'il est renseigné,
sinon elle est calculée depuis le texte : à ce moment là,
l'introduction est prise dans le contenu entre les balises
<intro>
et </intro>
si présentes, sinon en coupant le
texte à la taille indiquée.
Cette fonction est utilisée par la balise #INTRODUCTION
Descriptif de l'introduction
texte à utiliser en absence de descriptif
Longueur de l'introduction
Nom du connecteur à la base de données
points de suite si on coupe (par defaut _INTRODUCTION_SUITE et sinon (...)
Introduction calculée
Filtre calculant une pagination, utilisé par la balise `#PAGINATION`
filtre_pagination_dist(int $total, string $nom, int $position, int $pas[, bool $liste = true ][, string $modele = '' ][, string $connect = '' ][, array<string|int, mixed> $env = [] ]) : string
Le filtre cherche le modèle pagination.html
par défaut, mais peut
chercher un modèle de pagination particulier avec l'argument $modele
.
S'il $modele='prive'
, le filtre cherchera le modèle pagination_prive.html
.
Nombre total d'éléments
Nom identifiant la pagination
Page à afficher (tel que la 3è page)
Nombre d'éléments par page
Nom spécifique du modèle de pagination
Nom du connecteur à la base de données
Environnement à transmettre au modèle
Code HTML de la pagination
Calcule les bornes d'une pagination
filtre_bornes_pagination_dist(int $courante, int $nombre[, int $max = 10 ]) : array<string|int, int>
Page courante
Nombre de pages
Nombre d'éléments par page
Liste (première page, dernière page).
filtre_pagination_affiche_texte_lien_page_dist(mixed $type_pagination, mixed $numero_page, mixed $rang_item) : mixed
Retourne pour une clé primaire d'objet donnée les identifiants ayant un logo
lister_objets_avec_logos(string $type) : string
Nom de la clé primaire de l'objet
Liste des identifiants ayant un logo (séparés par une virgule)
Renvoie l'état courant des notes, le purge et en prépare un nouveau
calculer_notes() : string
Fonction appelée par la balise #NOTES
Code HTML des notes
Retrouver le rang du lien entre un objet source et un obet lie utilisable en direct dans un formulaire d'edition des liens, mais #RANG doit faire le travail automatiquement [(#ENV{objet_source}|rang_lien{#ID_AUTEUR,#ENV{objet},#ENV{id_objet},#ENV{_objet_lien}})]
retrouver_rang_lien(string $objet_source, int $ids, string $objet_lie, int $idl, string $objet_lien) : string
Lister les liens en le memoizant dans une static pour utilisation commune par lister_objets_lies et retrouver_rang_lien dans un formulaire d'edition de liens (evite de multiplier les requetes)
lister_objets_liens(string $objet_source, string $objet, int $id_objet, string $objet_lien) : mixed
Calculer la balise #RANG quand ce n'est pas un champ rang : peut etre le num titre, le champ rang_lien ou le rang du lien en edition des liens, a retrouver avec les infos du formulaire
calculer_rang_smart(string $titre, string $objet_source, int $id, array<string|int, mixed> $env) : int|string
Calcul de la balise #TRI
calculer_balise_tri(string $champ_ou_sens, string $libelle, string $classe, string $tri_nom, string $tri_champ, string $tri_sens, array<string|int, mixed>|string|int $liste_tri_sens_defaut[, string $nom_pagination = '' ]) : string
<
et >
pour définir le sens du tri sur le champ actuelTexte du lien
Classe ajoutée au lien, telle que ajax
Nom du paramètre définissant le tri
Nom du champ actuel utilisé pour le tri
Sens de tri actuel, 1 ou -1
Soit la liste des sens de tri par défaut pour chaque champ Soit une valeur par défaut pour tous les champs (1, -1, inverse)
Nom de la boucle
HTML avec un lien cliquable
Proteger les champs passes dans l'url et utiliser dans {tri ...} preserver l'espace pour interpreter ensuite num xxx et multi xxx on permet d'utiliser les noms de champ prefixes articles.titre et les propriete json properties.gis[0].ville
tri_protege_champ(string $t) : string
Interpreter les multi xxx et num xxx utilise comme tri pour la clause order 'multi xxx' devient simplement 'multi' qui est calcule dans le select
tri_champ_order(string $t[, array<string|int, mixed> $from = null ][, mixed $senstri = '' ]) : string
Interpreter les multi xxx et num xxx utilise comme tri pour la clause select 'multi xxx' devient select "...." as multi les autres cas ne produisent qu'une chaine vide '' en select 'hasard' devient 'rand() AS hasard' dans le select
tri_champ_select(string $t) : string
Fonction de mise en forme utilisee par le critere {par_ordre_liste..}
formate_liste_critere_par_ordre_liste(array<string|int, mixed> $valeurs[, string $serveur = '' ]) : string
generer le style dynamique inline pour la page de login et spip_pass
filtre_styles_inline_page_login_pass_dist(array<string|int, mixed> &$Pile, mixed ...$dummy) : string
Pile de données
format_boucle_html(mixed $preaff, mixed $avant, mixed $nom, mixed $type, mixed $crit, mixed $corps, mixed $apres, mixed $altern, mixed $postaff, mixed $prof) : mixed
format_inclure_html(mixed $file, mixed $args, mixed $prof) : mixed
format_polyglotte_html(mixed $args, mixed $prof) : mixed
format_idiome_html(mixed $nom, mixed $module, mixed $args, mixed $filtres, mixed $prof) : mixed
format_champ_html(mixed $nom, mixed $boucle, mixed $etoile, mixed $avant, mixed $apres, mixed $args, mixed $filtres, mixed $prof) : mixed
format_critere_html(mixed $critere) : mixed
format_liste_html(mixed $fonc, mixed $args, mixed $prof) : mixed
format_suite_html(mixed $args) : mixed
format_texte_html(mixed $texte) : mixed
Déclarer les interfaces de la base pour le compilateur
declarer_interfaces() : mixed
On utilise une fonction qui initialise les valeurs, sans écraser d'eventuelles prédéfinition dans mes_options et les envoie dans un pipeline pour les plugins
Décomposer un champ id_truc en (id_objet,objet,truc)
decompose_champ_id_objet(string $champ) : array<string|int, mixed>|string
Exemple : décompose id_article en (id_objet,objet,article)
Nom du champ à décomposer
Tableau si décomposable : 'id_objet', 'objet', Type de l'objet Chaine sinon : le nom du champ (non décomposable donc)
Mapping d'un champ d'une jointure en deux champs id_objet,objet si nécessaire
trouver_champs_decomposes(string $champ, array<string|int, mixed> $desc) : array<string|int, mixed>
Si le champ demandé existe dans la table, on l'utilise, sinon on regarde si le champ se décompose en objet/id_objet et si la table possède ces champs, et dans ce cas, on les retourne.
Nom du champ à tester (ex. id_article)
Description de la table
Liste du/des champs. Soit
Calculer et construite une jointure entre $depart et $arrivee
calculer_jointure(Boucle &$boucle, array<string|int, mixed> $depart, array<string|int, mixed> $arrivee[, string $col = '' ][, bool $cond = false ][, int $max_liens = 5 ]) : string
L'objet boucle est modifié pour compléter la requête. La fonction retourne l'alias d'arrivée une fois la jointure construire, en general un "Lx"
Description de la boucle
Table de départ, sous la forme (nom de la table, description de la table)
Table d'arrivée, sous la forme (nom de la table, description de la table)
Colonne cible de la jointure
Flag pour savoir si le critère est conditionnel ou non
Nombre maximal de liaisons possibles pour trouver la jointure.
Alias de la table de jointure (Lx)
Fabriquer une jointure à l'aide d'une liste descriptive d'étapes
fabrique_jointures(Boucle &$boucle, array<string|int, mixed> $res[, bool $cond = false ][, array<string|int, mixed> $desc = [] ][, string $nom = '' ][, string $col = '' ][, bool $echap = true ]) : string
Ajoute
Description de la boucle
Chaîne des jointures $res = array( array(table_depart,array(table_arrivee,desc),jointure), ... ) Jointure peut être un tableau pour les jointures sur champ decomposé array('id_article','id_objet','objet','article') array('id_objet','id_article','objet','article')
Flag pour savoir si le critère est conditionnel ou non
Description de la table de départ
Nom de la table de départ
Colonne cible de la jointure
Écrire les valeurs dans boucle->join en les échappant ou non ?
Alias de la table de jointure (Lx)
Condition suffisante pour qu'un Group-By ne soit pas nécéssaire
nogroupby_if(array<string|int, mixed> $depart, array<string|int, mixed> $arrivee, string|array<string|int, mixed> $col) : bool
À améliorer, notamment voir si calculer_select ne pourrait pas la réutiliser lorsqu'on sait si le critere conditionnel est finalement present
Lister les champs candidats a une jointure, sur une table si un join est fourni dans la description, c'est lui qui l'emporte sauf si cle primaire explicitement demandee par $primary
liste_champs_jointures(string $nom, array<string|int, mixed> $desc[, bool $primary = false ]) : array<string|int, mixed>
sinon on construit une liste des champs a partir de la liste des cles de la table
Eclater une cle composee en plusieurs champs
split_key(string $v[, array<string|int, mixed> $join = [] ]) : array<string|int, mixed>
Constuire la chaine de jointures, de proche en proche
calculer_chaine_jointures(objetc &$boucle, array<string|int, mixed> $depart, array<string|int, mixed> $arrivee[, array<string|int, mixed> $vu = [] ][, array<string|int, mixed> $milieu_exclus = [] ][, int $max_liens = 5 ]) : array<string|int, mixed>
sous la forme array(nom de la table, description)
sous la forme array(nom de la table, description)
tables deja vues dans la jointure, pour ne pas y repasser
cles deja utilisees, pour ne pas les reutiliser
nombre maxi d'etapes
applatit les cles multiples redondance avec split_key() ? a mutualiser
trouver_cles_table(array<string|int, mixed> $keys) : array<string|int, mixed>
Indique si une colonne (ou plusieurs colonnes) est présente dans l'une des tables indiquée.
chercher_champ_dans_tables(string|array<string|int, mixed> $cle, array<string|int, mixed> $tables, string $connect[, bool|string $checkarrivee = false ]) : array<string|int, mixed>|false
Nom de la ou des colonnes à trouver dans les tables indiquées
Liste de noms de tables ou des couples (alias => nom de table).
$boucle->from
(alias => nom de table) : les tables déjà utilisées dans une boucle$boucle->jointures
: les tables utilisables en tant que jointure$boucle->jointures_explicites
les jointures explicitement indiquées à l'écriture de la boucleNom du connecteur SQL
false : peu importe la table, si on trouve le/les champs, c'est bon. string : nom de la table où on veut trouver le champ.
false : on n'a pas trouvé array : infos sur la table trouvée. Les clés suivantes sont retournés :
$boucle->from
transmis par exemple)Cherche une colonne (ou plusieurs colonnes) dans les tables de jointures possibles indiquées.
trouver_champ_exterieur(string|array<string|int, mixed> $cle, array<string|int, mixed> $joints, Boucle &$boucle[, bool|string $checkarrivee = false ]) : array<string|int, mixed>|string
Nom de la ou des colonnes à trouver dans les tables de jointures
Liste des jointures possibles (ex: $boucle->jointures ou $boucle->jointures_explicites)
Description de la boucle
false : peu importe la table, si on trouve le/les champs, c'est bon. string : nom de la table jointe où on veut trouver le champ.
chaîne vide : on n'a pas trouvé liste si trouvé : nom de la table, description de la table, clé(s) de la table
Cherche a ajouter la possibilite d'interroger un champ sql dans une boucle.
trouver_jointure_champ(string $champ, object &$boucle[, array<string|int, mixed> $jointures = false ][, bool $cond = false ][, bool|string $checkarrivee = false ]) : string
Cela construira les jointures necessaires si une possibilite est trouve et retournera le nom de l'alias de la table contenant ce champ (L2 par exemple pour 'spip_mots AS L2' dans le FROM),
Nom du champ cherche (exemple id_article)
Informations connues de la boucle
Liste des tables parcourues (articles, mots) pour retrouver le champ sql et calculer la jointure correspondante. En son absence et par defaut, on utilise la liste des jointures connues par SPIP pour la table en question ($boucle->jointures)
flag pour savoir si le critere est conditionnel ou non
false : peu importe la table, si on trouve le/les champs, c'est bon. string : nom de la table jointe où on veut trouver le champ.
phraser_vieux_modele(mixed $p) : mixed
phraser_vieux_inclu(mixed $p) : mixed
Accepte la syntaxe historique {arg1=val1}{arg2=val2}... dans les INCLURE au lieu de {arg1=val1,arg2=val2,...}
normaliser_args_inclumodel(Champ|Inclure $p) : mixed
Trim les arguments de <INCLURE> et repère l'argument spécial fond=
normaliser_inclure(Inclure $champ) : mixed
public_parametrer_dist(mixed $fond[, mixed $contexte = '' ][, mixed $cache = '' ][, string $connect = '' ]) : mixed
Retourne une présentation succincte du contexte pour les logs
presenter_contexte(array<string|int, mixed> $contexte[, mixed $profondeur_max = 1 ][, mixed $max_lines = 0 ]) : string
Si le champ virtuel est non vide c'est une redirection.
tester_redirection(string $fond, array<string|int, mixed> $contexte, string $connect) : array<string|int, mixed>|bool
avec un eventuel raccourci Spip
si le raccourci a un titre il sera pris comme corps du 302
Si le champ virtuel est non vide c'est une redirection.
public_tester_redirection_dist(string $fond, array<string|int, mixed> $contexte, string $connect) : array<string|int, mixed>|bool
avec un eventuel raccourci Spip
si le raccourci a un titre il sera pris comme corps du 302
Parser les <INCLURE> dans le texte
phraser_inclure(string $texte, int $ligne, array<string|int, mixed> $result) : array<string|int, mixed>
Phraser les <multi>...</multi> on passe en dernier de toutes les analyses : a ce stade il ne reste que des morceaux de texte entre balises/boucles, donc une <multi> ne peut pas contenir de balises
phraser_polyglotte(string $texte, int $ligne, array<string|int, mixed> $result) : array<string|int, mixed>
Repérer les balises de traduction (idiomes)
phraser_preparer_idiomes(string $texte, int $ligne, string $sep, array<string|int, mixed> $result) : string
Phrase les idiomes tel que
<:chaine:>
<:module:chaine:>
<:module:chaine{arg1=texte1,arg2=#BALISE}|filtre1{texte2,#BALISE}|filtre2:>
<:module:chaine{arg1=texte1,arg2=[(#BALISE)]}|filtre1{texte2,#BALISE}|filtre2:>
<:module:{=#VAL{chaine},arg1=texte1,arg2=[(#BALISE)]}|filtre1{texte2,#BALISE}|filtre2:>
<:{=#VAL{module:chaine},arg1=texte1,arg2=[(#BALISE)]}|filtre1{texte2,#BALISE}|filtre2:>
Pour permettre une syntaxe complète dans les arguments, on transforme la syntaxe <:..:> en une syntaxe standard de balises
[(#TRAD_IDIOME{module:chaine,arg1=texte1,arg2=[(#BALISE)]}|filtre1{texte2,#BALISE}|filtre2)]
qui est ensuite parsée comme une balise standard
Repère et phrase les balises SPIP tel que `#NOM` dans un texte
phraser_champs(string $texte, int $ligne, array<string|int, mixed> $result) : array<string|int, mixed>
Phrase également ses arguments si la balise en a (#NOM{arg, ...}
)
Phraser les champs etendus
phraser_champs_etendus(string $texte, int $ligne, array<string|int, mixed> $result) : array<string|int, mixed>
Analyse les filtres d'un champ etendu et affecte le resultat renvoie la liste des lexemes d'origine augmentee de ceux trouves dans les arguments des filtres (rare) sert aussi aux arguments des includes et aux criteres de boucles Tres chevelu
phraser_args(string $texte, string $fin, string $sep, array<string|int, mixed> $result, Champ|Inclure|Boucle &$pointeur_champ, int &$pos_debut) : array<string|int, mixed>
phraser_arg(mixed &$texte, mixed $sep, mixed $result, mixed &$pointeur_champ) : mixed
Reconstruire un tableau de resultat ordonné selon l'ordre d'apparition dans le texte issu de phraser_champs_interieurs() et phraser les inclure sur les morceaux intermédiaires
phraser_champs_exterieurs(string $texte, int $ligne, string $sep, array<string|int, mixed> $nested_res) : array<string|int, mixed>
Parser un texte pour trouver toutes les balises complètes `[...(#TRUC)...]` en gérant les imbrications possibles
phraser_champs_interieurs(string $texte, int $no_ligne, string $sep) : array<string|int, mixed>
Pour cela on commence par les plus profondes, sans rien dedans,
on les remplace par un placehoder inactif %###N@
ou N indexe un tableau comportant le resultat de leur analyse
et on recommence jusqu'à ce qu'on ne trouve plus rien
Gerer les derogations de syntaxe historiques Ne concerne plus que #MODELE et <INCLURE> / #INCLURE
phraser_vieux(Champ|Inclure &$champ) : mixed
Analyse les critères de boucle
phraser_criteres(array<string|int, mixed> $params, Boucle &$result) : mixed
Chaque paramètre de la boucle (tel que {id_article>3}) est analysé pour construire un critère (objet Critere) de boucle.
Un critère a une description plus fine que le paramètre original car on en extrait certaines informations tel que la négation et l'opérateur utilisé s'il y a.
La fonction en profite pour déclarer des modificateurs de boucles en présence de certains critères (tout, plat) ou initialiser des variables de compilation (doublons)...
Tableau de description des paramètres passés à la boucle. Chaque paramètre deviendra un critère
Description de la boucle Elle sera complété de la liste de ses critères
phraser_critere_infixe(mixed $arg1, mixed $arg2, mixed $args, mixed $op, mixed $not, mixed $cond) : mixed
Compter le nombre de lignes dans une partie texte
public_compte_ligne(string $texte[, int $debut = 0 ][, int|null $fin = null ]) : int
Trouver la boucle qui commence en premier dans un texte On repere les boucles via <BOUCLE_xxx( et ensuite on regarde son vrai debut soit <B_xxx> soit <BB_xxx>
public_trouver_premiere_boucle(string $texte, string $id_parent, array<string|int, mixed> $descr[, int $pos_debut_texte = 0 ]) : array<string|int, mixed>|null
Trouver la fin de la boucle (balises </B <//B </BB) en faisant attention aux boucles anonymes qui ne peuvent etre imbriquees
public_trouver_fin_boucle(string $texte, string $id_parent, array<string|int, mixed> $boucle, int $pos_debut_texte, object $result) : array<string|int, mixed>
la description de la boucle dans un tableau associatif
Définir un placeholder avec un hash unique pour substitution dans un texte donné on s'assure de n'avoir aucune occurence existante dans le texte
phraser_placeholder_hash(string &$texte, string $placeholder_prefixe) : string
Memoriser un champ ou une boucle associé a son placeholder
phraser_placeholder_memoriser(string $champ, string $nom_champ_placeholder, mixed $boucle_ou_champ) : mixed
Reinejcter un champ ou une boucle associé a son placeholder
phraser_placeholder_reinjecter(mixed &$champ) : mixed
Generer une balise placeholder qui prend la place d'une boucle ou d'un champ pour continuer le parsing des balises utilisé pour remplacer une boucle ou un idiome
public_placeholder_generer(string $nom_structure, mixed &$boucle_ou_champ, string $placeholder_pattern, int $nb_lignes[, bool $force_balise_etendue = false ]) : string
Analyseur syntaxique des squelettes HTML SPIP On commence par analyser les boucles, les mémoriser, et les remplacer dans le texte par des placeholder qui ne genent pas la suite de l'analyse des balises et autres
public_phraser_html_dist(string $texte, string $id_parent, array<string, Boucle> &$boucles, array<string|int, mixed> $descr[, int $ligne_debut_texte = 1 ][, string|null $boucle_placeholder = null ]) : array<string|int, mixed>
Retourne l'URL de redirection d'un article virtuel, seulement si il est publié
quete_virtuel(int $id_article, string $connect) : array<string|int, mixed>|bool|null
Retourne le couple `parent,lang` pour toute table
quete_parent_lang(string $table, int $id[, string $connect = '' ]) : array<string|int, mixed>
En pratique id_rubrique
si présent (ou id_parent
pour table rubriques)
et champ lang
si présent
Retourne le parent d'une rubrique
quete_parent(int $id_rubrique[, string $connect = '' ]) : int
Repose sur la fonction quete_parent_lang pour la mutualisation +mise en cache SQL des requêtes
Retourne la rubrique d'un article
quete_rubrique(int $id_article, string $serveur) : int
Repose sur la fonction quete_parent_lang pour la mutualisation +mise en cache SQL des requêtes
Retourne la profondeur d'une rubrique
quete_profondeur(int $id[, string $connect = '' ]) : int
Retourne la condition sur la date lorsqu'il y a des post-dates
quete_condition_postdates(string $champ_date[, string $serveur = '' ][, bool $ignore_previsu = false ]) : string
Nom de la colonne de date dans la table SQL
true pour forcer le test même en prévisu
Morceau de la requête SQL testant la date
Calculer la condition pour filtrer les status,
quete_condition_statut(string $mstatut, string $previsu, string $publie[, string $serveur = '' ][, bool $ignore_previsu = false ]) : array<string|int, mixed>|string
Le champ de la table sur lequel porte la condition
Mode previsu : statut ou liste des statuts séparés par une virgule
Mode publie : statut ou liste des statuts séparés par une virgule
Serveur de BDD
true pour forcer le test même en prévisu
Retourne le fichier d'un document
quete_fichier(int $id_document[, string $serveur = '' ]) : array<string|int, mixed>|bool|null
Toute les infos sur un document
quete_document(int $id_document[, string $serveur = '' ]) : array<string|int, mixed>|bool
Récuperer une meta sur un site (spip) distant (en local il y a plus simple)
quete_meta(string $nom, string $serveur) : array<string|int, mixed>|bool|null
Nom de la méta
Connecteur
Retourne le logo d'un objet, éventuellement par héritage
@param bool $flag Lorsque le drapeau est évalué comme "true", la fonction ne renvoie que le chemin du fichier, sinon elle renvoie le tableau plus complet.
quete_logo(string $cle_objet, string $onoff, int $id, int $id_rubrique[, mixed $flag = false ]) : array<string|int, mixed>|string
Si flag != false, retourne le chemin du fichier, sinon retourne un tableau de 3 elements : le chemin du fichier, celui du logo de survol, l'attribut style=w/h.
Nom de la clé de l'objet dont on veut chercher le logo.
Sélectionne quel(s) logo(s) : "on" pour le logo normal, "off" pour le logo de survol, ou "ON" pour l'ensemble.
Identifiant de l'objet dont on veut chercher le logo.
Identifiant de la rubrique parente si l'on veut aller chercher son logo dans le cas où l'objet demandé n'en a pas.
Retourne soit un tableau, soit le chemin du fichier.
Chercher le logo d'un contenu précis
quete_logo_objet(int $id_objet, string $objet, string $mode) : bool|array<string|int, mixed>
Idenfiant de l'objet dont on cherche le logo
Type de l'objet dont on cherche le logo
"on" ou "off" suivant le logo normal ou survol
Retourne le logo d’un fichier (document spip) sinon la vignette du type du fichier
quete_logo_file(array<string|int, mixed> $row[, string $connect = null ]) : bool|string
Fonction appeleé par la balise #LOGO_DOCUMENT
Trouver l'image logo d'un document
quete_logo_document(array<string|int, mixed> $row, mixed $lien, mixed $align, mixed $mode_logo, mixed $x, mixed $y[, string $connect = '' ]) : string
description du document, issue de la base
url de lien
alignement left/right
mode du logo : '' => automatique (vignette sinon apercu sinon icone) icone => icone du type du fichier apercu => apercu de l'image exclusivement, meme si une vignette existe vignette => vignette exclusivement, ou rien si elle n'existe pas
largeur maxi
hauteur maxi
serveur
Recuperer le HTML du logo d'apres ses infos
quete_html_logo(array<string|int, mixed> $logo, string $align, string $lien) : string
Retourne le chemin d’un document lorsque le connect est précisé
document_spip_externe(string $fichier, string $connect) : string|false
Sur un connecteur distant, voir si on connait l’adresse du site (spip distant) et l’utiliser le cas échéant.
Chemin
Nom du connecteur
Retourne la vignette explicitement attachee a un document le resutat est un fichier local existant, ou une URL ou vide si pas de vignette
vignette_logo_document(array<string|int, mixed> $row[, string $connect = '' ]) : string
Calcul pour savoir si un objet est expose dans le contexte fournit par $reference
calcul_exposer(int $id, string $prim, array<string|int, mixed> $reference, int $parent, string $type[, string $connect = '' ]) : bool|string
Trouver le numero de page d'une pagination indirecte lorsque debut_xxx=@123 on cherche la page qui contient l'item dont la cle primaire vaut 123
quete_debut_pagination(string $primary, int|string $valeur, int $pas, object $iter) : int
Retourne true si ce where doit être appliqué, dans le cas des critères avec ? tel que `{id_article ?}`
is_whereable(mixed $value) : bool
Retrouver l'index de la boucle d'une balise
index_boucle(Champ $p) : string
Retrouve à quelle boucle appartient une balise, utile dans le cas où une référence explicite est demandée
#MABALISE
: l'index est celui de la première boucle englobante#_autreboucle:MABALISE
: l'index est celui de la boucle _autreboucleAST au niveau de la balise
Retrouve la boucle mère d’une balise, sauf si son nom est explicité
index_boucle_mere(Champ $p) : string
#MABALISE
: l'index sera celui de la boucle parente#_autreboucle:MABALISE
: l'index est celui de la boucle _autreboucle, si elle existeAST au niveau de la balise
Retourne la position dans la pile d'un champ SQL
index_pile(string $idb, string $nom_champ, array<string|int, mixed> &$boucles[, string $explicite = '' ][, null|string $defaut = null ][, bool $remonte_pile = true ][, bool $select = true ]) : string
Retourne le code PHP permettant de récupérer un champ SQL dans une boucle parente, en prenant la boucle la plus proche du sommet de pile (indiqué par $idb).
Si on ne trouve rien, on considère que ça doit provenir du contexte (par l'URL ou l'include) qui a été recopié dans Pile[0] (un essai d'affinage a débouché sur un bug vicieux)
Si ca référence un champ SQL, on le mémorise dans la structure $boucles afin de construire un requête SQL minimale (plutôt qu'un brutal 'SELECT *')
Identifiant de la boucle
Nom du champ SQL cherché
AST du squelette
Indique que le nom de la boucle est explicite dans la balise #_nomboucletruc:CHAMP
Code par defaut si le champ n'est pas trouvé dans l'index.
Utilise ($Pile[0][$nom_champ] ?? null)
si non fourni
Permettre de remonter la pile des boucles ou non (dans ce cas on ne cherche que dans la 1ère boucle englobante)
Pour ajouter au select de la boucle, par defaut true
Code PHP pour obtenir le champ SQL
Reconstuire la cascade de condition de recherche d'un champ
index_compose(array<string|int, mixed> $conditionnel, string $defaut) : string
On ajoute la valeur finale par défaut pour les balises dont on ne saura qu'à l'exécution si elles sont definies ou non (boucle DATA)
Liste de codes PHP pour retrouver un champ
Valeur par défaut si aucun des moyens ne l'a trouvé
Code PHP complet de recherche d'un champ
Cherche un champ dans une boucle
index_tables_en_pile(string $idb, string $nom_champ, array<string|int, Boucle> &$boucles, bool &$joker) : array<string|int, mixed>
Le champ peut être :
Identifiant de la boucle
Nom du champ SQL cherché
AST du squelette
Le champ peut-il être inconnu à la compilation ? Ce drapeau sera levé si c'est le cas.
Liste (Nom du champ véritable, nom du champ demandé). Le nom du champ véritable est une expression pour le SELECT de la boucle tel que "rubriques.titre" ou "mots.titre AS titre_mot". Les éléments de la liste sont vides si on ne trouve rien.
Retrouve un alias d'un champ dans une boucle
index_exception(Boucle &$boucle, array<string|int, mixed> $desc, string $nom_champ, array<string|int, mixed> $excep) : array<string|int, mixed>
Référence à une entite SPIP alias d'un champ SQL. Ça peut même être d'un champ dans une jointure qu'il faut provoquer si ce n'est fait
Boucle dont on prend un alias de champ
Description de la table SQL de la boucle
Nom du champ original demandé
Description de l'exception pour ce champ. Peut être :
Liste (nom du champ alias, nom du champ). Le nom du champ alias est une expression pour le SELECT de la boucle du style "mots.titre AS titre_mot"
Demande le champ '$champ' dans la pile
champ_sql(string $champ, Champ $p[, null|string $defaut = null ][, bool $remonte_pile = true ]) : string
Le champ est cherché dans l'empilement de boucles, sinon dans la valeur par défaut (qui est l'environnement du squelette si on ne la précise pas).
Champ recherché
AST au niveau de la balise
Code de la valeur par défaut si on ne trouve pas le champ dans une des boucles parentes. Sans précision, il sera pris dans l'environnement du squelette. Passer $defaut = '' pour ne pas prendre l'environnement.
Permettre de remonter dans la pile des boucles pour trouver le champ
Code PHP pour retrouver le champ
Calcule et retourne le code PHP d'exécution d'une balise SPIP et des ses filtres
calculer_champ(Champ $p) : string
Cette fonction qui sert d'API au compilateur demande à calculer le code PHP d'une balise, puis lui applique les filtres (automatiques et décrits dans le squelette)
AST au niveau de la balise
Code PHP pour d'exécution de la balise et de ses filtres
Calcule et retourne le code PHP d'exécution d'une balise SPIP
calculer_balise(string $nom, Champ $p) : Champ
Cette fonction qui sert d'API au compilateur demande à calculer le code PHP d'une balise (cette fonction ne calcule pas les éventuels filtres de la balise).
Pour une balise nommmée NOM
, elle demande à charger_fonction()
de chercher
s'il existe une fonction balise_NOM
ou balise_NOM_dist
éventuellement en chargeant le fichier balise/NOM.php.
Si la balise est de la forme PREFIXE_SUFFIXE
(cf LOGO_*
et URL_*
)
elle fait de même avec juste le PREFIXE
.
S'il n'y a pas de fonction trouvée, on considère la balise comme une référence
à une colonne de table SQL connue, sinon à l'environnement (cf. calculer_balise_DEFAUT_dist()
).
Les surcharges des colonnes SQL via charger_fonction sont donc possibles.
Nom de la balise
AST au niveau de la balise
Pile complétée par le code PHP pour l'exécution de la balise et de ses filtres
Calcule et retourne le code PHP d'exécution d'une balise SPIP non déclarée
calculer_balise_DEFAUT_dist(string $nom, Champ $p) : string
Cette fonction demande à calculer le code PHP d'une balise qui n'a pas de fonction spécifique.
On considère la balise comme une référence à une colonne de table SQL connue, sinon à l'environnement.
Nom de la balise
AST au niveau de la balise
Code PHP pour d'exécution de la balise et de ses filtres
Calcule le code PHP d'exécution d'une balise SPIP dynamique
calculer_balise_dynamique(Champ $p, string $nom, array<string|int, mixed> $l[, array<string|int, mixed> $supp = [] ]) : Champ
Calcule les balises dynamiques, notamment les formulaire_*
.
Inclut le fichier associé à son nom, qui contient la fonction homonyme donnant les arguments à chercher dans la pile, et qui sont donc compilés.
On leur adjoint les arguments explicites de la balise (cf #LOGIN{url}
)
et d'éventuelles valeurs transmises d'autorité par la balise.
(cf https://core.spip.net/issues/1728)
La fonction executer_balise_dynamique()
définie par la
constante CODE_EXECUTER_BALISE
recevra à l'exécution la valeur de tout ca.
AST au niveau de la balise
Nom de la balise dynamique
Liste des noms d'arguments (balises) à collecter
Liste de données supplémentaires à transmettre au code d'exécution.
Balise complétée de son code d'exécution
Construction du tableau des arguments d'une balise dynamique.
collecter_balise_dynamique(array<string|int, mixed> $l, Champ &$p, string $nom) : array<string|int, mixed>
Pour chaque argument (un nom de balise), crée le code PHP qui le calculera.
Liste des noms d'arguments (balises) à collecter (chaque argument de la balise dynamique est considéré comme étant un nom de balise)
AST au niveau de la balise
Nom de la balise
Liste des codes PHP d'éxecution des balises collectées
Récuperer le nom du serveur
trouver_nom_serveur_distant(Champ $p) : string
Mais pas si c'est un serveur spécifique dérogatoire
AST positionné sur la balise
Nom de la connexion
Teste si une balise est appliquée sur une base distante
balise_distante_interdite(Champ $p) : bool
La fonction loge une erreur si la balise est utilisée sur une base distante et retourne false dans ce cas.
AST positionné sur la balise
champs_traitements(mixed $p) : mixed
applique_filtres(mixed $p) : mixed
compose_filtres(mixed &$p, mixed $code) : mixed
filtre_logique(mixed $fonc, mixed $code, mixed $arg) : mixed
compose_filtres_args(mixed $p, mixed $args, mixed $sep) : mixed
Réserve les champs necessaires à la comparaison avec le contexte donné par la boucle parente.
calculer_argument_precedent(string $idb, string $nom_champ, array<string|int, mixed> &$boucles[, null|string $defaut = null ]) : mixed
Attention en recursif il faut les réserver chez soi-même ET chez sa maman
Identifiant de la boucle
AST du squelette
rindex_pile(mixed $p, mixed $champ, mixed $motif) : mixed
Retourne le nom de la balise indiquée pour les messages d’erreurs
zbug_presenter_champ(Pile $p[, string $champ = '' ]) : string
Description de la balise
Nom du champ
Nom de la balise, avec indication de boucle explicite si présent.
Composer le code d'exécution d'un texte
sandbox_composer_texte(string $texte, Champ &$p) : string
En principe juste un echappement de guillemets sauf si on veut aussi echapper et interdire les scripts serveurs dans les squelettes
texte à composer
Balise qui appelle ce texte
texte
Composer le code d'exécution d'un filtre
sandbox_composer_filtre(string $fonc, string $code, string $arglist, Champ &$p[, int $nb_arg_droite = 1000 ]) : string
nb d'arguments à droite du filtre dans le source spip |fff{a,b,c} Balise qui appelle ce filtre
Analyser les arguments d’un filtre
analyser_arguments_filtre(string $function) : ReflectionFunctionAbstract}
Notamment, la fonction contient elle un paramètre $Pile
en première position ?
Certains filtres demandent à recevoir le contexte du squelette,
par exemple le filtre |set
Nom du filtre
Composer le code de sécurisation anti script
sandbox_composer_interdire_scripts(string $code, Champ &$p) : string
Balise sur laquelle s'applique le filtre
Appliquer des filtres sur un squelette complet
sandbox_filtrer_squelette(array<string|int, mixed> $skel, string $corps, array<string|int, mixed> $filtres) : mixed|string
La fonction accèpte plusieurs tableaux de filtres à partir du 3ème argument qui seront appliqués dans l'ordre
Tableau de filtres à appliquer.
Callback pour échapper du code PHP (les séquences `<?php ... ?>`)
echapper_php_callback([array<string|int, mixed>|null $r = null ]) : string|array<string|int, mixed>
Rappeler la fonction sans paramètre pour obtenir les substitutions réalisées.
$r
est un arrayDéterminer le squelette qui sera utilisé pour rendre la page ou le bloc à partir de `$fond` et du `$contetxe`
public_styliser_dist(string $fond, array<string|int, mixed> $contexte[, string $lang = '' ][, string $connect = '' ]) : array<string|int, mixed>
Actuellement tous les squelettes se terminent par .html
pour des raisons historiques, ce qui est trompeur
Cherche à échafauder un squelette générique pour un objet éditorial si aucun squelette approprié n'a été trouvé
styliser_par_objets(array<string|int, mixed> $flux) : array<string|int, mixed>
Échaffaude seulement pour des appels à prive/objets/liste/
ou
prive/objets/contenu/
pour lesquels aucun squelette n'a été trouvé,
et uniquement si l'on est dans l'espace privé.
Données du pipeline styliser
Données du pipeline styliser
Calcul de la rubrique associée à la requête (sélection de squelette spécifique par id_rubrique & lang)
quete_rubrique_fond(array<string|int, mixed> $contexte) : array<string|int, mixed>|false
Êttention, on repète cela à chaque inclusion, on optimise donc pour ne faire la recherche qu'une fois par contexte semblable du point de vue des id_xx
Recherche automatique d'un squelette Page à partir de `contenu/xx`
public_styliser_par_z_dist(array<string|int, mixed> $flux) : array<string|int, mixed>
Données du pipeline
Données modifiées du pipeline
Lister les blocs de la page selon le contexte prive/public
z_blocs([bool $espace_prive = false ]) : array<string|int, mixed>
Vérifie qu'un type à un contenu disponible, soit parcequ'il a un fond, soit parce qu'il est echafaudable
z_contenu_disponible(string $prefix_path, string $z_contenu, string $type, string $ext[, bool $echafauder = true ]) : mixed
Teste si le fond de squelette trouvé est autorisé
z_fond_valide(string $squelette) : bool
Compare le chemin du squelette trouvé avec les chemins exclus connus.
Un chemin de squelette
true
si on peut l'utiliser, false
sinon.
Trouve un bloc qui peut être sous le nom `contenu/article.html` ou `contenu/contenu.article.html`
z_trouver_bloc(string $prefix_path, string $bloc, string $fond, string $ext) : string
chemin de base qui prefixe la recherche
nom du bloc cherche
nom de la page (ou 'dist' pour le bloc par defaut)
extension du squelette
Tester si un type est echafaudable c'est à dire s'il correspond bien à un objet en base
z_echafaudable(string $type) : bool
Generer a la volee un fond a partir d'un contenu connu tous les squelettes d'echafaudage du prive sont en fait explicites dans prive/echafaudage on ne fait qu'un mini squelette d'inclusion pour reecrire les variables d'env
prive_echafauder_dist(string $exec, string $table, string $table_sql, array<string|int, mixed> $desc_exec, string $ext) : string
Recuperer et verifier var_zajax si demande dans l'url
z_sanitize_var_zajax() : bool|string
trace_query_start() : mixed
trace_query_end(mixed $query, mixed $start, mixed $result, mixed $erreur[, mixed $serveur = '' ]) : mixed
trace_query_chrono(mixed $dt, mixed $query, mixed $result[, mixed $serveur = '' ]) : mixed
chrono_requete(mixed $temps) : mixed
Crée la première connexion à un serveur MySQL via MySQLi
req_mysql_dist(string $host, int $port, string $login, string $pass[, string $db = '' ][, string $prefixe = '' ]) : array<string|int, mixed>|bool
Chemin du serveur
Port de connexion
Nom d'utilisateur
Mot de passe
Nom de la base
Préfixe des tables SPIP
Retrouver un link d'une connexion MySQL via MySQLi
_mysql_link([string $serveur = '' ]) : object
Nom du serveur
Information de connexion pour mysqli
Définit un charset pour la connexion avec Mysql
spip_mysql_set_charset(string $charset[, string $serveur = '' ][, bool $requeter = true ]) : mysqli_result|bool
Charset à appliquer
Nom de la connexion
inutilisé
Jeu de résultats pour fetch()
Teste si le charset indiqué est disponible sur le serveur SQL
spip_mysql_get_charset([array<string|int, mixed>|string $charset = [] ][, string $serveur = '' ][, bool $requeter = true ]) : array<string|int, mixed>
Nom du charset à tester.
Nom de la connexion
inutilisé
Description du charset (son nom est dans 'charset')
Exécute une requête MySQL, munie d'une trace à la demande
spip_mysql_query(string $query[, string $serveur = '' ][, bool $requeter = true ]) : mysqli_result|bool|string|array<string|int, mixed>
Requête
Nom de la connexion
Exécuter la requête, sinon la retourner
Modifie une structure de table MySQL
spip_mysql_alter(string $query[, string $serveur = '' ][, bool $requeter = true ]) : array<string|int, mixed>|bool|string
Requête SQL (sans 'ALTER ')
Nom de la connexion
Exécuter la requête, sinon la retourner
Optimise une table MySQL
spip_mysql_optimize(string $table[, string $serveur = '' ][, bool $requeter = true ]) : bool
Nom de la table
Nom de la connexion
inutilisé
Toujours true
Retourne une explication de requête (Explain) MySQL
spip_mysql_explain(string $query[, string $serveur = '' ][, bool $requeter = true ]) : array<string|int, mixed>
texte de la requête
Nom de la connexion
inutilisé
Tableau de l'explication
Exécute une requête de sélection avec MySQL
spip_mysql_select(string|array<string|int, mixed> $select, string|array<string|int, mixed> $from[, string|array<string|int, mixed> $where = '' ][, string|array<string|int, mixed> $groupby = '' ][, string|array<string|int, mixed> $orderby = '' ][, string $limit = '' ][, string|array<string|int, mixed> $having = '' ][, string $serveur = '' ][, bool $requeter = true ]) : array<string|int, mixed>|bool|resource|string
Instance de sql_select (voir ses specs).
Champs sélectionnés
Tables sélectionnées
Contraintes
Regroupements
Tris
Limites de résultats
Contraintes posts sélections
Nom de la connexion
Exécuter la requête, sinon la retourner
Prépare une clause order by
spip_mysql_order(string|array<string|int, mixed> $orderby) : string
Regroupe en texte les éléments si un tableau est donné
texte du orderby à préparer
texte du orderby préparé
Prépare une clause WHERE pour MySQL
calculer_mysql_where(array<string|int, mixed>|string $v) : string
Retourne une chaîne avec les bonnes parenthèses pour la contrainte indiquée, au format donnée par le compilateur
Description des contraintes
Contrainte pour clause WHERE
Calcule un expression pour une requête, en cumulant chaque élément avec l'opérateur de liaison ($join) indiqué
calculer_mysql_expression(string $expression, array<string|int, mixed>|string $v[, string $join = 'AND' ]) : string
Renvoie grosso modo "$expression join($join, $v)"
Mot clé de l'expression, tel que "WHERE" ou "ORDER BY"
Données de l'expression
Si les données sont un tableau, elles seront groupées par cette jointure
texte de l'expression, une partie donc, du texte la requête.
Renvoie des `nom AS alias`
spip_mysql_select_as(array<string|int, mixed> $args) : string
Sélection de colonnes pour une clause SELECT
Prépare le texte d'une requête avant son exécution
_mysql_traite_query(string $query[, string $db = '' ][, string $prefixe = '' ][, bool $echappe_textes = true ]) : string
Change les préfixes de tables SPIP par ceux véritables
Requête à préparer
Nom de la base de donnée
Préfixe de tables à appliquer
Pour ne pas essayer de re-echapper une chaine deja echappee qu'on traite en recursif
Requête préparée
Sélectionne une base de données
spip_mysql_selectdb(string $db[, string $serveur = '' ][, bool $requeter = true ]) : bool
Nom de la base à utiliser
Nom du connecteur
Inutilisé
Retourne les bases de données accessibles
spip_mysql_listdbs([string $serveur = '' ][, bool $requeter = true ]) : array<string|int, mixed>
Retourne un tableau du nom de toutes les bases de données accessibles avec les permissions de l'utilisateur SQL de cette connexion.
Attention on n'a pas toujours les droits !
Nom du connecteur
Inutilisé
Liste de noms de bases de données
Crée une table SQL
spip_mysql_create(string $nom, array<string|int, mixed> $champs, array<string|int, mixed> $cles[, bool $autoinc = false ][, bool $temporary = false ][, string $serveur = '' ][, bool $requeter = true ]) : array<string|int, mixed>|null|resource|string
Crée une table SQL nommee $nom
à partir des 2 tableaux $champs
et $cles
Nom de la table SQL
Couples (champ => description SQL)
Couples (type de clé => champ(s) de la clé)
True pour ajouter un auto-incrément sur la Primary Key
True pour créer une table temporaire
Nom de la connexion
inutilisé
Adapte pour Mysql la déclaration SQL d'une colonne d'une table
_mysql_remplacements_definitions_table(string|array<string|int, mixed> $query) : string|array<string|int, mixed>
Définition SQL d'un champ de table ou liste de déclarations
Définition SQL adaptée pour MySQL d'un champ de table
Crée une base de données MySQL
spip_mysql_create_base(string $nom[, string $serveur = '' ][, bool $requeter = true ]) : bool
Nom de la base
Nom de la connexion
Exécuter la requête, sinon la retourner
true si la base est créee.
Crée une vue SQL nommée `$nom`
spip_mysql_create_view(string $nom, string $query_select[, string $serveur = '' ][, bool $requeter = true ]) : bool|string
Nom de la vue à creer
texte de la requête de sélection servant de base à la vue
Nom du connecteur
Effectuer la requete, sinon la retourner
Supprime une table SQL
spip_mysql_drop_table(string $table[, bool $exist = false ][, string $serveur = '' ][, bool $requeter = true ]) : bool|string
Nom de la table SQL
True pour ajouter un test d'existence avant de supprimer
Nom de la connexion
Exécuter la requête, sinon la retourner
Supprime une vue SQL
spip_mysql_drop_view(string $view[, bool $exist = false ][, string $serveur = '' ][, bool $requeter = true ]) : bool|string
Nom de la vue SQL
True pour ajouter un test d'existence avant de supprimer
Nom de la connexion
Exécuter la requête, sinon la retourner
Retourne une ressource de la liste des tables de la base de données
spip_mysql_showbase(string $match[, string $serveur = '' ][, bool $requeter = true ]) : mysqli_result|bool|string
Filtre sur tables à récupérer
Connecteur de la base
true pour éxecuter la requête false pour retourner le texte de la requête.
Ressource à utiliser avec sql_fetch()
Répare une table SQL
spip_mysql_repair(string $table[, string $serveur = '' ][, bool $requeter = true ]) : bool|string|array<string|int, mixed>
Utilise REPAIR TABLE ...
de MySQL
Nom de la table SQL
Nom de la connexion
Exécuter la requête, sinon la retourner
Indique si une table existe dans la base de données
spip_mysql_table_exists(string $table[, string $serveur = '' ][, bool $requeter = true ]) : bool|string
Table dont on cherche l’existence
Connecteur de la base
true pour éxecuter la requête false pour retourner le texte de la requête.
Obtient la description d'une table ou vue MySQL
spip_mysql_showtable(string $nom_table[, string $serveur = '' ][, bool $requeter = true ]) : array<string|int, mixed>|string
Récupère la définition d'une table ou d'une vue avec colonnes, indexes, etc. au même format que la définition des tables SPIP, c'est à dire un tableau avec les clés
field
(tableau colonne => description SQL) etkey
(tableau type de clé => colonnes)Nom de la table SQL
Nom de la connexion
Exécuter la requête, sinon la retourner
Rècupère une ligne de résultat
spip_mysql_fetch(mysqli_result $r[, string $t = '' ][, string $serveur = '' ][, bool $requeter = true ]) : array<string|int, mixed>|null|false
Récupère la ligne suivante d'une ressource de résultat
Jeu de résultats (issu de sql_select)
Structure de résultat attendu (défaut MYSQLI_ASSOC)
Nom de la connexion
Inutilisé
Place le pointeur de résultat sur la position indiquée
spip_mysql_seek(mysqli_result $r, int $row_number[, string $serveur = '' ][, bool $requeter = true ]) : bool
Jeu de résultats
Position. Déplacer le pointeur à cette ligne
Nom de la connexion
Inutilisé
True si déplacement réussi, false sinon.
Retourne le nombre de lignes d'une sélection
spip_mysql_countsel([array<string|int, mixed>|string $from = [] ][, array<string|int, mixed>|string $where = [] ][, array<string|int, mixed>|string $groupby = '' ][, array<string|int, mixed>|string $having = [] ][, string $serveur = '' ][, bool $requeter = true ]) : int|string
Tables à consulter (From)
Conditions a remplir (Where)
Critère de regroupement (Group by)
Tableau des des post-conditions à remplir (Having)
Nom de la connexion
Exécuter la requête, sinon la retourner
Retourne la dernière erreur generée
spip_mysql_error([string $query = '' ][, string $serveur = '' ][, bool $requeter = true ]) : string
Requête qui était exécutée
Nom de la connexion
Inutilisé
Erreur eventuelle
Retourne le numero de la dernière erreur SQL
spip_mysql_errno([string $serveur = '' ][, bool $requeter = true ]) : int
Nom de la connexion
Inutilisé
0, pas d'erreur. Autre, numéro de l'erreur.
Retourne le nombre de lignes d’une ressource de sélection obtenue avec `sql_select()`
spip_mysql_count(Ressource $r[, string $serveur = '' ][, bool $requeter = true ]) : int
Ressource de résultat
Nom de la connexion
Inutilisé
Nombre de lignes
Libère une ressource de résultat
spip_mysql_free(mysqli_result $r[, string $serveur = '' ][, bool $requeter = true ]) : bool
Indique à MySQL de libérer de sa mémoire la ressource de résultat indiquée car on n'a plus besoin de l'utiliser.
Jeu de résultats
Nom de la connexion
Inutilisé
True si réussi
Insère une ligne dans une table
spip_mysql_insert(string $table, string $champs, string $valeurs[, array<string|int, mixed> $desc = [] ][, string $serveur = '' ][, bool $requeter = true ]) : bool|string|int|array<string|int, mixed>
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
Exécuter la requête, sinon la retourner
Insère une ligne dans une table, en protégeant chaque valeur
spip_mysql_insertq(string $table[, string $couples = [] ][, array<string|int, mixed> $desc = [] ][, string $serveur = '' ][, bool $requeter = true ]) : bool|string|int|array<string|int, mixed>
Nom de la table SQL
Couples (colonne => 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
Exécuter la requête, sinon la retourner
Insère plusieurs lignes d'un coup dans une table
spip_mysql_insertq_multi(string $table[, array<string|int, mixed> $tab_couples = [] ][, array<string|int, mixed> $desc = [] ][, string $serveur = '' ][, bool $requeter = true ]) : int|bool|string
Nom de la table SQL
Tableau de tableaux associatifs (colonne => 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
Exécuter la requête, sinon la retourner
Met à jour des enregistrements d'une table SQL
spip_mysql_update(string $table, array<string|int, mixed> $champs[, string|array<string|int, mixed> $where = '' ][, array<string|int, mixed> $desc = [] ][, string $serveur = '' ][, bool $requeter = true ]) : array<string|int, mixed>|bool|string
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
Exécuter la requête, sinon la retourner
Met à jour des enregistrements d'une table SQL et protège chaque valeur
spip_mysql_updateq(string $table, array<string|int, mixed> $champs[, string|array<string|int, mixed> $where = '' ][, array<string|int, mixed> $desc = [] ][, string $serveur = '' ][, bool $requeter = true ]) : array<string|int, mixed>|bool|string
Protège chaque valeur transmise avec sql_quote(), adapté au type de champ attendu par la table SQL
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
Exécuter la requête, sinon la retourner
Supprime des enregistrements d'une table
spip_mysql_delete(string $table[, string|array<string|int, mixed> $where = '' ][, string $serveur = '' ][, bool $requeter = true ]) : bool|string
Nom de la table SQL
Conditions à vérifier
Nom du connecteur
Exécuter la requête, sinon la retourner
Insère où met à jour une entrée d’une table SQL
spip_mysql_replace(string $table, array<string|int, mixed> $couples[, array<string|int, mixed> $desc = [] ][, string $serveur = '' ][, bool $requeter = 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 updateq ou insertq.
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
Exécuter la requête, sinon la retourner
Insère où met à jour des entrées d’une table SQL
spip_mysql_replace_multi(string $table, array<string|int, mixed> $tab_couples[, array<string|int, mixed> $desc = [] ][, string $serveur = '' ][, bool $requeter = 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 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
Exécuter la requête, sinon la retourner
Retourne l'instruction SQL pour obtenir le texte d'un champ contenant une balise `<multi>` dans la langue indiquée
spip_mysql_multi(string $objet, string $lang) : string
Cette sélection est mise dans l'alias multi
(instruction AS multi).
Colonne ayant le texte
Langue à extraire
texte de sélection pour la requête
Prépare une chaîne hexadécimale
spip_mysql_hex(string $v) : string
Par exemple : FF ==> 0xFF en MySQL
Chaine hexadecimale
Valeur hexadécimale pour MySQL
Échapper une valeur selon son type ou au mieux comme le fait `_q()` mais pour MySQL avec ses spécificités
spip_mysql_quote(string|array<string|int, mixed>|number $v[, string $type = '' ]) : string|number
texte, nombre ou tableau à échapper
Description du type attendu (par exemple description SQL de la colonne recevant la donnée)
Donnée prête à être utilisée par le gestionnaire SQL
Tester si une date est proche de la valeur d'un champ
spip_mysql_date_proche(string $champ, int $interval, string $unite) : string
Nom du champ a tester
Valeur de l'intervalle : -1, 4, ...
Utité utilisée (DAY, MONTH, YEAR, ...)
Expression SQL
Retourne une expression IN pour le gestionnaire de base de données
spip_mysql_in(string $val, string $valeurs[, string $not = '' ][, string $serveur = '' ][, bool $requeter = true ]) : string
IN (...) est limité à 255 éléments, d'où cette fonction assistante
Colonne SQL sur laquelle appliquer le test
Liste des valeurs possibles (séparés par des virgules)
Nom du connecteur
Inutilisé
Expression de requête SQL
Renvoie les bons echappements (mais pas sur les fonctions comme NOW())
spip_mysql_cite(string|number $v, string $type) : string|number
texte ou nombre à échapper
Type de donnée attendue, description SQL de la colonne de destination
texte ou nombre échappé
Teste si on a les fonctions MySQLi (pour l'install)
spip_versions_mysql() : bool
True si on a les fonctions, false sinon
Tester si mysql ne veut pas du nom de la base dans les requêtes
test_rappel_nom_base_mysql(string $server_db) : string
Teste si on peut changer les modes de MySQL
test_sql_mode_mysql(string $server_db) : string
Nom de la connexion
req_sqlite3_dist(mixed $addr, mixed $port, mixed $login, mixed $pass[, mixed $db = '' ][, mixed $prefixe = '' ]) : mixed
spip_sqlite3_constantes() : mixed
spip_versions_sqlite3() : mixed
Déclarer à SQLite des fonctions spécifiques utilisables dans les requêtes SQL
_sqlite_init_functions(PDO|resource &$sqlite) : false|void
SQLite ne supporte nativement que certaines fonctions dans les requêtes SQL. Cependant, il permet d'étendre très facilement celles-ci en déclarant de nouvelles fonctions.
C'est ce qui est fait ici, en ajoutant des fonctions qui existent aussi dans d'autres moteurs, notamment en MySQL.
Représente la connexion Sqlite
Déclare une fonction à SQLite
_sqlite_add_function(PDO &$sqlite, string &$f, array<string|int, mixed> &$r) : mixed
Représente la connexion Sqlite
Nom de la fonction à créer
Tableau indiquant :
Mapping de `CEIL` pour SQLite
_sqlite_func_ceil(float $a) : int
Mapping de `CONCAT` pour SQLite
_sqlite_func_concat(array<string|int, string> ...$args) : string
Mapping de `DAYOFMONTH` pour SQLite
_sqlite_func_dayofmonth(string $d) : string
Mapping de `FIND_IN_SET` pour SQLite
_sqlite_func_find_in_set(string $num, string $set) : int
Mapping de `FLOOR` pour SQLite
_sqlite_func_floor(float $a) : int
Mapping de `IF` pour SQLite
_sqlite_func_if(bool $bool, string|int|float $oui, string|int|float $non) : mixed
Mapping de `INSERT` pour SQLite
_sqlite_func_insert(string $s, int $index, int $longueur, string $chaine) : string
Retourne une chaine de caractères à partir d'une chaine dans laquelle "chaine" à été inserée à la position "index" en remplacant "longueur" caractères.
Mapping de `INSTR` pour SQLite
_sqlite_func_instr(string $s, string $search) : int
Mapping de `LEAST` pour SQLite
_sqlite_func_least(array<string|int, int> ...$args) : int
Mapping de `GREATEST` pour SQLite
_sqlite_func_greatest(array<string|int, int> ...$args) : int
Mapping de `LEFT` pour SQLite
_sqlite_func_left(string $s, int $lenght) : string
Mappnig de `NOW` pour SQLite
_sqlite_func_now([bool $force_refresh = false ]) : string
Mapping de `MONTH` pour SQLite
_sqlite_func_month(string $d) : string
Mapping de `PREG_REPLACE` pour SQLite
_sqlite_func_preg_replace(string $quoi, string $cherche, string $remplace) : string
Mapping pour `EXTRAIRE_MULTI` de SPIP pour SQLite
_sqlite_func_extraire_multi(string $quoi, string $lang) : mixed
Extrait une langue d'un texte
le texte contenant ou non un multi
la langue a extraire
Mapping de `RAND` pour SQLite
_sqlite_func_rand() : float
Mapping de `RIGHT` pour SQLite
_sqlite_func_right(string $s, int $length) : string
Mapping de `REGEXP` pour SQLite
_sqlite_func_regexp_match(string $cherche, string $quoi) : bool
Mapping de `DATE_FORMAT` pour SQLite
_sqlite_func_date_format(string $date, string $conv) : string
Transforme un un appel à DATE_FORMAT() via strftime de PHP, mais les motifs de remplacements ne sont pas toujours identiques. On essaie de les contertir.
Convertit un format demandé pour DATE_FORMAT() de mysql en un format adapté à strftime() de php.
_sqlite_func_strftime_format_converter(string $conv) : string
Certains paramètres ne correspondent pas et doivent être remplacés, d'autres n'ont tout simplement pas d'équivalent dans strftime : dans ce cas là on loggue, car il y a de grandes chances que le résultat soit inadapté.
Mapping de `DAYS` pour SQLite
_sqlite_func_to_days(string $d) : int
Nombre de jour entre 0000-00-00 et $d
Mapping de `SUBSTRING` pour SQLite
_sqlite_func_substring(string $string, int $start[, int $len = null ]) : string
Mapping de `TIMESTAMPDIFF` pour SQLite
_sqlite_timestampdiff(string $unit, string $date1, string $date2) : int
Calcul de la difference entre 2 timestamp, exprimes dans l'unite fournie en premier argument
Mapping de `UNIX_TIMESTAMP` pour SQLite
_sqlite_func_unix_timestamp(string $d) : int
Mapping de `YEAR` pour SQLite
_sqlite_func_year(string $d) : string
Version optimisée et memoizée de date() utilisé pour certains mapping SQLite
_sqlite_func_date(string $quoi, int $d) : string
format : Y, m, ou d
timestamp
Mapping de `VIDE()` de SPIP pour SQLite
_sqlite_func_vide() : mixed
Connecteur à une base SQLite
req_sqlite_dist(string $addr, int $port, string $login, string $pass[, string $db = '' ][, string $prefixe = '' ][, string $sqlite_version = '' ]) : array<string|int, mixed>|bool
Ouvre une base SQLite avec PDO en spécifiant une classe spécifique pour les résultats
spip_sqlite_open(string $file) : PDO
Fonction de requete generale, munie d'une trace a la demande
spip_sqlite_query(string $query[, string $serveur = '' ][, bool $requeter = true ]) : PDOStatement|bool|string|array<string|int, mixed>
Requete a executer
Nom du connecteur
Effectuer la requete ?
Resultat de la requete
Modifie une structure de table SQLite
spip_sqlite_alter(string $query[, string $serveur = '' ][, bool $requeter = true ]) : bool
Requête SQL (sans 'ALTER ')
Nom de la connexion
inutilisé
False si erreur dans l'exécution, true sinon
Crée une table SQL
spip_sqlite_create(string $nom, array<string|int, mixed> $champs, array<string|int, mixed> $cles[, bool $autoinc = false ][, bool $temporary = false ][, string $serveur = '' ][, bool $requeter = true ]) : array<string|int, mixed>|null|resource|string
Crée une table SQL nommee $nom
à partir des 2 tableaux $champs
et $cles
Nom de la table SQL
Couples (champ => description SQL)
Couples (type de clé => champ(s) de la clé)
True pour ajouter un auto-incrément sur la Primary Key
True pour créer une table temporaire
Nom de la connexion
Exécuter la requête, sinon la retourner
Crée une base de données SQLite
spip_sqlite_create_base(string $nom[, string $serveur = '' ][, string $option = true ]) : bool
Nom de la base (sans l'extension de fichier)
Nom de la connexion
Options
true si la base est créee.
Crée une vue SQL nommée `$nom`
spip_sqlite_create_view(string $nom, string $query_select[, string $serveur = '' ][, bool $requeter = true ]) : bool|string
Nom de la vue a creer
texte de la requête de sélection servant de base à la vue
Nom du connecteur
Effectuer la requete, sinon la retourner
Fonction de création d'un INDEX
spip_sqlite_create_index(string $nom, string $table, string|array<string|int, mixed> $champs[, string|bool $unique = '' ][, string $serveur = '' ][, bool $requeter = true ]) : bool|string
Nom de l'index
Table SQL de l'index
Liste de champs sur lesquels s'applique l'index
Créer un index UNIQUE ?
Nom de la connexion sql utilisee
true pour executer la requête ou false pour retourner le texte de la requête
string : requête, false si erreur, true sinon.
Retourne le nombre de lignes d’une ressource de sélection obtenue avec `sql_select()`
spip_sqlite_count(PDOStatement $r[, string $serveur = '' ][, bool $requeter = true ]) : int
En PDO/sqlite3, il faut calculer le count par une requete count(*) pour les resultats de SELECT.
Jeu de résultats
Nom de la connexion
Inutilisé
Nombre de lignes
Retourne le nombre de lignes d'une sélection
spip_sqlite_countsel([array<string|int, mixed>|string $from = [] ][, array<string|int, mixed>|string $where = [] ][, array<string|int, mixed>|string $groupby = '' ][, array<string|int, mixed>|string $having = [] ][, string $serveur = '' ][, bool $requeter = true ]) : int|bool|string
Tables à consulter (From)
Conditions a remplir (Where)
Critère de regroupement (Group by)
Tableau des des post-conditions à remplir (Having)
Nom de la connexion
Exécuter la requête, sinon la retourner
Supprime des enregistrements d'une table
spip_sqlite_delete(string $table[, string|array<string|int, mixed> $where = '' ][, string $serveur = '' ][, bool $requeter = true ]) : bool|string
Nom de la table SQL
Conditions à vérifier
Nom du connecteur
Exécuter la requête, sinon la retourner
Supprime une table SQL
spip_sqlite_drop_table(string $table[, bool $exist = false ][, string $serveur = '' ][, bool $requeter = true ]) : bool|string
Nom de la table SQL
True pour ajouter un test d'existence avant de supprimer
Nom de la connexion
Exécuter la requête, sinon la retourner
Supprime une vue SQL
spip_sqlite_drop_view(string $view[, bool $exist = false ][, string $serveur = '' ][, bool $requeter = true ]) : bool|string
Nom de la vue SQL
True pour ajouter un test d'existence avant de supprimer
Nom de la connexion
Exécuter la requête, sinon la retourner
Fonction de suppression d'un INDEX
spip_sqlite_drop_index(string $nom, string $table[, string $serveur = '' ][, bool $requeter = true ]) : bool
: nom de l'index
: table sql de l'index
: nom de la connexion sql utilisee
: true pour executer la requête ou false pour retourner le texte de la requête
ou requete
Retourne la dernière erreur generée
spip_sqlite_error([string $query = '' ][, string $serveur = '' ]) : string
Requête qui était exécutée
Nom de la connexion
Erreur eventuelle
_sqlite_last_error_from_link(mixed $link) : mixed
Retourne le numero de la dernière erreur SQL
spip_sqlite_errno([string $serveur = '' ]) : int|string
Le numéro (en sqlite3/pdo) est un retour ODBC tel que (très souvent) HY000 http://www.easysoft.com/developer/interfaces/odbc/sqlstate_status_return_codes.html
nom de la connexion
0 pas d'erreur 1 ou autre erreur (en sqlite 2) 'HY000/1' : numéro de l'erreur SQLState / numéro d'erreur interne SQLite (en sqlite 3)
Retourne une explication de requête (Explain) SQLite
spip_sqlite_explain(string $query[, string $serveur = '' ][, bool $requeter = true ]) : array<string|int, mixed>|string|bool
texte de la requête
Nom de la connexion
Exécuter la requête, sinon la retourner
Rècupère une ligne de résultat
spip_sqlite_fetch(PDOStatement $r[, string $t = '' ][, string $serveur = '' ][, bool $requeter = true ]) : array<string|int, mixed>|null|false
Récupère la ligne suivante d'une ressource de résultat
Jeu de résultats (issu de sql_select)
Structure de résultat attendu (défaut ASSOC)
Nom de la connexion
Inutilisé
Place le pointeur de résultat sur la position indiquée
spip_sqlite_seek(PDOStatement $r, int $row_number[, string $serveur = '' ][, bool $requeter = true ]) : bool
Jeu de résultats
Position. Déplacer le pointeur à cette ligne
Nom de la connexion
Inutilisé
True si déplacement réussi, false sinon.
Libère une ressource de résultat
spip_sqlite_free(PDOStatement &$r[, string $serveur = '' ][, bool $requeter = true ]) : bool
Indique à SQLite de libérer de sa mémoire la ressoucre de résultat indiquée car on n'a plus besoin de l'utiliser.
Jeu de résultats
Nom de la connexion
Inutilisé
True si réussi
Teste si le charset indiqué est disponible sur le serveur SQL (aucune action ici)
spip_sqlite_get_charset([array<string|int, mixed>|string $charset = [] ][, string $serveur = '' ][, bool $requeter = true ]) : mixed
Cette fonction n'a aucune action actuellement
Nom du charset à tester.
Nom de la connexion
inutilisé
Prépare une chaîne hexadécimale
spip_sqlite_hex(string $v) : string
Par exemple : FF ==> 255 en SQLite
Chaine hexadecimale
Valeur hexadécimale pour SQLite
Retourne une expression IN pour le gestionnaire de base de données
spip_sqlite_in(string $val, string $valeurs[, string $not = '' ][, string $serveur = '' ][, bool $requeter = true ]) : string
Colonne SQL sur laquelle appliquer le test
Liste des valeurs possibles (séparés par des virgules)
Nom du connecteur
Inutilisé
Expression de requête SQL
Insère une ligne dans une table
spip_sqlite_insert(string $table, string $champs, string $valeurs[, array<string|int, mixed> $desc = [] ][, string $serveur = '' ][, bool $requeter = true ]) : bool|string|int|array<string|int, mixed>
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
Exécuter la requête, sinon la retourner
Insère une ligne dans une table, en protégeant chaque valeur
spip_sqlite_insertq(string $table[, array<string|int, mixed> $couples = [] ][, array<string|int, mixed> $desc = [] ][, string $serveur = '' ][, bool $requeter = true ]) : bool|string|int|array<string|int, mixed>
Nom de la table SQL
Couples (colonne => 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
Exécuter la requête, sinon la retourner
Insère plusieurs lignes d'un coup dans une table
spip_sqlite_insertq_multi(string $table[, array<string|int, mixed> $tab_couples = [] ][, array<string|int, mixed> $desc = [] ][, string $serveur = '' ][, bool $requeter = true ]) : bool|string
Nom de la table SQL
Tableau de tableaux associatifs (colonne => 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
Exécuter la requête, sinon la retourner
Retourne si le moteur SQL préfère utiliser des transactions.
spip_sqlite_preferer_transaction([string $serveur = '' ][, bool $requeter = true ]) : bool
Nom du connecteur
Inutilisé
Toujours true.
Démarre une transaction
spip_sqlite_demarrer_transaction([string $serveur = '' ][, bool $requeter = true ]) : bool|string
Pratique pour des sql_updateq() dans un foreach, parfois 100* plus rapide s'ils sont nombreux en sqlite !
Nom du connecteur
true pour exécuter la requête ou false pour retourner le texte de la requête
string si texte de la requête demandé, true sinon
Clôture une transaction
spip_sqlite_terminer_transaction([string $serveur = '' ][, bool $requeter = true ]) : bool|string
Nom du connecteur
true pour exécuter la requête ou false pour retourner le texte de la requête
string si texte de la requête demandé, true sinon
Liste les bases de données disponibles
spip_sqlite_listdbs([string $serveur = '' ][, bool $requeter = true ]) : array<string|int, mixed>
Nom du connecteur
Inutilisé
Liste des noms de bases
Retourne l'instruction SQL pour obtenir le texte d'un champ contenant une balise `<multi>` dans la langue indiquée
spip_sqlite_multi(string $objet, string $lang) : string
Cette sélection est mise dans l'alias multi
(instruction AS multi).
Colonne ayant le texte
Langue à extraire
texte de sélection pour la requête
Optimise une table SQL
spip_sqlite_optimize(string $table[, string $serveur = '' ][, bool $requeter = true ]) : bool|string
nom de la table a optimiser
nom de la connexion
effectuer la requete ? sinon retourner son code
true / false / requete
Échapper une valeur selon son type mais pour SQLite avec ses spécificités
spip_sqlite_quote(string|array<string|int, mixed>|number $v[, string $type = '' ]) : string|number
texte, nombre ou tableau à échapper
Description du type attendu (par exemple description SQL de la colonne recevant la donnée)
Donnée prête à être utilisée par le gestionnaire SQL
Tester si une date est proche de la valeur d'un champ
spip_sqlite_date_proche(string $champ, int $interval, string $unite) : string
Nom du champ a tester
Valeur de l'intervalle : -1, 4, ...
Utité utilisée (DAY, MONTH, YEAR, ...)
Expression SQL
Répare une table SQL
spip_sqlite_repair(string $table[, string $serveur = '' ][, bool $requeter = true ]) : array<string|int, string>
Il n'y a pas de fonction native repair dans sqlite, mais on profite pour vérifier que tous les champs (text|char) ont bien une clause DEFAULT
Nom de la table SQL
Nom de la connexion
Exécuter la requête, sinon la retourner
Tableau avec clé 0 pouvant avoir " OK " ou " ERROR " indiquant l'état de la table après la réparation
Insère où met à jour une entrée d’une table SQL
spip_sqlite_replace(string $table, array<string|int, mixed> $couples[, array<string|int, mixed> $desc = [] ][, string $serveur = '' ][, bool $requeter = 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érer à cette fonction updateq ou insertq.
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
Exécuter la requête, sinon la retourner
Insère où met à jour des entrées d’une table SQL
spip_sqlite_replace_multi(string $table, array<string|int, mixed> $tab_couples[, array<string|int, mixed> $desc = [] ][, string $serveur = '' ][, bool $requeter = 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 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
Exécuter la requête, sinon la retourner
Exécute une requête de sélection avec SQLite
spip_sqlite_select(string|array<string|int, mixed> $select, string|array<string|int, mixed> $from[, string|array<string|int, mixed> $where = '' ][, string|array<string|int, mixed> $groupby = '' ][, string|array<string|int, mixed> $orderby = '' ][, string $limit = '' ][, string|array<string|int, mixed> $having = '' ][, string $serveur = '' ][, bool $requeter = true ]) : array<string|int, mixed>|bool|resource|string
Instance de sql_select (voir ses specs).
Champs sélectionnés
Tables sélectionnées
Contraintes
Regroupements
Tris
Limites de résultats
Contraintes posts sélections
Nom de la connexion
Exécuter la requête, sinon la retourner
Sélectionne un fichier de base de données
spip_sqlite_selectdb(string $db[, string $serveur = '' ][, bool $requeter = true ]) : bool|string
Nom de la base à utiliser
Nom du connecteur
Inutilisé
Définit un charset pour la connexion avec SQLite (aucune action ici)
spip_sqlite_set_charset(string $charset[, string $serveur = '' ][, bool $requeter = true ]) : mixed
Cette fonction n'a aucune action actuellement.
Charset à appliquer
Nom de la connexion
inutilisé
Retourne une ressource de la liste des tables de la base de données
spip_sqlite_showbase(string $match[, string $serveur = '' ][, bool $requeter = true ]) : PDOStatement|bool|string|array<string|int, mixed>
Filtre sur tables à récupérer
Connecteur de la base
true pour éxecuter la requête false pour retourner le texte de la requête.
Ressource à utiliser avec sql_fetch()
Indique si une table existe dans la base de données
spip_sqlite_table_exists(string $table[, string $serveur = '' ][, bool $requeter = true ]) : bool|string
Table dont on cherche l’existence
Connecteur de la base
true pour éxecuter la requête false pour retourner le texte de la requête.
Obtient la description d'une table ou vue SQLite
spip_sqlite_showtable(string $nom_table[, string $serveur = '' ][, bool $requeter = true ]) : array<string|int, mixed>|string
Récupère la définition d'une table ou d'une vue avec colonnes, indexes, etc. au même format que la définition des tables SPIP, c'est à dire un tableau avec les clés
field
(tableau colonne => description SQL) etkey
(tableau type de clé => colonnes)Nom de la table SQL
Nom de la connexion
Exécuter la requête, sinon la retourner
Met à jour des enregistrements d'une table SQL
spip_sqlite_update(string $table, array<string|int, mixed> $champs[, string|array<string|int, mixed> $where = '' ][, array<string|int, mixed> $desc = '' ][, string $serveur = '' ][, bool $requeter = true ]) : array<string|int, mixed>|bool|string
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
Exécuter la requête, sinon la retourner
Met à jour des enregistrements d'une table SQL et protège chaque valeur
spip_sqlite_updateq(string $table, array<string|int, mixed> $champs[, string|array<string|int, mixed> $where = '' ][, array<string|int, mixed> $desc = [] ][, string $serveur = '' ][, bool $requeter = true ]) : array<string|int, mixed>|bool|string
Protège chaque valeur transmise avec sql_quote(), adapté au type de champ attendu par la table SQL
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
Exécuter la requête, sinon la retourner
Initialise la première connexion à un serveur SQLite
_sqlite_init() : mixed
Teste la version sqlite du link en cours
_sqlite_is_version([string $version = '' ][, string $link = '' ][, string $serveur = '' ][, bool $requeter = true ]) : bool|int
Retrouver un link d'une connexion SQLite
_sqlite_link([string $serveur = '' ]) : PDO|null
Nom du serveur
Information de connexion pour SQLite
Renvoie les bons echappements (mais pas sur les fonctions comme NOW())
_sqlite_calculer_cite(string|number $v, string $type) : string|number
texte ou nombre à échapper
Type de donnée attendue, description SQL de la colonne de destination
texte ou nombre échappé
Calcule un expression pour une requête, en cumulant chaque élément avec l'opérateur de liaison ($join) indiqué
_sqlite_calculer_expression(string $expression, array<string|int, mixed>|string $v[, string $join = 'AND' ]) : string
Renvoie grosso modo "$expression join($join, $v)"
Mot clé de l'expression, tel que "WHERE" ou "ORDER BY"
Données de l'expression
Si les données sont un tableau, elles seront groupées par cette jointure
texte de l'expression, une partie donc, du texte la requête.
Prépare une clause order by
_sqlite_calculer_order(string|array<string|int, mixed> $orderby) : string
Regroupe en texte les éléments si un tableau est donné
texte du orderby à préparer
texte du orderby préparé
Renvoie des `nom AS alias`
_sqlite_calculer_select_as(array<string|int, mixed> $args) : string
Sélection de colonnes pour une clause SELECT
Prépare une clause WHERE pour SQLite
_sqlite_calculer_where(array<string|int, mixed>|string $v) : string
Retourne une chaîne avec les bonnes parenthèses pour la contrainte indiquée, au format donnée par le compilateur
Description des contraintes
Contrainte pour clause WHERE
Charger les modules SQLite
_sqlite_charger_version([string $version = '' ]) : array<string|int, mixed>|bool
Si possible et juste la version demandée, ou, si aucune version, on renvoie les versions sqlite disponibles sur ce serveur dans un tableau
Gestion des requêtes ALTER non reconnues de SQLite
_sqlite_modifier_table(string|array<string|int, mixed> $table, string|array<string|int, mixed> $colonne[, array<string|int, mixed> $opt = [] ][, string $serveur = '' ]) : bool
Requêtes non reconnues :
ALTER TABLE table DROP column
ALTER TABLE table CHANGE [COLUMN] columnA columnB definition
ALTER TABLE table MODIFY column definition
ALTER TABLE table ADD|DROP PRIMARY KEY
MODIFY
est transformé en CHANGE columnA columnA
par spip_sqlite_alter()
options comme les tables SPIP, qui sera mergé à la table créee :
array('field'=>array('nom'=>'syntaxe', ...), 'key'=>array('KEY nom'=>'colonne', ...))
Nom de la connexion SQL en cours
true si OK, false sinon.
Nom des fonctions
_sqlite_ref_fonctions() : array<string|int, mixed>
Adapte les déclarations des champs pour SQLite
_sqlite_remplacements_definitions_table(string|array<string|int, mixed> $query[, bool $autoinc = false ]) : mixed
Déclaration d’un champ ou liste de déclarations de champs
Definir la collation d'un champ en fonction de si une collation est deja explicite et du par defaut que l'on veut NOCASE
_sqlite_collate_ci(string $champ) : string
Creer la requete pour la creation d'une table retourne la requete pour utilisation par sql_create() et sql_alter()
_sqlite_requete_create(mixed $nom, mixed $champs, mixed $cles[, bool $autoinc = false ][, bool $temporary = false ][, bool $_ifnotexists = true ][, string $serveur = '' ][, bool $requeter = true ]) : bool|string
Retrouver les champs 'timestamp' pour les ajouter aux 'insert' ou 'replace' afin de simuler le fonctionnement de mysql
_sqlite_ajouter_champs_timestamp(mixed $table, mixed $couples[, string $desc = '' ][, string $serveur = '' ]) : mixed
stocke le resultat pour ne pas faire de requetes showtable intempestives
Renvoyer la liste des versions sqlite disponibles sur le serveur
spip_versions_sqlite() : array<string|int, mixed>|bool
typographie_en_dist(mixed $letexte) : mixed
typographie_fr_dist(mixed $letexte) : mixed
Generer l'url d'un objet SPIP
urls_page_generer_url_objet_dist(int $id, string $objet[, string $args = '' ][, string $ancre = '' ]) : string
Decoder une url page retrouve le fond et les parametres d'une URL abregee le contexte deja existant est fourni dans args sous forme de tableau ou query string
urls_page_decoder_url_dist(string $url, string $entite[, array<string|int, mixed> $contexte = [] ]) : array<string|int, mixed>
[$contexte_decode, $type, $url_redirect, $fond]
charger_dtd(mixed $grammaire, mixed $avail, mixed $rotlvl) : mixed
compilerRegle(mixed $val) : mixed
analyser_dtd(mixed $loc, mixed $avail, mixed &$dtc) : mixed
analyser_dtd_comment(mixed $dtd, mixed &$dtc, mixed $grammaire) : mixed
analyser_dtd_pi(mixed $dtd, mixed &$dtc, mixed $grammaire) : mixed
analyser_dtd_lexeme(mixed $dtd, mixed &$dtc, mixed $grammaire) : mixed
analyser_dtd_data(mixed $dtd, mixed &$dtc, mixed $grammaire) : mixed
analyser_dtd_notation(mixed $dtd, mixed &$dtc, mixed $grammaire) : mixed
analyser_dtd_entity(mixed $dtd, mixed &$dtc, mixed $grammaire) : mixed
analyser_dtd_element(mixed $dtd, mixed &$dtc, mixed $grammaire) : mixed
analyser_dtd_attlist(mixed $dtd, mixed &$dtc, mixed $grammaire) : mixed
Remplace dans la chaîne `$val` les sous-chaines de forme `%NOM;` par leur definition dans le tableau `$macros`
expanserEntite(string $val[, array<string|int, mixed> $macros = [] ]) : string|array<string|int, mixed>
Si le premier argument n'est pas une chaîne, retourne les statistiques (pour debug de DTD, inutilise en mode normal)
xml_indenter_dist(mixed $page[, mixed $apply = false ]) : mixed
Encoder les entites
xml_entites_html(string $texte) : string
xml_debutElement(mixed $phraseur, mixed $name, mixed $attrs) : mixed
xml_finElement(mixed $phraseur, mixed $name[, mixed $fusion_bal = false ]) : mixed
xml_textElement(mixed $phraseur, mixed $data) : mixed
xml_piElement(mixed $phraseur, mixed $target, mixed $data) : mixed
xml_defaultElement(mixed $phraseur, mixed $data) : mixed
xml_parsestring(mixed $phraseur, mixed $data) : mixed
coordonnees_erreur(mixed $phraseur, mixed $msg) : mixed
xml_sax_dist(mixed $page[, mixed $apply = false ][, mixed $phraseur = null ][, mixed $doctype = '' ][, mixed $charset = null ]) : mixed
sax_bug(mixed $data, mixed $dtc[, mixed $charset = null ]) : mixed
analyser_doctype(mixed $data) : mixed
Retourne une structure ValidateurXML, dont le champ "err" est un tableau ayant comme entrees des sous-tableaux [message, ligne, colonne]
xml_valider_dist(mixed $page[, mixed $apply = false ][, mixed $process = false ][, mixed $doctype = '' ][, mixed $charset = null ]) : mixed