Le .htacces est donc simplifié et mérite d'être recopié à partir du htaccess.txt fourni. Le titre général du seul paramètre page qui y figure encore est désormais '''type_urls''' pour avoir un message d'erreur plus clair lorsque la variable homonyme n'a pas été affectée dans mes_options.
Enfin, le couteux '''charger_generer_url''' qui cherche d'abord les anciens fichiers '''.php3''' n'est plus appelé dans ce cadre qu'en dernier recours, les différentes définitions de '''recuperer_parametre_url''' étant remplacées par la famille '''urls_propres_dist urls_html_dist urls_page_dist''' etc, avec le '''charger_fonction''' usuel. Pour ceux qui ont leur '''type_urls''' personnels, la compatibilité est normalement assurée, mais renommer leur '''recuperer_parametre_url''' leur fera bénéficier de cette amélioration.
Comme auparavant, une URL propre d'un objet publié est créée le plus souvent lorsque qu'une page qui la référence est visualisée dans l'espace public. Comme auparavant, il est nécessaire qu'un administrateur clique sur "voir en ligne" ou "prévisualiser" pour provoquer un nouveau calcul. En revanche, ce nouveau calcul interviendra systématiquement (plus besoin de dépublier puis republier), et s'il fournit une URL différente, elle n'écrasera pas l'ancienne, mais viendra s'ajouter comme URL la plus récemment introduite. Lors des appels ultérieurs de la fonction de génération d'URL associée, elle sera donc choisi prioritairement. Au cas où une nouvelle modification produit un calcul d'URL retombant sur une ancienne URL propre, la date d'introduction de celle-ci est actualisée afin qu'elle redevienne prioritaire, ce qui permet de respecter la contrainte d'unicité et d'éviter aux indécis de remplir cette table par leurs begaiements.
Ces nouvelles URL profitent du travail pionnier entamé par Toggg sur spip_zonesous le nom d'[http://zone.spip.org/trac/spip-zone/browser/_plugins_/_dev_/urls_libres URLS libres]. L'implémentation en est toutefois différente, afin de satisafaire aux besoins de PostGres. Aussi, elles sont gérées par une table ayant ces valeurs comme clé primaire, ce qui devrait accélérer leur recherche, et permet d'évacuer le dernier verrou spécifique à MySQL.
Remarque: au moment de la mise à jour avec cette nouvelle implémentation, les URLs propre courament dans la base seront recopiées dans la nouvelle table, sans aucune perte.
-* Deux petits filtres dans la lignée de |reset et |end : |push ajoute un élément à une balise qui est en fait un tableau, èquivalent à array_push et |find qui est un équivalent de in_array (tout ça parce que les fonctions natives de php ne fonctionnait plus)
-* Corrections sur le filtre et la balise #FOREACH, qui avaient eux aussi souffert de la nouvelle balise #ENV.
''Il y a des problèmes avec les index de la table `spip_versions` La colonne `id_article` ne devrait pas faire partie à la fois d'une clé primaire et d'une clé index''
(Philippe Auriol)
ce commit revient donc partiellement sur [10039] qui avait introduit des onglets fort peu consensuels (?)
mais aussi des concepts interessants comme le bloc infos en squelette, une ecriture (un peu) plus rationnelle du code de l'espace prive, une reflexion sur le role de divers boutons etc.
J'ai ici retabli tout ce qui avait diverge de maniere un peu trop violente pour moi, et corrige pas mal de petits bugs (les lang_select dans les squelettes, qui faisaient que le bloc statut d'un article s'affichait dans la langue de l'article, par exemple)...
je laisse les onglets dans le code, avec uneconfiguration qu'il faut aller chercher soi-meme ; ca reste un peu trop couteux a mon gout en termes de complexite (double css, doubles definitions a certains endroits dans le code) -- a voir comment on se sort de tout ca.
1. on alloue un entrée dans la table des versions, avec un numéro négatif;
2. on s'endort 1 seconde s'il existe une autre entrée négative plus récente
3. au reveil on recommence 2. sauf si 30 secndes se sont écoulées
4. on affecte l'entrée allouée avec le numéro de version definitif
Dans le cas d'une fusion de version, c'est l'ancienne entrée qui est affectée et la nouvelle est retirée.
Le point 3 correspond à une opération inachevée. On pourrait la retirer.
Dans la série ''le bug était ailleurs que là où c'est difficile'' : en Postgres, False vaut la chaîne "f" qui n'est pas équivalente au False de PHP.
Aspects techniques
La compilation d'un squelette produira autant de fichier dans tmp/cache/skel que d'application à des bases différentes. Il y aurait moyen de faire un plus compact, mais avec une petite chute de performances. On sacrifie donc l'espace au temps, ça ne semble pas un problème vu la taille usuelle d'un squelette compilé.
Les différences entre les compilations d'un même squelettes proviennent des balises #URL_* et assimilées. Il y aura peut-etre une petite réorganisation des fonctions sur les balises et les critères à opérer pour gérer ça plus astucieusement.
{{{select count(*) from spip_articles limit 10;
count
-------
1487
(1 row)
}}}
pour Mysql comme pour PG. Du coup retrait de l'argument LIMIT dans les appels de cette fonction. On laisse la paramètre dans la fonction néanmoins, du moins provisoirement.