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