X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModel%2FEvent.php;h=dac00ceceb4a3e5e008db1bdaa839e5f17d6ed50;hb=a662245c744f4d2faa1b533977f7d21b4de6a724;hp=6f8ed123c17396bc4fd6e45f8405e13e33018967;hpb=77e272e8ed6a2a52dd231365637eb847340bbf91;p=friendica.git diff --git a/src/Model/Event.php b/src/Model/Event.php index 6f8ed123c1..dac00ceceb 100644 --- a/src/Model/Event.php +++ b/src/Model/Event.php @@ -1,6 +1,6 @@ t('l F d, Y \@ g:i A'); // Friday January 18, 2011 @ 8 AM. + $uriid = $event['uri-id'] ?? $uriid; - $event_start = DI::l10n()->getDay( - !empty($event['adjust']) ? - DateTimeFormat::local($event['start'], $bd_format) : DateTimeFormat::utc($event['start'], $bd_format) - ); + $bd_format = DI::l10n()->t('l F d, Y \@ g:i A \G\M\TP (e)'); // Friday October 29, 2021 @ 9:15 AM GMT-04:00 (America/New_York) + + $event_start = DI::l10n()->getDay(DateTimeFormat::local($event['start'], $bd_format)); if (!empty($event['finish'])) { - $event_end = DI::l10n()->getDay( - !empty($event['adjust']) ? - DateTimeFormat::local($event['finish'], $bd_format) : DateTimeFormat::utc($event['finish'], $bd_format) - ); + $event_end = DI::l10n()->getDay(DateTimeFormat::local($event['finish'], $bd_format)); } else { $event_end = ''; } @@ -67,11 +63,11 @@ class Event $o = ''; if (!empty($event['summary'])) { - $o .= "

" . BBCode::convert(Strings::escapeHtml($event['summary']), false, $simple) . "

"; + $o .= "

" . BBCode::convertForUriId($uriid, Strings::escapeHtml($event['summary']), $simple) . "

"; } if (!empty($event['desc'])) { - $o .= "
" . BBCode::convert(Strings::escapeHtml($event['desc']), false, $simple) . "
"; + $o .= "
" . BBCode::convertForUriId($uriid, Strings::escapeHtml($event['desc']), $simple) . "
"; } $o .= "

" . DI::l10n()->t('Starts:') . "

" . $event_start . "

"; @@ -81,7 +77,7 @@ class Event } if (!empty($event['location'])) { - $o .= "

" . DI::l10n()->t('Location:') . "

" . BBCode::convert(Strings::escapeHtml($event['location']), false, $simple) . "

"; + $o .= "

" . DI::l10n()->t('Location:') . "

" . BBCode::convertForUriId($uriid, Strings::escapeHtml($event['location']), $simple) . "

"; } return $o; @@ -89,27 +85,27 @@ class Event $o = '
' . "\r\n"; - $o .= '
' . BBCode::convert(Strings::escapeHtml($event['summary']), false, $simple) . '
' . "\r\n"; + $o .= '
' . BBCode::convertForUriId($uriid, Strings::escapeHtml($event['summary']), $simple) . '
' . "\r\n"; $o .= '
' . DI::l10n()->t('Starts:') . ' ' . $event_start . '
' . "\r\n"; if (!$event['nofinish']) { $o .= '
' . DI::l10n()->t('Finishes:') . ' ' . $event_end . '
' . "\r\n"; } if (!empty($event['desc'])) { - $o .= '
' . BBCode::convert(Strings::escapeHtml($event['desc']), false, $simple) . '
' . "\r\n"; + $o .= '
' . BBCode::convertForUriId($uriid, Strings::escapeHtml($event['desc']), $simple) . '
' . "\r\n"; } if (!empty($event['location'])) { $o .= '
' . DI::l10n()->t('Location:') . ' ' - . BBCode::convert(Strings::escapeHtml($event['location']), false, $simple) + . BBCode::convertForUriId($uriid, Strings::escapeHtml($event['location']), $simple) . '
' . "\r\n"; // Include a map of the location if the [map] BBCode is used. @@ -155,10 +151,6 @@ class Event $o .= '[event-location]' . $event['location'] . '[/event-location]'; } - if ($event['adjust']) { - $o .= '[event-adjust]' . $event['adjust'] . '[/event-adjust]'; - } - return $o; } @@ -173,36 +165,31 @@ class Event { $ev = []; - $match = ''; + $match = []; if (preg_match("/\[event\-summary\](.*?)\[\/event\-summary\]/is", $text, $match)) { $ev['summary'] = $match[1]; } - $match = ''; + $match = []; if (preg_match("/\[event\-description\](.*?)\[\/event\-description\]/is", $text, $match)) { $ev['desc'] = $match[1]; } - $match = ''; + $match = []; if (preg_match("/\[event\-start\](.*?)\[\/event\-start\]/is", $text, $match)) { $ev['start'] = $match[1]; } - $match = ''; + $match = []; if (preg_match("/\[event\-finish\](.*?)\[\/event\-finish\]/is", $text, $match)) { $ev['finish'] = $match[1]; } - $match = ''; + $match = []; if (preg_match("/\[event\-location\](.*?)\[\/event\-location\]/is", $text, $match)) { $ev['location'] = $match[1]; } - $match = ''; - if (preg_match("/\[event\-adjust\](.*?)\[\/event\-adjust\]/is", $text, $match)) { - $ev['adjust'] = $match[1]; - } - $ev['nofinish'] = !empty($ev['start']) && empty($ev['finish']) ? 1 : 0; return $ev; @@ -216,8 +203,8 @@ class Event private static function compareDatesCallback($event_a, $event_b) { - $date_a = (($event_a['adjust']) ? DateTimeFormat::local($event_a['start']) : $event_a['start']); - $date_b = (($event_b['adjust']) ? DateTimeFormat::local($event_b['start']) : $event_b['start']); + $date_a = DateTimeFormat::local($event_a['start']); + $date_b = DateTimeFormat::local($event_b['start']); if ($date_a === $date_b) { return strcasecmp($event_a['desc'], $event_b['desc']); @@ -242,8 +229,8 @@ class Event return; } - DBA::delete('event', ['id' => $event_id], ['cascade' => false]); - Logger::log("Deleted event ".$event_id, Logger::DEBUG); + DBA::delete('event', ['id' => $event_id]); + Logger::info("Deleted event", ['id' => $event_id]); } /** @@ -263,6 +250,7 @@ class Event $event['cid'] = intval($arr['cid'] ?? 0); $event['guid'] = ($arr['guid'] ?? '') ?: System::createUUID(); $event['uri'] = ($arr['uri'] ?? '') ?: Item::newURI($event['uid'], $event['guid']); + $event['uri-id'] = ItemURI::insert(['uri' => $event['uri'], 'guid' => $event['guid']]); $event['type'] = ($arr['type'] ?? '') ?: 'event'; $event['summary'] = $arr['summary'] ?? ''; $event['desc'] = $arr['desc'] ?? ''; @@ -271,7 +259,6 @@ class Event $event['allow_gid'] = $arr['allow_gid'] ?? ''; $event['deny_cid'] = $arr['deny_cid'] ?? ''; $event['deny_gid'] = $arr['deny_gid'] ?? ''; - $event['adjust'] = intval($arr['adjust'] ?? 0); $event['nofinish'] = intval($arr['nofinish'] ?? (!empty($event['start']) && empty($event['finish']))); $event['created'] = DateTimeFormat::utc(($arr['created'] ?? '') ?: 'now'); @@ -281,26 +268,17 @@ class Event if ($event['finish'] < DBA::NULL_DATETIME) { $event['finish'] = DBA::NULL_DATETIME; } - $private = intval($arr['private'] ?? 0); - - $conditions = ['uid' => $event['uid']]; - if ($event['cid']) { - $conditions['id'] = $event['cid']; - } else { - $conditions['self'] = true; - } - - $contact = DBA::selectFirst('contact', [], $conditions); // Existing event being modified. if ($event['id']) { // has the event actually changed? $existing_event = DBA::selectFirst('event', ['edited'], ['id' => $event['id'], 'uid' => $event['uid']]); - if (!DBA::isResult($existing_event) || ($existing_event['edited'] === $event['edited'])) { - - $item = Item::selectFirst(['id'], ['event-id' => $event['id'], 'uid' => $event['uid']]); - - return DBA::isResult($item) ? $item['id'] : 0; + if (!DBA::isResult($existing_event)) { + return 0; + } + + if ($existing_event['edited'] === $event['edited']) { + return $event['id']; } $updated_fields = [ @@ -311,13 +289,12 @@ class Event 'desc' => $event['desc'], 'location' => $event['location'], 'type' => $event['type'], - 'adjust' => $event['adjust'], 'nofinish' => $event['nofinish'], ]; DBA::update('event', $updated_fields, ['id' => $event['id'], 'uid' => $event['uid']]); - $item = Item::selectFirst(['id'], ['event-id' => $event['id'], 'uid' => $event['uid']]); + $item = Post::selectFirst(['id', 'uri-id'], ['event-id' => $event['id'], 'uid' => $event['uid']]); if (DBA::isResult($item)) { $object = '' . XML::escape(Activity\ObjectType::EVENT) . '' . XML::escape($event['uri']) . ''; $object .= '' . XML::escape(self::getBBCode($event)) . ''; @@ -325,10 +302,6 @@ class Event $fields = ['body' => self::getBBCode($event), 'object' => $object, 'edited' => $event['edited']]; Item::update($fields, ['id' => $item['id']]); - - $item_id = $item['id']; - } else { - $item_id = 0; } Hook::callAll('event_updated', $event['id']); @@ -336,54 +309,93 @@ class Event // New event. Store it. DBA::insert('event', $event); - $item_id = 0; - - // Don't create an item for birthday events - if ($event['type'] == 'event') { - $event['id'] = DBA::lastInsertId(); - - $item_arr = []; - - $item_arr['uid'] = $event['uid']; - $item_arr['contact-id'] = $event['cid']; - $item_arr['uri'] = $event['uri']; - $item_arr['parent-uri'] = $event['uri']; - $item_arr['guid'] = $event['guid']; - $item_arr['plink'] = $arr['plink'] ?? ''; - $item_arr['post-type'] = Item::PT_EVENT; - $item_arr['wall'] = $event['cid'] ? 0 : 1; - $item_arr['contact-id'] = $contact['id']; - $item_arr['owner-name'] = $contact['name']; - $item_arr['owner-link'] = $contact['url']; - $item_arr['owner-avatar'] = $contact['thumb']; - $item_arr['author-name'] = $contact['name']; - $item_arr['author-link'] = $contact['url']; - $item_arr['author-avatar'] = $contact['thumb']; - $item_arr['title'] = ''; - $item_arr['allow_cid'] = $event['allow_cid']; - $item_arr['allow_gid'] = $event['allow_gid']; - $item_arr['deny_cid'] = $event['deny_cid']; - $item_arr['deny_gid'] = $event['deny_gid']; - $item_arr['private'] = $private; - $item_arr['visible'] = 1; - $item_arr['verb'] = Activity::POST; - $item_arr['object-type'] = Activity\ObjectType::EVENT; - $item_arr['origin'] = $event['cid'] === 0 ? 1 : 0; - $item_arr['body'] = self::getBBCode($event); - $item_arr['event-id'] = $event['id']; - $item_arr['network'] = Protocol::DFRN; - - $item_arr['object'] = '' . XML::escape(Activity\ObjectType::EVENT) . '' . XML::escape($event['uri']) . ''; - $item_arr['object'] .= '' . XML::escape(self::getBBCode($event)) . ''; - $item_arr['object'] .= '' . "\n"; - - $item_id = Item::insert($item_arr); - } + $event['id'] = DBA::lastInsertId(); Hook::callAll("event_created", $event['id']); } - return $item_id; + return $event['id']; + } + + public static function getItemArrayForId(int $event_id, array $item = []):array + { + if (empty($event_id)) { + return $item; + } + + $event = DBA::selectFirst('event', [], ['id' => $event_id]); + if ($event['type'] != 'event') { + return $item; + } + + if ($event['cid']) { + $conditions = ['id' => $event['cid']]; + } else { + $conditions = ['uid' => $event['uid'], 'self' => true]; + } + + $contact = DBA::selectFirst('contact', [], $conditions); + + $event['id'] = $event_id; + + $item['uid'] = $event['uid']; + $item['contact-id'] = $event['cid']; + $item['uri'] = $event['uri']; + $item['uri-id'] = ItemURI::getIdByURI($event['uri']); + $item['guid'] = $event['guid']; + $item['plink'] = $arr['plink'] ?? ''; + $item['post-type'] = Item::PT_EVENT; + $item['wall'] = $event['cid'] ? 0 : 1; + $item['contact-id'] = $contact['id']; + $item['owner-name'] = $contact['name']; + $item['owner-link'] = $contact['url']; + $item['owner-avatar'] = $contact['thumb']; + $item['author-name'] = $contact['name']; + $item['author-link'] = $contact['url']; + $item['author-avatar'] = $contact['thumb']; + $item['title'] = ''; + $item['allow_cid'] = $event['allow_cid']; + $item['allow_gid'] = $event['allow_gid']; + $item['deny_cid'] = $event['deny_cid']; + $item['deny_gid'] = $event['deny_gid']; + $item['private'] = intval($event['private'] ?? 0); + $item['visible'] = 1; + $item['verb'] = Activity::POST; + $item['object-type'] = Activity\ObjectType::EVENT; + $item['post-type'] = Item::PT_EVENT; + $item['origin'] = $event['cid'] === 0 ? 1 : 0; + $item['body'] = self::getBBCode($event); + $item['event-id'] = $event['id']; + + $item['object'] = '' . XML::escape(Activity\ObjectType::EVENT) . '' . XML::escape($event['uri']) . ''; + $item['object'] .= '' . XML::escape(self::getBBCode($event)) . ''; + $item['object'] .= '' . "\n"; + + return $item; + } + + public static function getItemArrayForImportedId(int $event_id, array $item = []):array + { + if (empty($event_id)) { + return $item; + } + + $event = DBA::selectFirst('event', [], ['id' => $event_id]); + if ($event['type'] != 'event') { + return $item; + } + + $item['post-type'] = Item::PT_EVENT; + $item['title'] = ''; + $item['object-type'] = Activity\ObjectType::EVENT; + $item['body'] = self::getBBCode($event); + $item['event-id'] = $event_id; + + $item['object'] = '' . XML::escape(Activity\ObjectType::EVENT) . '' . XML::escape($event['uri']) . ''; + $item['object'] .= '' . XML::escape(self::getBBCode($event)) . ''; + $item['object'] .= '' . "\n"; + + return $item; } /** @@ -498,15 +510,13 @@ class Event } // Query for the event by event id - $r = q("SELECT `event`.*, `item`.`id` AS `itemid` FROM `event` - LEFT JOIN `item` ON `item`.`event-id` = `event`.`id` AND `item`.`uid` = `event`.`uid` - WHERE `event`.`uid` = %d AND `event`.`id` = %d $sql_extra", - intval($owner_uid), - intval($event_id) - ); - - if (DBA::isResult($r)) { - $return = self::removeDuplicates($r); + $events = DBA::toArray(DBA::p("SELECT `event`.*, `post-user`.`id` AS `itemid` FROM `event` + LEFT JOIN `post-user` ON `post-user`.`event-id` = `event`.`id` AND `post-user`.`uid` = `event`.`uid` + WHERE `event`.`uid` = ? AND `event`.`id` = ? $sql_extra", + $owner_uid, $event_id)); + + if (DBA::isResult($events)) { + $return = self::removeDuplicates($events); } return $return; @@ -520,8 +530,6 @@ class Event * int 'ignore' => * string 'start' => Start time of the timeframe. * string 'finish' => Finish time of the timeframe. - * string 'adjust_start' => - * string 'adjust_finish' => * * @param string $sql_extra Additional sql conditions (e.g. permission request). * @@ -538,25 +546,17 @@ class Event } // Query for the event by date. - // @todo Slow query (518 seconds to run), to be optimzed - $r = q("SELECT `event`.*, `item`.`id` AS `itemid` FROM `event` - LEFT JOIN `item` ON `item`.`event-id` = `event`.`id` AND `item`.`uid` = `event`.`uid` - WHERE `event`.`uid` = %d AND event.ignore = %d - AND ((`adjust` = 0 AND (`finish` >= '%s' OR (nofinish AND start >= '%s')) AND `start` <= '%s') - OR (`adjust` = 1 AND (`finish` >= '%s' OR (nofinish AND start >= '%s')) AND `start` <= '%s')) - $sql_extra ", - intval($owner_uid), - intval($event_params["ignore"]), - DBA::escape($event_params["start"]), - DBA::escape($event_params["start"]), - DBA::escape($event_params["finish"]), - DBA::escape($event_params["adjust_start"]), - DBA::escape($event_params["adjust_start"]), - DBA::escape($event_params["adjust_finish"]) - ); - - if (DBA::isResult($r)) { - $return = self::removeDuplicates($r); + $events = DBA::toArray(DBA::p("SELECT `event`.*, `post-user`.`id` AS `itemid` FROM `event` + LEFT JOIN `post-user` ON `post-user`.`event-id` = `event`.`id` AND `post-user`.`uid` = `event`.`uid` + WHERE `event`.`uid` = ? AND `event`.`ignore` = ? + AND (`finish` >= ? OR (`nofinish` AND `start` >= ?)) AND `start` <= ? + " . $sql_extra, + $owner_uid, $event_params['ignore'], + $event_params['start'], $event_params['start'], $event_params['finish'] + )); + + if (DBA::isResult($events)) { + $return = self::removeDuplicates($events); } return $return; @@ -577,23 +577,23 @@ class Event $last_date = ''; $fmt = DI::l10n()->t('l, F j'); foreach ($event_result as $event) { - $item = Item::selectFirst(['plink', 'author-name', 'author-avatar', 'author-link'], ['id' => $event['itemid']]); + $item = Post::selectFirst(['plink', 'author-name', 'author-avatar', 'author-link', 'private', 'uri-id'], ['id' => $event['itemid']]); if (!DBA::isResult($item)) { // Using default values when no item had been found - $item = ['plink' => '', 'author-name' => '', 'author-avatar' => '', 'author-link' => '']; + $item = ['plink' => '', 'author-name' => '', 'author-avatar' => '', 'author-link' => '', 'private' => Item::PUBLIC, 'uri-id' => ($event['uri-id'] ?? 0)]; } $event = array_merge($event, $item); - $start = $event['adjust'] ? DateTimeFormat::local($event['start'], 'c') : DateTimeFormat::utc($event['start'], 'c'); - $j = $event['adjust'] ? DateTimeFormat::local($event['start'], 'j') : DateTimeFormat::utc($event['start'], 'j'); - $day = $event['adjust'] ? DateTimeFormat::local($event['start'], $fmt) : DateTimeFormat::utc($event['start'], $fmt); + $start = DateTimeFormat::local($event['start'], 'c'); + $j = DateTimeFormat::local($event['start'], 'j'); + $day = DateTimeFormat::local($event['start'], $fmt); $day = DI::l10n()->getDay($day); if ($event['nofinish']) { $end = null; } else { - $end = $event['adjust'] ? DateTimeFormat::local($event['finish'], 'c') : DateTimeFormat::utc($event['finish'], 'c'); + $end = DateTimeFormat::local($event['finish'], 'c'); } $is_first = ($day !== $last_date); @@ -611,9 +611,9 @@ class Event $drop = [DI::baseUrl() . '/events/drop/' . $event['id'] , DI::l10n()->t('Delete event') , '', '']; } - $title = BBCode::convert(Strings::escapeHtml($event['summary'])); + $title = BBCode::convertForUriId($event['uri-id'], Strings::escapeHtml($event['summary'])); if (!$title) { - list($title, $_trash) = explode(" $event['id'], 'start' => $start, @@ -701,23 +701,14 @@ class Event // but test your solution against http://icalvalid.cloudapp.net/ // also long lines SHOULD be split at 75 characters length foreach ($events as $event) { - if ($event['adjust'] == 1) { - $UTC = 'Z'; - } else { - $UTC = ''; - } $o .= 'BEGIN:VEVENT' . PHP_EOL; if ($event['start']) { - $tmp = strtotime($event['start']); - $dtformat = "%Y%m%dT%H%M%S" . $UTC; - $o .= 'DTSTART:' . strftime($dtformat, $tmp) . PHP_EOL; + $o .= 'DTSTART:' . DateTimeFormat::utc($event['start'], 'Ymd\THis\Z') . PHP_EOL; } if (!$event['nofinish']) { - $tmp = strtotime($event['finish']); - $dtformat = "%Y%m%dT%H%M%S" . $UTC; - $o .= 'DTEND:' . strftime($dtformat, $tmp) . PHP_EOL; + $o .= 'DTEND:' . DateTimeFormat::utc($event['finish'], 'Ymd\THis\Z') . PHP_EOL; } if ($event['summary']) { @@ -774,7 +765,7 @@ class Event return $return; } - $fields = ['start', 'finish', 'adjust', 'summary', 'desc', 'location', 'nofinish']; + $fields = ['start', 'finish', 'summary', 'desc', 'location', 'nofinish']; $conditions = ['uid' => $uid, 'cid' => 0]; @@ -864,48 +855,22 @@ class Event $tformat = DI::l10n()->t('g:i A'); // 8:01 AM. // Convert the time to different formats. - $dtstart_dt = DI::l10n()->getDay( - $item['event-adjust'] ? - DateTimeFormat::local($item['event-start'], $dformat) - : DateTimeFormat::utc($item['event-start'], $dformat) - ); - $dtstart_title = DateTimeFormat::utc($item['event-start'], $item['event-adjust'] ? DateTimeFormat::ATOM : 'Y-m-d\TH:i:s'); + $dtstart_dt = DI::l10n()->getDay(DateTimeFormat::local($item['event-start'], $dformat)); + $dtstart_title = DateTimeFormat::utc($item['event-start'], DateTimeFormat::ATOM); // Format: Jan till Dec. - $month_short = DI::l10n()->getDayShort( - $item['event-adjust'] ? - DateTimeFormat::local($item['event-start'], 'M') - : DateTimeFormat::utc($item['event-start'], 'M') - ); + $month_short = DI::l10n()->getDayShort(DateTimeFormat::local($item['event-start'], 'M')); // Format: 1 till 31. - $date_short = $item['event-adjust'] ? - DateTimeFormat::local($item['event-start'], 'j') - : DateTimeFormat::utc($item['event-start'], 'j'); - $start_time = $item['event-adjust'] ? - DateTimeFormat::local($item['event-start'], $tformat) - : DateTimeFormat::utc($item['event-start'], $tformat); - $start_short = DI::l10n()->getDayShort( - $item['event-adjust'] ? - DateTimeFormat::local($item['event-start'], $dformat_short) - : DateTimeFormat::utc($item['event-start'], $dformat_short) - ); + $date_short = DateTimeFormat::local($item['event-start'], 'j'); + $start_time = DateTimeFormat::local($item['event-start'], $tformat); + $start_short = DI::l10n()->getDayShort(DateTimeFormat::local($item['event-start'], $dformat_short)); // If the option 'nofinisch' isn't set, we need to format the finish date/time. if (!$item['event-nofinish']) { $finish = true; - $dtend_dt = DI::l10n()->getDay( - $item['event-adjust'] ? - DateTimeFormat::local($item['event-finish'], $dformat) - : DateTimeFormat::utc($item['event-finish'], $dformat) - ); - $dtend_title = DateTimeFormat::utc($item['event-finish'], $item['event-adjust'] ? DateTimeFormat::ATOM : 'Y-m-d\TH:i:s'); - $end_short = DI::l10n()->getDayShort( - $item['event-adjust'] ? - DateTimeFormat::local($item['event-finish'], $dformat_short) - : DateTimeFormat::utc($item['event-finish'], $dformat_short) - ); - $end_time = $item['event-adjust'] ? - DateTimeFormat::local($item['event-finish'], $tformat) - : DateTimeFormat::utc($item['event-finish'], $tformat); + $dtend_dt = DI::l10n()->getDay(DateTimeFormat::local($item['event-finish'], $dformat)); + $dtend_title = DateTimeFormat::utc($item['event-finish'], DateTimeFormat::ATOM); + $end_short = DI::l10n()->getDayShort(DateTimeFormat::utc($item['event-finish'], $dformat_short)); + $end_time = DateTimeFormat::local($item['event-finish'], $tformat); // Check if start and finish time is at the same day. if (substr($dtstart_title, 0, 10) === substr($dtend_title, 0, 10)) { $same_date = true; @@ -921,12 +886,14 @@ class Event $location = self::locationToArray($item['event-location']); // Construct the profile link (magic-auth). - $profile_link = Contact::magicLinkById($item['author-id']); + $author = ['uid' => 0, 'id' => $item['author-id'], + 'network' => $item['author-network'], 'url' => $item['author-link']]; + $profile_link = Contact::magicLinkByContact($author); $tpl = Renderer::getMarkupTemplate('event_stream_item.tpl'); $return = Renderer::replaceMacros($tpl, [ '$id' => $item['event-id'], - '$title' => BBCode::convert($item['event-summary']), + '$title' => BBCode::convertForUriId($item['uri-id'], $item['event-summary']), '$dtstart_label' => DI::l10n()->t('Starts:'), '$dtstart_title' => $dtstart_title, '$dtstart_dt' => $dtstart_dt, @@ -944,7 +911,7 @@ class Event '$author_name' => $item['author-name'], '$author_link' => $profile_link, '$author_avatar' => $item['author-avatar'], - '$description' => BBCode::convert($item['event-desc']), + '$description' => BBCode::convertForUriId($item['uri-id'], $item['event-desc']), '$location_label' => DI::l10n()->t('Location:'), '$show_map_label' => DI::l10n()->t('Show map'), '$hide_map_label' => DI::l10n()->t('Hide map'), @@ -1042,7 +1009,6 @@ class Event 'summary' => DI::l10n()->t('%s\'s birthday', $contact['name']), 'desc' => DI::l10n()->t('Happy Birthday %s', ' [url=' . $contact['url'] . ']' . $contact['name'] . '[/url]'), 'type' => 'birthday', - 'adjust' => 0 ]; self::store($values);