X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=inline;f=include%2Fevent.php;h=bc9467dc80217a1c352277ebaf94ef91c4fe6c3d;hb=b4cf27e76731556c2b4d2941f51b74e1935e0ba7;hp=44261b36910a7b81bba9acfc389cfc6437552c9e;hpb=951006dd10628151c8f108f82c3260f13846e557;p=friendica.git
diff --git a/include/event.php b/include/event.php
index 44261b3691..bc9467dc80 100644
--- a/include/event.php
+++ b/include/event.php
@@ -4,265 +4,265 @@
* @brief functions specific to event handling
*/
-require_once('include/bbcode.php');
-require_once('include/map.php');
-require_once('include/datetime.php');
+use Friendica\App;
+use Friendica\Content\Feature;
+use Friendica\Core\PConfig;
+use Friendica\Core\System;
+use Friendica\Database\DBM;
+use Friendica\Util\Map;
-function format_event_html($ev, $simple = false) {
+require_once 'include/bbcode.php';
+require_once 'include/datetime.php';
+require_once "include/conversation.php";
- if (! ((is_array($ev)) && count($ev)))
+function format_event_html($ev, $simple = false) {
+ if (! ((is_array($ev)) && count($ev))) {
return '';
+ }
- $bd_format = t('l F d, Y \@ g:i A') ; // Friday January 18, 2011 @ 8 AM
+ $bd_format = t('l F d, Y \@ g:i A') ; // Friday January 18, 2011 @ 8 AM.
$event_start = (($ev['adjust']) ? day_translate(datetime_convert('UTC', date_default_timezone_get(),
$ev['start'] , $bd_format ))
- : day_translate(datetime_convert('UTC', 'UTC',
+ : day_translate(datetime_convert('UTC', 'UTC',
$ev['start'] , $bd_format)));
$event_end = (($ev['adjust']) ? day_translate(datetime_convert('UTC', date_default_timezone_get(),
$ev['finish'] , $bd_format ))
- : day_translate(datetime_convert('UTC', 'UTC',
+ : day_translate(datetime_convert('UTC', 'UTC',
$ev['finish'] , $bd_format )));
if ($simple) {
- $o = "
".bbcode($ev['summary'])."
";
+ $o = "" . bbcode($ev['summary']) . "
";
- $o .= "".bbcode($ev['desc'])."
";
+ $o .= "" . bbcode($ev['desc']) . "
";
- $o .= "".t('Starts:')."
".$event_start."
";
+ $o .= "" . t('Starts:') . "
" . $event_start . "
";
- if (! $ev['nofinish'])
- $o .= "".t('Finishes:')."
".$event_end."
";
+ if (! $ev['nofinish']) {
+ $o .= "" . t('Finishes:') . "
" . $event_end ."
";
+ }
- if (strlen($ev['location']))
- $o .= "".t('Location:')."
".$ev['location']."
";
+ if (strlen($ev['location'])) {
+ $o .= "" . t('Location:') . "
" . $ev['location'] . "
";
+ }
return $o;
}
$o = '' . "\r\n";
+ $o .= '
' . bbcode($ev['summary']) . '
' . "\r\n";
- $o .= '
' . bbcode($ev['summary']) . '
' . "\r\n";
-
- $o .= '
' . bbcode($ev['desc']) . '
' . "\r\n";
-
- $o .= '
' . t('Starts:') . ' ' . t('Starts:') . ' '.$event_start
- . '
' . "\r\n";
+ . '
' . "\r\n";
- if (! $ev['nofinish'])
- $o .= '' . t('Finishes:') . ' ' . t('Finishes:') . ' '.$event_end
- . '
' . "\r\n";
-
- if (strlen($ev['location'])){
- $o .= ' ' . t('Location:') . ' '
- . bbcode($ev['location'])
- . '
' . "\r\n";
-
- if (strpos($ev['location'], "[map") !== False) {
- $map = generate_named_map($ev['location']);
- if ($map!==$ev['location']) $o.=$map;
- }
-
+ . '' . "\r\n";
}
- $o .= '' . "\r\n";
- return $o;
-}
-
-/*
-function parse_event($h) {
-
- require_once('include/Scrape.php');
- require_once('include/html2bbcode');
-
- $h = '' . $h . '';
+ $o .= '' . bbcode($ev['desc']) . '
' . "\r\n";
- $ret = array();
-
-
- try {
- $dom = HTML5_Parser::parse($h);
- } catch (DOMException $e) {
- logger('parse_event: parse error: ' . $e);
- }
-
- if (! $dom)
- return $ret;
-
- $items = $dom->getElementsByTagName('*');
-
- foreach ($items as $item) {
- if (attribute_contains($item->getAttribute('class'), 'vevent')) {
- $level2 = $item->getElementsByTagName('*');
- foreach ($level2 as $x) {
- if (attribute_contains($x->getAttribute('class'),'dtstart') && $x->getAttribute('title')) {
- $ret['start'] = $x->getAttribute('title');
- if (! strpos($ret['start'],'Z'))
- $ret['adjust'] = true;
- }
- if (attribute_contains($x->getAttribute('class'),'dtend') && $x->getAttribute('title'))
- $ret['finish'] = $x->getAttribute('title');
+ if (strlen($ev['location'])) {
+ $o .= '' . t('Location:') . ' '
+ . bbcode($ev['location'])
+ . '
' . "\r\n";
- if (attribute_contains($x->getAttribute('class'),'description'))
- $ret['desc'] = $x->textContent;
- if (attribute_contains($x->getAttribute('class'),'location'))
- $ret['location'] = $x->textContent;
+ // Include a map of the location if the [map] BBCode is used.
+ if (strpos($ev['location'], "[map") !== false) {
+ $map = Map::byLocation($ev['location']);
+ if ($map !== $ev['location']) {
+ $o.= $map;
}
}
}
- // sanitise
-
- if ((x($ret,'desc')) && ((strpos($ret['desc'],'<') !== false) || (strpos($ret['desc'],'>') !== false))) {
- $config = HTMLPurifier_Config::createDefault();
- $config->set('Cache.DefinitionImpl', null);
- $purifier = new HTMLPurifier($config);
- $ret['desc'] = html2bbcode($purifier->purify($ret['desc']));
- }
-
- if ((x($ret,'location')) && ((strpos($ret['location'],'<') !== false) || (strpos($ret['location'],'>') !== false))) {
- $config = HTMLPurifier_Config::createDefault();
- $config->set('Cache.DefinitionImpl', null);
- $purifier = new HTMLPurifier($config);
- $ret['location'] = html2bbcode($purifier->purify($ret['location']));
- }
-
- if (x($ret,'start'))
- $ret['start'] = datetime_convert('UTC','UTC',$ret['start']);
- if (x($ret,'finish'))
- $ret['finish'] = datetime_convert('UTC','UTC',$ret['finish']);
-
- return $ret;
+ $o .= '' . "\r\n";
+ return $o;
}
-*/
+/**
+ * @brief Convert an array with event data to bbcode.
+ *
+ * @param array $ev Array which conains the event data.
+ * @return string The event as a bbcode formatted string.
+ */
function format_event_bbcode($ev) {
$o = '';
- if ($ev['summary'])
+ if ($ev['summary']) {
$o .= '[event-summary]' . $ev['summary'] . '[/event-summary]';
+ }
- if ($ev['desc'])
+ if ($ev['desc']) {
$o .= '[event-description]' . $ev['desc'] . '[/event-description]';
+ }
- if ($ev['start'])
+ if ($ev['start']) {
$o .= '[event-start]' . $ev['start'] . '[/event-start]';
+ }
- if (($ev['finish']) && (! $ev['nofinish']))
+ if (($ev['finish']) && (! $ev['nofinish'])) {
$o .= '[event-finish]' . $ev['finish'] . '[/event-finish]';
+ }
- if ($ev['location'])
+ if ($ev['location']) {
$o .= '[event-location]' . $ev['location'] . '[/event-location]';
+ }
- if ($ev['adjust'])
+ if ($ev['adjust']) {
$o .= '[event-adjust]' . $ev['adjust'] . '[/event-adjust]';
-
+ }
return $o;
-
}
+/**
+ * @brief Extract bbcode formatted event data from a string
+ * and convert it to html.
+ *
+ * @params: string $s The string which should be parsed for event data.
+ * @return string The html output.
+ */
function bbtovcal($s) {
$o = '';
$ev = bbtoevent($s);
- if ($ev['desc'])
+
+ if ($ev['desc']) {
$o = format_event_html($ev);
+ }
+
return $o;
}
-
+/**
+ * @brief Extract bbcode formatted event data from a string.
+ *
+ * @params: string $s The string which should be parsed for event data.
+ * @return array The array with the event information.
+ */
function bbtoevent($s) {
$ev = array();
$match = '';
- if (preg_match("/\[event\-summary\](.*?)\[\/event\-summary\]/is",$s,$match))
+ if (preg_match("/\[event\-summary\](.*?)\[\/event\-summary\]/is", $s, $match)) {
$ev['summary'] = $match[1];
+ }
+
$match = '';
- if (preg_match("/\[event\-description\](.*?)\[\/event\-description\]/is",$s,$match))
+ if (preg_match("/\[event\-description\](.*?)\[\/event\-description\]/is", $s, $match)) {
$ev['desc'] = $match[1];
+ }
+
$match = '';
- if (preg_match("/\[event\-start\](.*?)\[\/event\-start\]/is",$s,$match))
+ if (preg_match("/\[event\-start\](.*?)\[\/event\-start\]/is", $s, $match)) {
$ev['start'] = $match[1];
+ }
+
$match = '';
- if (preg_match("/\[event\-finish\](.*?)\[\/event\-finish\]/is",$s,$match))
+ if (preg_match("/\[event\-finish\](.*?)\[\/event\-finish\]/is", $s, $match)) {
$ev['finish'] = $match[1];
+ }
+
$match = '';
- if (preg_match("/\[event\-location\](.*?)\[\/event\-location\]/is",$s,$match))
+ if (preg_match("/\[event\-location\](.*?)\[\/event\-location\]/is", $s, $match)) {
$ev['location'] = $match[1];
+ }
+
$match = '';
- if (preg_match("/\[event\-adjust\](.*?)\[\/event\-adjust\]/is",$s,$match))
+ if (preg_match("/\[event\-adjust\](.*?)\[\/event\-adjust\]/is", $s, $match)) {
$ev['adjust'] = $match[1];
+ }
+
$ev['nofinish'] = (((x($ev, 'start') && $ev['start']) && (!x($ev, 'finish') || !$ev['finish'])) ? 1 : 0);
- return $ev;
+ return $ev;
}
-
function sort_by_date($a) {
usort($a,'ev_compare');
return $a;
}
-
function ev_compare($a,$b) {
- $date_a = (($a['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$a['start']) : $a['start']);
- $date_b = (($b['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$b['start']) : $b['start']);
+ $date_a = (($a['adjust']) ? datetime_convert('UTC', date_default_timezone_get(), $a['start']) : $a['start']);
+ $date_b = (($b['adjust']) ? datetime_convert('UTC', date_default_timezone_get(), $b['start']) : $b['start']);
- if ($date_a === $date_b)
- return strcasecmp($a['desc'],$b['desc']);
+ if ($date_a === $date_b) {
+ return strcasecmp($a['desc'], $b['desc']);
+ }
- return strcmp($date_a,$date_b);
+ return strcmp($date_a, $date_b);
}
+/**
+ * @brief Delete an event from the event table.
+ *
+ * Note: This function does only delete the event from the event table not its
+ * related entry in the item table.
+ *
+ * @param int $event_id Event ID.
+ * @return void
+ */
function event_delete($event_id) {
- if ($event_id == 0)
+ if ($event_id == 0) {
return;
+ }
- q("DELETE FROM `event` WHERE `id` = %d", intval($event_id));
+ dba::delete('event', array('id' => $event_id));
logger("Deleted event ".$event_id, LOGGER_DEBUG);
}
+/**
+ * @brief Store the event.
+ *
+ * Store the event in the event table and create an event item in the item table.
+ *
+ * @param array $arr Array with event data.
+ * @return int The event id.
+ */
function event_store($arr) {
- require_once('include/datetime.php');
- require_once('include/items.php');
- require_once('include/bbcode.php');
+ require_once 'include/datetime.php';
+ require_once 'include/items.php';
+ require_once 'include/bbcode.php';
$a = get_app();
- $arr['created'] = (($arr['created']) ? $arr['created'] : datetime_convert());
- $arr['edited'] = (($arr['edited']) ? $arr['edited'] : datetime_convert());
- $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['created'] = (($arr['created']) ? $arr['created'] : datetime_convert());
+ $arr['edited'] = (($arr['edited']) ? $arr['edited'] : datetime_convert());
+ $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['cid'])
+ if ($arr['cid']) {
$c = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
intval($arr['cid']),
intval($arr['uid'])
);
- else
+ } else {
$c = q("SELECT * FROM `contact` WHERE `self` = 1 AND `uid` = %d LIMIT 1",
intval($arr['uid'])
);
+ }
- if (count($c))
+ if (DBM::is_result($c)) {
$contact = $c[0];
+ }
- // Existing event being modified
+ // Existing event being modified.
if ($arr['id']) {
@@ -272,7 +272,7 @@ function event_store($arr) {
intval($arr['id']),
intval($arr['uid'])
);
- if ((! dbm::is_result($r)) || ($r[0]['edited'] === $arr['edited'])) {
+ if ((! DBM::is_result($r)) || ($r[0]['edited'] === $arr['edited'])) {
// Nothing has changed. Grab the item id to return.
@@ -280,7 +280,7 @@ function event_store($arr) {
intval($arr['id']),
intval($arr['uid'])
);
- return((dbm::is_result($r)) ? $r[0]['id'] : 0);
+ return ((DBM::is_result($r)) ? $r[0]['id'] : 0);
}
// The event changed. Update it.
@@ -313,12 +313,11 @@ function event_store($arr) {
intval($arr['id']),
intval($arr['uid'])
);
- if (dbm::is_result($r)) {
+ if (DBM::is_result($r)) {
$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),
@@ -328,14 +327,14 @@ function event_store($arr) {
);
$item_id = $r[0]['id'];
- } else
+ } else {
$item_id = 0;
+ }
call_hooks("event_updated", $arr['id']);
return $item_id;
} else {
-
// New event. Store it.
$r = q("INSERT INTO `event` (`uid`,`cid`,`guid`,`uri`,`created`,`edited`,`start`,`finish`,`summary`, `desc`,`location`,`type`,
@@ -359,15 +358,15 @@ function event_store($arr) {
dbesc($arr['allow_gid']),
dbesc($arr['deny_cid']),
dbesc($arr['deny_gid'])
-
);
$r = q("SELECT * FROM `event` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
dbesc($arr['uri']),
intval($arr['uid'])
);
- if (dbm::is_result($r))
+ if (DBM::is_result($r)) {
$event = $r[0];
+ }
$item_arr = array();
@@ -399,7 +398,7 @@ function event_store($arr) {
$item_arr['body'] = format_event_bbcode($event);
- $item_arr['object'] = '