add support for a theme request parameter (fixes #51)
* includes/galleryfunctions.php:
  - check for request parameter theme and whether it matches an
    allowed directory name
 * includes/theme.class.php:
  - die if the theme cannot be initialized properly
			
			
This commit is contained in:
		
							parent
							
								
									ded7232146
								
							
						
					
					
						commit
						5be4c55b97
					
				
					 2 changed files with 13 additions and 4 deletions
				
			
		|  | @ -46,7 +46,13 @@ if (array_key_exists('logfile', $configuration)) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| require_once('theme.class.php'); | require_once('theme.class.php'); | ||||||
| $theme = new Theme($configuration['defaulttheme']); | 
 | ||||||
|  | if (array_key_exists('theme', $_GET) && | ||||||
|  |     preg_match('/^[a-zA-Z0-9_-]+$/', $_GET['theme'])) { | ||||||
|  |   $theme = new Theme($_GET['theme']); | ||||||
|  | } else { | ||||||
|  |   $theme = new Theme($configuration['defaulttheme']); | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * Breite der Vorschaubilder. |  * Breite der Vorschaubilder. | ||||||
|  |  | ||||||
|  | @ -64,9 +64,12 @@ class Theme { | ||||||
|    * @param string $name the directory name of the theme |    * @param string $name the directory name of the theme | ||||||
|    */ |    */ | ||||||
|   function __construct($name) { |   function __construct($name) { | ||||||
|     $themeconfig = parse_ini_file( |     $themeini = realpath(implode(DIRECTORY_SEPARATOR, | ||||||
|       realpath(implode(DIRECTORY_SEPARATOR, |       array('themes', $name, 'theme.ini'))); | ||||||
|         array('themes', $name, 'theme.ini')))); |     if (!$themeini) { | ||||||
|  |       die("invalid theme $name"); | ||||||
|  |     } | ||||||
|  |     $themeconfig = parse_ini_file($themeini); | ||||||
|     $this->name = $name; |     $this->name = $name; | ||||||
|     $this->themetype = $themeconfig['themetype']; |     $this->themetype = $themeconfig['themetype']; | ||||||
|     $this->previewsize = intval($themeconfig['previewsize']); |     $this->previewsize = intval($themeconfig['previewsize']); | ||||||
|  |  | ||||||
		Reference in a new issue