commit fb98b09b0649e5708adafdbe7b4cb9b4fc037313
parent 1185c19cf76d5932d2f26952b940fcffcb49031c
Author: Jan Dankert <develop@jandankert.de>
Date: Sat, 27 Feb 2021 00:01:45 +0100
Fix: File-filtering.
Diffstat:
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 )