$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'])
$c = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
intval($arr['id']),
intval($arr['uid'])
);
- if((! count($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.
intval($arr['id']),
intval($arr['uid'])
);
- return((count($r)) ? $r[0]['id'] : 0);
+ return((dbm::is_result($r)) ? $r[0]['id'] : 0);
}
// The event changed. Update it.
`location` = '%s',
`type` = '%s',
`adjust` = %d,
- `nofinish` = %d,
+ `nofinish` = %d
WHERE `id` = %d AND `uid` = %d",
dbesc($arr['edited']),
intval($arr['id']),
intval($arr['uid'])
);
- if(count($r)) {
+ if (dbm::is_result($r)) {
$object = '<object><type>' . xmlify(ACTIVITY_OBJ_EVENT) . '</type><title></title><id>' . xmlify($arr['uri']) . '</id>';
$object .= '<content>' . xmlify(format_event_bbcode($arr)) . '</content>';
$object .= '</object>' . "\n";
call_hooks("event_updated", $arr['id']);
return $item_id;
- }
- else {
+ } else {
// New event. Store it.
- $r = q("INSERT INTO `event` ( `uid`,`cid`,`uri`,`created`,`edited`,`start`,`finish`,`summary`, `desc`,`location`,`type`,
+ $r = q("INSERT INTO `event` (`uid`,`cid`,`guid`,`uri`,`created`,`edited`,`start`,`finish`,`summary`, `desc`,`location`,`type`,
`adjust`,`nofinish`,`allow_cid`,`allow_gid`,`deny_cid`,`deny_gid`)
- VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', '%s', '%s', '%s' ) ",
+ VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', '%s', '%s', '%s' ) ",
intval($arr['uid']),
intval($arr['cid']),
+ dbesc($arr['guid']),
dbesc($arr['uri']),
dbesc($arr['created']),
dbesc($arr['edited']),
dbesc($arr['uri']),
intval($arr['uid'])
);
- if(count($r))
+ if (dbm::is_result($r))
$event = $r[0];
$item_arr = array();
$r = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1",
intval($arr['uid'])
);
- //if(count($r))
- // $plink = $a->get_baseurl() . '/display/' . $r[0]['nickname'] . '/' . $item_id;
+ //if (dbm::is_result($r))
+ // $plink = App::get_baseurl() . '/display/' . $r[0]['nickname'] . '/' . $item_id;
if($item_id) {
"month" => t("month"),
"week" => t("week"),
"day" => t("day"),
+ "allday" => t("all-day"),
+
+ "noevent" => t("No events to display"),
+
+ "dtstart_label" => t("Starts:"),
+ "dtend_label" => t("Finishes:"),
+ "location_label" => t("Location:")
);
return $i18n;
}
+/// @todo We should replace this with a separate update function if there is some time left
+/**
+ * @brief Removes duplicated birthday events
+ *
+ * @param array $dates Array of possibly duplicated events
+ * @return array Cleaned events
+ */
+function event_remove_duplicates($dates) {
+ $dates2 = array();
+
+ foreach ($dates AS $date) {
+ if ($date['type'] == 'birthday') {
+ $dates2[$date['uid']."-".$date['cid']."-".$date['start']] = $date;
+ } else {
+ $dates2[] = $date;
+ }
+ }
+ return $dates2;
+}
+
/**
* @brief Get an event by its event ID
- *
+ *
* @param type $owner_uid The User ID of the owner of the event
* @param type $event_params An assoziative array with
* int 'event_id' => The ID of the event in the event table
intval($event_params["event_id"])
);
- if(count($r))
- return $r;
-
+ if (dbm::is_result($r)) {
+ return event_remove_duplicates($r);
+ }
}
/**
* @brief Get all events in a specific timeframe
- *
+ *
* @param int $owner_uid The User ID of the owner of the events
* @param array $event_params An assoziative array with
- * int 'ignored' =>
+ * int 'ignored' =>
* string 'start' => Start time of the timeframe
* string 'finish' => Finish time of the timeframe
- * string 'adjust_start' =>
* string 'adjust_start' =>
- *
+ * string 'adjust_start' =>
+ *
* @param string $sql_extra Additional sql conditions (e.g. permission request)
* @return array Query results
*/
dbesc($event_params["adjust_finish"])
);
- if(count($r))
- return $r;
+ if (dbm::is_result($r)) {
+ return event_remove_duplicates($r);
+ }
}
/**
* @brief Convert an array query results in an arry which could be used by the events template
- *
+ *
* @param array $arr Event query array
* @return array Event array for the template
*/
-function process_events ($arr) {
+function process_events($arr) {
$events=array();
$last_date = '';
/**
* @brief Format event to export format (ical/csv)
- *
+ *
* @param array $events Query result for events
* @param string $format The output format (ical/csv)
* @param string $timezone The timezone of the user (not implemented yet)
- *
+ *
* @return string Content according to selected export format
*/
function event_format_export ($events, $format = 'ical', $timezone) {
$o = '"Subject", "Start Date", "Start Time", "Description", "End Date", "End Time", "Location"' . PHP_EOL;
foreach ($events as $event) {
- /// @todo the time / date entries don't include any information about the
+ /// @todo the time / date entries don't include any information about the
// timezone the event is scheduled in :-/
$tmp1 = strtotime($event['start']);
$tmp2 = strtotime($event['finish']);
$o .= '"'.$event['summary'].'", "'.strftime($date_format, $tmp1) .
'", "'.strftime($time_format, $tmp1).'", "'.$event['desc'] .
'", "'.strftime($date_format, $tmp2) .
- '", "'.strftime($time_format, $tmp2) .
+ '", "'.strftime($time_format, $tmp2) .
'", "'.$event['location'].'"' . PHP_EOL;
}
break;
foreach ($events as $event) {
if ($event['adjust'] == 1) {
$UTC = 'Z';
- } else {
+ } else {
$UTC = '';
}
$o .= 'BEGIN:VEVENT' . PHP_EOL;
$dtformat = "%Y%m%dT%H%M%S".$UTC;
$o .= 'DTSTART:'.strftime($dtformat, $tmp).PHP_EOL;
}
- if ($event['finish']) {
+ if (!$event['nofinish']) {
$tmp = strtotime($event['finish']);
$dtformat = "%Y%m%dT%H%M%S".$UTC;
$o .= 'DTEND:'.strftime($dtformat, $tmp).PHP_EOL;
/**
* @brief Get all events for a user ID
- *
+ *
* The query for events is done permission sensitive
* If the user is the owner of the calendar he/she
* will get all of his/her available events.
* If the user is only a visitor only the public events will
* be available
- *
+ *
* @param int $uid The user ID
* @param int $sql_extra Additional sql conditions for permission
- *
+ *
* @return array Query results
*/
function events_by_uid($uid = 0, $sql_extra = '') {
if($sql_extra == '')
$sql_extra = " AND `allow_cid` = '' AND `allow_gid` = '' ";
- // does the user who requests happen to be the owner of the events
- // requested? then show all of your events, otherwise only those that
+ // does the user who requests happen to be the owner of the events
+ // requested? then show all of your events, otherwise only those that
// don't have limitations set in allow_cid and allow_gid
if (local_user() == $uid) {
- $r = q("SELECT `start`, `finish`, `adjust`, `summary`, `desc`, `location`
+ $r = q("SELECT `start`, `finish`, `adjust`, `summary`, `desc`, `location`, `nofinish`
FROM `event` WHERE `uid`= %d AND `cid` = 0 ",
intval($uid)
);
} else {
- $r = q("SELECT `start`, `finish`, `adjust`, `summary`, `desc`, `location`FROM `event`
- WHERE `uid` = %d AND `cid` = 0 $sql_extra ",
+ $r = q("SELECT `start`, `finish`, `adjust`, `summary`, `desc`, `location`, `nofinish`
+ FROM `event` WHERE `uid`= %d AND `cid` = 0 $sql_extra ",
intval($uid)
);
}
- if(count($r))
+ if (dbm::is_result($r))
return $r;
}
/**
- *
+ *
* @param int $uid The user ID
* @param string $format Output format (ical/csv)
* @return array With the results
* string 'format' => The output format
* string 'extension' => The file extension of the output format
* string 'content' => The formatted output content
- *
+ *
* @todo Respect authenticated users with events_by_uid()
*/
function event_export($uid, $format = 'ical') {
// we are allowed to show events
// get the timezone the user is in
$r = q("SELECT `timezone` FROM `user` WHERE `uid` = %d LIMIT 1", intval($uid));
- if (count($r))
+ if (dbm::is_result($r))
$timezone = $r[0]['timezone'];
// get all events which are owned by a uid (respects permissions);
/**
* @brief Get the events widget
- *
+ *
* @return string Formated html of the evens widget
*/
function widget_events() {
// Cal logged in user (test permission at foreign profile page)
// If the $owner uid is available we know it is part of one of the profile pages (like /cal)
- // So we have to test if if it's the own profile page of the logged in user
+ // So we have to test if if it's the own profile page of the logged in user
// or a foreign one. For foreign profile pages we need to check if the feature
// for exporting the cal is enabled (otherwise the widget would appear for logged in users
// on foreigen profile pages even if the widget is disabled)
- if(intval($owner_uid) && local_user() !== $owner_uid && ! feature_enabled($owner_uid, "export_calendar"))
+ if(intval($owner_uid) && local_user() !== $owner_uid && ! feature_enabled($owner_uid, "export_calendar"))
return;
// If it's a kind of profile page (intval($owner_uid)) return if the user not logged in and