Automatische processen van bakens

De meeste SPIP-bakens, met name die waarbij gegevens uit de database worden gelezen, voeren enkele automatische processen uit om kwaadaardige code te blokkeren die mogelijk door redacteuren werd toegevoegd toen zij hun artikelen schreven (PHP-code of JavaScript-scripts).

Naast deze standaardprocessen zijn er nog andere die voor elk SQL-veld kunnen worden gedefinieerd om deze processen systematisch toe te passen op het betreffende veld. Deze bewerkingen worden gedefinieerd in het ecrire/public/interfaces.php bestand met behulp van een globale tabel genaamd $table_des_traitements.
De sleutel tot deze tabel is de naam van het baken, waarbij de waarde een bijbehorende tabel is:

  • zijn "0" sleutel (de eerste $table_des_traitements['BALISE'][]) definieert een proces ongeacht de tabel in kwestie,
  • een "table_name" sleutel ($table_des_traitements['BALISE'']['tabel_naam'] zonder tabelvoorvoegsel) definieert een proces voor een baken in die specifieke tabel.

De processen worden geleverd door het invoeren van een tekenreeks fonction(%s) die expliciet verwijst naar de toe te passen functies. Binnen die functieoproep wordt "%s" vervangen door de inhoud van het veld.

$table_des_traitements['BALISE'][]= 'traitement(%s)';
$table_des_traitements['BALISE']['objets']= 'traitement(%s)';

Twee veelvoorkomende toepassingen van automatische filters, die bovendien zijn gedefinieerd met constanten, kunnen worden hergebruikt:

  • _TRAITEMENT_TYPO heeft betrekking op de typografische processen van SPIP (bijvoorbeeld vetschrift toepassen),
  • _TRAITEMENT_RACCOURCIS past de typografische processen en vertalingen van SPIP links toe (bijvoorbeeld het toevoegen van het HTML attribuut class="spip_out").

Voorbeeld

De bakens #TITRE en #TEXTE worden automatisch verwerkt, ongeacht in welke of hoveel lussen ze worden gebruikt. De processen zijn:

$table_des_traitements['TEXTE'][]= _TRAITEMENT_RACCOURCIS;
$table_des_traitements['TITRE'][]= _TRAITEMENT_TYPO;

Het baken #FICHIER voert een speciaal proces uit, maar alleen binnen een DOCUMENTS lus:

  1. $table_des_traitements['FICHIER']['documents']= 'get_spip_doc(%s)';

Auteur hanjo Gepubliceerd op:

Vertalingen: English, Español, français, Nederlands