1
0
Fork 0
mirror of https://github.com/Yetangitu/ampache synced 2025-10-03 17:59:21 +02:00

Add UI::find_template method and its allow_php_themes argument

This commit is contained in:
Niols 2015-06-06 18:53:38 +02:00
parent d48575fcf6
commit 35477d0a5e
2 changed files with 32 additions and 6 deletions

View file

@ -972,3 +972,10 @@ encode_ss_duration = "-t %DURATION%"
; so that the ordering is sane.
; DEFAULT: auto
;mb_detect_order = "ASCII,UTF-8,EUC-JP,ISO-2022-JP,SJIS,JIS"
; This setting allows themes to overwrite PHP template files. This can be really
; dangerous. Do this only if you trust every theme in your themes/ directory.
; DEFAULT: false
;allow_php_themes = "false"

View file

@ -34,6 +34,25 @@ class UI
return false;
}
/**
* find_template
*
* Return the path to the template file wanted. The file can be overwriten
* by the theme if it's not a php file, or if it is and if option
* allow_php_themes is set to true.
*/
public static function find_template($template)
{
$path = AmpConfig::get('theme_path') . '/templates/' . $template;
$realpath = AmpConfig::get('prefix') . $path;
$extension = strtolower(pathinfo($path, PATHINFO_EXTENSION));
if(($extension != 'php' || AmpConfig::get('allow_php_themes'))
&& file_exists($realpath) && is_file($realpath))
return $path;
else
return '/templates/' . $template;
}
/**
* access_denied
*
@ -44,7 +63,7 @@ class UI
// Clear any buffered crap
ob_end_clean();
header("HTTP/1.1 403 $error");
require_once AmpConfig::get('prefix') . '/templates/show_denied.inc.php';
require_once AmpConfig::get('prefix') . UI::find_template('show_denied.inc.php');
exit;
}
@ -57,7 +76,7 @@ class UI
public static function ajax_include($template)
{
ob_start();
require AmpConfig::get('prefix') . '/templates/' . $template;
require AmpConfig::get('prefix') . UI::find_template('') . $template;
$output = ob_get_contents();
ob_end_clean();
@ -274,7 +293,7 @@ END;
*/
public static function show_header()
{
require_once AmpConfig::get('prefix') . '/templates/header.inc.php';
require_once AmpConfig::get('prefix') . UI::find_template('header.inc.php');
}
/**
@ -296,7 +315,7 @@ END;
}
}
require_once AmpConfig::get('prefix') . '/templates/footer.inc.php';
require_once AmpConfig::get('prefix') . UI::find_template('footer.inc.php');
if (isset($_REQUEST['profiling'])) {
Dba::show_profile();
}
@ -309,7 +328,7 @@ END;
*/
public static function show_box_top($title = '', $class = '')
{
require AmpConfig::get('prefix') . '/templates/show_box_top.inc.php';
require AmpConfig::get('prefix') . UI::find_template('show_box_top.inc.php');
}
/**
@ -319,7 +338,7 @@ END;
*/
public static function show_box_bottom()
{
require AmpConfig::get('prefix') . '/templates/show_box_bottom.inc.php';
require AmpConfig::get('prefix') . UI::find_template('show_box_bottom.inc.php');
}
public static function show_custom_style()