diff --git a/boot.php b/boot.php
index f72f4dd7fc..faf3c4db4a 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 fdc08b7c83..d9cd016f07 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 efdfbaecb7..d8dfbaedb1 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 634aec460b..8d46d6c5ba 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 9c92d81bad..b64c1294e3 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 4886487912..603b93b631 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 0000000000..10185e243d
--- /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 053e19594b..564746e6a5 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 61da542312..176fc0fd96 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 92c2c20a77..d1a0019ceb 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,