]> git.mxchange.org Git - friendica.git/blobdiff - include/event.php
Merge pull request #2 from friendica/master
[friendica.git] / include / event.php
index 67093627971cc5546350d4ccb60d9a56758720ab..45fa7bcd59a15d738ddf28f86bff8900aab63942 100644 (file)
@@ -5,6 +5,7 @@
  */
 
 use Friendica\Content\Feature;
+use Friendica\Content\Text\BBCode;
 use Friendica\Core\Addon;
 use Friendica\Core\L10n;
 use Friendica\Core\PConfig;
@@ -12,11 +13,9 @@ use Friendica\Core\System;
 use Friendica\Database\DBM;
 use Friendica\Model\Item;
 use Friendica\Model\Profile;
+use Friendica\Util\DateTimeFormat;
 use Friendica\Util\Map;
-use Friendica\Util\Temporal;
 
-require_once 'include/bbcode.php';
-require_once 'include/datetime.php';
 require_once 'include/conversation.php';
 
 function format_event_html($ev, $simple = false) {
@@ -26,18 +25,22 @@ function format_event_html($ev, $simple = false) {
 
        $bd_format = L10n::t('l F d, Y \@ g:i A') ; // Friday January 18, 2011 @ 8 AM.
 
-       $event_start = (($ev['adjust']) ?
-               day_translate(Temporal::convert($ev['start'], date_default_timezone_get(), 'UTC', $bd_format))
-               : day_translate(Temporal::convert($ev['start'], 'UTC', 'UTC', $bd_format)));
+       $event_start = day_translate(
+               $ev['adjust'] ?
+                       DateTimeFormat::local($ev['start'], $bd_format)
+                       : DateTimeFormat::utc($ev['start'], $bd_format)
+       );
 
-       $event_end = (($ev['adjust']) ?
-               day_translate(Temporal::convert($ev['finish'] , date_default_timezone_get(), 'UTC', $bd_format ))
-               : day_translate(Temporal::convert($ev['finish'] , 'UTC', 'UTC', $bd_format )));
+       $event_end = day_translate(
+               $ev['adjust'] ?
+                       DateTimeFormat::local($ev['finish'], $bd_format)
+                       : DateTimeFormat::utc($ev['finish'], $bd_format)
+       );
 
        if ($simple) {
-               $o = "<h3>" . bbcode($ev['summary']) . "</h3>";
+               $o = "<h3>" . BBCode::convert($ev['summary'], false, $simple) . "</h3>";
 
-               $o .= "<div>" . bbcode($ev['desc']) . "</div>";
+               $o .= "<p>" . BBCode::convert($ev['desc'], false, $simple) . "</p>";
 
                $o .= "<h4>" . L10n::t('Starts:') . "</h4><p>" . $event_start . "</p>";
 
@@ -46,7 +49,7 @@ function format_event_html($ev, $simple = false) {
                }
 
                if (strlen($ev['location'])) {
-                       $o .= "<h4>" . L10n::t('Location:') . "</h4><p>" . $ev['location'] . "</p>";
+                       $o .= "<h4>" . L10n::t('Location:') . "</h4><p>" . BBCode::convert($ev['location'], false, $simple) . "</p>";
                }
 
                return $o;
@@ -54,30 +57,30 @@ function format_event_html($ev, $simple = false) {
 
        $o = '<div class="vevent">' . "\r\n";
 
-       $o .= '<div class="summary event-summary">' . bbcode($ev['summary']) . '</div>' . "\r\n";
+       $o .= '<div class="summary event-summary">' . BBCode::convert($ev['summary'], false, $simple) . '</div>' . "\r\n";
 
        $o .= '<div class="event-start"><span class="event-label">' . L10n::t('Starts:') . '</span>&nbsp;<span class="dtstart" title="'
-               . Temporal::convert($ev['start'], 'UTC', 'UTC', (($ev['adjust']) ? ATOM_TIME : 'Y-m-d\TH:i:s' ))
+               . DateTimeFormat::utc($ev['start'], (($ev['adjust']) ? DateTimeFormat::ATOM : 'Y-m-d\TH:i:s' ))
                . '" >'.$event_start
                . '</span></div>' . "\r\n";
 
        if (! $ev['nofinish']) {
                $o .= '<div class="event-end" ><span class="event-label">' . L10n::t('Finishes:') . '</span>&nbsp;<span class="dtend" title="'
-                       . Temporal::convert($ev['finish'], 'UTC', 'UTC', (($ev['adjust']) ? ATOM_TIME : 'Y-m-d\TH:i:s' ))
+                       . DateTimeFormat::utc($ev['finish'], (($ev['adjust']) ? DateTimeFormat::ATOM : 'Y-m-d\TH:i:s' ))
                        . '" >'.$event_end
                        . '</span></div>' . "\r\n";
        }
 
-       $o .= '<div class="description event-description">' . bbcode($ev['desc']) . '</div>' . "\r\n";
+       $o .= '<div class="description event-description">' . BBCode::convert($ev['desc'], false, $simple) . '</div>' . "\r\n";
 
        if (strlen($ev['location'])) {
                $o .= '<div class="event-location"><span class="event-label">' . L10n::t('Location:') . '</span>&nbsp;<span class="location">'
-                       . bbcode($ev['location'])
+                       . BBCode::convert($ev['location'], false, $simple)
                        . '</span></div>' . "\r\n";
 
                // Include a map of the location if the [map] BBCode is used.
                if (strpos($ev['location'], "[map") !== false) {
-                       $map = Map::byLocation($ev['location']);
+                       $map = Map::byLocation($ev['location'], $simple);
                        if ($map !== $ev['location']) {
                                $o.= $map;
                        }
@@ -196,8 +199,8 @@ function sort_by_date($a) {
 
 function ev_compare($a,$b) {
 
-       $date_a = (($a['adjust']) ? Temporal::convert($a['start'], date_default_timezone_get()) : $a['start']);
-       $date_b = (($b['adjust']) ? Temporal::convert($b['start'], date_default_timezone_get()) : $b['start']);
+       $date_a = (($a['adjust']) ? DateTimeFormat::local($a['start']) : $a['start']);
+       $date_b = (($b['adjust']) ? DateTimeFormat::local($b['start']) : $b['start']);
 
        if ($date_a === $date_b) {
                return strcasecmp($a['desc'], $b['desc']);
@@ -234,20 +237,24 @@ function event_delete($event_id) {
  */
 function event_store($arr) {
 
-       require_once 'include/datetime.php';
        require_once 'include/items.php';
-       require_once 'include/bbcode.php';
 
        $a = get_app();
 
-       $arr['created'] = (($arr['created'])     ? $arr['created']         : Temporal::convert());
-       $arr['edited']  = (($arr['edited'])      ? $arr['edited']          : Temporal::convert());
+       $arr['created'] = (($arr['created'])     ? DateTimeFormat::utc($arr['created']) : DateTimeFormat::utcNow());
+       $arr['edited']  = (($arr['edited'])      ? DateTimeFormat::utc($arr['edited'])  : DateTimeFormat::utcNow());
+       $arr['start']   = (($arr['start'])       ? DateTimeFormat::utc($arr['start'])   : NULL_DATE);
+       $arr['finish']  = (($arr['finish'])      ? DateTimeFormat::utc($arr['finish'])  : NULL_DATE);
        $arr['type']    = (($arr['type'])        ? $arr['type']            : 'event' );
        $arr['cid']     = ((intval($arr['cid'])) ? intval($arr['cid'])     : 0);
        $arr['uri']     = (x($arr, 'uri')        ? $arr['uri']             : item_new_uri($a->get_hostname(), $arr['uid']));
        $arr['private'] = ((x($arr, 'private'))  ? intval($arr['private']) : 0);
        $arr['guid']    = get_guid(32);
 
+       if ($arr['finish'] < NULL_DATE) {
+               $arr['finish'] = NULL_DATE;
+       }
+
        if ($arr['cid']) {
                $c = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
                        intval($arr['cid']),
@@ -316,13 +323,8 @@ function event_store($arr) {
                        $object .= '<content>' . xmlify(format_event_bbcode($arr)) . '</content>';
                        $object .= '</object>' . "\n";
 
-                       q("UPDATE `item` SET `body` = '%s', `object` = '%s', `edited` = '%s' WHERE `id` = %d AND `uid` = %d",
-                               dbesc(format_event_bbcode($arr)),
-                               dbesc($object),
-                               dbesc($arr['edited']),
-                               intval($r[0]['id']),
-                               intval($arr['uid'])
-                       );
+                       $fields = ['body' => format_event_bbcode($arr), 'object' => $object, 'edited' => $arr['edited']];
+                       Item::update($fields, ['id' => $r[0]['id']]);
 
                        $item_id = $r[0]['id'];
                } else {
@@ -400,11 +402,7 @@ function event_store($arr) {
 
                $item_id = Item::insert($item_arr);
                if ($item_id) {
-                       q("UPDATE `item` SET `event-id` = %d  WHERE `uid` = %d AND `id` = %d",
-                               intval($event['id']),
-                               intval($arr['uid']),
-                               intval($item_id)
-                       );
+                       Item::update(['event-id' => $event['id']], ['id' => $item_id]);
                }
 
                Addon::callHooks("event_created", $event['id']);
@@ -591,15 +589,15 @@ function process_events($arr) {
        $fmt = L10n::t('l, F j');
        if (count($arr)) {
                foreach ($arr as $rr) {
-                       $j = (($rr['adjust']) ? Temporal::convert($rr['start'], date_default_timezone_get(), 'UTC', 'j') : Temporal::convert($rr['start'], 'UTC', 'UTC', 'j'));
-                       $d = (($rr['adjust']) ? Temporal::convert($rr['start'], date_default_timezone_get(), 'UTC', $fmt) : Temporal::convert($rr['start'], 'UTC', 'UTC', $fmt));
+                       $j = (($rr['adjust']) ? DateTimeFormat::local($rr['start'], 'j') : DateTimeFormat::utc($rr['start'], 'j'));
+                       $d = (($rr['adjust']) ? DateTimeFormat::local($rr['start'], $fmt) : DateTimeFormat::utc($rr['start'], $fmt));
                        $d = day_translate($d);
 
-                       $start = (($rr['adjust']) ? Temporal::convert($rr['start'], date_default_timezone_get(), 'UTC', 'c') : Temporal::convert($rr['start'], 'UTC', 'UTC', 'c'));
+                       $start = (($rr['adjust']) ? DateTimeFormat::local($rr['start'], 'c') : DateTimeFormat::utc($rr['start'], 'c'));
                        if ($rr['nofinish']) {
                                $end = null;
                        } else {
-                               $end = (($rr['adjust']) ? Temporal::convert($rr['finish'], date_default_timezone_get(), 'UTC', 'c') : Temporal::convert($rr['finish'], 'UTC', 'UTC', 'c'));
+                               $end = (($rr['adjust']) ? DateTimeFormat::local($rr['finish'], 'c') : DateTimeFormat::utc($rr['finish'], 'c'));
                        }
 
                        $is_first = ($d !== $last_date);
@@ -617,15 +615,15 @@ function process_events($arr) {
                                $drop = [System::baseUrl() . '/events/drop/' . $rr['id'], L10n::t('Delete event'), '', ''];
                        }
 
-                       $title = strip_tags(html_entity_decode(bbcode($rr['summary']), ENT_QUOTES, 'UTF-8'));
+                       $title = strip_tags(html_entity_decode(BBCode::convert($rr['summary']), ENT_QUOTES, 'UTF-8'));
                        if (! $title) {
-                               list($title, $_trash) = explode("<br", bbcode($rr['desc']), 2);
+                               list($title, $_trash) = explode("<br", BBCode::convert($rr['desc']), 2);
                                $title = strip_tags(html_entity_decode($title, ENT_QUOTES, 'UTF-8'));
                        }
 
                        $html = format_event_html($rr);
-                       $rr['desc'] = bbcode($rr['desc']);
-                       $rr['location'] = bbcode($rr['location']);
+                       $rr['desc'] = BBCode::convert($rr['desc']);
+                       $rr['location'] = BBCode::convert($rr['location']);
                        $events[] = [
                                'id'     => $rr['id'],
                                'start'  => $start,
@@ -924,22 +922,48 @@ function format_event_item($item) {
        $tformat       = L10n::t('g:i A'); // 8:01 AM.
 
        // Convert the time to different formats.
-       $dtstart_dt = (($item['event-adjust']) ? day_translate(Temporal::convert($item['event-start'], date_default_timezone_get(), 'UTC', $dformat)) : day_translate(Temporal::convert($item['event-start'], 'UTC', 'UTC', $dformat)));
-       $dtstart_title = Temporal::convert($item['event-start'], 'UTC', 'UTC', (($item['event-adjust']) ? ATOM_TIME : 'Y-m-d\TH:i:s'));
+       $dtstart_dt = day_translate(
+               $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');
        // Format: Jan till Dec.
-       $month_short = (($item['event-adjust']) ? day_short_translate(Temporal::convert($item['event-start'], date_default_timezone_get(), 'UTC', 'M')) : day_short_translate(Temporal::convert($item['event-start'], 'UTC', 'UTC', 'M')));
+       $month_short = day_short_translate(
+               $item['event-adjust'] ?
+                       DateTimeFormat::local($item['event-start'], 'M')
+                       : DateTimeFormat::utc($item['event-start'], 'M')
+       );
        // Format: 1 till 31.
-       $date_short = (($item['event-adjust']) ? Temporal::convert($item['event-start'], date_default_timezone_get(), 'UTC', 'j') : Temporal::convert($item['event-start'], 'UTC', 'UTC', 'j'));
-       $start_time = (($item['event-adjust']) ? Temporal::convert($item['event-start'], date_default_timezone_get(), 'UTC', $tformat) : Temporal::convert($item['event-start'], 'UTC', 'UTC', $tformat));
-       $start_short = (($item['event-adjust']) ? day_short_translate(Temporal::convert($item['event-start'], date_default_timezone_get(), 'UTC', $dformat_short)) : day_short_translate(Temporal::convert($item['event-start'], 'UTC', 'UTC', $dformat_short)));
+       $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 = day_short_translate(
+               $item['event-adjust'] ?
+                       DateTimeFormat::local($item['event-start'], $dformat_short)
+                       : DateTimeFormat::utc($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  = (($item['event-adjust']) ? day_translate(Temporal::convert($item['event-finish'], date_default_timezone_get(), 'UTC', $dformat)) : day_translate(Temporal::convert($item['event-finish'], 'UTC', 'UTC', $dformat)));
-               $dtend_title = Temporal::convert($item['event-finish'], 'UTC', 'UTC', (($item['event-adjust'])   ? ATOM_TIME : 'Y-m-d\TH:i:s'));
-               $end_short = (($item['event-adjust']) ? day_short_translate(Temporal::convert($item['event-finish'], date_default_timezone_get(), 'UTC', $dformat_short)) : day_short_translate(Temporal::convert($item['event-finish'], 'UTC', 'UTC', $dformat_short)));
-               $end_time = (($item['event-adjust']) ? Temporal::convert($item['event-finish'], date_default_timezone_get(), 'UTC', $tformat) : Temporal::convert($item['event-finish'], 'UTC', 'UTC', $tformat));
+               $dtend_dt  = day_translate(
+                       $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 = day_short_translate(
+                       $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);
                // 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;