From bac2754b098dce80b58fdd9e92d7e8fd172b0c12 Mon Sep 17 00:00:00 2001 From: Yaco Date: Sat, 7 Sep 2019 14:08:27 -0300 Subject: agrega soporte para modificar componentes por categoria en Chamaleon --- .../src/Components/Modifications/HideFor.php | 4 +-- .../src/Components/Modifications/ShowOnlyFor.php | 4 +-- www/wiki/skins/chameleon/src/PermissionsHelper.php | 33 ++++++++++++++++++++++ 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/www/wiki/skins/chameleon/src/Components/Modifications/HideFor.php b/www/wiki/skins/chameleon/src/Components/Modifications/HideFor.php index a49f9dc6..58d78a6c 100644 --- a/www/wiki/skins/chameleon/src/Components/Modifications/HideFor.php +++ b/www/wiki/skins/chameleon/src/Components/Modifications/HideFor.php @@ -55,7 +55,7 @@ class HideFor extends Modification { */ private function isHidden() { $p = $this->getPermissionsHelper(); - return $p->userHasGroup( 'group' ) && $p->userHasPermission( 'permission' ) && $p->pageIsInNamespace( 'namespace' ); + return $p->userHasGroup( 'group' ) && $p->userHasPermission( 'permission' ) && $p->pageIsInNamespace( 'namespace' ) && $p->pageHasCategory( 'category' ); } /** @@ -68,4 +68,4 @@ class HideFor extends Modification { return $this->permissionsHelper; } -} \ No newline at end of file +} diff --git a/www/wiki/skins/chameleon/src/Components/Modifications/ShowOnlyFor.php b/www/wiki/skins/chameleon/src/Components/Modifications/ShowOnlyFor.php index 67650cbd..7c137d81 100644 --- a/www/wiki/skins/chameleon/src/Components/Modifications/ShowOnlyFor.php +++ b/www/wiki/skins/chameleon/src/Components/Modifications/ShowOnlyFor.php @@ -55,7 +55,7 @@ class ShowOnlyFor extends Modification { */ private function isShown() { $p = $this->getPermissionsHelper(); - return $p->userHasGroup( 'group' ) || $p->userHasPermission( 'permission' ) || $p->pageIsInNamespace( 'namespace' ); + return $p->userHasGroup( 'group' ) || $p->userHasPermission( 'permission' ) || $p->pageIsInNamespace( 'namespace' ) || $p->pageHasCategory( 'category' ); } /** @@ -68,4 +68,4 @@ class ShowOnlyFor extends Modification { return $this->permissionsHelper; } -} \ No newline at end of file +} diff --git a/www/wiki/skins/chameleon/src/PermissionsHelper.php b/www/wiki/skins/chameleon/src/PermissionsHelper.php index 5d5e9edc..3d895c98 100644 --- a/www/wiki/skins/chameleon/src/PermissionsHelper.php +++ b/www/wiki/skins/chameleon/src/PermissionsHelper.php @@ -146,6 +146,39 @@ class PermissionsHelper { return in_array( $pageNamespace, $expectedNamespaces ); } + /** + * @since 1.1 + * + * AGREGADO PARA REEVO! + * + * @param string $attributeNameInDomElement + * + * @return bool + */ + public function pageHasCategory( $attributeNameInDomElement ) { + + if ( !$this->hasAttribute( $attributeNameInDomElement ) ) { + return $this->default; + } + + $expectedCategories = $this->getValueListFromAttribute( $attributeNameInDomElement ); + + $pagename = $this->skin->getTitle(); + $cats = $this->skin->getSkin()->getCategoryLinks(); + preg_match_all('/<\s*a[^>]*>(.*?)<\s*\/\s*a>/', $cats, $output_array); + $pageCategory = $output_array[1]; + $match = array_intersect($pageCategory,$expectedCategories); + $final = reset($match); + if ($match) { + // error_log('Se encontro una categoria en la página '.$pagename.' que aplica una regla de Modification en Chamaleon'); + $pageCategory = $final; + } + + return in_array( $pageCategory, $expectedCategories ); + } + + + /** * @param null|string $value * -- cgit v1.2.1