I want to let some of my administrators (in the wizards group) edit
LocalSettings.php, so I used this snippet, which allows them to make
changes by editing the Project:Shared_config.php page. Then I protected the
page so that only wizards can edit it. Do you think this presents any
security issues?
(I was also going to have it save the old version to a bak file, but I had
to comment that code out because I was getting a call to a function on a
non-object error, for some reason)
function editLocalSettingsOnPageContentSaveComplete( $article, $user,
$content,
$summary, $isMinor, $isWatch, $section, $flags,
$revision, $status, $baseRevId ) {
if (
$article->getTitle()->getFullText() !== 'Project:Shared
config.php' ) {
return true;
}
# $oldRevision = Revision::newFromId( $baseRevId );
# $oldRevisionContent = $oldRevision->getContent( Revision::RAW );
# $oldRevisionContents = ContentHandler::getContentText(
$oldRevisionContent );
# $oldRevisioncontents = str_replace( '<source lang="php"' . ">\n",
'', $oldRevisionContents );
# $oldRevisioncontents = str_replace( '</source' . '>', '',
$oldRevisionContents );
# file_put_contents ( '/home/wiki/shared_config.bak',
$oldRevisionContents );
$contents = ContentHandler::getContentText( $content );
$contents = str_replace( '<source lang="php"' . ">\n", '',
$contents );
$contents = str_replace( '</source' . '>', '', $contents );
file_put_contents ( '/home/wiki/shared_config.php',
$contents );
return true;
}
$wgHooks['PageContentSaveComplete'][] =
'editLocalSettingsOnPageContentSaveComplete';
# add an additional protection level restricting edit/move/etc. to users
with the "wizards" permission
$wgRestrictionLevels[] = 'wizards';
# give the "wizards" permission to users in the "wizard" group
$wgGroupPermissions['developer']['wizards'] = true;