jenkins-bot has submitted this change and it was merged.
Change subject: Add support for PHP CodeSniffer checks
......................................................................
Add support for PHP CodeSniffer checks
* Move global functions into class.
* Fix any remaining errors and warnings.
Change-Id: I8f94e2e3f1a136a01f0da45085197bc026925a93
---
M .gitignore
A AccessControl.hooks.php
M AccessControl.php
M changelog.txt
A composer.json
A phpcs.xml
6 files changed, 395 insertions(+), 354 deletions(-)
Approvals:
Paladox: Looks good to me, but someone else must approve
Hashar: Looks good to me, approved
jenkins-bot: Verified
diff --git a/.gitignore b/.gitignore
index 98b092a..854a2d2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,6 @@
-.svn
*~
*.kate-swp
.*.swp
+node_modules/
+/composer.lock
+/vendor/
diff --git a/AccessControl.hooks.php b/AccessControl.hooks.php
new file mode 100644
index 0000000..b78f658
--- /dev/null
+++ b/AccessControl.hooks.php
@@ -0,0 +1,352 @@
+<?php
+
+class AccessControlHooks {
+ public function onUnknownAction( $action, Page $article ) {
+ global $wgOut;
+ switch ( $action ) {
+ default:
+ $wgOut->setPageTitle( $article->getTitle() .
"->" . $action );
+ $wgOut->addWikiText( wfMessage(
'accesscontrol-actions-deny' )->text() );
+ }
+
+ return false;
+ }
+
+ public function accessControlExtension( Parser $parser ) {
+ /* This the hook function adds the tag <accesscontrol> to the
wiki parser */
+ $parser->setHook( "accesscontrol", array( &$this,
"doControlUserAccess" ) );
+
+ return true;
+ }
+
+ public function doControlUserAccess( $input, array $args, Parser
$parser, PPFrame $frame ) {
+ /* Funcion called by accessControlExtension */
+ return self::displayGroups();
+ }
+
+ public function accessControl( $tagContent ) {
+ $accessgroup = array( array(), array() );
+ $listaccesslist = explode( ',', $tagContent );
+ foreach ( $listaccesslist as $accesslist ) {
+ if ( strpos( $accesslist, "(ro)" ) !== false ) {
+ $accesslist = trim( str_replace( "(ro)", "",
$accesslist ) );
+ $group = self::makeGrouparray( $accesslist );
+ $accessgroup[1] = array_merge( $accessgroup[1],
$group[0] );
+ $accessgroup[1] = array_merge( $accessgroup[1],
$group[1] );
+ } else {
+ $accesslist = trim( $accesslist );
+ $group = self::makeGrouparray( $accesslist );
+ $accessgroup[0] = array_merge( $accessgroup[0],
$group[0] );
+ $accessgroup[1] = array_merge( $accessgroup[1],
$group[1] );
+ }
+ }
+
+ return $accessgroup;
+ }
+
+ public function makeGrouparray( $accesslist ) {
+ /* Function returns array with two lists.
+ First is list full access users.
+ Second is list readonly users. */
+ $userswrite = array();
+ $usersreadonly = array();
+ $users = self::getUsersFromPages( $accesslist );
+ foreach ( array_keys( $users ) as $user ) {
+ switch ( $users[$user] ) {
+ case 'read':
+ $usersreadonly[] = $user;
+ break;
+ case 'edit':
+ $userswrite[] = $user;
+ break;
+ }
+ }
+
+ return array( $userswrite, $usersreadonly );
+ }
+
+ public function displayGroups() {
+ /** Function replace the tag <accesscontrol> and his content,
+ * behind info about a protection this the page
+ */
+ $style = "<p id=\"accesscontrol\"
style=\"text-align:center;color:#BA0000;font-size:8pt\">";
+ $text = wfMessage( 'accesscontrol-info' )->text();
+ $style_end = "</p>";
+ $wgAllowInfo = $style . $text . $style_end;
+
+ return $wgAllowInfo;
+ }
+
+ public function getContentPage( $namespace, $title ) {
+ /* Function get content the page identified by title object
from database */
+ $Title = new Title();
+ $gt = $Title->makeTitle( $namespace, $title );
+ if ( method_exists( 'WikiPage', 'getContent' ) ) {
+ $contentPage = new WikiPage( $gt );
+ if ( $contentPage->getContent() != null ) {
+ return
$contentPage->getContent()->getNativeData();
+ }
+ } else {
+ // create Article and get the content
+ $contentPage = new Article( $gt, 0 );
+
+ return $contentPage->fetchContent( 0 );
+ }
+ }
+
+ public function getTemplatePage( $template ) {
+ /* Function get content the template page identified by title
object from database */
+ $Title = new Title();
+ $gt = $Title->makeTitle( 10, $template );
+ if ( method_exists( 'WikiPage', 'getContent' ) ) {
+ $contentPage = new WikiPage( $gt );
+
+ return $contentPage->getContent()->getNativeData();
+ } else {
+ // create Article and get the content
+ $contentPage = new Article( $gt, 0 );
+
+ return $contentPage->fetchContent( 0 );
+ }
+ }
+
+ public function getUsersFromPages( $group ) {
+ /* Extracts the allowed users from the userspace access list */
+ $allowedAccess = array();
+ $allow = array();
+ $Title = new Title();
+ // Remark: position to add code to use namespace from mediawiki
+ $gt = $Title->makeTitle( 0, $group );
+ if ( method_exists( 'WikiPage', 'getContent' ) ) {
+ $groupPage = new WikiPage( $gt );
+ $allowedUsers =
$groupPage->getContent()->getNativeData();
+ } else {
+ // create Article and get the content
+ $groupPage = new Article( $gt, 0 );
+ $allowedUsers = $groupPage->fetchContent( 0 );
+ }
+ $groupPage = null;
+ $usersAccess = explode( "\n", $allowedUsers );
+ foreach ( $usersAccess as $userEntry ) {
+ $userItem = trim( $userEntry );
+ if ( substr( $userItem, 0, 1 ) == "*" ) {
+ if ( strpos( $userItem, "(ro)" ) === false ) {
+ $user = trim( str_replace( "*", "",
$userItem ) );
+ $allow[$user] = 'edit';
+ } else {
+ $user = trim( str_replace( "*", "",
$userItem ) );
+ $user = trim( str_replace( "(ro)", "",
$user ) );
+ $allow[$user] = 'read';
+ }
+ }
+ }
+ if ( is_array( $allow ) ) {
+ $allowedAccess = $allow;
+ unset( $allow );
+ }
+
+ return $allowedAccess;
+ }
+
+ public function doRedirect( $info ) {
+ /* make redirection for non authorized users */
+ global $wgScript, $wgSitename, $wgOut, $wgAccessControlRedirect;
+ if ( !$info ) {
+ $info = "No_access";
+ }
+ if ( isset( $_SESSION['redirect'] ) ) {
+ // removing info about redirect from session after
move..
+ unset( $_SESSION['redirect'] );
+ }
+ $wgOut->clearHTML();
+ $wgOut->prependHTML( wfMessage( 'accesscontrol-info-box'
)->text() );
+ if ( $wgAccessControlRedirect ) {
+ header( "Location: " . $wgScript . "/" . $wgSitename .
":" . wfMessage( $info )->text() );
+ }
+ }
+
+ public function fromTemplates( $string ) {
+ global $wgUser, $wgAdminCanReadAll;
+ // Template extraction
+ if ( strpos( $string, '{{' ) >= 0 ) {
+ if ( substr( $string, strpos( $string, '{{' ), 3 ) ===
'{{{' ) {
+ $start = strpos( $string, '{{{' );
+ $end = strlen( $string );
+ $skok = $start + 3;
+ self::fromTemplates( substr( $string, $skok,
$end - $skok ) );
+ } else {
+ $start = strpos( $string, '{{' );
+ $end = strpos( $string, '}}' );
+ $skok = $start + 2;
+ $templatepage = substr( $string, $skok, $end -
$skok );
+ if ( substr( $templatepage, 0, 1 ) == '{' ) {
+ // The check of included code
+ $rights = self::fromTemplates(
$templatepage );
+ } elseif ( substr( $templatepage, 0, 1 ) == ':'
) {
+ // The check of included page
+ $rights = self::allRightTags(
self::getContentPage( 0, substr( $templatepage, 1 ) ) );
+ } elseif ( ctype_alnum( substr( $templatepage,
0, 1 ) ) ) {
+ // The check of included template
+ if ( strpos( $templatepage, '|' ) > 0 )
{
+ $templatename = substr(
$templatepage, 0, strpos( $templatepage, '|' ) );
+ $rights = self::allRightTags(
self::getContentPage( 10, $templatename ) );
+ } else {
+ $rights = self::allRightTags(
self::getContentPage( 10, $templatepage ) );
+ }
+ }
+
+ if ( isset( $rights ) ) {
+ if ( is_array( $rights ) ) {
+ if ( $wgUser->mId === 0 ) {
+ /* Redirection unknown
users */
+ $wgActions['view'] =
false;
+ self::doRedirect(
'accesscontrol-move-anonymous' );
+ } else {
+ if ( in_array( 'sysop',
$wgUser->mGroups, true ) ) {
+ if ( isset(
$wgAdminCanReadAll ) ) {
+ if (
$wgAdminCanReadAll ) {
+
return true;
+ }
+ }
+ }
+ $users =
self::accessControl( $rights['groups'] );
+ if ( !in_array(
$wgUser->mName, $users[0], true ) ) {
+
$wgActions['edit'] = false;
+
$wgActions['history'] = false;
+
$wgActions['submit'] = false;
+
$wgActions['info'] = false;
+
$wgActions['raw'] = false;
+
$wgActions['delete'] = false;
+
$wgActions['revert'] = false;
+
$wgActions['revisiondelete'] = false;
+
$wgActions['rollback'] = false;
+
$wgActions['markpatrolled'] = false;
+ if ( !in_array(
$wgUser->mName, $users[1], true ) ) {
+
$wgActions['view'] = false;
+
+ return
self::doRedirect( 'accesscontrol-move-users' );
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public function allRightTags( $string ) {
+ /* Function for extraction content tag accesscontrol from raw
source the page */
+ $contenttag = array();
+ $starttag = "<accesscontrol>";
+ $endtag = "</accesscontrol>";
+ $redirecttag = "redirect";
+
+ if ( ( mb_substr( trim( $string ), 0, 1 ) == "#" ) &&
+ ( stripos( mb_substr( trim( $string ), 1, 9 ),
$redirecttag ) == "0" )
+ ) {
+ # Treatment redirects - content variable $string must
+ # be replaced over content the target page
+ $sourceredirecttag = mb_substr( $string, 0, strpos(
$string, ']]' ) );
+ $redirecttarget = trim( substr( $sourceredirecttag,
strpos( $sourceredirecttag, '[[' ) + 2 ) );
+ if ( strpos( $redirecttarget, '|' ) ) {
+ $redirecttarget = trim( substr(
$redirecttarget, 0, strpos( $redirecttarget, '|' ) ) );
+ }
+ $Title = new Title();
+ $gt = $Title->makeTitle( 0, $redirecttarget );
+
+ return self::allRightTags( self::getContentPage(
$gt->getNamespace(), $gt ) );
+ }
+
+ // The control of included pages and templates on appearing of
accesscontrol tag
+ self::fromTemplates( $string );
+ $start = strpos( $string, $starttag );
+ if ( $start !== false ) {
+ $start += strlen( $starttag );
+ $end = strpos( $string, $endtag );
+ if ( $end !== false ) {
+ $groupsString = substr( $string, $start, $end -
$start );
+ if ( strlen( $groupsString ) == 0 ) {
+ $contenttag['end'] = strlen( $starttag
) + strlen( $endtag );
+ } else {
+ $contenttag['groups'] = $groupsString;
+ $contenttag['end'] = $end + strlen(
$endtag );
+ }
+
+ if ( isset( $_SESSION['redirect'] ) ) {
+ $_SESSION['redirect'] = $contenttag;
+ } else {
+ return $contenttag;
+ }
+ }
+ } else {
+ if ( isset( $_SESSION['redirect'] ) ) {
+ return $_SESSION['redirect'];
+ } else {
+ return false;
+ }
+ }
+ }
+
+ public function onUserCan( &$title, &$wgUser, $action, &$result ) {
+ /* Main function control access for all users */
+ global $wgActions, $wgAdminCanReadAll;
+ if ( $wgUser->mId === 0 ) {
+ /* Deny actions for all anonymous */
+ $wgActions['edit'] = false;
+ $wgActions['history'] = false;
+ $wgActions['submit'] = false;
+ $wgActions['info'] = false;
+ $wgActions['raw'] = false;
+ $wgActions['delete'] = false;
+ $wgActions['revert'] = false;
+ $wgActions['revisiondelete'] = false;
+ $wgActions['rollback'] = false;
+ $wgActions['markpatrolled'] = false;
+ }
+
+ $rights = self::allRightTags( self::getContentPage(
+ $title->getNamespace(),
+ $title->mDbkeyform
+ ) );
+
+ if ( is_array( $rights ) ) {
+ if ( $wgUser->mId === 0 ) {
+ /* Redirection unknown users */
+ $wgActions['view'] = false;
+ self::doRedirect(
'accesscontrol-redirect-anonymous' );
+ } else {
+ if ( in_array( 'sysop', $wgUser->getGroups(),
true ) ) {
+ if ( isset( $wgAdminCanReadAll ) ) {
+ if ( $wgAdminCanReadAll ) {
+ return true;
+ }
+ }
+ }
+ $users = self::accessControl( $rights['groups']
);
+ if ( in_array( $wgUser->mName, $users[0], true
) ) {
+ return true;
+ } else {
+ $wgActions['edit'] = false;
+ $wgActions['history'] = false;
+ $wgActions['submit'] = false;
+ $wgActions['info'] = false;
+ $wgActions['raw'] = false;
+ $wgActions['delete'] = false;
+ $wgActions['revert'] = false;
+ $wgActions['revisiondelete'] = false;
+ $wgActions['rollback'] = false;
+ $wgActions['markpatrolled'] = false;
+ if ( in_array( $wgUser->mName,
$users[1], true ) ) {
+ return true;
+ } else {
+ $wgActions['view'] = false;
+
+ return self::doRedirect(
'accesscontrol-redirect-users' );
+ }
+ }
+ }
+ } else {
+ return true;
+ }
+ }
+}
diff --git a/AccessControl.php b/AccessControl.php
index be1c676..46bc35e 100644
--- a/AccessControl.php
+++ b/AccessControl.php
@@ -11,8 +11,8 @@
* @licence GNU General Public Licence
*/
-if( !defined( 'MEDIAWIKI' ) ) {
- echo ( "This file is an extension to the MediaWiki software and cannot
be used standalone.\n" );
+if ( !defined( 'MEDIAWIKI' ) ) {
+ echo "This file is an extension to the MediaWiki software and cannot be
used standalone.\n";
die();
}
@@ -21,355 +21,22 @@
$wgAccessControlRedirect = true;
$wgExtensionCredits['parserhook'][] = array(
- 'path' => __FILE__,
- 'name' => 'AccessControl',
- 'author' => array(
'[https://www.mediawiki.org/wiki/m:User:Want Aleš Kapica]' ),
- 'url' =>
'http://www.mediawiki.org/wiki/Extension:AccessControl',
- 'version' => '2.5',
- 'descriptionmsg' => 'accesscontrol-desc'
+ 'path' => __FILE__,
+ 'name' => 'AccessControl',
+ 'author' => array( '[https://www.mediawiki.org/wiki/m:User:Want Aleš
Kapica]' ),
+ 'url' => 'http://www.mediawiki.org/wiki/Extension:AccessControl',
+ 'version' => '2.6',
+ 'descriptionmsg' => 'accesscontrol-desc'
);
-$wgHooks['ParserFirstCallInit'][] = 'wfAccessControlExtension' ;
+$wgAutoloadClasses['AccessControlHooks'] = __DIR__ .
'/AccessControl.hooks.php';
-$dir = dirname( __FILE__ ) . '/';
+$wgHooks['ParserFirstCallInit'][] =
'AccessControlHooks::accessControlExtension';
+
$wgMessagesDirs['AccessControl'] = __DIR__ . '/i18n';
+// Hook the userCan function for bypassing the cache
+$wgHooks['userCan'][] = 'AccessControlHooks::onUserCan';
-//Hook the userCan function for bypassing the cache
-$wgHooks['userCan'][] = 'hookUserCan';
-
-//Hook the UnknownAction function for information user about restrictions
-$wgHooks['UnknownAction'][] = 'onUnknownAction' ;
-
-function onUnknownAction ( $action, Page $article ) {
- global $wgOut;
- switch ( $action ) {
- default:
- $wgOut->setPageTitle( $article->getTitle() . "->" .
$action );
- $wgOut->addWikiText( wfMessage(
'accesscontrol-actions-deny' )->text());
- }
- return false;
-}
-
-function wfAccessControlExtension( Parser $parser ) {
- /* This the hook function adds the tag <accesscontrol> to the wiki
parser */
- $parser->setHook( "accesscontrol", "doControlUserAccess" );
- return true;
-}
-
-function doControlUserAccess( $input, array $args, Parser $parser, PPFrame
$frame ) {
- /* Funcion called by wfAccessControlExtension */
- return displayGroups();
-}
-
-function accessControl( $tagContent ){
- $accessgroup = Array( Array(), Array() );
- $listaccesslist = explode( ",", $tagContent );
- foreach ( $listaccesslist as $accesslist ) {
- if ( strpos( $accesslist, "(ro)" ) !== false ) {
- $accesslist = trim( str_replace( "(ro)", "",
$accesslist ) );
- $group = makeGroupArray( $accesslist );
- $accessgroup[1] = array_merge( $accessgroup[1],
$group[0] );
- $accessgroup[1] = array_merge( $accessgroup[1],
$group[1] );
- } else {
- $accesslist = trim( $accesslist );
- $group = makeGroupArray ( $accesslist );
- $accessgroup[0] = array_merge( $accessgroup[0],
$group[0] );
- $accessgroup[1] = array_merge( $accessgroup[1],
$group[1] );
- }
- }
- return $accessgroup;
-}
-
-function makeGroupArray( $accesslist ) {
- /* Function returns array with two lists.
- First is list full access users.
- Second is list readonly users. */
- $userswrite = Array();
- $usersreadonly = Array();
- $users = getUsersFromPages( $accesslist );
- foreach ( array_keys( $users ) as $user ) {
- switch ( $users[$user] ) {
- case 'read':
- $usersreadonly[] = $user;
- break;
- case 'edit':
- $userswrite[] = $user;
- break;
- }
- }
- return array( $userswrite, $usersreadonly );
-}
-
-function displayGroups() {
- /* Function replace the tag <accesscontrol> and his content, behind
info about a protection this the page */
- $style = "<p id=\"accesscontrol\"
style=\"text-align:center;color:#BA0000;font-size:8pt\">";
- $text = wfMessage( 'accesscontrol-info' )->text();
- $style_end = "</p>";
- $wgAllowInfo = $style . $text . $style_end;
- return $wgAllowInfo;
-}
-
-function getContentPage( $namespace, $title ) {
- /* Function get content the page identified by title object from
database */
- $Title = new Title();
- $gt = $Title->makeTitle( $namespace, $title );
- if ( method_exists( 'WikiPage', 'getContent' ) ) {
- $contentPage = new WikiPage( $gt );
- if ( $contentPage->getContent() != NULL ) {
- return $contentPage->getContent()->getNativeData();
- }
- } else {
- //echo print_r($gt);
- // create Article and get the content
- $contentPage = new Article( $gt, 0 );
- return $contentPage->fetchContent( 0 );
- }
-}
-
-function getTemplatePage( $template ) {
- /* Function get content the template page identified by title object
from database */
- $Title = new Title();
- $gt = $Title->makeTitle( 10, $template );
- if ( method_exists( 'WikiPage', 'getContent' ) ) {
- $contentPage = new WikiPage( $gt );
- return $contentPage->getContent()->getNativeData();
- } else {
- // create Article and get the content
- $contentPage = new Article( $gt, 0 );
- return $contentPage->fetchContent( 0 );
- }
-}
-
-function getUsersFromPages( $group ) {
- /* Extracts the allowed users from the userspace access list */
- $allowedAccess = Array();
- $allow = Array();
- $Title = new Title();
-// Remark: position to add code to use namespace from mediawiki
- $gt = $Title->makeTitle( 0, $group );
- if ( method_exists( 'WikiPage', 'getContent' ) ) {
- $groupPage = new WikiPage( $gt );
- $allowedUsers = $groupPage->getContent()->getNativeData();
- } else {
- // create Article and get the content
- $groupPage = new Article( $gt, 0 );
- $allowedUsers = $groupPage->fetchContent( 0 );
- }
- $groupPage = NULL;
- $usersAccess = explode( "\n", $allowedUsers );
- foreach ($usersAccess as $userEntry ) {
- $userItem = trim( $userEntry );
- if ( substr( $userItem, 0, 1 ) == "*" ) {
- if ( strpos( $userItem, "(ro)" ) === false ) {
- $user = trim( str_replace( "*", "", $userItem )
);
- $allow[$user] = 'edit';
- } else {
- $user = trim( str_replace( "*", "", $userItem )
);
- $user = trim( str_replace( "(ro)", "", $user )
);
- $allow[$user] = 'read';
- }
- }
- }
- if ( is_array( $allow ) ) {
- $allowedAccess = $allow;
- unset( $allow );
- }
- return $allowedAccess;
-}
-
-function doRedirect( $info ) {
- /* make redirection for non authorized users */
- global $wgScript, $wgSitename, $wgOut, $wgAccessControlRedirect;
- if ( ! $info ) {
- $info = "No_access";
- }
- if ( isset( $_SESSION['redirect'] ) ) {
- // removing info about redirect from session after move..
- unset( $_SESSION['redirect'] );
- }
- $wgOut -> clearHTML() ;
- $wgOut -> prependHTML( wfMessage( 'accesscontrol-info-box' ) -> text()
);
- if ( $wgAccessControlRedirect ) {
- header( "Location: " . $wgScript . "/" . $wgSitename . ":" .
wfMessage( $info )->text() );
- }
-}
-
-function fromTemplates( $string ) {
- global $wgUser, $wgAdminCanReadAll;
- // Template extraction
- if ( strpos( $string, '{{' ) >= 0 ) {
- if ( substr( $string, strpos ( $string, '{{' ), 3 ) === '{{{' )
{
- $start = strpos( $string, '{{{' );
- $end = strlen( $string );
- $skok = $start + 3;
- fromTemplates( substr( $string, $skok, $end - $skok ) );
- } else {
- $start = strpos( $string, '{{' );
- $end = strpos( $string, '}}' );
- $skok = $start + 2;
- $templatepage = substr( $string, $skok, $end - $skok );
- if ( substr( $templatepage, 0, 1 ) == '{' ) {
- // The check of included code
- $rights = fromTemplates( $templatepage );
- } elseif ( substr( $templatepage, 0, 1 ) == ':' ) {
- // The check of included page
- $rights = allRightTags( getContentPage( 0,
substr( $templatepage, 1 ) ) );
- } elseif ( ctype_alnum( substr( $templatepage, 0, 1 )
)) {
- // The check of included template
- if ( strpos( $templatepage, '|' ) > 0) {
- $templatename = substr( $templatepage,
0, strpos( $templatepage, '|' ) );
- $rights = allRightTags( getContentPage(
10, $templatename ) );
- } else {
- $rights = allRightTags( getContentPage(
10, $templatepage ) );
- }
- } else {
- // echo "The end of work with code of article";
- }
- if ( isset( $rights ) ) {
- if ( is_array( $rights ) ) {
- if ( $wgUser->mId === 0 ) {
- /* Redirection unknown users */
- $wgActions['view'] = false;
-
doRedirect('accesscontrol-move-anonymous');
- } else {
- if ( in_array( 'sysop',
$wgUser->mGroups, true ) ) {
- if ( isset(
$wgAdminCanReadAll ) ) {
- if (
$wgAdminCanReadAll ) {
- return
true;
- }
- }
- }
- $users = accessControl(
$rights['groups'] );
- if ( ! in_array(
$wgUser->mName, $users[0], true ) ) {
- $wgActions['edit']
= false;
- $wgActions['history']
= false;
- $wgActions['submit']
= false;
- $wgActions['info']
= false;
- $wgActions['raw']
= false;
- $wgActions['delete']
= false;
- $wgActions['revert']
= false;
-
$wgActions['revisiondelete'] = false;
- $wgActions['rollback']
= false;
-
$wgActions['markpatrolled'] = false;
- if ( ! in_array(
$wgUser->mName, $users[1], true ) ) {
-
$wgActions['view'] = false;
- return
doRedirect( 'accesscontrol-move-users' );
- }
- }
- }
- }
- }
- }
- }
-}
-
-
-function allRightTags( $string ) {
- /* Function for extraction content tag accesscontrol from raw source
the page */
- $contenttag = Array();
- $starttag = "<accesscontrol>";
- $endtag = "</accesscontrol>";
- $redirecttag = "redirect";
-
- if ( ( mb_substr( trim( $string ), 0, 1 ) == "#" )
- && ( stripos( mb_substr( trim( $string ), 1, 9 ), $redirecttag
) == "0" )
- ) {
- /* Treatment redirects - content variable $string must be
replaced over content the target page */
- $sourceredirecttag = mb_substr( $string, 0, strpos( $string,
']]' ) );
- $redirecttarget = trim( substr( $sourceredirecttag, strpos(
$sourceredirecttag, '[[' ) + 2 ) );
- if ( strpos( $redirecttarget, '|' ) ) {
- $redirecttarget = trim( substr( $redirecttarget, 0,
strpos( $redirecttarget, '|' ) ) );
- }
- $Title = new Title();
- $gt = $Title->makeTitle( 0, $redirecttarget );
- return allRightTags( getContentPage( $gt->getNamespace(), $gt )
);
- }
-
- // The control of included pages and templates on appearing of
accesscontrol tag
- fromTemplates( $string );
- $start = strpos( $string, $starttag );
- if ( $start !== false ) {
- $start += strlen( $starttag );
- $end = strpos( $string, $endtag );
- if ( $end !== false ) {
- $groupsString = substr( $string, $start, $end-$start );
- if ( strlen( $groupsString ) == 0 ) {
- $contenttag['end'] = strlen( $starttag ) +
strlen( $endtag );
- } else {
- $contenttag['groups'] = $groupsString;
- $contenttag['end'] = $end + strlen( $endtag );
- }
-
- if( isset( $_SESSION['redirect'] ) ) {
- $_SESSION['redirect'] = $contenttag;
- } else {
- return $contenttag;
- }
- }
- } else {
- if( isset( $_SESSION['redirect'] ) ) {
- return $_SESSION['redirect'];
- } else {
- return false;
- }
- }
-}
-
-function hookUserCan( &$title, &$wgUser, $action, &$result ) {
- /* Main function control access for all users */
- global $wgActions, $wgAdminCanReadAll;
- if ( $wgUser->mId === 0 ) {
- /* Deny actions for all anonymous */
- $wgActions['edit'] = false;
- $wgActions['history'] = false;
- $wgActions['submit'] = false;
- $wgActions['info'] = false;
- $wgActions['raw'] = false;
- $wgActions['delete'] = false;
- $wgActions['revert'] = false;
- $wgActions['revisiondelete'] = false;
- $wgActions['rollback'] = false;
- $wgActions['markpatrolled'] = false;
- }
-
- $rights = allRightTags( getContentPage( $title->getNamespace(),
$title->mDbkeyform ) );
- if ( is_array( $rights ) ) {
- if ( $wgUser->mId === 0 ) {
- /* Redirection unknown users */
- $wgActions['view'] = false;
- doRedirect( 'accesscontrol-redirect-anonymous' );
- } else {
- if ( in_array( 'sysop', $wgUser->getGroups(), true ) ) {
- if ( isset( $wgAdminCanReadAll ) ) {
- if ( $wgAdminCanReadAll ) {
- return true;
- }
- }
- }
- $users = accessControl( $rights['groups'] );
- if ( in_array( $wgUser->mName, $users[0], true ) ) {
- return true;
- } else {
- $wgActions['edit'] = false;
- $wgActions['history'] = false;
- $wgActions['submit'] = false;
- $wgActions['info'] = false;
- $wgActions['raw'] = false;
- $wgActions['delete'] = false;
- $wgActions['revert'] = false;
- $wgActions['revisiondelete'] = false;
- $wgActions['rollback'] = false;
- $wgActions['markpatrolled'] = false;
- if ( in_array( $wgUser->mName, $users[1], true
) ) {
- return true;
- } else {
- $wgActions['view'] = false;
- return doRedirect(
'accesscontrol-redirect-users' );
- }
- }
- }
- } else {
- return true;
- }
-}
+// Hook the UnknownAction function for information user about restrictions
+$wgHooks['UnknownAction'][] = 'AccessControlHooks::onUnknownAction';
diff --git a/changelog.txt b/changelog.txt
index cb9a4bd..3a9a821 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,6 +1,6 @@
version 2.5
* Actualization of description header
-* Fix for uninitialize an variable $rights in function fromTemplates() and
repair of indents in code
+* Fix for uninitialize an variable $rights in function wfFromTemplates() and
repair of indents in code
* New the variable $wgAccessControlRedirect to allow set display of search
results (default is false)
* New language string accesscontrol-info-box in i18n localization file
@@ -12,9 +12,9 @@
* Migrate to JSON i18n
verison 2.3
-* Fixed function doRedirect() and fromTemplates()
+* Fixed function wfDoRedirect() and wfFromTemplates()
* Removed unused messages from localization file
-* New function onUnknownAction()
+* New function wfOnUnknownAction()
version 2.2
* Fix for MediaWiki >= 1.21 by unknown AccessControl user
@@ -32,11 +32,11 @@
$wgAccessControlMessages
version 1.3
-* Gabor Simon fixed problem in function getUsersFromPages()
+* Gabor Simon fixed problem in function wfGetUsersFromPages()
* Applying patch from Stephan Herrmann
version 1.2
-* Fixed errors in parameter fuction doControlUserAccess()
+* Fixed errors in parameter fuction wfDoControlUserAccess()
* Repairing while lopp in function getContentTag()
version 1.1
diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000..4365e8a
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,12 @@
+{
+ "require-dev": {
+ "jakub-onderka/php-parallel-lint": "0.9",
+ "mediawiki/mediawiki-codesniffer": "0.4.0"
+ },
+ "scripts": {
+ "test": [
+ "parallel-lint . --exclude vendor",
+ "phpcs -p -s"
+ ]
+ }
+}
diff --git a/phpcs.xml b/phpcs.xml
new file mode 100644
index 0000000..d81a292
--- /dev/null
+++ b/phpcs.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<ruleset>
+ <rule ref="vendor/mediawiki/mediawiki-codesniffer/MediaWiki"/>
+ <file>.</file>
+ <arg name="extensions" value="php,php5,inc"/>
+ <arg name="encoding" value="utf8"/>
+ <exclude-pattern>vendor</exclude-pattern>
+</ruleset>
--
To view, visit https://gerrit.wikimedia.org/r/241717
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I8f94e2e3f1a136a01f0da45085197bc026925a93
Gerrit-PatchSet: 7
Gerrit-Project: mediawiki/extensions/AccessControl
Gerrit-Branch: master
Gerrit-Owner: Siebrand <[email protected]>
Gerrit-Reviewer: Alex Monk <[email protected]>
Gerrit-Reviewer: Hashar <[email protected]>
Gerrit-Reviewer: Legoktm <[email protected]>
Gerrit-Reviewer: Paladox <[email protected]>
Gerrit-Reviewer: Polybuildr <[email protected]>
Gerrit-Reviewer: Siebrand <[email protected]>
Gerrit-Reviewer: Want <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits