]> git.mxchange.org Git - friendica.git/commitdiff
get the themes settings of foreign profiles
authorrabuzarus <>
Sat, 27 Jun 2015 12:10:43 +0000 (14:10 +0200)
committerrabuzarus <>
Sat, 27 Jun 2015 12:10:43 +0000 (14:10 +0200)
boot.php
include/identity.php
mod/photos.php
mod/videos.php

index 2767709b81567decb290fd910fac1b6a073f774b..200c7e794e3d75ba30bf60ca982504ca21320903 100644 (file)
--- a/boot.php
+++ b/boot.php
@@ -358,6 +358,7 @@ if(! class_exists('App')) {
                public  $config;
                public  $page;
                public  $profile;
+               public  $profile_uid;
                public  $user;
                public  $cid;
                public  $contact;
@@ -1446,10 +1447,33 @@ if(! function_exists('current_theme')) {
 
                $a = get_app();
 
+               $page_theme = null;
+               
+               // Find the theme that belongs to the user whose stuff we are looking at
+
+               if($a->profile_uid && $a->profile_uid != local_user()) {
+                       $r = q("select theme from user where uid = %d limit 1",
+                               intval($a->profile_uid)
+                       );
+                       if($r)
+                               $page_theme = $r[0]['theme'];
+               }
+
+               // Allow folks to over-rule user themes and always use their own on their own site.
+               // This works only if the user is on the same server
+
+               if($page_theme && local_user() && local_user() != $a->profile_url) {
+                       if(get_pconfig(local_user(),'system','always_my_theme'))
+                               $page_theme = null;
+               }
+
 //             $mobile_detect = new Mobile_Detect();
 //             $is_mobile = $mobile_detect->isMobile() || $mobile_detect->isTablet();
                $is_mobile = $a->is_mobile || $a->is_tablet;
 
+               $standard_system_theme = ((isset($a->config['system']['theme'])) ? $a->config['system']['theme'] : '');
+               $standard_theme_name = ((isset($_SESSION) && x($_SESSION,'theme')) ? $_SESSION['theme'] : $standard_system_theme);
+
                if($is_mobile) {
                        if(isset($_SESSION['show-mobile']) && !$_SESSION['show-mobile']) {
                                $system_theme = '';
@@ -1466,9 +1490,12 @@ if(! function_exists('current_theme')) {
                                }
                        }
                }
-               if(!$is_mobile || ($system_theme === '' && $theme_name === '')) {
-                       $system_theme = ((isset($a->config['system']['theme'])) ? $a->config['system']['theme'] : '');
-                       $theme_name = ((isset($_SESSION) && x($_SESSION,'theme')) ? $_SESSION['theme'] : $system_theme);
+               else {
+                       $system_theme = $standard_system_theme;
+                       $theme_name = $standard_theme_name;
+
+                       if($page_theme)
+                               $theme_name = $page_theme;
                }
 
                if($theme_name &&
@@ -1496,9 +1523,13 @@ if(! function_exists('current_theme')) {
 if(! function_exists('current_theme_url')) {
        function current_theme_url() {
                global $a;
+
                $t = current_theme();
+
+               $opts = (($a->profile_uid) ? '?f=&puid=' . $a->profile_uid : '');
                if (file_exists('view/theme/' . $t . '/style.php'))
-                       return($a->get_baseurl() . '/view/theme/' . $t . '/style.pcss');
+                       return($a->get_baseurl() . '/view/theme/' . $t . '/style.pcss' . $opts);
+               
                return($a->get_baseurl() . '/view/theme/' . $t . '/style.css');
        }
 }
index bc930a3c6f4d72836f96a247bf7afc4a69eba38f..bf5d9692746af48091ce2b584be3f06b5cf2203e 100644 (file)
@@ -90,14 +90,15 @@ if(! function_exists('profile_load')) {
                }
 
                $a->profile = $r[0];
+               $a->profile_uid = $r[0]['profile_uid'];
 
                $a->profile['mobile-theme'] = get_pconfig($a->profile['profile_uid'], 'system', 'mobile_theme');
                $a->profile['network'] = NETWORK_DFRN;
 
                $a->page['title'] = $a->profile['name'] . " @ " . $a->config['sitename'];
 
-               if (!$profiledata)
-                       $_SESSION['theme'] = $a->profile['theme'];
+//             if (!$profiledata)
+//                     $_SESSION['theme'] = $a->profile['theme'];
 
                $_SESSION['mobile-theme'] = $a->profile['mobile-theme'];
 
@@ -726,3 +727,19 @@ function zrl($s,$force = false) {
                return $s . $achar . 'zrl=' . urlencode($mine);
        return $s;
 }
+
+// Used from within PCSS themes to set theme parameters. If there's a
+// puid request variable, that is the "page owner" and normally their theme
+// settings take precedence; unless a local user sets the "always_my_theme" 
+// system pconfig, which means they don't want to see anybody else's theme 
+// settings except their own while on this site.
+
+function get_theme_uid() {
+       $uid = (($_REQUEST['puid']) ? intval($_REQUEST['puid']) : 0);
+       if(local_user()) {
+               if((get_pconfig(local_user(),'system','always_my_theme')) || (! $uid))
+                       return local_user();
+       }
+
+       return $uid;
+}
index ca770d95aac6fb1517e715dc8c25e1bcec190b25..9866b2e31eabad75856cdcb73a715d7a69f0a3dc 100644 (file)
@@ -29,71 +29,72 @@ function photos_init(&$a) {
                        return;
 
                $a->data['user'] = $r[0];
+               $a->profile_uid = $r[0]['uid'];
 
-                $profilephoto = $a->get_cached_avatar_image($a->get_baseurl() . '/photo/profile/' . $a->data['user']['uid'] . '.jpg');
+               $profilephoto = $a->get_cached_avatar_image($a->get_baseurl() . '/photo/profile/' . $a->data['user']['uid'] . '.jpg');
 
-                $tpl = get_markup_template("vcard-widget.tpl");
+               $tpl = get_markup_template("vcard-widget.tpl");
 
                $vcard_widget .= replace_macros($tpl, array(
-                        '$name' => $a->data['user']['username'],
-                        '$photo' => $profilephoto
-                ));
+                       '$name' => $a->data['user']['username'],
+                       '$photo' => $profilephoto
+               ));
 
 
                $sql_extra = permissions_sql($a->data['user']['uid']);
 
                $albums = q("SELECT count(distinct `resource-id`) AS `total`, `album` FROM `photo` WHERE `uid` = %d  AND `album` != '%s' AND `album` != '%s'
-                        $sql_extra group by album order by created desc",
+                       $sql_extra group by album order by created desc",
                        intval($a->data['user']['uid']),
-                        dbesc('Contact Photos'),
-                        dbesc( t('Contact Photos'))
+                       dbesc('Contact Photos'),
+                       dbesc( t('Contact Photos'))
                );
 
-                $albums_visible = ((intval($a->data['user']['hidewall']) && (! local_user()) && (! remote_user())) ? false : true);
-
-                // add various encodings to the array so we can just loop through and pick them out in a template
-                $ret = array('success' => false);
-
-                if($albums) {
-                        $a->data['albums'] = $albums;
-                        if ($albums_visible)
-                                $ret['success'] = true;
-
-                        $ret['albums'] = array();
-                        foreach($albums as $k => $album) {
-                                $entry = array(
-                                        'text'      => $album['album'],
-                                        'total'     => $album['total'],
-                                        'url'       => z_root() . '/photos/' . $a->data['user']['nickname'] . '/album/' . bin2hex($album['album']),
-                                        'urlencode' => urlencode($album['album']),
-                                        'bin2hex'   => bin2hex($album['album'])
-                                );
-                                $ret['albums'][] = $entry;
-                        }
-                }
-
-                $albums = $ret;
-
-                if(local_user() && $a->data['user']['uid'] == local_user())
-                        $can_post = true;
-
-                if($albums['success']) {
-                        $photo_albums_widget = replace_macros(get_markup_template('photo_albums.tpl'),array(
-                                '$nick'     => $a->data['user']['nickname'],
-                                '$title'    => t('Photo Albums'),
-                                'recent'    => t('Recent Photos'),
-                                '$albums'   => $albums['albums'],
-                                '$baseurl'  => z_root(),
-                                '$upload'   => array( t('Upload New Photos'), $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/upload'),
-                                '$can_post' => $can_post
-                        ));
-                }
+               $albums_visible = ((intval($a->data['user']['hidewall']) && (! local_user()) && (! remote_user())) ? false : true);
+
+               // add various encodings to the array so we can just loop through and pick them out in a template
+               $ret = array('success' => false);
+
+               if($albums) {
+                       $a->data['albums'] = $albums;
+                       if ($albums_visible)
+                               $ret['success'] = true;
+
+                       $ret['albums'] = array();
+                       foreach($albums as $k => $album) {
+                               $entry = array(
+                                       'text'      => $album['album'],
+                                       'total'     => $album['total'],
+                                       'url'       => z_root() . '/photos/' . $a->data['user']['nickname'] . '/album/' . bin2hex($album['album']),
+                                       'urlencode' => urlencode($album['album']),
+                                       'bin2hex'   => bin2hex($album['album'])
+                               );
+                               $ret['albums'][] = $entry;
+                       }
+               }
+
+               $albums = $ret;
+
+               if(local_user() && $a->data['user']['uid'] == local_user())
+                       $can_post = true;
+
+               if($albums['success']) {
+                       $photo_albums_widget = replace_macros(get_markup_template('photo_albums.tpl'),array(
+                               '$nick'     => $a->data['user']['nickname'],
+                               '$title'    => t('Photo Albums'),
+                               'recent'    => t('Recent Photos'),
+                               '$albums'   => $albums['albums'],
+                               '$baseurl'  => z_root(),
+                               '$upload'   => array( t('Upload New Photos'), $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/upload'),
+                               '$can_post' => $can_post
+                       ));
+               }
 
 
                if(! x($a->page,'aside'))
                        $a->page['aside'] = '';
-                $a->page['aside'] .= $vcard_widget;
-                $a->page['aside'] .= $photo_albums_widget;
+               $a->page['aside'] .= $vcard_widget;
+               $a->page['aside'] .= $photo_albums_widget;
 
 
                $tpl = get_markup_template("photos_head.tpl");
index 943a9d09f2bf7ca07cc935022d5e2c329b6706cc..df47262f1de1db34a2a436dca19ed8c39ae0cf5f 100644 (file)
@@ -27,15 +27,16 @@ function videos_init(&$a) {
                        return;
 
                $a->data['user'] = $r[0];
+               $a->profile_uid = $r[0]['uid'];
 
-                $profilephoto = $a->get_cached_avatar_image($a->get_baseurl() . '/photo/profile/' . $a->data['user']['uid'] . '.jpg');
+               $profilephoto = $a->get_cached_avatar_image($a->get_baseurl() . '/photo/profile/' . $a->data['user']['uid'] . '.jpg');
 
-                $tpl = get_markup_template("vcard-widget.tpl");
+               $tpl = get_markup_template("vcard-widget.tpl");
 
                $vcard_widget = replace_macros($tpl, array(
-                        '$name' => $a->data['user']['username'],
-                        '$photo' => $profilephoto
-                ));
+                       '$name' => $a->data['user']['username'],
+                       '$photo' => $profilephoto
+               ));
 
 
                /*$sql_extra = permissions_sql($a->data['user']['uid']);