Changeset 43395 in spip-zone


Ignore:
Timestamp:
Jan 8, 2011, 11:46:14 AM (10 years ago)
Author:
fil@…
Message:
  • changement de syntaxe : {datasource URL,format} est desormais depreciee, il faut utiliser {source format,URL} => Avantages :

-- on peut passer plusieurs arguments au filtre de format :

{source format,arg1,arg2,arg3}

-- on peut mettre des virgules dans les arguments (le compilo ne

le permet pas sur le premier argument, ici desormais, le format)

-- peut-etre est-ce un peu plus logique de nommer le format

avant les arguments, facon fonction(arg1,arg2...)

  • Reparer le tri {par hasard} lorsque le contenu est un objet, cf la demo flickr
  • suppression du patch qui induisait en erreur


Location:
_plugins_/iterateurs
Files:
1 deleted
19 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/iterateurs/demo/iter_data_csv.html

    r43306 r43395  
    77
    88<thead><tr>
    9 <BOUCLE_cles(DATA){datasource #CHEMIN{demo/iter_adresses.csv},csv}
     9<BOUCLE_cles(DATA){source csv, #CHEMIN{demo/iter_adresses.csv}}
    1010{cle=0}>
    11 <BOUCLE_c(DATA){datasource (#VALEUR|array_keys),table}{2/2}>
     11<BOUCLE_c(DATA){source table, (#VALEUR|array_keys)}{2/2}>
    1212        <th><a href="[(#SELF|parametre_url{tri,#VALEUR})]"
    1313                >[(#_cles:VALEUR{#VALEUR})]</a></th>
     
    1616</tr></thead>
    1717
    18 <BOUCLE_csv(DATA){datasource #CHEMIN{demo/iter_adresses.csv},csv}
     18<BOUCLE_csv(DATA){source csv, #CHEMIN{demo/iter_adresses.csv}}
    1919{!par #ENV{tri,pseudo}}{'<br />'}
    2020{cle>0}
    2121>
    2222<tr>
    23 <BOUCLE_d(DATA){datasource (#VALEUR|array_keys),table}{2/2}>
     23<BOUCLE_d(DATA){source table, (#VALEUR|array_keys)}{2/2}>
    2424        <td>[(#_csv:VALEUR{#VALEUR})]</td>
    2525</BOUCLE_d>
  • _plugins_/iterateurs/demo/iter_data_google.spreadsheet.html

    r43167 r43395  
    1111<B_csv>
    1212<table border="1">
    13 <BOUCLE_csv(DATA){datasource https://spreadsheets.google.com/pub?key=#GET{key}&hl=en&dsds&output=csv,csv}
     13<BOUCLE_csv(DATA){source csv, https://spreadsheets.google.com/pub?key=#GET{key}&hl=en&dsds&output=csv}
    1414>
    1515#SET{td,(#COMPTEUR_BOUCLE|=={1}|?{th,td})}
     
    3030<h3>Format RSS/List</h3>
    3131
    32 <BOUCLE_list(DATA){datasource https://spreadsheets.google.com/feeds/list/#GET{key}/od6/public/basic?alt=rss,rss}>
     32<BOUCLE_list(DATA){source rss, https://spreadsheets.google.com/feeds/list/#GET{key}/od6/public/basic?alt=rss}>
    3333
    3434<dt>#TITRE</dt><dd>#VALEUR{descriptif}</dd>
     
    4141
    4242
    43 <BOUCLE_cells(DATA){datasource https://spreadsheets.google.com/feeds/cells/#GET{key}/od6/public/basic?alt=rss,rss}>
     43<BOUCLE_cells(DATA){source rss, https://spreadsheets.google.com/feeds/cells/#GET{key}/od6/public/basic?alt=rss}>
    4444
    4545<dt>#TITRE</dt><dd>#VALEUR{descriptif}</dd>
  • _plugins_/iterateurs/demo/iter_data_json.html

    r43187 r43395  
    99<br />#TOTAL_BOUCLE/#GRAND_TOTAL
    1010<BOUCLE_r1(DATA)
    11         {datasource http://per.sonn.es/Fil.json, json}
     11        {source json, http://per.sonn.es/Fil.json}
    1212        {pagination 5}>
    1313<dt>#CLE</dt>
  • _plugins_/iterateurs/demo/iter_data_plugins.html

    r43158 r43395  
    55<ul>
    66
    7 <BOUCLE_pl(DATA){datasource, plugins}
     7<BOUCLE_pl(DATA){source plugins}
    88>
    9 <li>x #VALEUR </li>
     9<li> #VALEUR </li>
    1010</BOUCLE_pl>
    1111
  • _plugins_/iterateurs/demo/iter_data_rss.html

    r43158 r43395  
    88<dl>
    99
    10 <BOUCLE_r(DATA){datasource http://rezo.net/backend/, rss}{pagination 3}>
     10<BOUCLE_r(DATA){source rss, http://rezo.net/backend/}{pagination 3}>
    1111<dt><a href="#URL">#TITRE</a> </dt>
    1212[<dd>(#DESCRIPTIF|PtoBR)</dd>]
  • _plugins_/iterateurs/demo/iter_data_sql.html

    r43158 r43395  
    66<dt><kbd>#GET{req}</kbd></dt>
    77<dd>
    8 <BOUCLE_sqln(DATA){datasource #GET{req},sql}>
     8<BOUCLE_sqln(DATA){source sql, #GET{req}}>
    99[(#TOTAL) valeurs metas dans spip_meta]
    1010</BOUCLE_sqln>
     
    1616<dt><kbd>#GET{req}</kbd></dt>
    1717<dd>
    18 <BOUCLE_sql(DATA){datasource #GET{req},sql}>
     18<BOUCLE_sql(DATA){source sql, #GET{req}}>
    1919titre: "#TITRE"
    2020</BOUCLE_sql>
     
    2626<dd>
    2727<ul>
    28 <BOUCLE_show(DATA){datasource #GET{req},sql}>
     28<BOUCLE_show(DATA){source sql, #GET{req}}>
    2929<li>[(#VALEUR{Field})][ - (#VALEUR{Type})][ - (#VALEUR{Extra})]</li>
    3030</BOUCLE_show>
  • _plugins_/iterateurs/demo/iter_data_xml.html

    r43158 r43395  
    11<h2>R&#233;cursion XML</h2>
    22
    3 <BOUCLE_r8(DATA){datasource #CHEMIN{demo/iter_flowers.xml}, xml}{datapath }>
     3<BOUCLE_r8(DATA){source xml, #CHEMIN{demo/iter_flowers.xml}}{datapath }>
    44"#CLE":
    55<B_f>
    66<ul class="xoxo">
    7 <BOUCLE_f(DATA){datasource #VALEUR**,table}>
     7<BOUCLE_f(DATA){source table, #VALEUR**}>
    88<B_g>
    99<li>"#CLE":
  • _plugins_/iterateurs/demo/iter_ls.html

    r43193 r43395  
    33<B_ls>
    44<dl>
    5 <BOUCLE_ls(DATA){datasource #EVAL{_DIR_PLUGINS}*/demo/iter_*.html,ls}
     5<BOUCLE_ls(DATA){source ls, #EVAL{_DIR_PLUGINS}*/demo/iter_*.html}
    66{par #ENV{tri,basename}}
    77>
     
    1010 <dt><em>Champs disponibles</em></dt>
    1111 <dd><strong>
    12 <BOUCLE_tri(DATA){datasource #VALEUR,table}{", "}{si #GET{afficher}}>
     12<BOUCLE_tri(DATA){source table, #VALEUR}{", "}{si #GET{afficher}}>
    1313   <a href="[(#SELF|parametre_url{tri,#CLE})]">#CLE</a>
    1414</BOUCLE_tri>
  • _plugins_/iterateurs/demo/iter_yql_delicious.popular.html

    r43158 r43395  
    22
    33<BOUCLE_r12(DATA)
    4 {datasource select * from delicious.feeds.popular where tag='spip', yql}
     4{source yql, select * from delicious.feeds.popular where tag='spip'}
    55{datapath query/results/item}
    66>
     
    99Tags:
    1010
    11 <BOUCLE_tags(DATA){datasource #CATEGORY,table}{", "}>
     11<BOUCLE_tags(DATA){source table, #CATEGORY}{", "}>
    1212#CONTENT</BOUCLE_tags>
    1313</dd>
  • _plugins_/iterateurs/demo/iter_yql_flickr.html

    r43158 r43395  
    55
    66<BOUCLE_trad(DATA)
    7 {datasource select * from google.translate where q="#VALEUR" and target="fr",yql}
     7{source yql, select * from google.translate where q="#VALEUR" and target="fr"}
    88>
    99<h3>[(#_topic:VALEUR) =] #VALEUR{results/translatedText}</h3>
     
    1515
    1616<BOUCLE_r10(DATA)
    17 {datasource #GET{query}, yql}
     17{source yql, #GET{query}}
    1818{datapath query/results/photo}
    1919{par hasard}
  • _plugins_/iterateurs/demo/iter_yql_google.search.html

    r43158 r43395  
    22
    33<BOUCLE_r9(DATA)
    4 {datasource select * from google.search where q='spip', yql}
     4{source yql, select * from google.search where q='spip'}
    55{datapath query/results/results}
    66>
  • _plugins_/iterateurs/demo/iter_yql_html.html

    r43171 r43395  
    77<ul>
    88<BOUCLE_files(DATA)
    9 {datasource 'select * from html where url="http://files.spip.org/spip-zone/" and xpath="/html/body/div[1]/div[3]/div/div/div/ul[2]";', yql}
     9{source yql, 'select * from html where url="http://files.spip.org/spip-zone/" and xpath="/html/body/div[1]/div[3]/div/div/div/ul[2]";'}
    1010{datapath query/results/ul/li}
    1111{pagination 20}
  • _plugins_/iterateurs/demo/iter_yql_maps.html

    r43169 r43395  
    1616
    1717<BOUCLE_ce(DATA)
    18 {datasource select * from geo.places where text=(#GET{place}|_q),yql}
     18{source yql, select * from geo.places where text=(#GET{place}|_q)}
    1919{datapath query/results/place}
    2020>
  • _plugins_/iterateurs/demo/iter_yql_twitter.html

    r43158 r43395  
    22
    33<BOUCLE_r11(DATA)
    4 {datasource select * from twitter.search where q='#spip', yql}
     4{source yql, select * from twitter.search where q='#spip'}
    55{datapath query/results/results}
    66>
  • _plugins_/iterateurs/demo/iter_yql_youtube.html

    r43158 r43395  
    11<h2>yql youtube.search</h2>
    22
    3 <BOUCLE_youtube(DATA){datasource "select * from youtube.search(150) where query='spip'", yql}
     3<BOUCLE_youtube(DATA){source yql, "select * from youtube.search(150) where query='spip'"}
    44{datapath /query/results/video}
    55{pagination 5}
  • _plugins_/iterateurs/demo/iterateurs.html

    r43241 r43395  
    1313
    1414
    15 <BOUCLE_chemin(DATA){datasource #EVAL{_chemin()},table}{par valeur}>
     15<BOUCLE_chemin(DATA){source table, #EVAL{_chemin()}}{par valeur}>
    1616
    1717<B_demos>
     
    1919<ul>
    2020
    21 <BOUCLE_demos(DATA){datasource #VALEURdemo/iter_*.html,glob}>
     21<BOUCLE_demos(DATA){source glob, #VALEURdemo/iter_*.html}>
    2222
    2323<li><a href="spip.php?page=demo/iterateurs&amp;demo=[(#VALEUR
  • _plugins_/iterateurs/iterateur/data.php

    r43390 r43395  
    141141         */
    142142        protected function select($command) {
    143                 // les commandes connues pour l'iterateur POUR/DATA
    144                 // sont : {tableau #ARRAY} ; cle=...; valeur=...
    145                 // source URL
     143                // les commandes connues pour l'iterateur DATA
     144                // sont : {tableau #ARRAY} ; {cle=...} ; {valeur=...}
     145                // {source format, [URL], [arg2]...}
     146
    146147                if (isset($this->command['source'])
    147148                AND isset($this->command['sourcemode'])) {
     
    153154                                charger_fonction($this->command['sourcemode'] . '_to_array', 'inc', true);
    154155
     156                        # le premier argument peut etre un array, une URL etc.
     157                        $src = $this->command['source'][0];
     158
    155159                        # avons-nous un cache dispo ?
    156                         if (is_string($this->command['source']))
    157                                 $cle = 'datasource_'.md5($this->command['sourcemode'].':'.$this->command['source']);
     160                        if (is_string($src))
     161                                $cle = 'datasource_'.md5($this->command['sourcemode'].':'.var_export($this->command['source'],true));
     162
    158163                        $cache = $this->cache_get($cle);
    159164                        if (isset($this->command['datacache']))
     
    177182                                        array('table', 'array', 'tableau'))
    178183                                ) {
    179                                         if (is_array($a = $this->command['source'])
     184                                        if (is_array($a = $src)
    180185                                        OR (is_string($a)
    181186                                        AND $a = str_replace('&quot;', '"', $a) # fragile!
     
    184189                                                $this->tableau = $a;
    185190                                }
    186                                 else if (preg_match(',^https?://,', $this->command['source'])) {
     191                                else if (preg_match(',^https?://,', $src)) {
    187192                                        include_spip('inc/distant');
    188                                         $u = recuperer_page($this->command['source']);
     193                                        $u = recuperer_page($src);
    189194                                        if (!$u)
    190195                                                throw new Exception("404");
    191196                                        if (!isset($ttl)) $ttl = 24*3600;
    192                                 } else if (@is_readable($this->command['source'])) {
    193                                         $u = spip_file_get_contents($this->command['source']);
     197                                } else if (@is_readable($src)) {
     198                                        $u = spip_file_get_contents($src);
    194199                                        if (!isset($ttl)) $ttl = 10;
    195200                                } else {
    196                                         $u = $this->command['source'];
     201                                        $u = $src;
    197202                                        if (!isset($ttl)) $ttl = 10;
    198203                                }
     
    200205                                if (!$this->err
    201206                                AND $g = charger_fonction($this->command['sourcemode'] . '_to_array', 'inc', true)) {
    202                                         if (is_array($a = $g($u))) {
     207                                        $args = $this->command['source'];
     208                                        $args[0] = $u;
     209                                        if (is_array($a = call_user_func_array($g,$args))) {
    203210                                                $this->tableau = $a;
    204211                                        }
     
    215222                                $e = $e->getMessage();
    216223                                $err = sprintf("[%s, %s] $e",
    217                                         $this->command['source'],
     224                                        $src,
    218225                                        $this->command['sourcemode']);
    219226                                erreur_squelette(array($err, array()));
     
    238245                if (!is_array($this->tableau)) {
    239246                        $this->err = true;
    240                         spip_log("erreur datasource ".$this->command['source']);
     247                        spip_log("erreur datasource ".$src);
    241248                }
    242249
     
    273280                                                # {par hasard}
    274281                                                else if ($r[1] == 'alea') {
    275                                                         if (!$aleas)
    276                                                         $sortfunc .= 'static $aleas = array();';
    277                                                         $aleas ++;
    278                                                         $tv = '(isset($aleas['.$aleas.'][$v=%s])?$aleas['.$aleas.'][$v]:($aleas['.$aleas.'][$v]=rand(0,1)))';
     282                                                        if (!$aleas++)
     283                                                                $sortfunc .= 'static $aleas = array();';
     284                                                        $tv = '(isset($aleas['.$aleas.'][$v=crc32(serialize(%s))])
     285                                                        ? $aleas['.$aleas.'][$v]
     286                                                        : ($aleas['.$aleas.'][$v]=rand(0,1))
     287                                                        )';
    279288                                                }
    280289                                                # {par valeur/xx/yy} ??
  • _plugins_/iterateurs/iterateurs_fonctions.php

    r43243 r43395  
    2525
    2626
    27 
     27// {source mode, "xxxxxx", arg, arg, arg}
     28function critere_source($idb, &$boucles, $crit) {
     29        $boucle = &$boucles[$idb];
     30
     31        $args = array();
     32        foreach ($crit->param as &$param)
     33                array_push($args,
     34                calculer_liste($param, array(), $boucles, $boucles[$idb]->id_parent));
     35
     36        $boucle->hash .= '
     37        $command[\'sourcemode\'] = '. array_shift($args). ";\n";
     38
     39        $boucle->hash .= '
     40        $command[\'source\'] = array('. join(', ', $args). ");\n";
     41
     42}
     43
     44
     45// {datasource "xxxxxx", mode}  <= deprecated
    2846function critere_datasource($idb, &$boucles, $crit) {
    2947        $boucle = &$boucles[$idb];
    3048        $boucle->hash .= '
    31         $command[\'source\'] = '.calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent).';
     49        $command[\'source\'] = array('.calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent).');
    3250        $command[\'sourcemode\'] = '.calculer_liste($crit->param[1], array(), $boucles, $boucles[$idb]->id_parent).';';
    3351}
     
    4462        $boucle = &$boucles[$idb];
    4563        $boucle->hash .= '
    46         $command[\'source\'] = '.calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent).';
     64        $command[\'source\'] = array('.calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent).');
    4765        $command[\'sourcemode\'] = \'table\';';
    4866}
  • _plugins_/iterateurs/plugin.xml

    r43390 r43395  
    44        </nom>
    55        <auteur>Fil &amp; Marcimat</auteur>
    6         <licence>&#169; 2010 - GNU/GPL</licence>
    7         <version>0.2.1</version>
     6        <licence>&#169; 2010-2011 - GNU/GPL</licence>
     7        <version>0.2.2</version>
    88        <etat>dev</etat>
    99        <description>
Note: See TracChangeset for help on using the changeset viewer.