[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Librefm-commits] [1424] merge nixtape/data/Group.php from trunk, though
From: |
Clint Adams |
Subject: |
[Librefm-commits] [1424] merge nixtape/data/Group.php from trunk, though this is still broken against the rest of stable |
Date: |
Fri, 08 May 2009 22:30:46 +0000 |
Revision: 1424
http://svn.sv.gnu.org/viewvc/?view=rev&root=librefm&revision=1424
Author: clint
Date: 2009-05-08 22:30:46 +0000 (Fri, 08 May 2009)
Log Message:
-----------
merge nixtape/data/Group.php from trunk, though this is still broken against
the rest of stable
Modified Paths:
--------------
branches/stable/nixtape/data/Group.php
Modified: branches/stable/nixtape/data/Group.php
===================================================================
--- branches/stable/nixtape/data/Group.php 2009-05-08 22:29:27 UTC (rev
1423)
+++ branches/stable/nixtape/data/Group.php 2009-05-08 22:30:46 UTC (rev
1424)
@@ -34,7 +34,7 @@
*/
class Group {
- public $name, $owner, $fullname, $bio, $homepage, $count, $grouptype,
$id, $avatar_uri, $users;
+ public $id, $gid, $name, $owner, $fullname, $bio, $homepage, $count,
$grouptype, $avatar_uri, $users;
/**
* User constructor
@@ -54,9 +54,9 @@
$res = $mdb2->query('SELECT * FROM Groups WHERE
lower(groupname) = ' . $mdb2->quote(strtolower($name), 'text'));
if(PEAR::isError($res)) {
- //header("Content-Type: text/plain");
+ header("Content-Type: text/plain");
////($res);
- echo "error in group.php";
+
exit;
}
@@ -66,20 +66,60 @@
}
if (is_array($row)) {
+ $this->gid = $row['id'];
$this->name = $row['groupname'];
$this->fullname = $row['fullname'];
$this->homepage = $row['homepage'];
$this->bio = $row['bio'];
$this->avatar_uri = $row["avatar_uri"];
- $this->owner = new User($row['owner']);
+ $this->owner =
User::new_from_uniqueid_number($row['owner']);
$this->count = -1;
$this->users = array();
-
if (! preg_match('/\:/', $this->id))
$this->id = $base.'/group/' .
rawurlencode($this->name) . '#group';
}
}
+
+ /**
+ * Selects a random nixtape group.
+ *
+ * @return object a Group object on success, a PEAR_Error object on
error, or FALSE if there are no groups existing.
+ * @author tobyink
+ */
+ static function random ()
+ {
+ global $mdb2;
+
+ if ( strtolower(substr($mdb2->phptype, 0, 5)) == 'mysql' )
+ {
+ $random = 'RAND';
+ }
+ elseif ( strtolower(substr($mdb2->phptype, 0, 5)) == 'mssql' )
+ {
+ $random = 'NEWID'; // I don't think we try to support
MSSQL, but here's how it's done theoretically anyway
+ }
+ else
+ {
+ $random = 'RANDOM'; // postgresql, sqlite, possibly
others
+ }
+ $res = $mdb2->query("SELECT * FROM Groups ORDER BY {$random}()
LIMIT 1");
+ if (PEAR::isError($res))
+ {
+ return $res;
+ }
+ elseif ($res->numRows())
+ {
+ $row = $res->fetchRow(MDB2_FETCHMODE_ASSOC);
+ return (new Group($row['groupname'], $row));
+ }
+ else
+ {
+ // No groups found.
+ return false;
+ }
+ }
+
/**
* Create a new nixtape group.
*
@@ -124,7 +164,7 @@
// Create new group
$q = sprintf('INSERT INTO Groups (groupname, owner, created,
modified) VALUES (%s, %s, %d, %d)'
, $mdb2->quote($name, 'text')
- , $mdb2->quote($owner->name, 'text')
+ , $mdb2->quote($owner->uniqueid, 'integer')
, time()
, time());
$res = $mdb2->query($q);
@@ -133,10 +173,23 @@
return $res;
}
+ // Get ID number for group
+ $q = sprintf('SELECT id FROM Groups WHERE lower(groupname) =
lower(%s)', $mdb2->quote($name, 'text'));
+ $res = $mdb2->query($q);
+ if (PEAR::isError($res))
+ {
+ return $res;
+ }
+ elseif (!$res->numRows())
+ {
+ return (new PEAR_Error("Something has gone horribly,
horribly wrong!"));
+ }
+ $grp = $res->fetchOne(0);
+
// Group owner must be a member of the group
- $q = sprintf('INSERT INTO Group_Members (groupname, member,
joined) VALUES (%s, %s, %d)'
- , $mdb2->quote($name, 'text')
- , $mdb2->quote($owner->name, 'text')
+ $q = sprintf('INSERT INTO Group_Members (grp, member, joined)
VALUES (%s, %s, %d)'
+ , $mdb2->quote($grp, 'integer')
+ , $mdb2->quote($owner->uniqueid, 'integer')
, time());
$res = $mdb2->query($q);
if (PEAR::isError($res))
@@ -156,26 +209,25 @@
{
$res = $mdb2->query("SELECT gc.* FROM "
. "Group_Members m "
- ."INNER JOIN (SELECT g.groupname, g.owner,
g.fullname, g.bio, g.homepage, g.created, g.modified, g.avatar_uri,
g.grouptype, COUNT(*) AS member_count "
+ ."INNER JOIN (SELECT g.id, g.groupname,
g.owner, g.fullname, g.bio, g.homepage, g.created, g.modified, g.avatar_uri,
g.grouptype, COUNT(*) AS member_count "
."FROM Groups g "
- ."LEFT JOIN Group_Members gm ON
gm.groupname=g.groupname "
- ."GROUP BY g.groupname, g.owner, g.fullname,
g.bio, g.homepage, g.created, g.modified, g.avatar_uri, g.grouptype) gc "
- ."ON m.groupname=gc.groupname "
- ."WHERE m.member=".$mdb2->quote($user->name,
'text'));
+ ."LEFT JOIN Group_Members gm ON gm.grp=g.id "
+ ."GROUP BY g.id, g.groupname, g.owner,
g.fullname, g.bio, g.homepage, g.created, g.modified, g.avatar_uri,
g.grouptype) gc "
+ ."ON m.grp=gc.id "
+ ."WHERE
m.member=".$mdb2->quote($user->uniqueid, 'integer'));
}
else
{
$res = $mdb2->query("SELECT g.groupname, g.owner,
g.fullname, g.bio, g.homepage, g.created, g.modified, g.avatar_uri,
g.grouptype, COUNT(*) AS member_count "
."FROM Groups g "
- ."LEFT JOIN Group_Members gm ON
gm.groupname=g.groupname "
+ ."LEFT JOIN Group_Members gm ON gm.grp=g.id "
."GROUP BY g.groupname, g.owner, g.fullname,
g.bio, g.homepage, g.created, g.modified, g.avatar_uri, g.grouptype");
}
if(PEAR::isError($res))
{
- //header("Content-Type: text/plain");
+ header("Content-Type: text/plain");
////($res);
- echo "error in group.php";
exit;
}
@@ -202,7 +254,7 @@
. "avatar_uri=%s, "
. "modified=%d "
. "WHERE groupname=%s"
- , $mdb2->quote($this->owner->name, 'text')
+ , $mdb2->quote($this->owner->uniqueid,
'integer')
, $mdb2->quote($this->fullname, 'text')
, $mdb2->quote($this->homepage, 'text')
, $mdb2->quote($this->bio, 'text')
@@ -215,7 +267,6 @@
if(PEAR::isError($res)) {
header("Content-Type: text/plain");
////($res);
- echo "error";
exit;
}
@@ -232,7 +283,7 @@
global $base_uri;
if (!empty($this->avatar_uri))
return $this->avatar_uri;
- return $base_uri . "/i/qm50.png";
+ return $base_uri . "themes/" . $default_theme .
"/images/qm50.png";
}
function getURL() {
@@ -254,8 +305,8 @@
{
$res = $mdb2->query("SELECT u.* "
. "FROM Users u "
- . "INNER JOIN Group_Members gm ON
u.username=gm.member "
- . "WHERE
gm.groupname=".$mdb2->quote($this->name,'text')
+ . "INNER JOIN Group_Members gm ON
u.uniqueid=gm.member "
+ . "WHERE
gm.grp=".$mdb2->quote($this->gid,'integer')
. " ORDER BY gm.joined");
if ($res->numRows())
{
@@ -283,8 +334,8 @@
return false;
global $mdb2;
- $res = $mdb2->query(sprintf("INSERT INTO Group_Members VALUES
(%s, %s, %d)",
- $mdb2->quote($this->name, 'text'),
+ $res = $mdb2->query(sprintf("INSERT INTO Group_Members (grp,
member, joined) VALUES (%s, %s, %d)",
+ $mdb2->quote($this->gid, 'integer'),
$mdb2->quote($user->name, 'text'),
time()));
@@ -306,9 +357,9 @@
return false;
global $mdb2;
- $res = $mdb2->query(sprintf("DELETE FROM Group_Members WHERE
groupname=%s AND member=%s",
- $mdb2->quote($this->name, 'text'),
- $mdb2->quote($user->name, 'text')));
+ $res = $mdb2->query(sprintf("DELETE FROM Group_Members WHERE
grp=%s AND member=%s",
+ $mdb2->quote($this->gid, 'integer'),
+ $mdb2->quote($user->uniqueid, 'integer')));
if(PEAR::isError($res))
return false;
@@ -321,7 +372,7 @@
function tagCloudData () {
return TagCloud::generateTagCloud(
- 'Scrobbles INNER JOIN Group_Members ON
Scrobbles.username=Group_Members.member',
+ TagCloud::scrobblesTable('group').' s LEFT JOIN Users u
ON s.username=u.username LEFT JOIN Group_Members gm ON u.uniqueid=gm.member
LEFT JOIN Groups g ON gm.grp=g.id',
'artist',
40,
$this->name,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Librefm-commits] [1424] merge nixtape/data/Group.php from trunk, though this is still broken against the rest of stable,
Clint Adams <=