An important file for user management
[lhc/web/wiklou.git] / includes / Group.php
1 <?php
2 /**
3 * @package MediaWiki
4 */
5
6 /**
7 * Class to manage a group
8 */
9 class Group {
10 /**#@+
11 * @access private
12 */
13 /** string $name Group name */
14 var $name;
15 /** integer $id Group id */
16 var $id;
17 /** string $description Description of the group */
18 var $description;
19 /** boolean $dataLoaded Whereas we grabbed datas from the database */
20 var $dataLoaded;
21 /** string $rights Contain rights values : "foo,bar,bla" */
22 var $rights;
23 /**#@- */
24
25 /** Constructor */
26 function Group() {
27 $this->clear();
28 }
29
30 /** Clear variables */
31 function clear() {
32 $this->name = '';
33 $this->id = 0;
34 $this->description = '';
35 $this->dataLoaded = false;
36 $this->rights = false;
37 }
38
39 /** Load group datas from database */
40 function loadFromDatabase() {
41 global $wgCommandLineMode;
42 $fname = 'Group::loadFromDatabase';
43 if ( $this->dataLoaded || $wgCommandLineMode ) {
44 return;
45 }
46
47 // be sure it's an integer
48 $this->id = IntVal($this->id);
49
50 if($this->id) {
51 $dbr =& wfGetDB( DB_SLAVE );
52 $r = $dbr->selectRow('`group`', array('group_id', 'group_name', 'group_description', 'group_rights'), array( 'group_id' => $this->id ), $fname );
53 $this->id = $r->group_id;
54 $this->name = $r->group_name;
55 $this->description = $r->group_description;
56 $this->rights = $r->group_rights;
57 $this->dataLoaded = true;
58 } else {
59 $dbr =& wfGetDB( DB_SLAVE );
60 $r = $dbr->selectRow('`group`', array('group_id', 'group_name', 'group_description', 'group_rights'), array( 'group_name' => $this->name ), $fname );
61 $this->id = $r->group_id;
62 $this->name = $r->group_name;
63 $this->description = $r->group_description;
64 $this->rights = $r->group_rights;
65 $this->dataLoaded = true;
66 }
67 }
68
69 /** Initialise a new row in the database */
70 function addToDatabase() {
71 $fname = 'Group::addToDatabase';
72 $dbw =& wfGetDB( DB_MASTER );
73 $dbw->insert( '`group`',
74 array(
75 'group_name' => $this->name,
76 'group_description' => $this->description,
77 'group_rights' => $this->rights
78 ), $fname
79 );
80 $this->id = $dbw->insertId();
81 }
82
83 /** Save the group datas into database */
84 function save() {
85 $fname = 'Group::save';
86 if($this->id == 0) { return; }
87
88 $dbw =& wfGetDB( DB_MASTER );
89
90 $dbw->update( '`group`',
91 array( /* SET */
92 'group_name' => $this->name,
93 'group_description' => $this->description,
94 'group_rights' => $this->rights
95 ), array( /* WHERE */
96 'group_id' => $this->id
97 ), $fname
98 );
99 }
100
101 // Factories
102 /** @param integer $id Group database id */
103 function newFromId($id) {
104 $fname = 'Group::newFromId';
105 $g = new Group();
106 $name = $g->nameFromId(IntVal($id));
107
108 if($name == '') { return; }
109 else { return $g->newFromName($name); }
110 }
111
112
113 /** @param string $name Group database name */
114 function newFromName($name) {
115 $fname = 'Group::newFromName';
116 $g = new Group();
117
118 $g->setId( $g->idFromName($name) );
119 if( $g->getId() != 0 ) {
120 return $g;
121 } else {
122 return;
123 }
124 }
125
126 // Converters
127 /**
128 * @param integer $id Group database id
129 * @return string Group database name
130 */
131 function nameFromId($id) {
132 $fname = 'Group::nameFromId';
133 $dbr =& wfGetDB( DB_SLAVE );
134 $r = $dbr->selectRow( '`group`', array( 'group_name' ), array( 'group_id' => $id ), $fname );
135
136 if($r === false) {
137 return '';
138 } else {
139 return $r->group_name;
140 }
141 }
142
143 /**
144 * @param string $name Group database name
145 * @return integer Group database id
146 */
147 function idFromName($name) {
148 $fname = 'Group::idFromName';
149 $dbr =& wfGetDB( DB_SLAVE );
150 $r = $dbr->selectRow( '`group`', array( 'group_id' ), array( 'group_name' => $name ), $fname );
151
152 if($r === false) {
153 return 0;
154 } else {
155 return $r->group_id;
156 }
157 }
158
159 // Accessors for private variables
160 function getName() {
161 $this->loadFromDatabase();
162 return $this->name;
163 }
164 function setName($name) {
165 $this->loadFromDatabase();
166 $this->name = $name;
167 }
168
169 function getId() { return $this->id; }
170 function setId($id) {
171 $this->id = IntVal($id);
172 $this->dataLoaded = false;
173 }
174
175 function getDescription() { return $this->description; }
176 function setDescription($desc) {
177 $this->loadFromDatabase();
178 $this->description = $desc;
179 }
180
181 function getRights() { return $this->rights; }
182 function setRights($rights) {
183 $this->loadFromDatabase();
184 $this->rights = $rights;
185 }
186 }
187 ?>