You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

86 lines
4.0 KiB

<?php
/**
* @package tikiwiki
*/
// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
//
// All Rights Reserved. See copyright.txt for details and a complete list of authors.
// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
// $Id$
if (basename($_SERVER['SCRIPT_NAME']) === basename(__FILE__)) {
die('This script may only be included.');
}
require_once('tiki-setup.php');
if ($prefs['feature_theme_control'] == 'y' && empty($_SESSION['try_theme'])) {
//we arrive here after lib/setup/theme.php has finished, so $prefs['theme'] and $prefs['theme_active_option'] are already set. Here we want to overwrite them according to the theme control setting
// defined: $cat_type and cat_objid
// search for theme for $cat_type
// then search for theme for md5($cat_type.cat_objid)
global $prefs, $iconset;
$themelib = TikiLib::lib('theme');
$themecontrollib = TikiLib::lib('themecontrol');
$categlib = TikiLib::lib('categ');
//Step 1: lets see if there is any theme control setting for the current object
if (! isset($cat_type)) {
$cat_type = '';
}
if (! isset($cat_objid)) {
$cat_objid = '';
}
list($tc_theme, $tc_theme_option) = $themecontrollib->get_tc_theme($cat_type, $cat_objid); //this function returns $tc_theme and $tc_theme_option
if ($cat_type == 'trackeritem' && empty($tc_theme)) {
$trackerId = $themecontrollib->table('tiki_tracker_items')->fetchOne('trackerId', ['itemId' => $cat_objid]);
$themecontrollib->get_tc_theme('tracker', $trackerId);
}
//Step 2: if at least tc_theme is not empty, than we have a setting, so continue
if ($tc_theme) {
if ($prefs['feature_theme_control_savesession'] == 'y' && ! empty($tc_theme_option)) {
$_SESSION['tc_theme'] = $tc_theme_option;
}
//DROP css files (theme, theme_option and custom.css) added by lib/setup/theme.php that became unnecessary now that we have tc_theme
$themesetup_path = $themelib->get_theme_path($prefs['theme']);
$headerlib->drop_cssfile("{$themesetup_path}css/{$prefs['theme']}.css"); //drop main theme css
$headerlib->drop_cssfile("{$themesetup_path}css/custom.css"); //drop main theme custom css
if (! empty($prefs['theme_option'])) {
$themesetup_path = $themelib->get_theme_path($prefs['theme'], $prefs['theme_option']);
$headerlib->drop_cssfile("{$themesetup_path}css/{$prefs['theme_option']}.css"); //drop option css
$headerlib->drop_cssfile("{$themesetup_path}css/custom.css"); //drop option custom css
}
//ADD new css files (theme, theme_option and custom.css)
$tc_theme_path = $themelib->get_theme_path($tc_theme);
$headerlib->add_cssfile("{$tc_theme_path}css/{$tc_theme}.css"); //add main theme css
if (! empty($tc_theme_option)) { //add theme option css
$tc_theme_path = $themelib->get_theme_path($tc_theme, $tc_theme_option);
$headerlib->add_cssfile("{$tc_theme_path}css/{$tc_theme_option}.css");
}
if (! empty($tc_theme_option)) { //add main theme custom css in case of theme option
$tc_main_theme_path = $themelib->get_theme_path($tc_theme);
$tc_main_custom_css = "{$tc_main_theme_path}css/custom.css";
if (is_readable($tc_main_custom_css)) {
$headerlib->add_cssfile($tc_main_custom_css, 53);
}
}
$tc_custom_css = "{$tc_theme_path}css/custom.css"; //add custom css (can be a main theme or theme option)
if (is_readable($tc_custom_css)) {
$headerlib->add_cssfile($tc_custom_css, 53);
}
//RESET $theme_path global variable
$theme_path = $tc_theme_path;
//RESET $iconset according to the new theme
$iconset = TikiLib::lib('iconset')->getIconsetForTheme($tc_theme, $tc_theme_option);
//RESET theme prefs
$prefs['theme'] = $tc_theme;
$prefs['theme_option'] = $tc_theme_option;
}
}