Changeset 43390 in spip-zone


Ignore:
Timestamp:
Jan 8, 2011, 10:09:57 AM (10 years ago)
Author:
cedric@…
Message:

report de

http://core.spip.org/trac/spip/changeset/16909 : tri {par cle} sur la boucle (DATA)
http://core.spip.org/trac/spip/changeset/16908 : PhpDoc? sur iterateur (DATA)

Location:
_plugins_/iterateurs
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/iterateurs/iterateur/data.php

    r43305 r43390  
    1616
    1717
    18 //
    19 // creer une boucle sur un iterateur DATA
    20 // annonce au compilo les "champs" disponibles
    21 //
     18/**
     19 * creer une boucle sur un iterateur DATA
     20 * annonce au compilo les "champs" disponibles
     21 *
     22 * @param  $b
     23 * @return
     24 */
    2225function iterateur_DATA_dist($b) {
    2326        $b->iterateur = 'DATA'; # designe la classe d'iterateur
     
    8790        }
    8891
     92        /**
     93         * Declarer les criteres exceptions
     94         * @return array
     95         */
    8996        public function exception_des_criteres() {
    9097                return array('tableau');
    9198        }
    9299
     100        /**
     101         * Recuperer depuis le cache si possible
     102         * @param  $cle
     103         * @return
     104         */
    93105        protected function cache_get($cle) {
    94106                if (!$cle) return;
     
    99111        }
    100112
     113        /**
     114         * Srtocker en cache si possible
     115         * @param  $cle
     116         * @param  $ttl
     117         * @return
     118         */
    101119        protected function cache_set($cle, $ttl) {
    102120                if (!$cle) return;
     
    115133        }
    116134
     135        /**
     136         * Aller chercher les donnees de la boucle DATA
     137         *
     138         * @throws Exception
     139         * @param  $command
     140         * @return void
     141         */
    117142        protected function select($command) {
    118143                // les commandes connues pour l'iterateur POUR/DATA
     
    235260                if ($this->command['orderby']) {
    236261                        $sortfunc = '';
     262                        $aleas = 0;
    237263                        foreach($this->command['orderby'] as $tri) {
    238264                                if (preg_match(',^\.?([/\w]+)( DESC)?$,iS', $tri, $r)) {
    239                                         if ($r[1] == 'valeur')
    240                                                 $tv = '%s';
    241                                         else if ($r[1] == 'alea') # {par hasard}
    242                                                 $tv = 'rand(0,1)';
    243                                         else
    244                                                 $tv = 'Iterateurs_table_valeur(%s, '.var_export($r[1],true).')';
    245                                         $sortfunc .= '
    246                                         $a = '.sprintf($tv,'$aa').';
    247                                         $b = '.sprintf($tv,'$bb').';
    248                                         if ($a <> $b)
    249                                                 return ($a ' . ($r[2] ? '>' : '<').' $b) ? -1 : 1;';
     265                                        // tri par cle
     266                                        if ($r[1] == 'cle'){
     267                                                ksort($this->tableau);
     268                                        }
     269                                        else {
     270                                                # {par valeur}
     271                                                if ($r[1] == 'valeur')
     272                                                        $tv = '%s';
     273                                                # {par hasard}
     274                                                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)))';
     279                                                }
     280                                                # {par valeur/xx/yy} ??
     281                                                else
     282                                                        $tv = 'Iterateurs_table_valeur(%s, '.var_export($r[1],true).')';
     283                                                $sortfunc .= '
     284                                                $a = '.sprintf($tv,'$aa').';
     285                                                $b = '.sprintf($tv,'$bb').';
     286                                                if ($a <> $b)
     287                                                        return ($a ' . ($r[2] ? '>' : '<').' $b) ? -1 : 1;';
     288                                        }
    250289                                }
    251290                        }
     
    321360}
    322361
    323 
     362/*
     363 * Fonctions de transformation donnee => tableau
     364 */
     365
     366/**
     367 * file -> tableau
     368 *
     369 * @param  string $u
     370 * @return array
     371 */
    324372function inc_file_to_array_dist($u) {
    325373        return preg_split('/\r?\n/', $u);
    326374}
    327 function inc_plugins_to_array_dist($u) {
     375
     376/**
     377 * plugins -> tableau
     378 * @return unknown
     379 */
     380function inc_plugins_to_array_dist() {
    328381        include_spip('inc/plugin');
    329382        return liste_chemin_plugin_actifs();
    330383}
     384
     385/**
     386 * xml -> tableau
     387 * @param  string $u
     388 * @return array
     389 */
    331390function inc_xml_to_array_dist($u) {
    332391        return @ObjectToArray(new SimpleXmlIterator($u));
    333392}
     393
     394/**
     395 * yql -> tableau
     396 * @throws Exception
     397 * @param  string $u
     398 * @return array|bool
     399 */
    334400function inc_yql_to_array_dist($u) {
    335401        define('_YQL_ENDPOINT', 'http://query.yahooapis.com/v1/public/yql?&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&q=');
     
    342408        return (array) $w;
    343409}
     410
     411/**
     412 * sql -> tableau
     413 * @param string $u
     414 * @return array|bool
     415 */
    344416function inc_sql_to_array_dist($u) {
    345417        # sortir le connecteur de $u
     
    355427        return false;
    356428}
     429
     430/**
     431 * json -> tableau
     432 * @param string $u
     433 * @return array|bool
     434 */
    357435function inc_json_to_array_dist($u) {
    358436        if (is_array($json = json_decode($u))
     
    360438                return (array) $json;
    361439}
     440
     441/**
     442 * csv -> tableau
     443 * @param string $u
     444 * @return array|bool
     445 */
    362446function inc_csv_to_array_dist($u) {
    363447        include_spip('inc/csv');
     
    373457        return $csv;
    374458}
     459
     460/**
     461 * RSS -> tableau
     462 * @param string $u
     463 * @return array|bool
     464 */
    375465function inc_rss_to_array_dist($u) {
    376466        include_spip('inc/syndic');
     
    379469        return $tableau;
    380470}
    381 // atom, alias de rss
     471
     472/**
     473 * atom, alias de rss -> tableau
     474 * @param string $u
     475 * @return array|bool
     476 */
    382477function inc_atom_to_array_dist($u) {
    383478        $g = charger_fonction('rss_to_array', 'inc');
    384479        return $g($u);
    385480}
    386 // glob : lister des fichiers selon un masque, pour la syntaxe cf php.net/glob
     481
     482/**
     483 * glob -> tableau
     484 * lister des fichiers selon un masque, pour la syntaxe cf php.net/glob
     485 * @param string $u
     486 * @return array|bool
     487 */
    387488function inc_glob_to_array_dist($u) {
    388489        return (array) glob($u,
     
    390491        );
    391492}
    392 // ls : lister des fichiers selon un masque glob
    393 // et renvoyer aussi leurs donnees php.net/stat
     493
     494/**
     495 * ls -> tableau
     496 * ls : lister des fichiers selon un masque glob
     497 * et renvoyer aussi leurs donnees php.net/stat
     498 * @param string $u
     499 * @return array|bool
     500 */
    394501function inc_ls_to_array_dist($u) {
    395502        $glob = charger_fonction('glob_to_array', 'inc');
     
    408515}
    409516
     517/**
     518 * Object -> tableau
     519 * @param Object $object
     520 * @return array|bool
     521 */
    410522function ObjectToArray($object){
    411523        $xml_array = array();
  • _plugins_/iterateurs/plugin.xml

    r43293 r43390  
    33        It&#233;rateurs
    44        </nom>
    5         <auteur>
    6         Fil &amp; Marcimat
    7         &#169; 2010 - GNU/GPL
    8         </auteur>
    9         <version>
    10         0.2
    11         </version>
    12         <etat>
    13         dev
    14         </etat>
     5        <auteur>Fil &amp; Marcimat</auteur>
     6        <licence>&#169; 2010 - GNU/GPL</licence>
     7        <version>0.2.1</version>
     8        <etat>dev</etat>
    159        <description>
    1610        backport pour SPIP 2.1 des it&#233;rateurs de la branche dev
    1711        </description>
    18         <prefix>
    19         Iterateurs
    20         </prefix>
    21         <chemin dir='' />
     12        <prefix>Iterateurs</prefix>
    2213
    2314        <icon>iterateurs.png</icon>
Note: See TracChangeset for help on using the changeset viewer.