Skip to content
Extraits de code Groupes Projets
  1. mai 16, 2008
  2. mai 15, 2008
  3. mai 12, 2008
  4. mai 09, 2008
  5. avr. 28, 2008
    • Fil's avatar
      balise {{{ #FILTRE{x} }}} pour appliquer le filtre x a l'ensemble du squelette... · 67202b1e
      Fil a rédigé
      balise {{{ #FILTRE{x} }}} pour appliquer le filtre x a l'ensemble du squelette une fois celui-ci calcule ; application directe : simplification du systeme de compacte_head et de la gestion des pipelines d'insertion de scripts (puisqu'une insertion html normale peut etre post-traitee avec un #FILTRE).
      67202b1e
  6. avr. 06, 2008
  7. mars 12, 2008
  8. mars 07, 2008
    • cerdic's avatar
      possibilite de definir le nom de la jointure et le nom de la cle d'arrive dans · f6e86c5c
      cerdic a rédigé
      $boucle->join['nom']=array("'table_arrivee'","'id_depart'","'id_arrivee'");
      lorsque non precises, le comportement anterieur est conserve (Lx avex x le rang dans la table join, et cle arrivee=cle depart)
      application au critere recherche qui dysfonctionnait en cas de recherche vide et/ou conditionnelle
      incrementation de spip_version_code pour forcer recompilation des squelettes
      f6e86c5c
  9. mars 01, 2008
    • JamesRezo's avatar
      deux nouveaux pipelines, 'pre_boucle' et 'post_boucle', permettent d'ajouter... · 7dc4cee5
      JamesRezo a rédigé
      deux nouveaux pipelines, 'pre_boucle' et 'post_boucle', permettent d'ajouter ou de supprimer des traitements au niveau des boucles, soit avant l'appel à la fonction boucle_XX, soit juste après cet appel. Il ne sera plus nécessaire de surcharger ces fonctions, et on pourra ainsi activer plusieurs plugins traitant les mêmes tables sans risques d'incompatibilité (du moins au niveau des déclarations de fonctions).
      7dc4cee5
  10. jan. 29, 2008
  11. jan. 17, 2008
    • esj's avatar
      Amélioration de la détection des boucles dont le corps est constant, afin de... · 5c15fe9e
      esj a rédigé
      Amélioration de la détection des boucles dont le corps est constant, afin de transformer le While-Fetch en For sans requête (le Numrows initial suffit).
      Le manque se situait dans la non prise en compte des {{{\'}}} dans l'analyse du texte.
      
      Application au plugin Nuage qui veut mettre en exergue les mots clés d'un article:
      
      {{{
      <BOUCLE2(MOTS)><br />
      <span<BOUCLE3(MOTS){id_article}{id_mot}> class='on'</BOUCLE3>>#TITRE</span>
      </BOUCLE2>
      }}}
      qui fournit:
      {{{
       $result = calculer_select(
              array("1"), # SELECT
              array('mots' => 'spip_mots','L1' => 'spip_mots_articles'), # FROM
              array(), # FROM    type jointure    
              
                  array(
                  array('=', 'L1.id_article', intval(@$Pile[0]['id_article'])), 
                  array('=', 'mots.id_mot', intval($Pile[$SP]['id_mot']))), # WHERE
              array(1 => array('mots', 'id_mot')), # WHERE pour jointure
              array(), # GROUP
              array(), # ORDER
              '', # LIMIT
              
                  array(), # HAVING
              'mots', # table
              '3', # boucle
              ''); # serveur
          $Numrows['3']['total'] = @sql_count($result,'');
          $t0 = "";
          for($x=$Numrows["3"]["total"];$x>0;$x--)
                  $t0 .= 
      // 15 signes
      ' class=\'arial1\'';
          @sql_free($result,'');
          return $t0;
      }}}
      5c15fe9e
  12. jan. 13, 2008
    • esj's avatar
      Trois optimisations dans le code compilé: · 41018e56
      esj a rédigé
      	* la concaténation de deux constantes est ramenée à une seule;
      
      	* strval n'est plus utilisé au retour d'une boucle, c'est totalement superflu;
      
      	* les boucles vides ne sont plus testées au retour puisqu'on connait le résultat.
      
      Il est vraiment utile que les boucles destinées à ne calculer que des doublons ou des compteurs aient un corps parfaitement vide, ça devient une optimisation vraisemblablement perceptible. Donc écrire  par exemple:
      
      {{{<BOUCLEnom(type) />#TOTAL_BOUCLE<//Bnom>}}}
      
      et pas
      
      {{{
      <BOUCLEnom(type)>
      </BOUCLEnom>
      #TOTAL_BOUCLE
      </Bnom>}}}
      }}}
      41018e56
  13. jan. 12, 2008
  14. déc. 31, 2007
  15. déc. 14, 2007
    • esj's avatar
      Accélération de include_spip+find_in_path: ces deux fonctions vont être... · 32738ec5
      esj a rédigé
      Accélération de include_spip+find_in_path: ces deux fonctions vont être fusionnées afin d'éviter des redondances de tests et des allocations de chaînes à chaque appel. Première étape: traitement des cas particuliers.
      
      ATTENTION: les .php3 ne sont plus pris en compte à partir de maintenant.
      32738ec5
    • marcimat's avatar
      Permettre aux boucles SPIP de ne pas raler si la table demandée est... · fbd4d091
      marcimat a rédigé
      Permettre aux boucles SPIP de ne pas raler si la table demandée est introuvable. Pour cela, il faut ajouter un ? juste avant la fin de parenthèse : <BOUCLE_nom(TABLE?)>, <BOUCLE_nom(TABLE jointure?)> ou encore <BOUCLE_nom(TABLE ?)>
      
      Cela permet aux squelettes qui utilisent un plugin optionnel ayant créé table X de ne pas signaler par une erreur l'absence de cette table dans une boucle si le plugin n'a pas été installé.
      
      <BOUCLE_plugin(X ?)>#BALISE</BOUCLE_plugin>
      </B_plugin>
      Texte affiché si X n'est pas présent ou si la boucle n'a pas d'élément
      <//B_plugin>
      
      Il était déjà possible d'obtenir à peu près le même comportement (sauf le texte sur l'absence d'élément) en utilisant la balise plugin et une noisette :
      [(#PLUGIN{prefixe_plugin}|?{' ',''})
        <INCLURE(fond=squelette_contenant_la_boucle)>
      ]
      fbd4d091
  16. déc. 10, 2007
    • esj's avatar
      L'initialisation de {{{$connect}}} dans le code compilé doit se faire aussi... · 63280661
      esj a rédigé
      L'initialisation de {{{$connect}}} dans le code compilé doit se faire aussi dans la fonction principale, car une inclusion peut en avoir besoin. On le déplace aussi en début de chaque fonction car il peut être nécessaire aux critères, mais c'est insatisfaisant: ça corrige seulement le cas du paramètre {{{$connect}}} dans l'URL, pas celui d'un squelette où une boucle sur un serveur A transmet à {{{typo}}} un champ d'une boucle sur un serveur B. Confusion absolue: une boucle récursive avec un critère concernant un serveur A au premier appel, et un serveur B aux appels suivants. Bug plus théorique qu'autre chose a priori, mais il faudra y revenir.
      63280661
  17. déc. 04, 2007
  18. nov. 28, 2007
  19. nov. 15, 2007
  20. nov. 04, 2007
    • esj's avatar
      Le standard SQL précise qu'une chaîne avec apostrophe se code avec une double... · 17cd028f
      esj a rédigé
      Le standard SQL précise qu'une chaîne avec apostrophe se code avec une double apostrophe et non un \ ce que SQLite fait aussi, contrairement à MySQL et PG. 
      En prévision des portages utilisant cette réprésentation, l'interface s'enrichit de la fonction {{{sql_quote}}}, qui s'ajoute à celles définies dans [10707] [10667], [10433], [10131], [10146], [10154] et [10113]
      
      {{{
      quote => fonction d'abstraction de la citation d'une constante SQL
      }}}
      
      Pour MySQL et PG, cette fonction est donc équivalente à {{{_q()}}} qui reste disponible, mais doit être considérée comme obsolète. Le présent dépôt a été obtenu par le script ci-dessous, dont on peut faire usage pour ses extensions personnelles:
      
      {{{
      for i in $(grep  -l '_q(' [bigpeau]*/*p)
      do
      	sed 's/_q(/sql_quote(/g' $i > x
      	mv  x $i
      done
      }}}
      
      Un ajustement manuel a été nécessaire pour le critère "=", le compilateur testant si le code qu'il a produit contient la fonction de citation.
      17cd028f
  21. nov. 01, 2007
  22. oct. 27, 2007
    • esj's avatar
      Petites modifications, normalement transparentes, dans le code produit par le... · 9d8a35ef
      esj a rédigé
      Petites modifications, normalement transparentes, dans le code produit par le compilateur pour maximiser le nombre d'occurrences de {{{$Pile[O]['}}}''nom''{{{']}}}. Cela concerne:
      
       * la balise ENV
       * les #PARAM non indiqués par les boucles
      
      et déplacements de fonctions et inclusions pour que le validateur puisse exécuter le compilateur hors contexte.
      9d8a35ef
  23. oct. 18, 2007
  24. oct. 02, 2007
  25. oct. 01, 2007
    • esj's avatar
      Maintenant qu'on cherche la définition de la table SQL en début de... · 7e268dad
      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.
      7e268dad
  26. sept. 24, 2007
    • esj's avatar
      Rationnalisation des appels à '''trouver_table''': étant à présent parfois... · 96654b41
      esj a rédigé
      Rationnalisation des appels à '''trouver_table''': étant à présent parfois appelée hors d'une boucle à compiler, son deuxième argument, toujours optionnel, ne peut être un objet de la classe boucle, mais directement le nom du serveur.
      L'erreur de table inconnue est indiquée dans spip_log, et à l'écran une fois pour toutes lors de la compilation de {{{<BOUCLEn(inconnue)...}}}. Dans le cas d'une table de jointure inconnue, seul spip.log l'indiquera: il n'est pas sûr que ce soit une erreur tellement fatale en l'état des jointures automatiques calculées par SPIP.
      96654b41
  27. sept. 21, 2007
  28. sept. 19, 2007
  29. sept. 18, 2007
  30. sept. 14, 2007
    • esj's avatar
      Multi-base: les boucles référençant des connexions externes... · 7d4b92a8
      esj a rédigé
      Multi-base: les boucles référençant des connexions externes {{{<BOUCLE1(A:...}}} ou les pages appelées ainsi (paramètre d'URL {{{&connect=...}}} calculent à présent correctement les modèles contenus dans les champs SQL soumis aux filtre '''typo()''' et '''propre()'''. C'est un pas en avant dans la résolution complète de #716.
      
      Différences avec les versions précédentes:
      
      	* (bug de PCRE) les notes nommées {{{ [[<*> ...}}} ne peuvent plus contenir d'espaces entre les deux crochets et le chevron;
      
      	* les fonctions redéfinissables {{{avant_propre}}} et {{{apres_propre}}} sont évacuées, faisant double emploi avec les pipelines {{{pre_propre}}} et {{{post_propre}}}.
      
      	* surtout: le pipeline {{{pre_propre}}} recevra un texte où les raccourcis de liens ({{{ [->art1] }}} etc) seront déjà expansés.
      
      Test:
      {{{
      Doc 2239 centré
      <doc2239|center>
      
      Je mets 2 fois un raccourci de glossaire
      [?SPIP]  [?SPIP] 
      puis un [raccourci->art1]
      et un autre, automatique, [->art3634].
      
      Suivre la note
      [[elle est terminée par un  [raccourci->art1]]].
      
      Un moment de poésie.
      <poesie>
      un 
         haiku
      sur
      2 lignes
      </poesie>
      
      Elle préfère parler d'un {accroissement de la dispersionsalariale} [[
       [{Perspectives économiques}->http://www.oecd.org/document/4/0,3343,fr_2649_201185_20347588_1_1_1_1,00.html]
      - Vol. 2007-1, n¡~81, mai 2007, p. ~184. ]]
      
      Elle aussi préfère parler d'un {accroissement de la dispersion salariale}
      mais sur une seule ligne  [[  [{Perspectives économiques}->http://www.oecd.org/document/4/0,3343,fr_2649_201185_20347588_1_1_1_1,00.html]
      - Vol. 2007-1, n¡~81, mai 2007, p. ~184. ]].
      
      Une Juliette [[<*> sans numéro.]].
      }}}
      7d4b92a8
  31. sept. 08, 2007
    • esj's avatar
      Multi-base: la fonction '''table_from_primary''' est à présent équivalente à... · 94089530
      esj a rédigé
      Multi-base: la fonction '''table_from_primary''' est à présent équivalente à '''trouver_table(table_objet($x))''', ce qui achève de centraliser dans '''trouver_table''' toutes les recherche sur les tables. Réécriture de la balise '''#EXPOSE''', seule utilisatrice de '''table_from_primary''', cette dernière fonction effectuant un calcul supplémentaire, reporté donc dans le calcul de cette balise.
      94089530
  32. sept. 07, 2007
    • esj's avatar
      #209: nouvelle rationnalisation de la fonction '''trouver_table''' introduite... · 9fb11ef6
      esj a rédigé
      #209: nouvelle rationnalisation de la fonction '''trouver_table''' introduite par [10133], qui affecte tous son résultat à la globale '''$connexions''' plutot que d'en recalculer une partie à chaque appel. Le tableau construit a toujours  les index '''field''', '''index''', '''table''' (nom SQL) et à présent '''id_table''' qui donne le nom du suivant le '''AS''' dans la requête SQL (il était nommé "type" auparavant, ce qui était trompeur maintenant qu'il existe le type du serveur dans cette structure de données).
      
      Par ailleurs, les jointures dans une base externe ne marchaient plus. Quant aux balises #URL_ utilisées dans une base externe non SPIP, elles provoquaient une récursion infinie débouchant sur un {{{Illegal Instruction}}} par PHP.
      9fb11ef6
  33. sept. 06, 2007
    • esj's avatar
      Multibase et #877: les globales '''$tables_des_serveurs_sql''' et... · 9966c826
      esj a rédigé
      Multibase et #877: les globales '''$tables_des_serveurs_sql''' et '''$type_des_serveurs''' disparaissent. Les informations quelles contenaient se retrouvent dans la globale '''connexion''', avec les sous-index respectifs '''tables''' et '''spip_connect_version'''. Une valeur nulle pour '''spip_connect_version''' indique que la base externe n'est pas sous SPIP (donc pas de gestion de préfixe). 
      
      Ces disparitions permettent de centraliser dans la fonction '''trouver_table''' toutes les recherches de table afin d'améliorer facilement ce genre de recherche à l'avenir. Cette fonction quitte le fichier "criteres.php" car elle n'est plus spécifique à la compilation des criteres. Elle dispense le compilateur d'initialiser à chaque appel le tableau des tables SQL prédéfinies, ce qui est
      aussi un gain.
      9966c826
  34. sept. 04, 2007
Chargement en cours