/**
* Class to manage a group
+ * @package MediaWiki
*/
class Group {
/**#@+
var $dataLoaded;
/** string $rights Contain rights values : "foo,bar,bla" */
var $rights;
- /**#@- */
+ /**#@-*/
/** Constructor */
function 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;
$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;
function addToDatabase() {
$fname = 'Group::addToDatabase';
$dbw =& wfGetDB( DB_MASTER );
- $dbw->insert( '`group`',
+ $dbw->insert( 'group',
array(
'group_name' => $this->name,
'group_description' => $this->description,
$dbw =& wfGetDB( DB_MASTER );
- $dbw->update( '`group`',
+ $dbw->update( 'group',
array( /* SET */
'group_name' => $this->name,
'group_description' => $this->description,
}
// 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;
+ }
}
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 {
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;
$this->rights = $rights;
}
}
-?>
+?>
\ No newline at end of file