mike.morgan%oregonstate.edu 1e68ebd5ef Fixed getters so they get instead of set in amo.class.php.
git-svn-id: svn://10.0.0.236/trunk@188195 18797224-902f-48f8-a5cc-f745e15eee43
2006-01-26 00:54:11 +00:00

218 lines
5.2 KiB
PHP

<?php
/**
* AMO master class. This class contains global application logic.
* @todo properly separate accessors and mutators.
* @todo don't store data in this superclass -- strip vars except for tpl/db.
*/
class AMO_Object
{
var $db;
var $tpl;
/**
* AMO_Object constructor.
*/
function AMO_Object() {
// Our DB and Smarty objects are global to save cycles.
global $db, $tpl;
// Pass by reference in order to save memory.
$this->db =& $db;
$this->tpl =& $tpl;
}
/**
* Set var.
*
* @param string $key name of object property to set
* @param mixed $val value to assign
*
* @return bool
*/
function setVar($key,$val)
{
$this->$key = $val;
return true;
}
/**
* Set an array of variables based on a $db record.
*
* @param array $data associative array of data.
*
* @return bool
*/
function setVars($data)
{
if (is_array($data)) {
foreach ($data as $key=>$val) {
$this->setVar($key,$val);
}
return true;
} else {
return false;
}
}
/**
* Get all category names.
*
* @return array
*/
function getCats($type=null)
{
if (!empty($type)) {
$typesql = " WHERE cattype='{$type}' ";
} else {
$typesql = '';
}
// Gather categories.
$this->db->query("
SELECT DISTINCT
CategoryID,
CatName
FROM
categories
{$typesql}
GROUP BY
CatName
ORDER BY
CatName
", SQL_INIT, SQL_ASSOC);
do {
$retval[$this->db->record['CategoryID']] = $this->db->record['CatName'];
} while ($this->db->next(SQL_ASSOC));
return $retval;
}
/**
* Get all operating system names (platforms). Used to populate forms.
*
* @return array
*/
function getPlatforms()
{
// Gather platforms..
$this->db->query("
SELECT
OSID,
OSName
FROM
os
ORDER BY
OSName
", SQL_INIT, SQL_ASSOC);
do {
$retval[$this->db->record['OSID']] = $this->db->record['OSName'];
} while ($this->db->next(SQL_ASSOC));
return $retval;
}
/**
* Get all application names. Used to populate forms.
*/
function getApps()
{
// Gather aapplications.
$this->db->query("
SELECT DISTINCT
AppID,
AppName
FROM
applications
WHERE
public_ver = 'YES'
GROUP BY
AppName
", SQL_INIT, SQL_ASSOC);
do {
$retval[$this->db->record['AppID']] = $this->db->record['AppName'];
} while ($this->db->next(SQL_ASSOC));
return $retval;
}
/**
* Get newest addons.
*
* @param string $app
* @param string $type
* @param int $limit
* @return array
*/
function getNewestAddons($app='firefox',$type='E',$limit=10) {
// Get most popular extensions based on application.
$this->db->query("
SELECT DISTINCT
TM.ID ID,
TM.Name name,
TM.downloadcount dc,
TV.DateUpdated as dateupdated
FROM
main TM
INNER JOIN version TV ON TM.ID = TV.ID
INNER JOIN applications TA ON TV.AppID = TA.AppID
INNER JOIN os TOS ON TV.OSID = TOS.OSID
WHERE
AppName = '{$app}' AND
downloadcount > '0' AND
approved = 'YES' AND
Type = '{$type}'
GROUP BY
TM.ID
ORDER BY
TV.dateupdated DESC , downloadcount DESC, rating DESC
LIMIT
{$limit}
", SQL_ALL, SQL_ASSOC);
return $this->db->record;
}
/**
* Get most popular addons.
*
* @param string $app
* @param string $type
* @param int $limit
* @return array
*/
function getPopularAddons($app='firefox',$type='E', $limit=10) {
// Return most popular addons.
$this->db->query("
SELECT DISTINCT
TM.ID ID,
TM.Name name,
TM.downloadcount dc,
TV.DateUpdated as dateupdated
FROM
main TM
INNER JOIN version TV ON TM.ID = TV.ID
INNER JOIN applications TA ON TV.AppID = TA.AppID
INNER JOIN os TOS ON TV.OSID = TOS.OSID
WHERE
AppName = '{$app}' AND
downloadcount > '0' AND
approved = 'YES' AND
Type = '{$type}'
GROUP BY
TM.ID
ORDER BY
downloadcount DESC, rating DESC, TV.dateupdated DESC
LIMIT
{$limit}
", SQL_ALL, SQL_ASSOC);
return $this->db->record;
}
}
?>