diff options
author | zottel <github@zottel.net> | 2012-05-03 10:21:38 +0200 |
---|---|---|
committer | zottel <github@zottel.net> | 2012-05-03 10:21:38 +0200 |
commit | 35771a778df18afb231969c242680a6353e5ef8e (patch) | |
tree | 2f1d6384b3f68c360861715e12dcf59a48145411 /mod | |
parent | 6000e7f30d1193dada903eaf0e6f44149a3dde33 (diff) | |
parent | d72db2e1aa68833cbebc1c24ab4e1c6c9c966679 (diff) | |
download | volse-hubzilla-35771a778df18afb231969c242680a6353e5ef8e.tar.gz volse-hubzilla-35771a778df18afb231969c242680a6353e5ef8e.tar.bz2 volse-hubzilla-35771a778df18afb231969c242680a6353e5ef8e.zip |
Merge remote branch 'upstream/master'
Diffstat (limited to 'mod')
-rw-r--r-- | mod/events.php | 30 | ||||
-rw-r--r-- | mod/item.php | 38 | ||||
-rw-r--r-- | mod/profiles.php | 2 |
3 files changed, 63 insertions, 7 deletions
diff --git a/mod/events.php b/mod/events.php index e66a2dc44..069046ff9 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) @@ -65,14 +68,38 @@ 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']); $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, '<' . $self . '>') !== false ) + { + $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 + // 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 { - $str_contact_allow = '<' . local_user() . '>'; + // Note: do not set `private` field for self-only events. It will + // keep even you from seeing them! + $str_contact_allow = '<' . $self . '>'; $str_group_allow = $str_contact_deny = $str_group_deny = ''; } @@ -91,6 +118,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; diff --git a/mod/item.php b/mod/item.php index 1436f7ffc..639379fe0 100644 --- a/mod/item.php +++ b/mod/item.php @@ -444,9 +444,28 @@ function item_post(&$a) { $tags[] = '@' . $parent_contact['nick']; } + $tagged = array(); + + if(count($tags)) { foreach($tags as $tag) { - handle_tag($a, $body, $inform, $str_tags, (local_user()) ? local_user() : $profile_uid , $tag); + + // If we already tagged 'Robert Johnson', don't try and tag 'Robert'. + // Robert Johnson should be first in the $tags array + + $fullnametagged = false; + for($x = 0; $x < count($tagged); $x ++) { + if(stristr($tagged[$x],$tag . ' ')) { + $fullnametagged = true; + break; + } + } + if($fullnametagged) + continue; + + $success = handle_tag($a, $body, $inform, $str_tags, (local_user()) ? local_user() : $profile_uid , $tag); + if($success) + $tagged[] = $tag; } } @@ -861,21 +880,27 @@ function item_content(&$a) { * @param unknown_type $str_tags string to add the tag to * @param unknown_type $profile_uid * @param unknown_type $tag the tag to replace + * + * @return boolean true if replaced, false if not replaced */ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag) { + + $replaced = false; + //is it a hash tag? if(strpos($tag,'#') === 0) { //if the tag is replaced... if(strpos($tag,'[url=')) //...do nothing - return; + return $replaced; //base tag has the tags name only $basetag = str_replace('_',' ',substr($tag,1)); //create text for link $newtag = '#[url=' . $a->get_baseurl() . '/search?tag=' . rawurlencode($basetag) . ']' . $basetag . '[/url]'; //replace tag by the link $body = str_replace($tag, $newtag, $body); - + $replaced = true; + //is the link already in str_tags? if(! stristr($str_tags,$newtag)) { //append or set str_tags @@ -883,13 +908,13 @@ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag) { $str_tags .= ','; $str_tags .= $newtag; } - return; + return $replaced; } //is it a person tag? if(strpos($tag,'@') === 0) { //is it already replaced? if(strpos($tag,'[url=')) - return; + return $replaced; $stat = false; //get the person's name $name = substr($tag,1); @@ -965,6 +990,7 @@ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag) { } //if there is an url for this persons profile if(isset($profile)) { + $replaced = true; //create profile link $profile = str_replace(',','%2c',$profile); $newtag = '@[url=' . $profile . ']' . $newname . '[/url]'; @@ -989,4 +1015,6 @@ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag) { } } } + + return $replaced; } diff --git a/mod/profiles.php b/mod/profiles.php index 3a52c8fa5..4de9057dc 100644 --- a/mod/profiles.php +++ b/mod/profiles.php @@ -328,7 +328,7 @@ function profile_activity($changed, $value) { $prof = '[url=' . $self[0]['url'] . '?tab=profile' . ']' . t('public profile') . '[/url]'; if($t == 1 && strlen($value)) { - $message = sprintf( t('%1$s changed %2$s to %3$s'), $A, $changes, $value); + $message = sprintf( t('%1$s changed %2$s to "%3$s"'), $A, $changes, $value); $message .= "\n\n" . sprintf( t(' - Visit %1$s\'s %2$s'), $A, $prof); } else |