Remove hardcoded CSS ...
[lhc/web/wiklou.git] / includes / Group.php
index 6c02ecd..88b5166 100644 (file)
@@ -5,6 +5,7 @@
 
 /**
  * Class to manage a group
+ * @package MediaWiki
  */
 class Group {
        /**#@+
@@ -20,7 +21,7 @@ class Group {
        var $dataLoaded;
        /** string $rights Contain rights values : "foo,bar,bla" */
        var $rights;
-       /**#@- */
+       /**#@-*/
        
        /** Constructor */
        function Group() {
@@ -49,7 +50,10 @@ class Group {
                
                if($this->id) {
                        $dbr =& wfGetDB( DB_SLAVE );
-                       $r = $dbr->selectRow('`group`', array('group_id', 'group_name', 'group_description', 'group_rights'), array( 'group_id' => $this->id ), $fname );
+                       $r = $dbr->selectRow('group',
+                               array('group_id', 'group_name', 'group_description', 'group_rights'),
+                               array( 'group_id' => $this->id ),
+                               $fname );
                        $this->id = $r->group_id;
                        $this->name = $r->group_name;
                        $this->description = $r->group_description;
@@ -57,7 +61,10 @@ class Group {
                        $this->dataLoaded = true;
                } else {
                        $dbr =& wfGetDB( DB_SLAVE );
-                       $r = $dbr->selectRow('`group`', array('group_id', 'group_name', 'group_description', 'group_rights'), array( 'group_name' => $this->name ), $fname );
+                       $r = $dbr->selectRow('group',
+                               array('group_id', 'group_name', 'group_description', 'group_rights'),
+                               array( 'group_name' => $this->name ),
+                               $fname );
                        $this->id = $r->group_id;
                        $this->name = $r->group_name;
                        $this->description = $r->group_description;
@@ -70,7 +77,7 @@ class Group {
        function addToDatabase() {
                $fname = 'Group::addToDatabase';
                $dbw =& wfGetDB( DB_MASTER );
-               $dbw->insert( '`group`',
+               $dbw->insert( 'group',
                        array(
                                'group_name' => $this->name,
                                'group_description' => $this->description,
@@ -87,7 +94,7 @@ class Group {
 
                $dbw =& wfGetDB( DB_MASTER );
                
-               $dbw->update( '`group`',
+               $dbw->update( 'group',
                        array( /* SET */
                                'group_name' => $this->name,
                                'group_description' => $this->description,
@@ -99,14 +106,37 @@ class Group {
        }
        
 // Factories
-       /** @param integer $id Group database id */
+       /**
+        * Uses Memcached if available.
+        * @param integer $id Group database id
+        */
        function newFromId($id) {
+               global $wgMemc, $wgDBname;
                $fname = 'Group::newFromId';
+               
+               $key = "$wgDBname:groups:id:$id";
+               if( $group = $wgMemc->get( $key ) ) {
+                       wfDebug( "$fname loaded group $id from cache\n" );
+                       return $group;
+               }
+               
                $g = new Group();
                $name = $g->nameFromId(IntVal($id));
 
-               if($name == '') { return; }
-               else { return $g->newFromName($name); }
+               if($name == '') {
+                       wfDebug( "$fname can't find group $id\n" );
+                       return null;
+               } else {
+                       $group = $g->newFromName($name);
+                       if( $group ) {
+                               wfDebug( "$fname caching group $id (name $name)\n" );
+                               $group->loadFromDatabase();
+                               $wgMemc->add( $key, $group, 3600 );
+                       } else {
+                               wfDebug( "$fname failed to laod group id $d (name $name)\n" );
+                       }
+                       return $group;
+               }
        }
 
 
@@ -131,8 +161,9 @@ class Group {
        function nameFromId($id) {
                $fname = 'Group::nameFromId';
                $dbr =& wfGetDB( DB_SLAVE );
-               $r = $dbr->selectRow( '`group`', array( 'group_name' ), array( 'group_id' => $id ), $fname );
-               
+               $r = $dbr->selectRow( 'group', array( 'group_name' ), array( 'group_id' => $id ), $fname );
+               if ($dbr == null)
+                       return;         
                if($r === false) {
                        return '';
                } else {
@@ -147,7 +178,7 @@ class Group {
        function idFromName($name) {
                $fname = 'Group::idFromName';
                $dbr =& wfGetDB( DB_SLAVE );
-               $r = $dbr->selectRow( '`group`', array( 'group_id' ), array( 'group_name' => $name ), $fname );
+               $r = $dbr->selectRow( 'group', array( 'group_id' ), array( 'group_name' => $name ), $fname );
 
                if($r === false) {
                        return 0;
@@ -184,4 +215,4 @@ class Group {
                $this->rights = $rights;
        }
 }
-?>
+?>
\ No newline at end of file