7 * Class to manage a group
14 /** string $name Group name */
16 /** integer $id Group id */
18 /** string $description Description of the group */
20 /** boolean $dataLoaded Whereas we grabbed datas from the database */
22 /** string $rights Contain rights values : "foo,bar,bla" */
31 /** Clear variables */
35 $this->description
= '';
36 $this->dataLoaded
= false;
37 $this->rights
= false;
40 /** Load group datas from database */
41 function loadFromDatabase() {
42 global $wgCommandLineMode;
43 $fname = 'Group::loadFromDatabase';
44 if ( $this->dataLoaded ||
$wgCommandLineMode ) {
48 // be sure it's an integer
49 $this->id
= IntVal($this->id
);
52 $dbr =& wfGetDB( DB_SLAVE
);
53 $r = $dbr->selectRow('group',
54 array('group_id', 'group_name', 'group_description', 'group_rights'),
55 array( 'group_id' => $this->id
),
57 $this->id
= $r->group_id
;
58 $this->name
= $r->group_name
;
59 $this->description
= $r->group_description
;
60 $this->rights
= $r->group_rights
;
61 $this->dataLoaded
= true;
63 $dbr =& wfGetDB( DB_SLAVE
);
64 $r = $dbr->selectRow('group',
65 array('group_id', 'group_name', 'group_description', 'group_rights'),
66 array( 'group_name' => $this->name
),
68 $this->id
= $r->group_id
;
69 $this->name
= $r->group_name
;
70 $this->description
= $r->group_description
;
71 $this->rights
= $r->group_rights
;
72 $this->dataLoaded
= true;
76 /** Initialise a new row in the database */
77 function addToDatabase() {
78 $fname = 'Group::addToDatabase';
79 $dbw =& wfGetDB( DB_MASTER
);
80 $dbw->insert( 'group',
82 'group_name' => $this->name
,
83 'group_description' => $this->description
,
84 'group_rights' => $this->rights
87 $this->id
= $dbw->insertId();
90 /** Save the group datas into database */
92 $fname = 'Group::save';
93 if($this->id
== 0) { return; }
95 $dbw =& wfGetDB( DB_MASTER
);
97 $dbw->update( 'group',
99 'group_name' => $this->name
,
100 'group_description' => $this->description
,
101 'group_rights' => $this->rights
102 ), array( /* WHERE */
103 'group_id' => $this->id
110 * Uses Memcached if available.
111 * @param integer $id Group database id
113 function newFromId($id) {
114 global $wgMemc, $wgDBname;
115 $fname = 'Group::newFromId';
117 $key = "$wgDBname:groups:id:$id";
118 if( $group = $wgMemc->get( $key ) ) {
119 wfDebug( "$fname loaded group $id from cache\n" );
124 $name = $g->nameFromId(IntVal($id));
127 wfDebug( "$fname can't find group $id\n" );
130 $group = $g->newFromName($name);
132 wfDebug( "$fname caching group $id (name $name)\n" );
133 $group->loadFromDatabase();
134 $wgMemc->add( $key, $group, 3600 );
136 wfDebug( "$fname failed to laod group id $d (name $name)\n" );
143 /** @param string $name Group database name */
144 function newFromName($name) {
145 $fname = 'Group::newFromName';
148 $g->setId( $g->idFromName($name) );
149 if( $g->getId() != 0 ) {
158 * @param integer $id Group database id
159 * @return string Group database name
161 function nameFromId($id) {
162 $fname = 'Group::nameFromId';
163 $dbr =& wfGetDB( DB_SLAVE
);
164 $r = $dbr->selectRow( 'group', array( 'group_name' ), array( 'group_id' => $id ), $fname );
170 return $r->group_name
;
175 * @param string $name Group database name
176 * @return integer Group database id
178 function idFromName($name) {
179 $fname = 'Group::idFromName';
180 $dbr =& wfGetDB( DB_SLAVE
);
181 $r = $dbr->selectRow( 'group', array( 'group_id' ), array( 'group_name' => $name ), $fname );
190 // Accessors for private variables
192 $this->loadFromDatabase();
195 function setName($name) {
196 $this->loadFromDatabase();
200 function getId() { return $this->id
; }
201 function setId($id) {
202 $this->id
= IntVal($id);
203 $this->dataLoaded
= false;
206 function getDescription() { return $this->description
; }
207 function setDescription($desc) {
208 $this->loadFromDatabase();
209 $this->description
= $desc;
212 function getRights() { return $this->rights
; }
213 function setRights($rights) {
214 $this->loadFromDatabase();
215 $this->rights
= $rights;