From 5d957c3803936b8be54b5e197246d670fdcfa223 Mon Sep 17 00:00:00 2001 From: Zach Prezkuta Date: Wed, 2 May 2012 21:12:57 -0600 Subject: Modify events_post() in mod/events.php to set the `private` field to true when an event is shared with specific people. This is necessary to have event posts show correctly in Diaspora if an event is created visible only to self, but modified later to be visible to others. --- mod/events.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'mod') diff --git a/mod/events.php b/mod/events.php index e66a2dc44..1f11e7503 100644 --- a/mod/events.php +++ b/mod/events.php @@ -28,6 +28,9 @@ function events_post(&$a) { $adjust = intval($_POST['adjust']); $nofinish = intval($_POST['nofinish']); + // The default setting for the `private` field in event_store() is false, so mirror that + $private_event = false; + $start = sprintf('%d-%d-%d %d:%d:0',$startyear,$startmonth,$startday,$starthour,$startminute); if($nofinish) @@ -70,8 +73,23 @@ function events_post(&$a) { $str_contact_allow = perms2str($_POST['contact_allow']); $str_group_deny = perms2str($_POST['group_deny']); $str_contact_deny = perms2str($_POST['contact_deny']); + + // Undo the pseudo-contact of self, since there are real contacts now + if( strpos($str_contact_allow, '<' . local_user() . '>') !== false ) + { + $str_contact_allow = str_replace('<' . local_user() . '>', '', $str_contact_allow); + } + // Make sure to set the `private` field as true. This is necessary to + // have the posts show up correctly in Diaspora if an event is created + // as visible only to self at first, but then edited to display to others. + if( strlen($str_group_allow) or strlen($str_contact_allow) or strlen($str_group_deny) or strlen($str_contact_deny) ) + { + $private_event = true; + } } else { + // Note: do not set `private` field for self-only events. It will + // keep even you from seeing them! $str_contact_allow = '<' . local_user() . '>'; $str_group_allow = $str_contact_deny = $str_group_deny = ''; } @@ -91,6 +109,7 @@ function events_post(&$a) { $datarray['allow_gid'] = $str_group_allow; $datarray['deny_cid'] = $str_contact_deny; $datarray['deny_gid'] = $str_group_deny; + $datarray['private'] = $private_event; $datarray['id'] = $event_id; $datarray['created'] = $created; $datarray['edited'] = $edited; -- cgit v1.2.3 From e7580b71e1825dc6e049d7c1f945ab701bf8f6cd Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 2 May 2012 21:00:39 -0700 Subject: use cid rather than uid in perms --- mod/events.php | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'mod') diff --git a/mod/events.php b/mod/events.php index 1f11e7503..069046ff9 100644 --- a/mod/events.php +++ b/mod/events.php @@ -68,6 +68,15 @@ function events_post(&$a) { $share = ((intval($_POST['share'])) ? intval($_POST['share']) : 0); + $c = q("select id from contact where uid = %d and self = 1 limit 1", + intval(local_user()) + ); + if(count($c)) + $self = $c[0]['id']; + else + $self = 0; + + if($share) { $str_group_allow = perms2str($_POST['group_allow']); $str_contact_allow = perms2str($_POST['contact_allow']); @@ -75,9 +84,9 @@ function events_post(&$a) { $str_contact_deny = perms2str($_POST['contact_deny']); // Undo the pseudo-contact of self, since there are real contacts now - if( strpos($str_contact_allow, '<' . local_user() . '>') !== false ) + if( strpos($str_contact_allow, '<' . $self . '>') !== false ) { - $str_contact_allow = str_replace('<' . local_user() . '>', '', $str_contact_allow); + $str_contact_allow = str_replace('<' . $self . '>', '', $str_contact_allow); } // Make sure to set the `private` field as true. This is necessary to // have the posts show up correctly in Diaspora if an event is created @@ -90,7 +99,7 @@ function events_post(&$a) { else { // Note: do not set `private` field for self-only events. It will // keep even you from seeing them! - $str_contact_allow = '<' . local_user() . '>'; + $str_contact_allow = '<' . $self . '>'; $str_group_allow = $str_contact_deny = $str_group_deny = ''; } -- cgit v1.2.3