wiki.techinc.nl/includes/Group.php

187 lines
4.2 KiB
PHP

<?php
/**
* @package MediaWiki
*/
/**
* Class to manage a group
*/
class Group {
/**#@+
* @access private
*/
/** string $name Group name */
var $name;
/** integer $id Group id */
var $id;
/** string $description Description of the group */
var $description;
/** boolean $dataLoaded Whereas we grabbed datas from the database */
var $dataLoaded;
/** string $rights Contain rights values : "foo,bar,bla" */
var $rights;
/**#@- */
/** Constructor */
function Group() {
$this->clear();
}
/** Clear variables */
function clear() {
$this->name = '';
$this->id = 0;
$this->description = '';
$this->dataLoaded = false;
$this->rights = false;
}
/** Load group datas from database */
function loadFromDatabase() {
global $wgCommandLineMode;
$fname = 'Group::loadFromDatabase';
if ( $this->dataLoaded || $wgCommandLineMode ) {
return;
}
// be sure it's an integer
$this->id = IntVal($this->id);
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 );
$this->id = $r->group_id;
$this->name = $r->group_name;
$this->description = $r->group_description;
$this->rights = $r->group_rights;
$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 );
$this->id = $r->group_id;
$this->name = $r->group_name;
$this->description = $r->group_description;
$this->rights = $r->group_rights;
$this->dataLoaded = true;
}
}
/** Initialise a new row in the database */
function addToDatabase() {
$fname = 'Group::addToDatabase';
$dbw =& wfGetDB( DB_MASTER );
$dbw->insert( 'group',
array(
'group_name' => $this->name,
'group_description' => $this->description,
'group_rights' => $this->rights
), $fname
);
$this->id = $dbw->insertId();
}
/** Save the group datas into database */
function save() {
$fname = 'Group::save';
if($this->id == 0) { return; }
$dbw =& wfGetDB( DB_MASTER );
$dbw->update( 'group',
array( /* SET */
'group_name' => $this->name,
'group_description' => $this->description,
'group_rights' => $this->rights
), array( /* WHERE */
'group_id' => $this->id
), $fname
);
}
// Factories
/** @param integer $id Group database id */
function newFromId($id) {
$fname = 'Group::newFromId';
$g = new Group();
$name = $g->nameFromId(IntVal($id));
if($name == '') { return; }
else { return $g->newFromName($name); }
}
/** @param string $name Group database name */
function newFromName($name) {
$fname = 'Group::newFromName';
$g = new Group();
$g->setId( $g->idFromName($name) );
if( $g->getId() != 0 ) {
return $g;
} else {
return;
}
}
// Converters
/**
* @param integer $id Group database id
* @return string Group database name
*/
function nameFromId($id) {
$fname = 'Group::nameFromId';
$dbr =& wfGetDB( DB_SLAVE );
$r = $dbr->selectRow( 'group', array( 'group_name' ), array( 'group_id' => $id ), $fname );
if($r === false) {
return '';
} else {
return $r->group_name;
}
}
/**
* @param string $name Group database name
* @return integer Group database id
*/
function idFromName($name) {
$fname = 'Group::idFromName';
$dbr =& wfGetDB( DB_SLAVE );
$r = $dbr->selectRow( 'group', array( 'group_id' ), array( 'group_name' => $name ), $fname );
if($r === false) {
return 0;
} else {
return $r->group_id;
}
}
// Accessors for private variables
function getName() {
$this->loadFromDatabase();
return $this->name;
}
function setName($name) {
$this->loadFromDatabase();
$this->name = $name;
}
function getId() { return $this->id; }
function setId($id) {
$this->id = IntVal($id);
$this->dataLoaded = false;
}
function getDescription() { return $this->description; }
function setDescription($desc) {
$this->loadFromDatabase();
$this->description = $desc;
}
function getRights() { return $this->rights; }
function setRights($rights) {
$this->loadFromDatabase();
$this->rights = $rights;
}
}
?>