3 * Provide an administration interface
4 * DO NOT USE: INSECURE.
6 * @subpackage SpecialPage
10 require_once('HTMLForm.php');
11 require_once('Group.php');
14 function wfSpecialGrouplevels($par=null) {
18 $form = new GrouplevelsForm($wgRequest);
23 * A class to manage group levels rights.
25 * @subpackage SpecialPage
27 class GrouplevelsForm
extends HTMLForm
{
28 var $mPosted, $mRequest, $mSaveprefs;
29 /** Escaped local url name*/
33 function GrouplevelsForm ( &$request ) {
34 $this->mPosted
= $request->wasPosted();
35 $this->mRequest
= $request;
36 $this->mName
= 'grouplevels';
38 $titleObj = Title
::makeTitle( NS_SPECIAL
, 'Grouplevels' );
39 $this->action
= $titleObj->escapeLocalURL();
43 * Manage forms to be shown according to posted datas.
44 * Depending on the submit button used : Call a form or a saving function.
47 // show the general form
49 if ( $this->mPosted
) {
50 // show some more forms
51 if($this->mRequest
->getCheck('seditgroup')) {
52 $this->editGroupForm( $this->mRequest
->getVal($this->mName
.'-group-edit') ); }
53 if($this->mRequest
->getCheck('saddgroup')) {
54 $this->editGroupForm( ); }
57 if($this->mRequest
->getCheck('savegroup')) {
58 $this->saveGroup($this->mRequest
->getVal('editgroup-name'),
59 $this->mRequest
->getVal('editgroup-oldname'),
60 $this->mRequest
->getVal('editgroup-description'),
61 $this->mRequest
->getArray('editgroup-getrights'));
69 * @param string $newname Group name.
70 * @param string $oldname Old (current) group name.
71 * @param string $description Group description.
73 * @todo FIXME : doesnt validate anything. Log is incorrect.
75 function saveGroup($newname, $oldname, $description, $rights) {
76 $newame = trim($newname);
79 // We create a new group
83 $g = Group
::newFromName($oldname);
87 $g->setName($newname);
88 $g->setDescription($description);
89 if(isset($rights)) { $g->setRights( implode(',',$rights) ); }
93 $log = new LogPage( 'rights' );
94 $log->addEntry( 'rights', Title
::makeTitle( NS_SPECIAL
, $g->getName()) , ' '.$g->getRights() );
100 * It allows a user to edit or eventually add a group
102 function switchForm() {
106 $wgOut->addHTML( "<form name=\"ulgroup\" action=\"$this->action\" method=\"post\">\n" );
107 $wgOut->addHTML( $this->fieldset( 'lookup-group',
108 HTMLSelectGroups($this->mName
.'-group-edit', array(0 => $this->mRequest
->getVal($this->mName
.'-group-edit')) ) .
109 ' <input type="submit" name="seditgroup" value="'.wfMsg('editgroup').'" />' .
110 '<br /><input type="submit" name="saddgroup" value="'.wfMsg('addgroup').'" />'
112 $wgOut->addHTML( "</form>\n" );
116 * Edit a group properties and rights.
117 * @param string $groupname Name of a group to be edited.
119 function editGroupForm($groupID = 0) {
122 if($this->mRequest
->getVal('seditgroup')) {
123 // fetch data if we edit a group
124 $g = Group
::newFromID($groupID);
125 $fieldname = 'editgroup';
127 // default datas when we add a group
129 $fieldname = 'addgroup';
132 $gName = $g->getName();
133 $gDescription = $g->getDescription();
136 $wgOut->addHTML( "<form name=\"editGroup\" action=\"$this->action\" method=\"post\">\n".
137 '<input type="hidden" name="editgroup-oldname" value="'.$gName.'" />');
138 $wgOut->addHTML( $this->fieldset( $fieldname,
139 $this->textbox( 'editgroup-name', $gName ) .
140 $this->textareabox( 'editgroup-description', $gDescription ) .
141 '<br /><table border="0" align="center"><tr><td>'.
142 HTMLSelectRights($g->getRights()).
143 '</td></tr></table>'."\n".
144 '<input type="submit" name="savegroup" value="'.wfMsg('savegroup').'" />'
147 $wgOut->addHTML( "</form>\n" );
149 } // end class GrouplevelsForm