@@ -1557,29 +1557,61 @@ function skin_init( $disp )
15571557 }
15581558}
15591559
1560- function siteskin_init ()
1560+
1561+ /**
1562+ * Get site Skin global object
1563+ *
1564+ * @return object Site Skin
1565+ */
1566+ function & get_site_Skin ()
15611567{
1562- global $ Settings ;
1568+ global $ site_Skin ;
15631569
1564- if ( ! $ Settings ->get ( 'site_skins_enabled ' ) )
1565- { // Site skins are not enabled:
1566- return ;
1570+ if ( ! isset ( $ site_Skin ) )
1571+ { // Initialize site Skin only first time:
1572+
1573+ global $ Settings ;
1574+ if ( ! $ Settings ->get ( 'site_skins_enabled ' ) )
1575+ { // Site skins are not enabled:
1576+ $ site_Skin = NULL ;
1577+ return $ site_Skin ;
1578+ }
1579+
1580+ global $ Session ;
1581+ if ( ! empty ( $ Session ) )
1582+ { // Get site skin Id depending on current session:
1583+ if ( $ Session ->is_mobile_session () )
1584+ { // Mobile session:
1585+ $ skin_ID = $ Settings ->get ( 'mobile_skin_ID ' );
1586+ }
1587+ elseif ( $ Session ->is_tablet_session () )
1588+ { // Tablet session:
1589+ $ skin_ID = $ Settings ->get ( 'tablet_skin_ID ' );
1590+ }
1591+ }
1592+ if ( empty ( $ skin_ID ) )
1593+ { // Use normal skin ID by default when mobile and tablet skins are not defined for site:
1594+ $ skin_ID = $ Settings ->get ( 'normal_skin_ID ' );
1595+ }
1596+
1597+ // Try to get site Skin from DB by ID:
1598+ $ SkinCache = & get_SkinCache ();
1599+ $ site_Skin = & $ SkinCache ->get_by_ID ( $ skin_ID , false , false );
15671600 }
15681601
1569- // Get site skin:
1570- $ skin_ID = $ Settings ->get ( 'normal_skin_ID ' );
1571- $ SkinCache = & get_SkinCache ();
1572- $ site_Skin = & $ SkinCache ->get_by_ID ( $ skin_ID , false , false );
1602+ return $ site_Skin ;
1603+ }
1604+
15731605
1574- if ( $ site_Skin )
1606+ /**
1607+ * Initalize site Skin
1608+ */
1609+ function siteskin_init ()
1610+ {
1611+ if ( $ site_Skin = & get_site_Skin () )
15751612 { // Initialize site skin:
15761613 $ site_Skin ->siteskin_init ();
15771614 }
1578- else
1579- { // Fallback:
1580- // The following is temporary and should be moved to some SiteSkin class
1581- siteskin_include ( '_skin_init.inc.php ' );
1582- }
15831615}
15841616
15851617
@@ -1931,14 +1963,13 @@ function skin_template_path( $template_name )
19311963 *
19321964 * @param string Template name
19331965 * @param array Params
1934- * @param boolean force include even if sitewide header/footer not enabled
19351966 */
1936- function siteskin_include ( $ template_name , $ params = array (), $ force = false )
1967+ function siteskin_include ( $ template_name , $ params = array () )
19371968{
1938- global $ Settings , $ siteskins_path , $ skins_path , $ Blog ;
1969+ global $ Settings , $ skins_path , $ Blog ;
19391970
1940- if ( !$ Settings ->get ( 'site_skins_enabled ' ) && ! $ force )
1941- { // Site skins are not enabled and we don't want to force either
1971+ if ( ! $ Settings ->get ( 'site_skins_enabled ' ) )
1972+ { // Site skins are not enabled:
19421973 return ;
19431974 }
19441975
@@ -1961,31 +1992,17 @@ function siteskin_include( $template_name, $params = array(), $force = false )
19611992 $ timer_name = 'siteskin_include( ' .$ template_name .') ' ;
19621993 $ Timer ->resume ( $ timer_name );
19631994
1964- // Get site skin:
1965- $ skin_ID = $ Settings ->get ( 'normal_skin_ID ' );
1966- $ SkinCache = & get_SkinCache ();
1967- $ site_Skin = & $ SkinCache ->get_by_ID ( $ skin_ID , false , false );
1995+ // Get site Skin:
1996+ $ site_Skin = & get_site_Skin ();
19681997
1969- if ( $ site_Skin && file_exists ( $ skins_path . $ site_Skin ->folder . ' / ' .$ template_name ) )
1998+ if ( $ site_Skin && file_exists ( $ site_Skin ->get_path () .$ template_name ) )
19701999 { // Use site skin template:
1971- $ file = $ skins_path . $ site_Skin ->folder . ' / ' .$ template_name ;
1972- $ debug_info = '<b>Site Skin template</b>: ' .rel_path_to_base ($ file );
2000+ $ file = $ site_Skin ->get_path () .$ template_name ;
2001+ $ debug_info = '<b>Site Skin template</b>: ' .rel_path_to_base ( $ file );
19732002 $ disp_handled = 'skin ' ;
19742003 }
1975- elseif ( file_exists ( $ siteskins_path .'custom/ ' .$ template_name ) )
1976- { // Use the custom template:
1977- $ file = $ siteskins_path .'custom/ ' .$ template_name ;
1978- $ debug_info = '<b>Custom template</b>: ' .rel_path_to_base ($ file );
1979- $ disp_handled = 'custom ' ;
1980- }
1981- elseif ( file_exists ( $ siteskins_path .$ template_name ) ) // Try to include standard template only if custom template doesn't exist
1982- { // Use the default/fallback template:
1983- $ file = $ siteskins_path .$ template_name ;
1984- $ debug_info = '<b>Fallback to</b>: ' .rel_path_to_base ($ file );
1985- $ disp_handled = 'fallback ' ;
1986- }
19872004 else
1988- {
2005+ { // Site skin is wrong or the requested template file is not found in current site skin:
19892006 $ disp_handled = false ;
19902007 }
19912008
@@ -2004,30 +2021,25 @@ function siteskin_include( $template_name, $params = array(), $force = false )
20042021 $ display_includes = false ;
20052022 }
20062023 if ( $ display_includes )
2007- { // Wrap the include with a visible div:
2024+ { // Wrap the include with a visible div:
20082025 echo '<div class="dev-blocks dev-blocks--siteinclude"> ' ;
20092026 echo '<div class="dev-blocks-name">siteskin_include( <b> ' .$ template_name .'</b> ) -> ' .$ debug_info .'</div> ' ;
20102027 }
20112028
20122029
2013- if ($ disp_handled )
2014- {
2015- $ Debuglog ->add ('siteskin_include: ' .rel_path_to_base ($ file ), 'skins ' );
2030+ if ( $ disp_handled )
2031+ { // Include site skin template file:
2032+ $ Debuglog ->add ('siteskin_include: ' .rel_path_to_base ( $ file ), 'skins ' );
20162033 require $ file ;
20172034 }
20182035 else
2019- { // nothing handled the display
2020- printf ( '<div class="skin_error">Site template [%s] not found.</div> ' , $ template_name );
2021- if ( !empty ($ current_User ) && $ current_User ->level == 10 )
2022- {
2023- printf ( '<div class="skin_error">User level 10 help info: [%s]</div> ' , $ siteskins_path .$ template_name );
2024- }
2036+ { // Nothing handled the display:
2037+ printf ( '<div class="skin_error">Site skin template [%s] not found.</div> ' , $ template_name );
20252038 }
20262039
20272040
20282041 if ( $ display_includes )
2029- { // End of visible container:
2030- // echo get_icon( 'pixel', 'imgtag', array( 'class' => 'clear' ) );
2042+ { // End of visible container:
20312043 echo '</div> ' ;
20322044 }
20332045
0 commit comments