An important file for user management
authorAntoine Musso <hashar@users.mediawiki.org>
Sun, 24 Oct 2004 21:16:05 +0000 (21:16 +0000)
committerAntoine Musso <hashar@users.mediawiki.org>
Sun, 24 Oct 2004 21:16:05 +0000 (21:16 +0000)
includes/Group.php [new file with mode: 0644]

diff --git a/includes/Group.php b/includes/Group.php
new file mode 100644 (file)
index 0000000..6c02ecd
--- /dev/null
@@ -0,0 +1,187 @@
+<?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;
+       }
+}
+?>