openrat-cms

OpenRat Content Management System
git clone http://git.code.weiherhei.de/openrat-cms.git
Log | Files | Refs | README

commit fb98b09b0649e5708adafdbe7b4cb9b4fc037313
parent 1185c19cf76d5932d2f26952b940fcffcb49031c
Author: Jan Dankert <develop@jandankert.de>
Date:   Sat, 27 Feb 2021 00:01:45 +0100

Fix: File-filtering.

Diffstat:
Mmodules/cms/generator/FileGenerator.class.php | 33+++++++++++++++++++--------------
Mmodules/cms/generator/filter/AbstractFilter.class.php | 2--
Mmodules/cms/generator/filter/Filter.class.php | 8+++++++-
Mmodules/cms/model/File.class.php | 12+-----------
4 files changed, 27 insertions(+), 28 deletions(-)

diff --git a/modules/cms/generator/FileGenerator.class.php b/modules/cms/generator/FileGenerator.class.php @@ -43,13 +43,20 @@ class FileGenerator extends BaseGenerator * @param $file File * @return string */ - private function filterValue($file ) + private function filterValue( $file ) { - $value = $file->loadValue(); + $totalSettings = $file->getTotalSettings(); - foreach(\util\ArrayUtils::getSubArray($file->getTotalSettings(), array( 'filter')) as $filterEntry ) + $proxyFileId = @$totalSettings['proxy-file-id']; + + if ( $proxyFileId ) + $value = (new File( $proxyFileId ))->loadValue(); // This is a proxy for another file. + else + $value = $file->loadValue(); + + foreach(\util\ArrayUtils::getSubArray($totalSettings, array( 'filter')) as $filterEntry ) { - $filterName = @$filterEntry['name']; + $filterName = ucfirst(strtolower(@$filterEntry['name'])); $extension = @$filterEntry['extension']; if ( $extension && strtolower($extension) != strtolower($file->getRealExtension()) ) @@ -66,20 +73,18 @@ class FileGenerator extends BaseGenerator $parameter = (array) @$filterEntry['parameter']; - $filterClassNameWithNS = 'cms\\publish\\filter\\' . $filterName.'Filter'; + $filterClassNameWithNS = 'cms\\generator\\filter\\' . $filterName.'Filter'; - if ( !class_exists( $filterClassNameWithNS ) ) { - Logger::warn("Filter '$filterName' does not exist."); - continue; - } + if ( !class_exists( $filterClassNameWithNS ) ) + throw new \LogicException("Filter '$filterName' does not exist."); /** @var AbstractFilter $filter */ $filter = new $filterClassNameWithNS(); // Copy filter configuration to filter instance. - foreach( $parameter as $name=>$value) { - if ( property_exists($filter,$name)) - $filter->$name = $value; + foreach( $parameter as $parameterName=>$parameterValue) { + if ( property_exists($filter,$parameterName)) + $filter->$parameterName = $parameterValue; } @@ -88,7 +93,7 @@ class FileGenerator extends BaseGenerator try { - $value = $filter->filter( $value ); + $parameterValue = $filter->filter( $value ); } catch( \Exception $e ) { // Filter has some undefined error. Logger::warn( $e->getTraceAsString() ); @@ -96,7 +101,7 @@ class FileGenerator extends BaseGenerator } } - return $value; + return $parameterValue; } diff --git a/modules/cms/generator/filter/AbstractFilter.class.php b/modules/cms/generator/filter/AbstractFilter.class.php @@ -3,8 +3,6 @@ namespace cms\generator\filter; -use modules\cms\generator\filter\Filter; - abstract class AbstractFilter implements Filter { public abstract function filter( $value ); diff --git a/modules/cms/generator/filter/Filter.class.php b/modules/cms/generator/filter/Filter.class.php @@ -1,10 +1,16 @@ <?php -namespace modules\cms\generator\filter; +namespace cms\generator\filter; interface Filter { + /** + * Filtering a value. + * + * @param $value string + * @return string + */ public function filter( $value ); } \ No newline at end of file diff --git a/modules/cms/model/File.class.php b/modules/cms/model/File.class.php @@ -557,20 +557,10 @@ EOF */ private function loadValueFromDatabase() { - // Read from cache, if cache exist and is not too old. - - $settings = $this->getSettings(); - $proxyFileId = @$settings['proxy-file-id']; - - if ( $proxyFileId ) - $objectid = $proxyFileId; // This is a proxy for another file. - else - $objectid = $this->objectid; - $sql = Db::sql( 'SELECT size,value'. ' FROM {{file}}'. ' WHERE objectid={objectid}' ); - $sql->setInt( 'objectid', $objectid); + $sql->setInt( 'objectid', $this->objectid); $row = $sql->getRow(); if ( count($row) != 0 )