provide a controlling user for theme settings, not necessarily local_user() - can't test on my test site so moving into production and I'll debug it there.
This commit is contained in:
		
							
								
								
									
										9
									
								
								boot.php
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								boot.php
									
									
									
									
									
								
							| @@ -513,6 +513,9 @@ class App { | ||||
| 	public  $account    = null;            // account record | ||||
| 	public  $channel    = null;            // channel record | ||||
| 	public  $observer   = null;            // xchan record | ||||
| 	public  $profile_uid = 0;              // If applicable, the uid of the person whose stuff this is.  | ||||
|                                             | ||||
|  | ||||
|  | ||||
| 	private $perms      = null;            // observer permissions | ||||
| 	private $widgets    = array();         // widgets for this page | ||||
| @@ -1533,7 +1536,7 @@ function profile_load(&$a, $nickname, $profile = '') { | ||||
| 	} | ||||
|  | ||||
| 	$a->profile = $r[0]; | ||||
|  | ||||
| 	$a->profile_uid = $r[0]['profile_uid']; | ||||
|  | ||||
| 	$a->page['title'] = $a->profile['channel_name'] . " - " . $a->profile['channel_address'] . "@" . $a->get_hostname(); | ||||
|  | ||||
| @@ -2339,3 +2342,7 @@ function head_get_icon() { | ||||
| 		$icon = z_root() . $icon; | ||||
| 	return $icon; | ||||
| } | ||||
|  | ||||
| function get_controlling_channel_id() { | ||||
| 	return get_app()->profile_uid; | ||||
| } | ||||
|   | ||||
| @@ -43,6 +43,8 @@ function channelx_by_n($id) { | ||||
|  | ||||
| function vcard_from_xchan($xchan, $observer = null, $mode = '') { | ||||
|  | ||||
| 	$a = get_app(); | ||||
|  | ||||
| 	$connect = false; | ||||
| 	if(local_user()) { | ||||
| 		$r = q("select * from abook where abook_xchan = '%s' and abook_channel = %d limit 1", | ||||
| @@ -53,6 +55,9 @@ function vcard_from_xchan($xchan, $observer = null, $mode = '') { | ||||
| 			$connect = t('Connect'); | ||||
| 	} | ||||
|  | ||||
| 	if(array_key_exists('channel_id',$xchan)) | ||||
| 		$a->profile_uid = $xchan['channel_id']; | ||||
|  | ||||
| 	$url = (($observer)  | ||||
| 		? z_root() . '/magic?f=&dest=' . $xchan['xchan_url'] . '&addr=' . $xchan['xchan_addr']  | ||||
| 		: $xchan['xchan_url'] | ||||
|   | ||||
| @@ -3,6 +3,7 @@ | ||||
| require_once('include/settings.php'); | ||||
|  | ||||
|  | ||||
|  | ||||
| function get_theme_config_file($theme){ | ||||
|  | ||||
| 	$base_theme = get_app()->theme_info['extends']; | ||||
| @@ -16,6 +17,11 @@ function get_theme_config_file($theme){ | ||||
| 	return null; | ||||
| } | ||||
|  | ||||
| function settings_init(&$a) { | ||||
| 	$a->profile_uid = local_user(); | ||||
| } | ||||
|  | ||||
|  | ||||
| function settings_aside(&$a) { | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -2,7 +2,10 @@ | ||||
|   // This needs changing now, if we're going for global settings.  Admin settings have been removed in preparation, You *should* just be able to remove all  | ||||
|   // the get_config bits, though this is untested.   | ||||
|   // We also need to eventually.  Use the page owners settings for everybody - get_pconfig(page_owner()) or whatever that would look like. | ||||
|     load_pconfig(local_user(),'redbasic'); | ||||
|  | ||||
| 	$uid = get_controlling_channel_id(); | ||||
|  | ||||
|     load_pconfig($uid,'redbasic'); | ||||
|  | ||||
|     $line_height = false; | ||||
|     $redbasic_font_size = false; | ||||
| @@ -31,25 +34,25 @@ | ||||
| 	if($x !== false) | ||||
| 		$radius = $x; | ||||
|      | ||||
|     if (local_user()) { | ||||
|         $line_height = get_pconfig(local_user(), "redbasic","line_height"); | ||||
|         $redbasic_font_size = get_pconfig(local_user(), "redbasic", "font_size"); | ||||
|         $colour = get_pconfig(local_user(), "redbasic", "colour"); | ||||
|         $shadows = get_pconfig(local_user(), "redbasic", "shadow"); | ||||
|         $navcolour = get_pconfig(local_user(), "redbasic", "navcolour"); | ||||
|         $displaystyle = get_pconfig(local_user(), "redbasic", "displaystyle"); | ||||
|         $linkcolour = get_pconfig(local_user(), "redbasic", "linkcolour"); | ||||
|         $shiny = get_pconfig(local_user(), "redbasic", "shiny"); | ||||
| 		$x = get_pconfig(local_user(),'redbasic','radius'); | ||||
|     if ($uid) { | ||||
|         $line_height = get_pconfig($uid, "redbasic","line_height"); | ||||
|         $redbasic_font_size = get_pconfig($uid, "redbasic", "font_size"); | ||||
|         $colour = get_pconfig($uid, "redbasic", "colour"); | ||||
|         $shadows = get_pconfig($uid, "redbasic", "shadow"); | ||||
|         $navcolour = get_pconfig($uid, "redbasic", "navcolour"); | ||||
|         $displaystyle = get_pconfig($uid, "redbasic", "displaystyle"); | ||||
|         $linkcolour = get_pconfig($uid, "redbasic", "linkcolour"); | ||||
|         $shiny = get_pconfig($uid, "redbasic", "shiny"); | ||||
| 		$x = get_pconfig($uid,'redbasic','radius'); | ||||
| 		if($x !== false) | ||||
| 			$radius = $x; | ||||
|  | ||||
|         if (! feature_enabled(local_user(),'expert')) {$colour_scheme = get_pconfig(local_user(), "redbasic", "colour_scheme");} | ||||
|         if (! feature_enabled($uid,'expert')) {$colour_scheme = get_pconfig($uid, "redbasic", "colour_scheme");} | ||||
|     } | ||||
|  | ||||
|     // In non-expert mode, we just let them choose font size, line height, and a colour scheme.  A colour scheme is just a pre-defined set of the above variables. | ||||
|     // But only apply these settings in non-expert mode to prevent confusion when turning expert mode on and off. | ||||
|     if(! feature_enabled(local_user(),'expert')) { | ||||
|     if(! feature_enabled($uid,'expert')) { | ||||
| 	    if ($colour_scheme === 'fancyred') {$shadows = true; $navcolour = 'black'; $displaystyle = 'fancy'; $linkcolour = 'f00'; $shiny = "opaque";} | ||||
| 	    // Dark themes are very different - we need to do some of these from scratch, so don't bother setting vars for anything else | ||||
| 	    if ($colour_scheme === 'dark') {$colour = 'dark'; $navcolour = 'black';} | ||||
| @@ -59,7 +62,7 @@ | ||||
| } | ||||
|  | ||||
| // This is probably the easiest place to apply global settings.  Don't bother with site line height and such.  Instead, check pconfig for global user settings.   | ||||
| // eg, if ($redbasic_font_size === false) {$redbasic_font_size = get_pconfig(local_user(), "global", "font_size");  If it's not set, we'll just use the CSS with no changes. | ||||
| // eg, if ($redbasic_font_size === false) {$redbasic_font_size = get_pconfig($uid, "global", "font_size");  If it's not set, we'll just use the CSS with no changes. | ||||
| // Then all you need to do is add a "Global Settings" tab to settings/display, and make an equivalent of theme_settings.tpl and config.php to be loaded there.  Easy. | ||||
|  | ||||
|     if ($line_height === false) {$line_height = $site_line_height;} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user