Update of /cvsroot/phpwiki/phpwiki/lib/WikiDB/backend In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv892/WikiDB/backend Modified Files: ADODB.php Log Message: fix ADODB MostPopular, avoid limit -1, pass hits on empty data Index: ADODB.php =================================================================== RCS file: /cvsroot/phpwiki/phpwiki/lib/WikiDB/backend/ADODB.php,v retrieving revision 1.68 retrieving revision 1.69 diff -u -2 -b -p -d -r1.68 -r1.69 --- ADODB.php 22 Dec 2004 18:33:25 -0000 1.68 +++ ADODB.php 26 Dec 2004 17:14:03 -0000 1.69 @@ -197,6 +197,8 @@ extends WikiDB_backend function _extract_page_data($data, $hits) { - if (empty($data)) return array(); - else return array_merge(array('hits' => $hits), $this->_unserialize($data)); + if (empty($data)) + return array('hits' => $hits); + else + return array_merge(array('hits' => $hits), $this->_unserialize($data)); } @@ -800,5 +802,5 @@ extends WikiDB_backend * Find highest or lowest hit counts. */ - function most_popular($limit=0, $sortby='-hits') { + function most_popular($limit=20, $sortby='-hits') { $dbh = &$this->_dbh; extract($this->_table_names); @@ -816,12 +818,17 @@ extends WikiDB_backend } else $orderby = " ORDER BY hits $order"; - $limit = $limit ? $limit : -1; - - $result = $dbh->SelectLimit("SELECT " + $sql = "SELECT " . $this->page_tbl_fields . " FROM $nonempty_tbl, $page_tbl" . " WHERE $nonempty_tbl.id=$page_tbl.id" . $where - . $orderby, $limit); + . $orderby; + if ($limit) { + // extract from,count from limit + list($offset,$count) = $this->limit($limit); + $result = $dbh->SelectLimit($sql, $count, $offset); + } else { + $result = $dbh->Execute($sql); + } return new WikiDB_backend_ADODB_iter($this, $result, $this->page_tbl_field_list); } @@ -883,17 +890,20 @@ extends WikiDB_backend $limit = -$limit; } - $limit = $limit ? $limit : -1; $where_clause = $join_clause; if ($pick) $where_clause .= " AND " . join(" AND ", $pick); - - // FIXME: use SQL_BUFFER_RESULT for mysql? - // Use SELECTLIMIT for portability - $result = $dbh->SelectLimit("SELECT " + $sql = "SELECT " . $this->page_tbl_fields . ", " . $this->version_tbl_fields . " FROM $table" . " WHERE $where_clause" - . " ORDER BY mtime $order", - $limit); + . " ORDER BY mtime $order"; + // FIXME: use SQL_BUFFER_RESULT for mysql? + if ($limit) { + // extract from,count from limit + list($offset,$count) = $this->limit($limit); + $result = $dbh->SelectLimit($sql, $count, $offset); + } else { + $result = $dbh->Execute($sql); + } //$result->fields['version'] = $result->fields[6]; return new WikiDB_backend_ADODB_iter($this, $result, @@ -915,5 +925,4 @@ extends WikiDB_backend $exclude = " AND $page_tbl.pagename NOT IN ".$this->_sql_set($exclude); - $limit = $limit ? $limit : -1; /* all empty pages, independent of linkstatus: @@ -932,5 +941,11 @@ extends WikiDB_backend . $exclude . $orderby; - $result = $dbh->SelectLimit($sql, $limit); + if ($limit) { + // extract from,count from limit + list($offset,$count) = $this->limit($limit); + $result = $dbh->SelectLimit($sql, $count, $offset); + } else { + $result = $dbh->Execute($sql); + } return new WikiDB_backend_ADODB_iter($this, $result, array('pagename','wantedfrom')); } @@ -1375,4 +1390,7 @@ extends WikiDB_backend_search // $Log$ +// Revision 1.69 2004年12月26日 17:14:03 rurban +// fix ADODB MostPopular, avoid limit -1, pass hits on empty data +// // Revision 1.68 2004年12月22日 18:33:25 rurban // fix page _id_cache logic for _get_pageid create_if_missing