à titre d'exemple, mise en place des outils de développement pour un plugin, passe d'autofix et baseline pour phpstan.
Co-authored-by: JamesRezo <james@rezo.net>
Reviewed-on: #4807
Co-authored-by: JamesRezo <jamesrezo@noreply.git.spip.net>
Co-committed-by: JamesRezo <jamesrezo@noreply.git.spip.net>
- on le nomme langue et pas lang pour eviter les ambiguites avec le champ lang des objets qui apparait dans les jointures sans prefixe de table, via le champ titre "titre, lang"
- action/editer_url gere la langue lors de l'insertion d'une URL en evitant les conflit selon les regles suivantes :
- si aucune URL n'existe, la langue est ignoree et forcee a '' qui est la valeur par defaut et signifie 'URL par defaut independante de la langue'
- on peut avoir une URL perma par objet et par langue (donc une perma langue='' et une perma langue='en' pour un meme objet par exemple)
Par defaut, si on ne fournit aucune langue lors de l'insertion des URLS (ce qui est le cas des modules existant), tout se comporte comme avant sans rupture de compatibilite
- le formulaire #EDITER_URL_OBJET affiche la langue de chaque URL quand il y en a une
- on peut y definir des URLs avec langue en prefixant la saisie : "en:my-smart-url" fixera la langue a 'en' pour l'URL (sous reserve des conditions ci-dessus : si c'est la premiere URL de l'objet elle sera en langue='')
- le prefixe doit correspondre a une langue connue de SPIP, sinon il est ignore et l'URL est reformatee
- les modules de langue propre et arbo sont juste impactes pour extraire en priorite l'URL avec la langue=''
A noter que les modules de langue perso existants dans la nature ne sont pas impactes et continueront a fonctionner comme avant tant qu'il n'y a pas d'URLs en base avec une langue differente de ''.
Un dysfonctionnement -relatif- n'apparaitrait qu'a partir du moment ou des URLs de langue diverses existeraient en base
Ce commit ne fournit pas de module d'URL exploitant ce champ langue
différents fix avec php-cs-fixers. Fixers appliqués ici :
'encoding', // utf8
'eof_ending', // un saut de ligne en fin de fichier
'elseif', // elseif plutôt que else if
'function_call_space', // espaces sur fonctions
'function_declaration', // espaces sur fonctions
'function_typehint_space', // espaces sur fonctions
'linefeed', // sauts de ligne \n uniquement
'lowercase_constants', // true, false, null en munuscule
'lowercase_keywords', // mots clés PHP en lowercase
'method_argument_space', // espaces sur appels de fonctions
'multiple_use', // use unique sur fonctions anonymes
'newline_after_open_tag', // ouverture de php… et c'est tout sur cette ligne
'operators_spaces', // espaces de part et d'autres des opérateurs binaires
'parenthesis', // pas d'espace juste après parenthèse ouvrante, ou avant parenthèse fermante
'php_closing_tag', // pas de fermeture de php
'short_tag', // tag PHP corrects
'trailing_spaces', // pas d'espace qui traîne en fin de ligne
'visibility', // déclarer 'public / private / protected' sur les méthodes
Ce flag permet de marquer une url comme permanente, cad qu'on ne veut pas qu'elle soit mise a jour par SPIP lorsque le titre de l'objet change
Il y a au plus une url perma possible par objet : quand on insere une url perma, toutes les urls de l'objet sont modifiees dans une unique requete
pour assurer l'unicite de l'url perma.
Dans la recherche d'url, on prend ce champ comme critere pour prendre en priorite l'url perma si elle existe,
la date n'intervient qu'apres.
Le champ est auto remplit lors de l'insertion de l'url. Il permet d'eviter que les urls propres ne renvoient par exemple une url a 2 segments des urls arbos.
Par ailleurs il permet aussi d'optimiser la recherche d'url arbo lors de l'analyse de l'url en cours en remplacants 3 requetes possibles par une seule
+ correctif d'un bug sur le calcul d'url d'un objet sans parent
cela permet donc de distinguer 2 urls a priori identique par leur contexte parent, et remplace le hack base sur un prefixe #:// dans le champ texte
Mise a jour des methodes d'insertion et de decouverte pour tenir compte de ce parent au mieux.
- ne creer que les tables de l'extension qui s'installe
- utiliser la fonction maj_plugin a laquelle on fournit un tableau d'operations elementaires
- gerer la transition depuis SPIP 2.1 dans tous les cas (table existante mais pas de meta)