librefm-commits
[Top][All Lists]
Advanced

[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,





reply via email to

[Prev in Thread] Current Thread [Next in Thread]