Changeset 43293 in spip-zone


Ignore:
Timestamp:
Jan 1, 2011, 6:27:25 PM (10 years ago)
Author:
fil@…
Message:

bug sur les #TOTAL_BOUCLE dans les boucles optimisees par le compilo :
report de http://core.spip.org/trac/spip/changeset/16869
(claude delattre)

Location:
_plugins_/iterateurs
Files:
3 edited

Legend:

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

    r43153 r43293  
    155155         */
    156156        public function count() {
    157                 if (is_null($this->total))
    158                         if (!$this->sqlresult)
     157                if (is_null($this->total)) {
     158                        if (!$this->sqlresult) {
    159159                                $this->total = 0;
    160                         else
    161                                 $this->total = sql_count($this->sqlresult, $this->command['connect']);
    162           return $this->total;
     160                        } else {
     161                                # cas count(*)
     162                                if (in_array('count(*)', $this->command['select'])) {
     163                                        $this->valid();
     164                                        $s = $this->current();
     165                                        $this->total = $s['count(*)'];
     166                                } else
     167                                        $this->total = sql_count($this->sqlresult, $this->command['connect']);
     168                        }
     169                }
     170                return $this->total;
    163171        }
    164172}
  • _plugins_/iterateurs/plugin.xml

    r43214 r43293  
    88        </auteur>
    99        <version>
    10         0.1
     10        0.2
    1111        </version>
    1212        <etat>
  • _plugins_/iterateurs/public/compiler.php

    r43155 r43293  
    490490
    491491        if ($boucle->numrows OR $boucle->mode_partie) {
    492                 if ($count == 'count(*)')
    493                         $count = "array_shift(\$iter->next())";
    494                 else $count = "\$iter->count()";
    495                 $nums .= "\$Numrows['$id_boucle']['total'] = @intval($count);"
     492                $nums .= "\$Numrows['$id_boucle']['total'] = @intval(\$iter->count());"
    496493                . $boucle->mode_partie
    497494                . "\n\t";
Note: See TracChangeset for help on using the changeset viewer.