Make JSON interface work

Now makes sure json php module is loaded,
also fixed a few coding errors and made
the search behave like the search on the
web interface.

Signed-off-by: Simo Leone <simo@archlinux.org>
This commit is contained in:
Simo Leone 2008-02-19 00:05:06 -08:00
parent a2fe04f751
commit 196543a9e7

View file

@ -8,6 +8,10 @@
* @copyright cactuswax.net, 12 October, 2007 * @copyright cactuswax.net, 12 October, 2007
* @package rpc * @package rpc
**/ **/
if (!extension_loaded('json'))
{
dl('json.so');
}
/** /**
* This class defines a remote interface for fetching data * This class defines a remote interface for fetching data
@ -78,9 +82,10 @@ class AurJSON {
* @return mixed Returns an array of package matches. * @return mixed Returns an array of package matches.
**/ **/
private function search($keyword_string) { private function search($keyword_string) {
$keyword_string = mysql_real_escape_string($keyword_string, $this->dbh);
$query = sprintf( $query = sprintf(
"SELECT Name,ID FROM Packages WHERE MATCH(Name,Description) AGAINST('%s' IN BOOLEAN MODE)", "SELECT Name,ID FROM Packages WHERE Name LIKE '%%%s%%' OR Description LIKE '%%%s%%' AND DummyPkg=0",
mysql_real_escape_string($keyword_string, $this->dbh) ); $keyword_string, $keyword_string );
$result = db_query($query, $this->dbh); $result = db_query($query, $this->dbh);
@ -106,7 +111,7 @@ class AurJSON {
* @return mixed Returns an array of value data containing the package data * @return mixed Returns an array of value data containing the package data
**/ **/
private function info($pqdata) { private function info($pqdata) {
$base_query = "SELECT ID,Name,Version,Description,URL,URLPath,License,NumVotes,OutOfDate FROM Packages WHERE "; $base_query = "SELECT ID,Name,Version,Description,URL,URLPath,License,NumVotes,OutOfDate FROM Packages WHERE DummyPkg=0 AND";
if ( is_numeric($pqdata) ) { if ( is_numeric($pqdata) ) {
// just using sprintf to coerce the pqd to an int // just using sprintf to coerce the pqd to an int
@ -118,10 +123,10 @@ class AurJSON {
if(get_magic_quotes_gpc()) { if(get_magic_quotes_gpc()) {
$pqd = stripslashes($pqdata); $pqd = stripslashes($pqdata);
} }
$query_stub = sprintf("Name=%s",mysql_real_escape_string($pqdata)); $query_stub = sprintf("Name=\"%s\"",mysql_real_escape_string($pqdata));
} }
$result = db_query($query.$base_query, $this->dbh); $result = db_query($base_query.$query_stub, $this->dbh);
if ( $result && (mysql_num_rows($result) > 0) ) { if ( $result && (mysql_num_rows($result) > 0) ) {
$row = mysql_fetch_assoc($result); $row = mysql_fetch_assoc($result);