more or less work for now.
* user_groups ur_group is now a short string key ('sysop' etc)
* groups table is gone
* user_rights table is gone
* Permissions for groups are for now set in $wgGroupPermissions.
An in-database management system could be re-added in the future
if it's really needed, but for now it's mostly just been screwing
things up.
* Group.php and Special:Groups are deprecated; will probably die.
* User group memberships are set explicitly through addGroup and
removeGroup methods instead of being re-saved on every change to
the user record.
Group keys are migrated from user_rights at upgrade time for older wikis.
The fields in prior 1.5alpha tables were too screwed up and will need to
manually have sysops re-assigned.
The Makesysop extension will need some minor tweaks.
175 lines
5.5 KiB
PHP
175 lines
5.5 KiB
PHP
<?php
|
|
/**
|
|
* This file contain a class to easily build HTML forms as well as custom
|
|
* functions used by SpecialUserrights.php and SpecialGroups.php
|
|
* @package MediaWiki
|
|
*/
|
|
|
|
/**
|
|
* Class to build various forms
|
|
*
|
|
* @package MediaWiki
|
|
* @author jeluf, hashar
|
|
*/
|
|
class HTMLForm {
|
|
/** name of our form. Used as prefix for labels */
|
|
var $mName, $mRequest;
|
|
|
|
function HTMLForm( &$request ) {
|
|
$this->mRequest = $request;
|
|
}
|
|
|
|
/**
|
|
* @access private
|
|
* @param string $name Name of the fieldset.
|
|
* @param string $content HTML content to put in.
|
|
* @return string HTML fieldset
|
|
*/
|
|
function fieldset( $name, $content ) {
|
|
return "<fieldset><legend>".wfMsg($this->mName.'-'.$name)."</legend>\n" .
|
|
$content . "\n</fieldset>\n";
|
|
}
|
|
|
|
/**
|
|
* @access private
|
|
* @param string $varname Name of the checkbox.
|
|
* @param boolean $checked Set true to check the box (default False).
|
|
*/
|
|
function checkbox( $varname, $checked=false ) {
|
|
if ( $this->mRequest->wasPosted() && !is_null( $this->mRequest->getVal( $varname ) ) ) {
|
|
$checked = $this->mRequest->getCheck( $varname );
|
|
}
|
|
return "<div><input type='checkbox' value=\"1\" id=\"{$varname}\" name=\"wpOp{$varname}\"" .
|
|
( $checked ? ' checked="checked"' : '' ) .
|
|
" /><label for=\"{$varname}\">". wfMsg( $this->mName.'-'.$varname ) .
|
|
"</label></div>\n";
|
|
}
|
|
|
|
/**
|
|
* @access private
|
|
* @param string $varname Name of the textbox.
|
|
* @param string $value Optional value (default empty)
|
|
* @param integer $size Optional size of the textbox (default 20)
|
|
*/
|
|
function textbox( $varname, $value='', $size=20 ) {
|
|
if ( $this->mRequest->wasPosted() ) {
|
|
$value = $this->mRequest->getText( $varname, $value );
|
|
}
|
|
$value = htmlspecialchars( $value );
|
|
return "<div><label>". wfMsg( $this->mName.'-'.$varname ) .
|
|
"<input type='text' name=\"{$varname}\" value=\"{$value}\" size=\"{$size}\" /></label></div>\n";
|
|
}
|
|
|
|
/**
|
|
* @access private
|
|
* @param string $varname Name of the radiobox.
|
|
* @param array $fields Various fields.
|
|
*/
|
|
function radiobox( $varname, $fields ) {
|
|
foreach ( $fields as $value => $checked ) {
|
|
$s .= "<div><label><input type='radio' name=\"{$varname}\" value=\"{$value}\"" .
|
|
( $checked ? ' checked="checked"' : '' ) . " />" . wfMsg( $this->mName.'-'.$varname.'-'.$value ) .
|
|
"</label></div>\n";
|
|
}
|
|
return $this->fieldset( $this->mName.'-'.$varname, $s );
|
|
}
|
|
|
|
/**
|
|
* @access private
|
|
* @param string $varname Name of the textareabox.
|
|
* @param string $value Optional value (default empty)
|
|
* @param integer $size Optional size of the textarea (default 20)
|
|
*/
|
|
function textareabox ( $varname, $value='', $size=20 ) {
|
|
if ( $this->mRequest->wasPosted() ) {
|
|
$value = $this->mRequest->getText( $varname, $value );
|
|
}
|
|
$value = htmlspecialchars( $value );
|
|
return '<div><label>'.wfMsg( $this->mName.'-'.$varname ).
|
|
"<textarea name=\"{$varname}\" rows=\"5\" cols=\"{$size}\">$value</textarea></label></div>\n";
|
|
}
|
|
|
|
/**
|
|
* @access private
|
|
* @param string $varname Name of the arraybox.
|
|
* @param integer $size Optional size of the textarea (default 20)
|
|
*/
|
|
function arraybox( $varname , $size=20 ) {
|
|
$s = '';
|
|
if ( $this->mRequest->wasPosted() ) {
|
|
$arr = $this->mRequest->getArray( $varname );
|
|
if ( is_array( $arr ) ) {
|
|
foreach ( $_POST[$varname] as $index=>$element ) {
|
|
$s .= htmlspecialchars( $element )."\n";
|
|
}
|
|
}
|
|
}
|
|
return "<div><label>".wfMsg( $this->mName.'-'.$varname ).
|
|
"<textarea name=\"{$varname}\" rows=\"5\" cols=\"{$size}\">{$s}</textarea>\n";
|
|
}
|
|
} // end class
|
|
|
|
|
|
// functions used by SpecialUserrights.php and SpecialGroups.php
|
|
|
|
/** Build a select with all defined groups
|
|
* @param string $selectname Name of this element. Name of form is automaticly prefixed.
|
|
* @param array $selected Array of element selected when posted. Only multiples will show them.
|
|
* @param boolean $multiple A multiple elements select.
|
|
* @param integer $size Number of elements to be shown ignored for non-multiple (default 6).
|
|
* @param boolean $reverse If true, multiple select will hide selected elements (default false).
|
|
*/
|
|
function HTMLSelectGroups($selectname, $selectmsg, $selected=array(), $multiple=false, $size=6, $reverse=false) {
|
|
$groups = User::getAllGroups();
|
|
$out = htmlspecialchars( wfMsg( $selectmsg ) );
|
|
|
|
if( $multiple ) {
|
|
$attribs = array(
|
|
'name' => $selectname . '[]',
|
|
'multiple'=> 'multiple',
|
|
'size' => $size );
|
|
} else {
|
|
$attribs = array( 'name' => $selectname );
|
|
}
|
|
$out .= wfElement( 'select', $attribs, null );
|
|
|
|
foreach( $groups as $group ) {
|
|
$attribs = array( 'value' => $group );
|
|
if( $multiple ) {
|
|
// for multiple will only show the things we want
|
|
if( !in_array( $group, $selected ) xor $reverse ) {
|
|
continue;
|
|
}
|
|
} else {
|
|
if( in_array( $group, $selected ) ) {
|
|
$attribs['selected'] = 'selected';
|
|
}
|
|
}
|
|
$out .= wfElement( 'option', $attribs, User::getGroupName( $group ) ) . "\n";
|
|
}
|
|
|
|
$out .= "</select>\n";
|
|
return $out;
|
|
}
|
|
|
|
/** Build a select with all existent rights
|
|
* @param array $selected Names(?) of user rights that should be selected.
|
|
* @return string HTML select.
|
|
*/
|
|
function HTMLSelectRights($selected='') {
|
|
global $wgAvailableRights;
|
|
$out = '<select name="editgroup-getrights[]" multiple="multiple">';
|
|
$groupRights = explode(',',$selected);
|
|
|
|
foreach($wgAvailableRights as $right) {
|
|
|
|
// check box when right exist
|
|
if(in_array($right, $groupRights)) { $selected = 'selected="selected" '; }
|
|
else { $selected = ''; }
|
|
|
|
$out .= '<option value="'.$right.'" '.$selected.'>'.$right."</option>\n";
|
|
}
|
|
$out .= "</select>\n";
|
|
return $out;
|
|
}
|
|
?>
|