Skip to content

Commit

Permalink
MDL-32683 use slashargument urls for yui images
Browse files Browse the repository at this point in the history
  • Loading branch information
skodak committed May 5, 2012
1 parent 6e7b460 commit d5222fa
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 8 deletions.
17 changes: 10 additions & 7 deletions theme/yui_combo.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,9 @@
require('../config.php'); // this stops immediately at the beginning of lib/setup.php

// get special url parameters
if (!$parts = combo_params()) {

list($parts, $slasharguments) = combo_params();
if (!$parts) {
combo_not_found();
}

Expand Down Expand Up @@ -110,21 +112,22 @@
$filecontent = file_get_contents($contentfile);

$relroot = preg_replace('|^http.?://[^/]+|', '', $CFG->wwwroot);
$sep = ($slasharguments ? '/' : '?file=');

if ($mimetype === 'text/css') {
if ($version == 'moodle') {
$filecontent = preg_replace('/([a-z0-9_-]+)\.(png|gif)/', $relroot.'/theme/yui_image.php?file='.$version.'/'.$frankenstyle.'/'.array_shift($bits).'/$1.$2', $filecontent);
$filecontent = preg_replace('/([a-z0-9_-]+)\.(png|gif)/', $relroot.'/theme/yui_image.php'.$sep.$version.'/'.$frankenstyle.'/'.array_shift($bits).'/$1.$2', $filecontent);
} else if ($version == 'gallery') {
// search for all images in gallery module CSS and serve them through the yui_image.php script
$filecontent = preg_replace('/([a-z0-9_-]+)\.(png|gif)/', $relroot.'/theme/yui_image.php?file='.$version.'/'.$bits[0].'/'.$bits[1].'/$1.$2', $filecontent);
$filecontent = preg_replace('/([a-z0-9_-]+)\.(png|gif)/', $relroot.'/theme/yui_image.php'.$sep.$version.'/'.$bits[0].'/'.$bits[1].'/$1.$2', $filecontent);
} else {
// First we need to remove relative paths to images. These are used by YUI modules to make use of global assets.
// I've added this as a separate regex so it can be easily removed once
// YUI standardise there CSS methods
$filecontent = preg_replace('#(\.\./\.\./\.\./\.\./assets/skins/sam/)?([a-z0-9_-]+)\.(png|gif)#', '$2.$3', $filecontent);

// search for all images in yui2 CSS and serve them through the yui_image.php script
$filecontent = preg_replace('/([a-z0-9_-]+)\.(png|gif)/', $relroot.'/theme/yui_image.php?file='.$version.'/$1.$2', $filecontent);
$filecontent = preg_replace('/([a-z0-9_-]+)\.(png|gif)/', $relroot.'/theme/yui_image.php'.$sep.$version.'/$1.$2', $filecontent);
}
}

Expand Down Expand Up @@ -195,14 +198,14 @@ function combo_params() {
// note: buggy or misconfigured IIS does return the query string in REQUEST_URL
if (isset($_SERVER['REQUEST_URI']) and strpos($_SERVER['REQUEST_URI'], '?') !== false) {
$parts = explode('?', $_SERVER['REQUEST_URI'], 2);
return $parts[1];
return array($parts[1], false);

} else if (isset($_SERVER['QUERY_STRING']) and strpos($_SERVER['QUERY_STRING'], '?') !== false) {
return $_SERVER['QUERY_STRING'];
return array($_SERVER['QUERY_STRING'], false);

} else if ($slashargument = min_get_slash_argument()) {
$slashargument = ltrim($slashargument, '/');
return $slashargument;
return array($slashargument, true);

} else {
// unsupported server, sorry!
Expand Down
6 changes: 5 additions & 1 deletion theme/yui_image.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,11 @@
define('ABORT_AFTER_CONFIG', true);
require('../config.php'); // this stops immediately at the beginning of lib/setup.php

$path = min_optional_param('file', '', 'SAFEPATH');
if ($slashargument = min_get_slash_argument()) {
$path = ltrim($slashargument, '/');
} else {
$path = min_optional_param('file', '', 'SAFEPATH');
}

$parts = explode('/', $path);
$version = array_shift($parts);
Expand Down

0 comments on commit d5222fa

Please sign in to comment.