diff options
author | Yaco <franco@reevo.org> | 2019-09-07 14:08:27 -0300 |
---|---|---|
committer | Yaco <franco@reevo.org> | 2019-09-07 14:08:27 -0300 |
commit | bac2754b098dce80b58fdd9e92d7e8fd172b0c12 (patch) | |
tree | 7258a0a8a69f251dedc2c54fb1c4964d3ab17afb | |
parent | 1c0b120ebda97acf9d38b92ecd16b1636e658b33 (diff) |
agrega soporte para modificar componentes por categoria en Chamaleon
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 @@ -147,6 +147,39 @@ class PermissionsHelper { } /** + * @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 * * @return int |