- oct. 03, 2007
-
-
esj a rédigé
Traitement différencié MySQL/PostGres pour l'auto-réparation, en particulier pour les chaînes de langues.
-
Fil a rédigé
-
esj a rédigé
Pas de risques inutiles en sécurité Javascript (il n'y avait aucun danger avec les fonctions JS du noyau, mais d'autres fichiers JS pourraient être chargés avec des fonctions plus problématiques).
-
Fil a rédigé
-
esj a rédigé
Tests: {{{ <BOUCLE_principale (ARTICLES) {id_article}> <B_menu> <ul> <BOUCLE_menu (ARTICLES) {id_rubrique}> <li> <a href="#URL_ARTICLE"[ style="(#_principale:EXPOSE{color: red})"]>#TITRE</a> <BOUCLE1(DOCUMENTS){id_article}> <a href="#URL_DOCUMENT"[ style="(#_principale:EXPOSE{color: red})"]> #TITRE <a> </BOUCLE1> </li> </BOUCLE_menu> </ul> </B_menu> <BOUCLE_menu2(RUBRIQUES)> <div [style="(#_principale:EXPOSE{color: red})"]>#TITRE</div> </BOUCLE_menu2> </BOUCLE_principale> <BOUCLE1(MOTS){id_mot}> <BOUCLE_groupes(GROUPES_MOTS) {par titre}> <li> [(#1:EXPOSE{<strong>,<a href="#URL_SITE_SPIP/spip.php?page=groupe[&groupe=(#ID_GROUPE)]">})] #TITRE [(#1:EXPOSE{</strong>,</a>})] </li> </BOUCLE_groupes> </BOUCLE1> }}} Et un peu de nettoyage dans les messages du débusqueur.
-
- oct. 02, 2007
-
-
Christian Lefebvre a rédigé
-
esj a rédigé
Pas bien mise au carré, la fonction serie_upgrade. En voila une version un peu meilleure, mais il faudrait parvenir à fusionner avec maj_while.
-
esj a rédigé
Adaptation de la BD pour que PG puisse exécuter le script de fusion. Je croyais qu'on avait entièrement renoncé aux champs sans valeurs par défaut, mais il en reste beaucoup. Intervention minimale pour cette fois, mais il faudra probablement y revenir.
-
esj a rédigé
Ajout de l'option 'Depublier les documents importés lors de la fusion', et petits ajustements pour PG dans le script de fusion.
-
esj a rédigé
-
esj a rédigé
La fonction '''trouver_table''' devient surchargeable sous le nom de '''base_trouver_table''', ce qui devrait permettre de résoudre proprement le problème ddes tables nommées bizarrement évoqué dans http://archives.rezo.net/spip-dev.mbox/200709.mbox/%3C46E5795D.60704@math.univ-montp2.fr%3E.
-
esj a rédigé
Nouvelle implémentation de la balise #EXPOSE, qui optimise le calcul et précise la sémantique de son ''objet principal''. C'est l'objet indiqué dans le contexte (donc, pour le premier niveau, des variables d'URL) portant le nom de la clé primaire de la boucle englobant immédiatement la balise #EXPOSE: s'il s'agit d'une boucle ARTICLES, l'objet est l'article dont le numéro est donné par {{{id_article}}} dans le contexte, s'il s'agit d'une boucle MOTS, ce sera {{{id_mot}}} etc. L'écriture {{{#}}}nom_boucle{{{:EXPOSE}}} est gérée, ce qui permet de référencer l'objet principal à partir d'une boucle plus interne. Une illustration est donnée par le squelette standard article.html, dont l'ancienne version manquait son but faute de ce traitement. Ce dépot va également encore plus loin que [10288] dans le calcul faisable à la compilation pour le traitement de la langue dans la balise #PARAMETRES_FORUM. Ces deux modifications permettent de ne plus appeler '''trouver_table''' lors de l'éxécution d'un squelette comportant ces balises.
-
stephane a rédigé
-
stephane a rédigé
report [10472] : incoherence dans la gestion de date de legender (date/heure a la creation puis date seulement)
-
- oct. 01, 2007
-
-
Christian Lefebvre a rédigé
-
stephane a rédigé
-
esj a rédigé
Maintenant qu'on cherche la définition de la table SQL en début de compilation, on la mémorise dans la structure générale plutot que de rappeler trouver_table pour chaque champ (et presque pour chaque critère). Les champs id_table et primary deviennent redondants mais c'est pas grave.
-
esj a rédigé
Plutôt que la poussive {{{quete_lang}}} introduite par [10288], ce qui manquait pour pouvoir facilement compiler tout ce qui est compilable, c'est une fonction directement insérable dans le code compilé, enchaînant un select, un fetch et une indexation dans la matrice-résultat qu'on sait limitée à une ligne et une colonne. Elle vient de naître, elle s'appelle {{{sql_getfetsel}}}.
-
Fil a rédigé
-
esj a rédigé
Blinder le champ impt par défaut lors de l'insertion d'une meta (Camille). Et éviter un faux message d'erreur à la destruction de la BD.
-
esj a rédigé
Présenter le contenu du répertoire Dump sous forme de tableau à lignes alternées, et en indiquant la date des sauvegardes: quand on mutualise, on peut en avoir vraiment beaucoup.
-
esj a rédigé
Bien tout effacer à la destruction d'une base, et sans émettre de faux messages d'erreurs dans le Log.
-
esj a rédigé
-
- sept. 30, 2007
-
-
Fil a rédigé
-
esj a rédigé
Multi-base: suite au problème posé dans [10460] sur la possibilité depuis [10457] d'avoir dans un unique répertoire tous les fichiers de connexions de sites partageant les mes sources, la spécification de ces fichiers, telle que décrite dans [10113] (et reprise dans [10183] et http://www.spip-contrib.net/MultiBase) subit une modification. Sont introduites deux constantes _DIR_CONNECT et _DIR_CHMOD, indiquant les répertoires où figureront le fichier décrivant la connexion et celui décrivant les droits des fichiers, en plus des constantes FILE_CONNECT_INS et FILE_CHMOD_INS. Par défaut, ces valeurs conservent le nommage habituel en {{{config/connect.php}}} et {{{config/chmod.php}}}. Lorsqu'on le référence une base externe ''A'', SPIP va à présent chercher le fichier nommé par l'expression {{{ _DIR_CONNECT . }}} ''A'' {{{ . '.php' }}}, autrement dit {{{config/}}}A{{{.php}}}. Par rapport à la spécification précédente, le préfixe {{{connect}}} a donc disparu, ce qui résoud le problème posé dans [10460]. Pour avoir dans un même répertoire tous les fichiers de connexion de sites mutualisés (et un autre pour les sauvegardes, un autre pour les Logs et un autre pour les droits), sans oublier de provoquer la vérification des droits sur les répertoires lors des installations, on peut utiliser le schéma de mutualisation suivant: {{{ if ( preg_match(',/([a-zA-Z0-9_-]*)[/?],',$_SERVER['REQUEST_URI'],$r)) { if (is_dir($e = _DIR_RACINE . 'Ajouts/' . $r[1]. '/')) { $cookie_prefix = $table_prefix = $r[1]; define('_SPIP_PATH', _DIR_RACINE. 'Ajouts/' . $table_prefix . '/dist/:' . _DIR_RACINE .'Ajouts/' . $table_prefix . '/:' . _DIR_RACINE .'dist/:' . _DIR_RACINE .'dist/javascript/:' . _DIR_RESTREINT); $pi = $e . _NOM_PERMANENTS_INACCESSIBLES; $pa = $e . _NOM_PERMANENTS_ACCESSIBLES; $ti = $e . _NOM_TEMPORAIRES_INACCESSIBLES; $ta = $e . _NOM_TEMPORAIRES_ACCESSIBLES; $pig = _DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES; $tig = _DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES; define('_DIR_DUMP', $tig . 'dump/'); define('_DIR_LOG', $tig . 'log/'); define('_DIR_CONNECT', $pig . 'connect/'); define('_DIR_CHMOD', $pig . 'chmod/'); define('_FILE_CONNECT_INS', $table_prefix); define('_FILE_CHMOD_INS', $table_prefix); define('_FILE_LOG_SUFFIX', '_' . $table_prefix . '.log'); $GLOBALS['test_dirs'] = array($pa, $ta, $ti, $pig, $tig, _DIR_DUMP, _DIR_LOG, _DIR_CONNECT, _DIR_CHMOD); spip_initialisation($pi, $pa, $ti, $ta); }}} Seront donc créés à la racine {{{config/connect, config/chmod, tmp/log, tmp/dump}}}, le premier contenant ''A''.php pour la connexion à la base ''A'' etc.
-
Fil a rédigé
-
esj a rédigé
-
esj a rédigé
Multibase: [10457] ne fournissait en fait le service décrit que pour le site à la racine vers les sites ajoutés, mais pas pour les sites ajoutés entre eux. C'est à présent le cas. Mais l'usage du préfixe {{{connect}}} est à nouveau obligatoire, ce qui est un peu dommage. A améliorer.
-
- sept. 29, 2007
-
-
Christian Lefebvre a rédigé
-
esj a rédigé
Multi-base: ajout de 3 constantes {{{_DIR_LOH, _FILE_LOG, _FILE_LOG_SUFFIX}}} pour mettre où on veut les fichiers de logs, particuilèrement en mode mutualisé. Par exemple, la mutualisation suivante dans mes_options.php: {{{ if ( preg_match(',/([a-zA-Z0-9_-]*)[/?],',$_SERVER['REQUEST_URI'],$r)) { if (is_dir($e = _DIR_RACINE . 'Ajouts/' . $r[1]. '/')) { $cookie_prefix = $table_prefix = $r[1]; define('_SPIP_PATH', _DIR_RACINE. 'Ajouts/' . $table_prefix . '/dist/:' . _DIR_RACINE .'Ajouts/' . $table_prefix . '/:' . _DIR_RACINE .'dist/:' . _DIR_RACINE .'dist/javascript/:' . _DIR_RESTREINT); define('_FILE_CONNECT_INS', 'connect' . $table_prefix); define('_FILE_CHMOD_INS', 'chmod' . $table_prefix); define('_FILE_LOG_SUFFIX', "_$table_prefix" . '.log'); define('_DIR_LOG', _DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES); spip_initialisation( (_DIR_RACINE /* $e */ . _NOM_PERMANENTS_INACCESSIBLES), ($e . _NOM_PERMANENTS_ACCESSIBLES), ($e . _NOM_TEMPORAIRES_INACCESSIBLES), ($e . _NOM_TEMPORAIRES_ACCESSIBLES) ); }}} mettra dans le répertoire {{{config}}} de la racine les fichiers de connexions et les fichiers de log (spip et sql) de tout les sites partageant les sources de la racine. Plus besoin de circuler dans ses répertoires pour surveiller plusieurs sites.
-
esj a rédigé
Un excès de zèle dans l'abstraction SQL avait rendu inopérant le test du besoin de rappeler le nom de la base, c'est réparé. Par ailleurs les constantes FILE_CONNECT_INS et FILE_CHMOD_INS changent légèrement de rôles afin d'évacuer quelques constantes écrites en dur dans le code, qui empêchaient des sites mutualisés de partager un même répertoire pour leur ''permanents inaccessibles''. C'est chose faite à présent, ce qui permet à chaque site mutualisé de visualiser les bases des autres en utilisant le paramètre d'URL {{{connect}}} (cf. [10183]) sans avoir à recopier leur fichier {{{connect.php}}}. Par exemple, la mutualisation suivante dans mes_options.php: {{{ if ( preg_match(',/([a-zA-Z0-9_-]*)[/?],',$_SERVER['REQUEST_URI'],$r)) { if (is_dir($e = _DIR_RACINE . 'Ajouts/' . $r[1]. '/')) { $cookie_prefix = $table_prefix = $r[1]; define('_SPIP_PATH', _DIR_RACINE. 'Ajouts/' . $table_prefix . '/dist/:' . _DIR_RACINE .'Ajouts/' . $table_prefix . '/:' . _DIR_RACINE .'dist/:' . _DIR_RACINE .'dist/javascript/:' . _DIR_RESTREINT); define('_FILE_CONNECT_INS', 'connect' . $table_prefix); define('_FILE_CHMOD_INS', 'chmod' . $table_prefix); spip_initialisation( (_DIR_RACINE /* $e */ . _NOM_PERMANENTS_INACCESSIBLES), ($e . _NOM_PERMANENTS_ACCESSIBLES), ($e . _NOM_TEMPORAIRES_INACCESSIBLES), ($e . _NOM_TEMPORAIRES_ACCESSIBLES) ); }}} mettra dans le répertoire {{{config///}} de la racine les fichiers {{{connectA.php}}}, {{{connectB.php}}}, ... des différents sous-répertoires du répertoire {{{Ajout}}}, une URL de A pouvant ainsi contenir {{{connect=B}}} et inversement dès que les deux sites sont installés.
-
esj a rédigé
Intégrer le renouvellement de l'alea à l'initialisation des meta pour éviter de refaire deux fois suite le cache dans ce cas là. Se servir de la différence entre sql_serveur et spip_query (si serveur non configuré, pas d'erreur fatale avec la 2e) pour éviter des redondances de tests, surtout impliquant les lourdeurs autour de FILE_CONNECT et FILE_CONNECT_INS.
-
esj a rédigé
Suite de [10440]: en simulant un verrou dans ecrire_meta et effacer_meta on est à présent certain que l'appel de init_metas est synchrone avec la base au démarrage du script. L'hypothèse d'un commutation de processus provoquant ultérieurement un changement de la table des meta n'a pas à être prise en compte car le script a commencé son action sur un état de cette table qu'il doit respecter jusqu'au bout. En conséquence il n'y a aucune raison de faire plusieurs appels à lire_meta() pendant une exécution, ses appels hors initialisation disparaissent.
-
- sept. 28, 2007
-
-
Christian Lefebvre a rédigé
-
Fil a rédigé
-
esj a rédigé
-
esj a rédigé
Portage a minima pour Postgres, vu comme un serveur ne connaissant même pas la notion. La fonction d'abstraction {{{set_connect_charset}}} introduite à la va vite dans [10131]] est finalement abandonnée afin d'offrir une interface plus souple et homogène. Le tableau de [10113] décrivant une connexion comporte à la place les 3 entrées suivantes: {{{ charset => tableau des codages connus du serveur, get_charset => prédicat testant si un codage (utf-8, iso-* etc) est connu du serveur, set_charset => impose un codage au serveur }}} Le tableau des codages est indexé par son nom HTTP (utf-8 etc), les valeurs étant les informations liées à ce codage dans le serveur (le nom coté serveur est UTF8, la collection choisie etc).
-
esj a rédigé
1. un fichier charge minipres.php afin d'appeler minipres() 1. minipres.php inclut inc/texte et se prepare a inclure inc/headers 1. inc/texte inclut inc/lang 1. inc/lang a du code en ligne qui appelle parfois minipres() 1. ===> erreur fonction indéfinie (une de celle dans inc/headers). Je permute juste les deux includes car il y a plus urgent, mais il faudra quand même un jour se débarasser de ça.
-
esj a rédigé
-