(bug 5167) Add {{SUBPAGENAME}} variable
[lhc/web/wiklou.git] / includes / Group.php
index a660583..cc4a05d 100644 (file)
@@ -17,12 +17,12 @@ class Group {
        var $id;
        /** string $description Description of the group */
        var $description;
-       /** boolean $dataLoaded Whereas we grabbed datas from the database */
+       /** boolean $dataLoaded Whether data has been loaded from the database */
        var $dataLoaded;
        /** string $rights Contain rights values : "foo,bar,bla" */
        var $rights;
        /**#@-*/
-       
+
        /** Constructor */
        function Group() {
                $this->clear();
@@ -37,25 +37,24 @@ class Group {
                $this->rights = false;
        }
 
-       /** Load group datas from database */
+       /** Load group data from database */
        function loadFromDatabase() {
-               global $wgCommandLineMode;
                $fname = 'Group::loadFromDatabase';
 
                // See if it's already loaded
-               if ( $this->dataLoaded || $wgCommandLineMode ) {
+               if ( $this->dataLoaded || Group::getStaticGroups() ) {
                        return;
                }
 
                // be sure it's an integer
-               $this->id = IntVal($this->id);
-               
+               $this->id = intval($this->id);
+
                if($this->id) {
                        // By ID
                        $dbr =& wfGetDB( DB_SLAVE );
-                       $r = $dbr->selectRow('group',
-                               array('group_id', 'group_name', 'group_description', 'group_rights'),
-                               array( 'group_id' => $this->id ),
+                       $r = $dbr->selectRow('groups',
+                               array('gr_id', 'gr_name', 'gr_description', 'gr_rights'),
+                               array( 'gr_id' => $this->id ),
                                $fname );
                        if ( $r ) {
                                $this->loadFromRow( $r );
@@ -66,9 +65,9 @@ class Group {
                } else {
                        // By name
                        $dbr =& wfGetDB( DB_SLAVE );
-                       $r = $dbr->selectRow('group',
-                               array('group_id', 'group_name', 'group_description', 'group_rights'),
-                               array( 'group_name' => $this->name ),
+                       $r = $dbr->selectRow('groups',
+                               array('gr_id', 'gr_name', 'gr_description', 'gr_rights'),
+                               array( 'gr_name' => $this->name ),
                                $fname );
                        if ( $r ) {
                                $this->loadFromRow( $r );
@@ -81,13 +80,13 @@ class Group {
 
        /** Initialise from a result row */
        function loadFromRow( &$row ) {
-               $this->id = $row->group_id;
-               $this->name = $row->group_name;
-               $this->description = $row->group_description;
-               $this->rights = $row->group_rights;
+               $this->id = $row->gr_id;
+               $this->name = $row->gr_name;
+               $this->description = $row->gr_description;
+               $this->rights = $row->gr_rights;
                $this->dataLoaded = true;
-       }               
-       
+       }
+
        /** Initialise a new row in the database */
        function addToDatabase() {
                if ( Group::getStaticGroups() ) {
@@ -96,44 +95,51 @@ class Group {
 
                $fname = 'Group::addToDatabase';
                $dbw =& wfGetDB( DB_MASTER );
-               $dbw->insert( 'group',
+               $dbw->insert( 'groups',
                        array(
-                               'group_name' => $this->name,
-                               'group_description' => $this->description,
-                               'group_rights' => $this->rights
+                               'gr_name' => $this->name,
+                               'gr_description' => $this->description,
+                               'gr_rights' => $this->rights
                        ), $fname
                );
                $this->id = $dbw->insertId();
        }
 
-       /** Save the group datas into database */
+       /** Save the group data into database */
        function save() {
+               global $wgMemc;
+
                if ( Group::getStaticGroups() ) {
                        wfDebugDieBacktrace( "Can't modify groups in static mode" );
                }
                if($this->id == 0) { return; }
-               
+
                $fname = 'Group::save';
                $dbw =& wfGetDB( DB_MASTER );
-               
-               $dbw->update( 'group',
+
+               $dbw->update( 'groups',
                        array( /* SET */
-                               'group_name' => $this->name,
-                               'group_description' => $this->description,
-                               'group_rights' => $this->rights
+                               'gr_name' => $this->name,
+                               'gr_description' => $this->description,
+                               'gr_rights' => $this->rights
                        ), array( /* WHERE */
-                               'group_id' => $this->id
+                               'gr_id' => $this->id
                        ), $fname
-               );              
+               );
+
+               $wgMemc->set( Group::getCacheKey( $this->id ), $this, 3600 );
        }
 
+
        /** Delete a group */
        function delete() {
+               global $wgMemc;
+
                if ( Group::getStaticGroups() ) {
                        wfDebugDieBacktrace( "Can't modify groups in static mode" );
                }
                if($this->id == 0) { return; }
-               
+
                $fname = 'Group::delete';
                $dbw =& wfGetDB( DB_MASTER );
 
@@ -141,9 +147,20 @@ class Group {
                $dbw->delete( 'user_group', array( 'ug_group' => $this->id ), $fname );
 
                // Now delete the group
-               $dbw->delete( 'group', array( 'group_id' => $this->id ), $fname );
+               $dbw->delete( 'groups', array( 'gr_id' => $this->id ), $fname );
+
+               $wgMemc->delete( Group::getCacheKey( $this->id ) );
+       }
+
+       /**
+        * Get memcached key
+        * @static
+        */
+       function getCacheKey( $id ) {
+               global $wgDBname;
+               return "$wgDBname:groups:id:$id";
        }
-       
+
 // Factories
        /**
         * Uses Memcached if available.
@@ -152,7 +169,7 @@ class Group {
        function newFromId($id) {
                global $wgMemc, $wgDBname;
                $fname = 'Group::newFromId';
-               
+
                $staticGroups =& Group::getStaticGroups();
                if ( $staticGroups ) {
                        if ( array_key_exists( $id, $staticGroups ) ) {
@@ -162,12 +179,13 @@ class Group {
                        }
                }
 
-               $key = "$wgDBname:groups:id:$id";
+               $key = Group::getCacheKey( $id );
+
                if( $group = $wgMemc->get( $key ) ) {
                        wfDebug( "$fname loaded group $id from cache\n" );
                        return $group;
                }
-               
+
                $group = new Group();
                $group->id = $id;
                $group->loadFromDatabase();
@@ -186,7 +204,7 @@ class Group {
        /** @param string $name Group database name */
        function newFromName($name) {
                $fname = 'Group::newFromName';
-               
+
                $staticGroups =& Group::getStaticGroups();
                if ( $staticGroups ) {
                        $id = Group::idFromName( $name );
@@ -196,21 +214,21 @@ class Group {
                                return null;
                        }
                }
-               
+
                $g = new Group();
                $g->name = $name;
                $g->loadFromDatabase();
 
                if( $g->getId() != 0 ) {
                        return $g;
-               } else { 
+               } else {
                        return null;
                }
        }
 
        /**
         * Get an array of Group objects, one for each valid group
-        * 
+        *
         * @static
         */
        function &getAllGroups() {
@@ -223,8 +241,8 @@ class Group {
                wfProfileIn( $fname );
 
                $dbr =& wfGetDB( DB_SLAVE );
-               $groupTable = $dbr->tableName( 'group' );
-               $sql = "SELECT group_id, group_name, group_description, group_rights FROM $groupTable";
+               $groupTable = $dbr->tableName( 'groups' );
+               $sql = "SELECT gr_id, gr_name, gr_description, gr_rights FROM $groupTable";
                $res = $dbr->query($sql, $fname);
 
                $groups = array();
@@ -232,16 +250,16 @@ class Group {
                while($row = $dbr->fetchObject( $res ) ) {
                        $group = new Group;
                        $group->loadFromRow( $row );
-                       $groups[$row->group_id] = $group;
+                       $groups[$row->gr_id] = $group;
                }
 
                wfProfileOut( $fname );
                return $groups;
        }
 
-       /** 
+       /**
         * Get static groups, if they have been defined in LocalSettings.php
-        * 
+        *
         * @static
         */
        function &getStaticGroups() {
@@ -273,7 +291,7 @@ class Group {
        }
 
        /**
-        * @param string $name Group database name 
+        * @param string $name Group database name
         * @return integer Group database id
         */
        function idFromName($name) {
@@ -283,7 +301,7 @@ class Group {
                if ( $staticGroups ) {
                        foreach( $staticGroups as $id => $group ) {
                                if ( $group->getName() === $name ) {
-                                       return $group->getID();
+                                       return $group->getId();
                                }
                        }
                        return 0;
@@ -291,12 +309,12 @@ class Group {
 
 
                $dbr =& wfGetDB( DB_SLAVE );
-               $r = $dbr->selectRow( 'group', array( 'group_id' ), array( 'group_name' => $name ), $fname );
+               $r = $dbr->selectRow( 'groups', array( 'gr_id' ), array( 'gr_name' => $name ), $fname );
 
                if($r === false) {
                        return 0;
                } else {
-                       return $r->group_id;
+                       return $r->gr_id;
                }
        }
 
@@ -306,11 +324,11 @@ class Group {
                return $this->name;
        }
 
-       function getExpandedName() { 
+       function getExpandedName() {
                $this->loadFromDatabase();
                return $this->getMessage( $this->name );
        }
-       
+
        function getNameForContent() {
                $this->loadFromDatabase();
                return $this->getMessageForContent( $this->name );
@@ -320,14 +338,14 @@ class Group {
                $this->loadFromDatabase();
                $this->name = $name;
        }
-       
+
        function getId() { return $this->id; }
        function setId($id) {
-               $this->id = IntVal($id);
+               $this->id = intval($id);
                $this->dataLoaded = false;
        }
-       
-       function getDescription() { 
+
+       function getDescription() {
                return $this->description;
        }
 
@@ -346,7 +364,7 @@ class Group {
                $this->rights = $rights;
        }
 
-       /** 
+       /**
         * Gets a message if the text starts with a colon, otherwise returns the text itself
         */
        function getMessage( $text ) {