Add view and hsset link parameters

Signed-off-by: Justin Georgi <justin.georgi@gmail.com>
This commit is contained in:
2024-10-30 11:53:02 -07:00
parent 64140b7cd9
commit d59958f110
4 changed files with 80 additions and 35 deletions

View File

@@ -59,9 +59,6 @@ class GlModelHandler extends ImageHandler {
* @return bool
*/
public function validateParam( $name, $value ) {
echo '<script>';
self::console_log('Param: ' . $name . " = " . $value);
echo '</script>';
if (in_array($name, ['width', 'height'])) {
return $value > 0;
} else if (in_array($name, ['view', 'hsset'])) {
@@ -71,6 +68,68 @@ class GlModelHandler extends ImageHandler {
}
}
/**
* Merge a parameter array into a string appropriate for inclusion in filenames.
*
* @param array $params array of parameters that have been through normaliseParams.
* @return string concatenated, formatted string of parameter values
*/
public function makeParamString( $params ) {
$res = parent::makeParamString( $params );
if ( $res && isset( $params['hsset'] ) ) {
$res = "hs{$params['hsset']}-$res";
}
if ( $res && isset( $params['view'] ) ) {
$res = "v{$params['view']}-$res";
}
return $res;
}
/**
* Parse a param string made with makeParamString back into an array.
*
* @param string $str the parameter string without file name
* @return array|false Array of parameters or false on failure
*/
public function parseParamString( $str ) {
preg_match( '/v([^-]*?)-/', $str, $view );
preg_match( '/hs([^-]*?)-/', $str, $hsset );
$otherParams = preg_replace('/(?:(?:hs[^-]*?-)|(?:v[^-]*?-))*(.*)$/', '/$1/', $str);
$parsedParams = parent::parseParamString( $otherParams );
$parsedParams['view'] = $view;
$parsedParams['hsset'] = $hsset;
return $res;
}
/**
* ?
*
* @param array $params input parameters
* @return array same array as input?
*/
protected function getScriptParams( $params ) {
$res = parent::getScriptParams( $params );
if ( isset( $params['view'] ) ) {
$res['view'] = $params['view'];
}
if ( isset( $params['hsset'] ) ) {
$res['hsset'] = $params['hsset'];
}
return $res;
}
/**
* Get an associative array mapping magic word IDs to parameter names.
* @return string[]
*/
public function getParamMap() {
return [
'img_width' => 'width',
'glmv_view' => 'view',
'glmv_hsset' => 'hsset'
];
}
/**
* Small helper function to display information on the browser console
*