From e3d1ef8ef7c1be2a8588ec1709304f766b0c7607 Mon Sep 17 00:00:00 2001 From: Friendika Date: Tue, 24 May 2011 16:30:52 -0700 Subject: [PATCH] ability to hide profile and wall from unknown people --- boot.php | 8 ++++++-- database.sql | 1 + include/template_processor.php | 2 +- mod/profile.php | 7 +++++-- mod/profiles.php | 18 ++++++++++++++++-- update.php | 4 ++++ view/profile-hide-wall.tpl | 16 ++++++++++++++++ view/profile_edit.tpl | 2 ++ view/theme/duepuntozero/style.css | 6 ++++++ view/theme/loozah/style.css | 6 ++++++ 10 files changed, 63 insertions(+), 7 deletions(-) create mode 100644 view/profile-hide-wall.tpl diff --git a/boot.php b/boot.php index f72f4dd7f..faf3c4db4 100644 --- a/boot.php +++ b/boot.php @@ -4,9 +4,9 @@ set_time_limit(0); ini_set('pcre.backtrack_limit', 250000); -define ( 'FRIENDIKA_VERSION', '2.2.989' ); +define ( 'FRIENDIKA_VERSION', '2.2.990' ); define ( 'DFRN_PROTOCOL_VERSION', '2.21' ); -define ( 'DB_UPDATE_VERSION', 1055 ); +define ( 'DB_UPDATE_VERSION', 1056 ); define ( 'EOL', "
\r\n" ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); @@ -2361,6 +2361,10 @@ function profile_sidebar($profile) { $homepage = ((x($profile,'homepage') == 1) ? '
' . t('Homepage:') . ' ' . linkify($profile['homepage']) . '
' : ''); + if($profile['hidewall'] && (! local_user()) && (! remote_user())) { + $location = $gender = $marital = $homepage = ''; + } + $tpl = get_markup_template('profile_vcard.tpl'); $o .= replace_macros($tpl, array( diff --git a/database.sql b/database.sql index fdc08b7c8..d9cd016f0 100644 --- a/database.sql +++ b/database.sql @@ -288,6 +288,7 @@ CREATE TABLE IF NOT EXISTS `profile` ( `profile-name` char(255) NOT NULL, `is-default` tinyint(1) NOT NULL DEFAULT '0', `hide-friends` tinyint(1) NOT NULL DEFAULT '0', + `hidewall` tinyint(1) NOT NULL DEFAULT '0', `name` char(255) NOT NULL, `pdesc` char(255) NOT NULL, `dob` char(32) NOT NULL DEFAULT '0000-00-00', diff --git a/include/template_processor.php b/include/template_processor.php index efdfbaecb..d8dfbaedb 100644 --- a/include/template_processor.php +++ b/include/template_processor.php @@ -128,7 +128,7 @@ #$s = str_replace(array("\n","\r"),array("§n§","§r§"),$s); $s = $this->_build_nodes($s); $s = preg_replace_callback('/\|\|([0-9]+)\|\|/', array($this, "_replcb_node"), $s); - $s = str_replace($this->search,$this->replace, (string) $s); + $s = str_replace($this->search,$this->replace, $s); return $s; } diff --git a/mod/profile.php b/mod/profile.php index 634aec460..8d46d6c5b 100644 --- a/mod/profile.php +++ b/mod/profile.php @@ -51,11 +51,14 @@ function profile_init(&$a) { function profile_content(&$a, $update = 0) { - if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) { + if(get_config('system','block_public') && (! local_user()) && (! remote_user())) { return login(); } - + if($a->profile['hidewall'] && (! local_user()) && (! remote_user())) { + notice( t('Access to this profile has been restricted.') . EOL); + return; + } require_once("include/bbcode.php"); require_once('include/security.php'); diff --git a/mod/profiles.php b/mod/profiles.php index 9c92d81ba..b64c1294e 100644 --- a/mod/profiles.php +++ b/mod/profiles.php @@ -129,6 +129,7 @@ function profiles_post(&$a) { $work = escape_tags(trim($_POST['work'])); $education = escape_tags(trim($_POST['education'])); $hide_friends = (($_POST['hide-friends'] == 1) ? 1: 0); + $hidewall = (($_POST['hidewall'] == 1) ? 1: 0); $r = q("UPDATE `profile` @@ -160,7 +161,8 @@ function profiles_post(&$a) { `romance` = '%s', `work` = '%s', `education` = '%s', - `hide-friends` = %d + `hide-friends` = %d, + `hidewall` = %d WHERE `id` = %d AND `uid` = %d LIMIT 1", dbesc($profile_name), dbesc($name), @@ -191,6 +193,7 @@ function profiles_post(&$a) { dbesc($work), dbesc($education), intval($hide_friends), + intval($hidewall), intval($a->argv[1]), intval($_SESSION['uid']) ); @@ -351,13 +354,23 @@ function profiles_content(&$a) { $opt_tpl = get_markup_template("profile-hide-friends.tpl"); $hide_friends = replace_macros($opt_tpl,array( - '$desc' => t('Hide my contact/friend list from viewers of this profile?'), + '$desc' => t('Hide your contact/friend list from viewers of this profile?'), '$yes_str' => t('Yes'), '$no_str' => t('No'), '$yes_selected' => (($r[0]['hide-friends']) ? " checked=\"checked\" " : ""), '$no_selected' => (($r[0]['hide-friends'] == 0) ? " checked=\"checked\" " : "") )); + $opt_tpl = get_markup_template("profile-hide-wall.tpl"); + $hide_wall = replace_macros($opt_tpl,array( + '$desc' => t('Hide your messages from unknown viewers of this profile?'), + '$yes_str' => t('Yes'), + '$no_str' => t('No'), + '$yes_selected' => (($r[0]['hidewall']) ? " checked=\"checked\" " : ""), + '$no_selected' => (($r[0]['hidewall'] == 0) ? " checked=\"checked\" " : "") + )); + + $a->page['htmlhead'] .= replace_macros($tpl, array('$baseurl' => $a->get_baseurl())); $a->page['htmlhead'] .= ""; @@ -413,6 +426,7 @@ function profiles_content(&$a) { '$pdesc' => $r[0]['pdesc'], '$dob' => dob($r[0]['dob']), '$hide_friends' => $hide_friends, + '$hide_wall' => $hide_wall, '$address' => $r[0]['address'], '$locality' => $r[0]['locality'], '$region' => $r[0]['region'], diff --git a/update.php b/update.php index 488648791..603b93b63 100644 --- a/update.php +++ b/update.php @@ -483,3 +483,7 @@ function update_1053() { function update_1054() { q("ALTER TABLE `register` ADD `language` CHAR( 16 ) NOT NULL AFTER `password` "); } + +function update_1055() { + q("ALTER TABLE `profile` ADD `hidewall` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `hide-friends` "); +} \ No newline at end of file diff --git a/view/profile-hide-wall.tpl b/view/profile-hide-wall.tpl new file mode 100644 index 000000000..10185e243 --- /dev/null +++ b/view/profile-hide-wall.tpl @@ -0,0 +1,16 @@ +

+$desc +

+ +
+ + + +
+
+
+ + + +
+
diff --git a/view/profile_edit.tpl b/view/profile_edit.tpl index 053e19594..564746e6a 100644 --- a/view/profile_edit.tpl +++ b/view/profile_edit.tpl @@ -52,6 +52,8 @@ $dob $age $hide_friends +$hide_wall +
diff --git a/view/theme/duepuntozero/style.css b/view/theme/duepuntozero/style.css index 61da54231..176fc0fd9 100644 --- a/view/theme/duepuntozero/style.css +++ b/view/theme/duepuntozero/style.css @@ -701,6 +701,8 @@ input#dfrn-url { #profile-in-dir-no, #profile-in-netdir-yes, #profile-in-netdir-no, +#hide-wall-yes, +#hide-wall-no, #hide-friends-yes, #hide-friends-no { float: left; @@ -718,6 +720,8 @@ input#dfrn-url { #profile-in-dir-no-label, #profile-in-netdir-yes-label, #profile-in-netdir-no-label, +#hide-wall-yes-label, +#hide-wall-no-label, #hide-friends-yes-label, #hide-friends-no-label { margin-left: 125px; @@ -801,6 +805,8 @@ input#dfrn-url { #profile-in-dir-end, #profile-in-netdir-break, #profile-in-netdir-end, +#hide-wall-break, +#hide-wall-end, #hide-friends-break, #hide-friends-end, #settings-normal-break, diff --git a/view/theme/loozah/style.css b/view/theme/loozah/style.css index 92c2c20a7..d1a0019ce 100644 --- a/view/theme/loozah/style.css +++ b/view/theme/loozah/style.css @@ -825,6 +825,8 @@ input#dfrn-url { #profile-in-dir-no, #profile-in-netdir-yes, #profile-in-netdir-no, +#hide-wall-yes, +#hide-wall-no, #hide-friends-yes, #hide-friends-no, #settings-normal, @@ -839,6 +841,8 @@ input#dfrn-url { #profile-in-dir-no-label, #profile-in-netdir-yes-label, #profile-in-netdir-no-label, +#hide-wall-yes-label, +#hide-wall-no-label, #hide-friends-yes-label, #hide-friends-no-label { margin-left: 125px; @@ -917,6 +921,8 @@ input#dfrn-url { #profile-in-dir-end, #profile-in-netdir-break, #profile-in-netdir-end, +#hide-wall-break, +#hide-wall-end, #hide-friends-break, #hide-friends-end, #settings-normal-break,