diff --git a/include/event.php b/include/event.php index 9e5bafbdb..ebd4885c9 100644 --- a/include/event.php +++ b/include/event.php @@ -4,39 +4,42 @@ * @brief functions specific to event handling */ -require_once('include/bbcode.php'); -require_once('include/map.php'); -require_once('include/datetime.php'); +require_once 'include/bbcode.php'; +require_once 'include/map.php'; +require_once 'include/datetime.php'; function format_event_html($ev, $simple = false) { - if(! ((is_array($ev)) && count($ev))) + if(! ((is_array($ev)) && count($ev))) { return ''; + } $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; } @@ -44,31 +47,34 @@ function format_event_html($ev, $simple = false) { $o = '
' . "\r\n"; - $o .= '

' . bbcode($ev['summary']) . '

' . "\r\n"; + $o .= '

' . bbcode($ev['summary']) . '

' . "\r\n"; - $o .= '

' . bbcode($ev['desc']) . '

' . "\r\n"; + $o .= '

' . bbcode($ev['desc']) . '

' . "\r\n"; $o .= '

' . t('Starts:') . ' '.$event_start . '

' . "\r\n"; - if(! $ev['nofinish']) + if (! $ev['nofinish']) { $o .= '

' . t('Finishes:') . ' '.$event_end - . '

' . "\r\n"; + . '

' . "\r\n"; + } - if(strlen($ev['location'])){ + if (strlen($ev['location'])) { $o .= '

' . t('Location:') . ' ' . bbcode($ev['location']) . '

' . "\r\n"; - if (strpos($ev['location'], "[map") !== False) { + // Include a map of the location if the [map] BBCode is used + if (strpos($ev['location'], "[map") !== false) { $map = generate_named_map($ev['location']); - if ($map!==$ev['location']) $o.=$map; + if ($map !== $ev['location']) { + $o.= $map; + } } - } $o .= '
' . "\r\n"; @@ -146,63 +152,81 @@ 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; - } function bbtovcal($s) { $o = ''; $ev = bbtoevent($s); - if($ev['desc']) + + if ($ev['desc']) { $o = format_event_html($ev); + } + return $o; } - 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)) - $ev['desc'] = $match[1]; - $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)) - $ev['finish'] = $match[1]; - $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)) - $ev['adjust'] = $match[1]; - $ev['nofinish'] = (((x($ev, 'start') && $ev['start']) && (!x($ev, 'finish') || !$ev['finish'])) ? 1 : 0); - return $ev; + } + $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)) { + $ev['start'] = $match[1]; + } + + $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)) { + $ev['location'] = $match[1]; + } + + $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; } @@ -212,21 +236,22 @@ function sort_by_date($a) { 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); } function event_delete($event_id) { - if ($event_id == 0) + if ($event_id == 0) { return; + } q("DELETE FROM `event` WHERE `id` = %d", intval($event_id)); logger("Deleted event ".$event_id, LOGGER_DEBUG); @@ -234,37 +259,39 @@ function event_delete($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 - if($arr['id']) { + if ($arr['id']) { // has the event actually changed? @@ -272,7 +299,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 +307,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. @@ -318,7 +345,6 @@ function event_store($arr) { $object .= '' . xmlify(format_event_bbcode($arr)) . ''; $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,8 +354,9 @@ function event_store($arr) { ); $item_id = $r[0]['id']; - } else + } else { $item_id = 0; + } call_hooks("event_updated", $arr['id']); @@ -366,8 +393,9 @@ function event_store($arr) { dbesc($arr['uri']), intval($arr['uid']) ); - if (dbm::is_result($r)) + if (dbm::is_result($r)) { $event = $r[0]; + } $item_arr = array(); @@ -399,7 +427,7 @@ function event_store($arr) { $item_arr['body'] = format_event_bbcode($event); - $item_arr['object'] = '' . xmlify(ACTIVITY_OBJ_EVENT) . '' . xmlify($arr['uri']) . ''; + $item_arr['object'] = '' . xmlify(ACTIVITY_OBJ_EVENT) . '' . xmlify($arr['uri']) . ''; $item_arr['object'] .= '' . xmlify(format_event_bbcode($event)) . ''; $item_arr['object'] .= '' . "\n"; @@ -412,7 +440,7 @@ function event_store($arr) { // $plink = App::get_baseurl() . '/display/' . $r[0]['nickname'] . '/' . $item_id; - if($item_id) { + if ($item_id) { //q("UPDATE `item` SET `plink` = '%s', `event-id` = %d WHERE `uid` = %d AND `id` = %d", // dbesc($plink), // intval($event['id']), @@ -433,12 +461,17 @@ function event_store($arr) { } function get_event_strings() { + // First day of the week (0 = Sunday) - $firstDay = get_pconfig(local_user(),'system','first_day_of_week'); - if ($firstDay === false) $firstDay=0; + $firstDay = get_pconfig(local_user(), 'system', 'first_day_of_week'); + if ($firstDay === false) { + $firstDay = 0; + } $i18n = array( "firstDay" => $firstDay, + "allday" => t("all-day"), + "Sun" => t("Sun"), "Mon" => t("Mon"), "Tue" => t("Tue"), @@ -446,13 +479,15 @@ function get_event_strings() { "Thu" => t("Thu"), "Fri" => t("Fri"), "Sat" => t("Sat"), - "Sunday" => t("Sunday"), - "Monday" => t("Monday"), - "Tuesday" => t("Tuesday"), + + "Sunday" => t("Sunday"), + "Monday" => t("Monday"), + "Tuesday" => t("Tuesday"), "Wednesday" => t("Wednesday"), - "Thursday" => t("Thursday"), - "Friday" => t("Friday"), - "Saturday" => t("Saturday"), + "Thursday" => t("Thursday"), + "Friday" => t("Friday"), + "Saturday" => t("Saturday"), + "Jan" => t("Jan"), "Feb" => t("Feb"), "Mar" => t("Mar"), @@ -465,47 +500,49 @@ function get_event_strings() { "Oct" => t("Oct"), "Nov" => t("Nov"), "Dec" => t("Dec"), - "January" => t("January"), - "February" => t("February"), - "March" => t("March"), - "April" => t("April"), - "May" => t("May"), - "June" => t("June"), - "July" => t("July"), - "August" => t("August"), + + "January" => t("January"), + "February" => t("February"), + "March" => t("March"), + "April" => t("April"), + "May" => t("May"), + "June" => t("June"), + "July" => t("July"), + "August" => t("August"), "September" => t("September"), - "October" => t("October"), - "November" => t("November"), - "December" => t("December"), + "October" => t("October"), + "November" => t("November"), + "December" => t("December"), + "today" => t("today"), "month" => t("month"), - "week" => t("week"), - "day" => t("day"), - "allday" => t("all-day"), + "week" => t("week"), + "day" => t("day"), "noevent" => t("No events to display"), - "dtstart_label" => t("Starts:"), - "dtend_label" => t("Finishes:"), + "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 + * + * @todo We should replace this with a separate update function if there is some time left */ function event_remove_duplicates($dates) { $dates2 = array(); foreach ($dates AS $date) { if ($date['type'] == 'birthday') { - $dates2[$date['uid']."-".$date['cid']."-".$date['start']] = $date; + $dates2[$date['uid'] . "-" . $date['cid'] . "-" . $date['start']] = $date; } else { $dates2[] = $date; } @@ -524,10 +561,11 @@ function event_remove_duplicates($dates) { */ function event_by_id($owner_uid = 0, $event_params, $sql_extra = '') { // ownly allow events if there is a valid owner_id - if($owner_uid == 0) + if ($owner_uid == 0) { return; + } - // query for the event by event id + // Query for the event by event id $r = q("SELECT `event`.*, `item`.`id` AS `itemid`,`item`.`plink`, `item`.`author-name`, `item`.`author-avatar`, `item`.`author-link` FROM `event` LEFT JOIN `item` ON `item`.`event-id` = `event`.`id` AND `item`.`uid` = `event`.`uid` @@ -556,11 +594,12 @@ function event_by_id($owner_uid = 0, $event_params, $sql_extra = '') { * @return array Query results */ function events_by_date($owner_uid = 0, $event_params, $sql_extra = '') { - // ownly allow events if there is a valid owner_id - if($owner_uid == 0) + // Only allow events if there is a valid owner_id + if($owner_uid == 0) { return; + } - // query for the event by date + // Query for the event by date $r = q("SELECT `event`.*, `item`.`id` AS `itemid`,`item`.`plink`, `item`.`author-name`, `item`.`author-avatar`, `item`.`author-link` FROM `event` LEFT JOIN `item` ON `item`.`event-id` = `event`.`id` AND `item`.`uid` = `event`.`uid` @@ -595,46 +634,54 @@ function process_events($arr) { $last_date = ''; $fmt = t('l, F j'); if (count($arr)) { - foreach($arr as $rr) { + foreach ($arr as $rr) { - $j = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['start'], 'j') : datetime_convert('UTC','UTC',$rr['start'],'j')); - $d = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['start'], $fmt) : datetime_convert('UTC','UTC',$rr['start'],$fmt)); + $j = (($rr['adjust']) ? datetime_convert('UTC', date_default_timezone_get(), $rr['start'], 'j') : datetime_convert('UTC', 'UTC', $rr['start'], 'j')); + $d = (($rr['adjust']) ? datetime_convert('UTC', date_default_timezone_get(), $rr['start'], $fmt) : datetime_convert('UTC', 'UTC', $rr['start'], $fmt)); $d = day_translate($d); - $start = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['start'], 'c') : datetime_convert('UTC','UTC',$rr['start'],'c')); - if ($rr['nofinish']){ + $start = (($rr['adjust']) ? datetime_convert('UTC', date_default_timezone_get(), $rr['start'], 'c') : datetime_convert('UTC', 'UTC', $rr['start'], 'c')); + if ($rr['nofinish']) { $end = null; } else { - $end = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['finish'], 'c') : datetime_convert('UTC','UTC',$rr['finish'],'c')); + $end = (($rr['adjust']) ? datetime_convert('UTC', date_default_timezone_get(), $rr['finish'], 'c') : datetime_convert('UTC', 'UTC', $rr['finish'], 'c')); } - $is_first = ($d !== $last_date); $last_date = $d; - $edit = ((! $rr['cid']) ? array(App::get_baseurl().'/events/event/'.$rr['id'],t('Edit event'),'','') : null); - $title = strip_tags(html_entity_decode(bbcode($rr['summary']),ENT_QUOTES,'UTF-8')); - if(! $title) { - list($title, $_trash) = explode("$rr['id'], - 'start'=> $start, - 'end' => $end, + 'id' => $rr['id'], + 'start' => $start, + 'end' => $end, 'allDay' => false, - 'title' => $title, + 'title' => $title, - 'j' => $j, - 'd' => $d, - 'is_first'=>$is_first, - 'item'=>$rr, - 'html'=>$html, - 'plink' => array($rr['plink'],t('link to source'),'',''), + 'j' => $j, + 'd' => $d, + 'edit' => $edit, + 'drop' => $drop, + 'is_first' => $is_first, + 'item' => $rr, + 'html' => $html, + 'plink' => array($rr['plink'], t('link to source'), '', ''), ); } } @@ -652,34 +699,36 @@ function process_events($arr) { * @return string Content according to selected export format */ function event_format_export ($events, $format = 'ical', $timezone) { - if(! ((is_array($events)) && count($events))) + if (! ((is_array($events)) && count($events))) { return; + } switch ($format) { - // format the exported data as a CSV file + // Format the exported data as a CSV file case "csv": header("Content-type: text/csv"); $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 - // timezone the event is scheduled in :-/ + /// @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']); $time_format = "%H:%M:%S"; $date_format = "%Y-%m-%d"; - $o .= '"'.$event['summary'].'", "'.strftime($date_format, $tmp1) . - '", "'.strftime($time_format, $tmp1).'", "'.$event['desc'] . - '", "'.strftime($date_format, $tmp2) . - '", "'.strftime($time_format, $tmp2) . - '", "'.$event['location'].'"' . PHP_EOL; + + $o .= '"' . $event['summary'] . '", "' . strftime($date_format, $tmp1) . + '", "' . strftime($time_format, $tmp1) . '", "' . $event['desc'] . + '", "' . strftime($date_format, $tmp2) . + '", "' . strftime($time_format, $tmp2) . + '", "' . $event['location'] . '"' . PHP_EOL; } break; - // format the exported data as a ics file + // Format the exported data as a ics file case "ical": header("Content-type: text/ics"); - $o = 'BEGIN:VCALENDAR'. PHP_EOL + $o = 'BEGIN:VCALENDAR' . PHP_EOL . 'VERSION:2.0' . PHP_EOL . 'PRODID:-//friendica calendar export//0.1//EN' . PHP_EOL; /// @todo include timezone informations in cases were the time is not in UTC @@ -691,35 +740,43 @@ function event_format_export ($events, $format = 'ical', $timezone) { // 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]) { + + if ($event['start']) { $tmp = strtotime($event['start']); - $dtformat = "%Y%m%dT%H%M%S".$UTC; - $o .= 'DTSTART:'.strftime($dtformat, $tmp).PHP_EOL; + $dtformat = "%Y%m%dT%H%M%S" . $UTC; + $o .= 'DTSTART:' . strftime($dtformat, $tmp) . PHP_EOL; } + if (!$event['nofinish']) { $tmp = strtotime($event['finish']); - $dtformat = "%Y%m%dT%H%M%S".$UTC; - $o .= 'DTEND:'.strftime($dtformat, $tmp).PHP_EOL; + $dtformat = "%Y%m%dT%H%M%S" . $UTC; + $o .= 'DTEND:' . strftime($dtformat, $tmp) . PHP_EOL; } - if ($event['summary']) + + if ($event['summary']) { $tmp = $event['summary']; - $tmp = str_replace(PHP_EOL, PHP_EOL.' ',$tmp); + $tmp = str_replace(PHP_EOL, PHP_EOL . ' ', $tmp); $tmp = addcslashes($tmp, ',;'); $o .= 'SUMMARY:' . $tmp . PHP_EOL; - if ($event['desc']) + } + + if ($event['desc']) { $tmp = $event['desc']; - $tmp = str_replace(PHP_EOL, PHP_EOL.' ',$tmp); + $tmp = str_replace(PHP_EOL, PHP_EOL . ' ', $tmp); $tmp = addcslashes($tmp, ',;'); $o .= 'DESCRIPTION:' . $tmp . PHP_EOL; + } + if ($event['location']) { $tmp = $event['location']; - $tmp = str_replace(PHP_EOL, PHP_EOL.' ',$tmp); + $tmp = str_replace(PHP_EOL, PHP_EOL . ' ', $tmp); $tmp = addcslashes($tmp, ',;'); $o .= 'LOCATION:' . $tmp . PHP_EOL; } @@ -750,16 +807,18 @@ function event_format_export ($events, $format = 'ical', $timezone) { * @return array Query results */ function events_by_uid($uid = 0, $sql_extra = '') { - if($uid == 0) + if ($uid == 0) { return; + } // The permission condition if no condition was transmitted - if($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 - // don't have limitations set in 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 + // don't have limitations set in allow_cid and allow_gid if (local_user() == $uid) { $r = q("SELECT `start`, `finish`, `adjust`, `summary`, `desc`, `location`, `nofinish` FROM `event` WHERE `uid`= %d AND `cid` = 0 ", @@ -772,8 +831,9 @@ function events_by_uid($uid = 0, $sql_extra = '') { ); } - if (dbm::is_result($r)) + if (dbm::is_result($r)) { return $r; + } } /** @@ -792,25 +852,28 @@ function event_export($uid, $format = 'ical') { $process = false; - // we are allowed to show events + // 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 (dbm::is_result($r)) + if (dbm::is_result($r)) { $timezone = $r[0]['timezone']; + } - // get all events which are owned by a uid (respects permissions); + // Get all events which are owned by a uid (respects permissions); $events = events_by_uid($uid); - // we have the events that are available for the requestor - // now format the output according to the requested format - if(count($events)) + // We have the events that are available for the requestor + // now format the output according to the requested format + if (count($events)) { $res = event_format_export($events, $format, $timezone); + } // If there are results the precess was successfull - if(x($res)) + if (x($res)) { $process = true; + } - // get the file extension for the format + // Get the file extension for the format switch ($format) { case "ical": $file_ext = "ics"; @@ -825,10 +888,10 @@ function event_export($uid, $format = 'ical') { } $arr = array( - 'success' => $process, - 'format' => $format, + 'success' => $process, + 'format' => $format, 'extension' => $file_ext, - 'content' => $res, + 'content' => $res, ); return $arr; @@ -851,8 +914,9 @@ function widget_events() { // The permission testing is a little bit tricky because we have to respect many cases // It's not the private events page (we don't get the $owner_uid for /events) - if(! local_user() && ! $owner_uid) + if (! local_user() && ! $owner_uid) { return; + } // 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) @@ -860,13 +924,15 @@ function widget_events() { // 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 // export feature isn't enabled - if(intval($owner_uid) && ! local_user() && ! feature_enabled($owner_uid, "export_calendar")) + if (intval($owner_uid) && ! local_user() && ! feature_enabled($owner_uid, "export_calendar")) { return; + } return replace_macros(get_markup_template("events_aside.tpl"), array( '$etitle' => t("Export"), @@ -874,5 +940,4 @@ function widget_events() { '$export_csv' => t("Export calendar as csv"), '$user' => $user )); - } diff --git a/mod/events.php b/mod/events.php index 2b84d903e..60e7b9f39 100644 --- a/mod/events.php +++ b/mod/events.php @@ -1,12 +1,12 @@ argc == 1) { - // if it's a json request abort here becaus we don't + // If it's a json request abort here because we don't // need the widget data - if ($a->argv[1] === 'json') + if ($a->argv[1] === 'json') { return; + } $cal_widget = widget_events(); @@ -33,17 +34,17 @@ function events_init(App $a) { function events_post(App $a) { - logger('post: ' . print_r($_REQUEST,true)); + logger('post: ' . print_r($_REQUEST, true), LOGGER_DATA); if (! local_user()) { return; } - $event_id = ((x($_POST,'event_id')) ? intval($_POST['event_id']) : 0); - $cid = ((x($_POST,'cid')) ? intval($_POST['cid']) : 0); - $uid = local_user(); + $event_id = ((x($_POST, 'event_id')) ? intval($_POST['event_id']) : 0); + $cid = ((x($_POST, 'cid')) ? intval($_POST['cid']) : 0); + $uid = local_user(); - $start_text = escape_tags($_REQUEST['start_text']); + $start_text = escape_tags($_REQUEST['start_text']); $finish_text = escape_tags($_REQUEST['finish_text']); $adjust = intval($_POST['adjust']); @@ -52,34 +53,26 @@ function events_post(App $a) { // The default setting for the `private` field in event_store() is false, so mirror that $private_event = false; + $start = NULL_DATE; + $finish = NULL_DATE; + if ($start_text) { $start = $start_text; } - else { - $start = sprintf('%d-%d-%d %d:%d:0',$startyear,$startmonth,$startday,$starthour,$startminute); - } - - if ($nofinish) { - $finish = NULL_DATE; - } if ($finish_text) { $finish = $finish_text; } - else { - $finish = sprintf('%d-%d-%d %d:%d:0',$finishyear,$finishmonth,$finishday,$finishhour,$finishminute); - } if ($adjust) { - $start = datetime_convert(date_default_timezone_get(),'UTC',$start); + $start = datetime_convert(date_default_timezone_get(), 'UTC', $start); if (! $nofinish) { - $finish = datetime_convert(date_default_timezone_get(),'UTC',$finish); + $finish = datetime_convert(date_default_timezone_get(), 'UTC', $finish); } - } - else { - $start = datetime_convert('UTC','UTC',$start); + } else { + $start = datetime_convert('UTC', 'UTC', $start); if (! $nofinish) { - $finish = datetime_convert('UTC','UTC',$finish); + $finish = datetime_convert('UTC', 'UTC', $finish); } } @@ -96,19 +89,19 @@ function events_post(App $a) { $action = ($event_id == '') ? 'new' : "event/" . $event_id; $onerror_url = App::get_baseurl() . "/events/" . $action . "?summary=$summary&description=$desc&location=$location&start=$start_text&finish=$finish_text&adjust=$adjust&nofinish=$nofinish"; - if (strcmp($finish,$start) < 0 && !$nofinish) { - notice( t('Event can not end before it has started.') . EOL); + if (strcmp($finish, $start) < 0 && !$nofinish) { + notice(t('Event can not end before it has started.') . EOL); if (intval($_REQUEST['preview'])) { - echo( t('Event can not end before it has started.')); + echo t('Event can not end before it has started.'); killme(); } goaway($onerror_url); } - if((! $summary) || (! $start)) { - notice( t('Event title and start time are required.') . EOL); - if(intval($_REQUEST['preview'])) { - echo( t('Event title and start time are required.')); + if ((! $summary) || ($start === NULL_DATE)) { + notice(t('Event title and start time are required.') . EOL); + if (intval($_REQUEST['preview'])) { + echo t('Event title and start time are required.'); killme(); } goaway($onerror_url); @@ -116,35 +109,33 @@ function events_post(App $a) { $share = ((intval($_POST['share'])) ? intval($_POST['share']) : 0); - $c = q("select id from contact where uid = %d and self = 1 limit 1", + $c = q("SELECT `id` FROM `contact` WHERE `uid` = %d AND `self` LIMIT 1", intval(local_user()) ); - if(count($c)) + if (count($c)) { $self = $c[0]['id']; - else + } else { $self = 0; + } - if($share) { + 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 ) - { + 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) ) - { + if (strlen($str_group_allow) || strlen($str_contact_allow) || strlen($str_group_deny) || strlen($str_contact_deny)) { $private_event = true; } - } - else { + } else { // Note: do not set `private` field for self-only events. It will // keep even you from seeing them! $str_contact_allow = '<' . $self . '>'; @@ -153,46 +144,45 @@ function events_post(App $a) { $datarray = array(); - $datarray['guid'] = get_guid(32); - $datarray['start'] = $start; - $datarray['finish'] = $finish; - $datarray['summary'] = $summary; - $datarray['desc'] = $desc; - $datarray['location'] = $location; - $datarray['type'] = $type; - $datarray['adjust'] = $adjust; - $datarray['nofinish'] = $nofinish; - $datarray['uid'] = $uid; - $datarray['cid'] = $cid; + $datarray['guid'] = get_guid(32); + $datarray['start'] = $start; + $datarray['finish'] = $finish; + $datarray['summary'] = $summary; + $datarray['desc'] = $desc; + $datarray['location'] = $location; + $datarray['type'] = $type; + $datarray['adjust'] = $adjust; + $datarray['nofinish'] = $nofinish; + $datarray['uid'] = $uid; + $datarray['cid'] = $cid; $datarray['allow_cid'] = $str_contact_allow; $datarray['allow_gid'] = $str_group_allow; - $datarray['deny_cid'] = $str_contact_deny; - $datarray['deny_gid'] = $str_group_deny; - $datarray['private'] = (($private_event) ? 1 : 0); - $datarray['id'] = $event_id; - $datarray['created'] = $created; - $datarray['edited'] = $edited; + $datarray['deny_cid'] = $str_contact_deny; + $datarray['deny_gid'] = $str_group_deny; + $datarray['private'] = (($private_event) ? 1 : 0); + $datarray['id'] = $event_id; + $datarray['created'] = $created; + $datarray['edited'] = $edited; - if(intval($_REQUEST['preview'])) { + if (intval($_REQUEST['preview'])) { $html = format_event_html($datarray); echo $html; - killme(); + killme(); } $item_id = event_store($datarray); - if(! $cid) + if (! $cid) { proc_run(PRIORITY_HIGH, "include/notifier.php", "event", $item_id); + } goaway($_SESSION['return_url']); } - - function events_content(App $a) { if (! local_user()) { - notice( t('Permission denied.') . EOL); + notice(t('Permission denied.') . EOL); return; } @@ -201,14 +191,14 @@ function events_content(App $a) { } if (($a->argc > 2) && ($a->argv[1] === 'ignore') && intval($a->argv[2])) { - $r = q("update event set ignore = 1 where id = %d and uid = %d", + $r = q("UPDATE `event` SET `ignore` = 1 WHERE `id` = %d AND `uid` = %d", intval($a->argv[2]), intval(local_user()) ); } if (($a->argc > 2) && ($a->argv[1] === 'unignore') && intval($a->argv[2])) { - $r = q("update event set ignore = 0 where id = %d and uid = %d", + $r = q("UPDATE `event` SET `ignore` = 0 WHERE `id` = %d AND `uid` = %d", intval($a->argv[2]), intval(local_user()) ); @@ -224,7 +214,7 @@ function events_content(App $a) { $i18n = get_event_strings(); $htpl = get_markup_template('event_head.tpl'); - $a->page['htmlhead'] .= replace_macros($htpl,array( + $a->page['htmlhead'] .= replace_macros($htpl, array( '$baseurl' => App::get_baseurl(), '$module_url' => '/events', '$modparams' => 1, @@ -232,27 +222,30 @@ function events_content(App $a) { )); $etpl = get_markup_template('event_end.tpl'); - $a->page['end'] .= replace_macros($etpl,array( + $a->page['end'] .= replace_macros($etpl, array( '$baseurl' => App::get_baseurl(), )); - $o =""; + $o = ''; // tabs - if ($a->theme_events_in_profile) - $tabs = profile_tabs($a, True); - - + if ($a->theme_events_in_profile) { + $tabs = profile_tabs($a, true); + } $mode = 'view'; $y = 0; $m = 0; - $ignored = ((x($_REQUEST,'ignored')) ? intval($_REQUEST['ignored']) : 0); + $ignored = ((x($_REQUEST, 'ignored')) ? intval($_REQUEST['ignored']) : 0); - if($a->argc > 1) { + if ($a->argc > 1) { if ($a->argc > 2 && $a->argv[1] == 'event') { $mode = 'edit'; $event_id = intval($a->argv[2]); } + if ($a->argc > 2 && $a->argv[1] == 'drop') { + $mode = 'drop'; + $event_id = intval($a->argv[2]); + } if ($a->argv[1] === 'new') { $mode = 'new'; $event_id = 0; @@ -267,9 +260,8 @@ function events_content(App $a) { // The view mode part is similiar to /mod/cal.php if ($mode == 'view') { - - $thisyear = datetime_convert('UTC',date_default_timezone_get(),'now','Y'); - $thismonth = datetime_convert('UTC',date_default_timezone_get(),'now','m'); + $thisyear = datetime_convert('UTC', date_default_timezone_get(), 'now', 'Y'); + $thismonth = datetime_convert('UTC', date_default_timezone_get(), 'now', 'm'); if (! $y) { $y = intval($thisyear); } @@ -289,47 +281,47 @@ function events_content(App $a) { $nextyear = $y; $nextmonth = $m + 1; - if($nextmonth > 12) { - $nextmonth = 1; + if ($nextmonth > 12) { + $nextmonth = 1; $nextyear ++; } $prevyear = $y; - if($m > 1) + if ($m > 1) { $prevmonth = $m - 1; - else { + } else { $prevmonth = 12; $prevyear --; } - $dim = get_dim($y,$m); - $start = sprintf('%d-%d-%d %d:%d:%d',$y,$m,1,0,0,0); - $finish = sprintf('%d-%d-%d %d:%d:%d',$y,$m,$dim,23,59,59); + $dim = get_dim($y, $m); + $start = sprintf('%d-%d-%d %d:%d:%d', $y, $m, 1, 0, 0, 0); + $finish = sprintf('%d-%d-%d %d:%d:%d', $y, $m, $dim, 23, 59, 59); - if ($a->argv[1] === 'json'){ - if (x($_GET,'start')) $start = $_GET['start']; - if (x($_GET,'end')) $finish = $_GET['end']; + if ($a->argv[1] === 'json') { + if (x($_GET, 'start')) {$start = $_GET['start'];} + if (x($_GET, 'end')) {$finish = $_GET['end'];} } - $start = datetime_convert('UTC','UTC',$start); - $finish = datetime_convert('UTC','UTC',$finish); + $start = datetime_convert('UTC', 'UTC', $start); + $finish = datetime_convert('UTC', 'UTC', $finish); - $adjust_start = datetime_convert('UTC', date_default_timezone_get(), $start); + $adjust_start = datetime_convert('UTC', date_default_timezone_get(), $start); $adjust_finish = datetime_convert('UTC', date_default_timezone_get(), $finish); // put the event parametes in an array so we can better transmit them $event_params = array( - 'event_id' => (x($_GET,'id') ? $_GET["id"] : 0), - 'start' => $start, - 'finish' => $finish, - 'adjust_start' => $adjust_start, + 'event_id' => (x($_GET, 'id') ? $_GET['id'] : 0), + 'start' => $start, + 'finish' => $finish, + 'adjust_start' => $adjust_start, 'adjust_finish' => $adjust_finish, - 'ignored' => $ignored, + 'ignored' => $ignored, ); // get events by id or by date - if (x($_GET,'id')){ + if (x($_GET, 'id')) { $r = event_by_id(local_user(), $event_params); } else { $r = events_by_date(local_user(), $event_params); @@ -340,7 +332,7 @@ function events_content(App $a) { if (dbm::is_result($r)) { $r = sort_by_date($r); foreach ($r as $rr) { - $j = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['start'], 'j') : datetime_convert('UTC','UTC',$rr['start'],'j')); + $j = (($rr['adjust']) ? datetime_convert('UTC', date_default_timezone_get(), $rr['start'], 'j') : datetime_convert('UTC', 'UTC', $rr['start'], 'j')); if (! x($links,$j)) { $links[$j] = App::get_baseurl() . '/' . $a->cmd . '#link-' . $j; } @@ -356,127 +348,127 @@ function events_content(App $a) { } if ($a->argv[1] === 'json'){ - echo json_encode($events); killme(); + echo json_encode($events); + killme(); } - // links: array('href', 'text', 'extra css classes', 'title') - if (x($_GET,'id')){ + if (x($_GET, 'id')) { $tpl = get_markup_template("event.tpl"); } else { -// if (get_config('experimentals','new_calendar')==1){ - $tpl = get_markup_template("events_js.tpl"); -// } else { -// $tpl = get_markup_template("events.tpl"); -// } + $tpl = get_markup_template("events_js.tpl"); } // Get rid of dashes in key names, Smarty3 can't handle them - foreach($events as $key => $event) { + foreach ($events as $key => $event) { $event_item = array(); - foreach($event['item'] as $k => $v) { - $k = str_replace('-','_',$k); + foreach ($event['item'] as $k => $v) { + $k = str_replace('-' ,'_', $k); $event_item[$k] = $v; } $events[$key]['item'] = $event_item; } $o = replace_macros($tpl, array( - '$baseurl' => App::get_baseurl(), - '$tabs' => $tabs, - '$title' => t('Events'), - '$view' => t('View'), - '$new_event' => array(App::get_baseurl().'/events/new',t('Create New Event'),'',''), - '$previous' => array(App::get_baseurl()."/events/$prevyear/$prevmonth",t('Previous'),'',''), - '$next' => array(App::get_baseurl()."/events/$nextyear/$nextmonth",t('Next'),'',''), - '$calendar' => cal($y,$m,$links, ' eventcal'), + '$baseurl' => App::get_baseurl(), + '$tabs' => $tabs, + '$title' => t('Events'), + '$view' => t('View'), + '$new_event' => array(App::get_baseurl() . '/events/new', t('Create New Event'), '', ''), + '$previous' => array(App::get_baseurl() . '/events/$prevyear/$prevmonth', t('Previous'), '', ''), + '$next' => array(App::get_baseurl() . '/events/$nextyear/$nextmonth', t('Next'), '', ''), + '$calendar' => cal($y, $m, $links, ' eventcal'), - '$events' => $events, + '$events' => $events, - "today" => t("today"), - "month" => t("month"), - "week" => t("week"), - "day" => t("day"), - "list" => t("list"), + '$today' => t('today'), + '$month' => t('month'), + '$week' => t('week'), + '$day' => t('day'), + '$list' => t('list'), )); - if (x($_GET,'id')){ echo $o; killme(); } + if (x($_GET, 'id')) { + echo $o; + killme(); + } return $o; - } - if($mode === 'edit' && $event_id) { + if ($mode === 'edit' && $event_id) { $r = q("SELECT * FROM `event` WHERE `id` = %d AND `uid` = %d LIMIT 1", intval($event_id), intval(local_user()) ); - if (dbm::is_result($r)) + if (dbm::is_result($r)) { $orig_event = $r[0]; + } } // Passed parameters overrides anything found in the DB - if($mode === 'edit' || $mode === 'new') { - if(!x($orig_event)) $orig_event = array(); + if ($mode === 'edit' || $mode === 'new') { + if (!x($orig_event)) {$orig_event = array();} // In case of an error the browser is redirected back here, with these parameters filled in with the previous values - if(x($_REQUEST,'nofinish')) $orig_event['nofinish'] = $_REQUEST['nofinish']; - if(x($_REQUEST,'adjust')) $orig_event['adjust'] = $_REQUEST['adjust']; - if(x($_REQUEST,'summary')) $orig_event['summary'] = $_REQUEST['summary']; - if(x($_REQUEST,'description')) $orig_event['description'] = $_REQUEST['description']; - if(x($_REQUEST,'location')) $orig_event['location'] = $_REQUEST['location']; - if(x($_REQUEST,'start')) $orig_event['start'] = $_REQUEST['start']; - if(x($_REQUEST,'finish')) $orig_event['finish'] = $_REQUEST['finish']; - } - - if($mode === 'edit' || $mode === 'new') { + if (x($_REQUEST, 'nofinish')) {$orig_event['nofinish'] = $_REQUEST['nofinish'];} + if (x($_REQUEST, 'adjust')) {$orig_event['adjust'] = $_REQUEST['adjust'];} + if (x($_REQUEST, 'summary')) {$orig_event['summary'] = $_REQUEST['summary'];} + if (x($_REQUEST, 'description')) {$orig_event['description'] = $_REQUEST['description'];} + if (x($_REQUEST, 'location')) {$orig_event['location'] = $_REQUEST['location'];} + if (x($_REQUEST, 'start')) {$orig_event['start'] = $_REQUEST['start'];} + if (x($_REQUEST, 'finish')) {$orig_event['finish'] = $_REQUEST['finish'];} $n_checked = ((x($orig_event) && $orig_event['nofinish']) ? ' checked="checked" ' : ''); - $a_checked = ((x($orig_event) && $orig_event['adjust']) ? ' checked="checked" ' : ''); - $t_orig = ((x($orig_event)) ? $orig_event['summary'] : ''); - $d_orig = ((x($orig_event)) ? $orig_event['desc'] : ''); + $a_checked = ((x($orig_event) && $orig_event['adjust']) ? ' checked="checked" ' : ''); + + $t_orig = ((x($orig_event)) ? $orig_event['summary'] : ''); + $d_orig = ((x($orig_event)) ? $orig_event['desc'] : ''); $l_orig = ((x($orig_event)) ? $orig_event['location'] : ''); - $eid = ((x($orig_event)) ? $orig_event['id'] : 0); - $cid = ((x($orig_event)) ? $orig_event['cid'] : 0); - $uri = ((x($orig_event)) ? $orig_event['uri'] : ''); + $eid = ((x($orig_event)) ? $orig_event['id'] : 0); + $cid = ((x($orig_event)) ? $orig_event['cid'] : 0); + $uri = ((x($orig_event)) ? $orig_event['uri'] : ''); - - if(! x($orig_event)) + if (! x($orig_event)) { $sh_checked = ''; - else - $sh_checked = (($orig_event['allow_cid'] === '<' . local_user() . '>' && (! $orig_event['allow_gid']) && (! $orig_event['deny_cid']) && (! $orig_event['deny_gid'])) ? '' : ' checked="checked" ' ); + } else { + $sh_checked = (($orig_event['allow_cid'] === '<' . local_user() . '>' && (! $orig_event['allow_gid']) && (! $orig_event['deny_cid']) && (! $orig_event['deny_gid'])) ? '' : ' checked="checked" '); + } - if($cid OR ($mode !== 'new')) + if ($cid OR ($mode !== 'new')) { $sh_checked .= ' disabled="disabled" '; - + } $sdt = ((x($orig_event)) ? $orig_event['start'] : 'now'); $fdt = ((x($orig_event)) ? $orig_event['finish'] : 'now'); $tz = date_default_timezone_get(); - if(x($orig_event)) + if (x($orig_event)) { $tz = (($orig_event['adjust']) ? date_default_timezone_get() : 'UTC'); + } - $syear = datetime_convert('UTC', $tz, $sdt, 'Y'); + $syear = datetime_convert('UTC', $tz, $sdt, 'Y'); $smonth = datetime_convert('UTC', $tz, $sdt, 'm'); - $sday = datetime_convert('UTC', $tz, $sdt, 'd'); + $sday = datetime_convert('UTC', $tz, $sdt, 'd'); - $shour = ((x($orig_event)) ? datetime_convert('UTC', $tz, $sdt, 'H') : 0); + $shour = ((x($orig_event)) ? datetime_convert('UTC', $tz, $sdt, 'H') : 0); $sminute = ((x($orig_event)) ? datetime_convert('UTC', $tz, $sdt, 'i') : 0); - $fyear = datetime_convert('UTC', $tz, $fdt, 'Y'); + $fyear = datetime_convert('UTC', $tz, $fdt, 'Y'); $fmonth = datetime_convert('UTC', $tz, $fdt, 'm'); - $fday = datetime_convert('UTC', $tz, $fdt, 'd'); + $fday = datetime_convert('UTC', $tz, $fdt, 'd'); - $fhour = ((x($orig_event)) ? datetime_convert('UTC', $tz, $fdt, 'H') : 0); + $fhour = ((x($orig_event)) ? datetime_convert('UTC', $tz, $fdt, 'H') : 0); $fminute = ((x($orig_event)) ? datetime_convert('UTC', $tz, $fdt, 'i') : 0); $f = get_config('system','event_input_format'); - if(! $f) + if (! $f) { $f = 'ymd'; + } - require_once('include/acl_selectors.php'); + require_once 'include/acl_selectors.php' ; - if ($mode === 'new') + if ($mode === 'new') { $acl = (($cid) ? '' : populate_acl(((x($orig_event)) ? $orig_event : $a->user))); + } $tpl = get_markup_template('event_form.tpl'); @@ -489,11 +481,11 @@ function events_content(App $a) { '$title' => t('Event details'), '$desc' => t('Starting date and Title are required.'), '$s_text' => t('Event Starts:') . ' *', - '$s_dsel' => datetimesel($f,new DateTime(),DateTime::createFromFormat('Y',$syear+5),DateTime::createFromFormat('Y-m-d H:i',"$syear-$smonth-$sday $shour:$sminute"),t('Event Starts:'),'start_text',true,true,'','',true), + '$s_dsel' => datetimesel($f, new DateTime(), DateTime::createFromFormat('Y', $syear+5), DateTime::createFromFormat('Y-m-d H:i', "$syear-$smonth-$sday $shour:$sminute"), t('Event Starts:'), 'start_text', true, true, '', '', true), '$n_text' => t('Finish date/time is not known or not relevant'), '$n_checked' => $n_checked, '$f_text' => t('Event Finishes:'), - '$f_dsel' => datetimesel($f,new DateTime(),DateTime::createFromFormat('Y',$fyear+5),DateTime::createFromFormat('Y-m-d H:i',"$fyear-$fmonth-$fday $fhour:$fminute"),t('Event Finishes:'),'finish_text',true,true,'start_text'), + '$f_dsel' => datetimesel($f, new DateTime(), DateTime::createFromFormat('Y', $fyear+5), DateTime::createFromFormat('Y-m-d H:i', "$fyear-$fmonth-$fday $fhour:$fminute"), t('Event Finishes:'), 'finish_text', true, true, 'start_text'), '$a_text' => t('Adjust for viewer timezone'), '$a_checked' => $a_checked, '$d_text' => t('Description:'), @@ -511,12 +503,33 @@ function events_content(App $a) { '$preview' => t('Preview'), '$acl' => $acl, '$submit' => t('Submit'), - '$basic' => t("Basic"), - '$advanced' => t("Advanced"), + '$basic' => t('Basic'), + '$advanced' => t('Advanced'), '$permissions' => t('Permissions'), )); return $o; } + + // Remove an event from the calendar and its related items + if ($mode === 'drop' && $event_id) { + $del = 0; + + $params = array('event_id' => ($event_id)); + $ev = event_by_id(local_user(), $params); + + // Delete only real events (no birthdays) + if (dbm::is_result($ev) && $ev[0]['type'] == 'event') { + $del = drop_item($ev[0]['itemid'], false); + } + + if ($del == 0) { + notice(t('Failed to remove event' ) . EOL); + } else { + info(t('Event removed') . EOL); + } + + goaway(App::get_baseurl() . '/events'); + } } diff --git a/view/templates/event.tpl b/view/templates/event.tpl index 9cad2444c..328e0e8a1 100644 --- a/view/templates/event.tpl +++ b/view/templates/event.tpl @@ -6,6 +6,7 @@ {{$event.html}} {{if $event.item.plink}}{{/if}} {{if $event.edit}}{{/if}} + {{if $event.drop}}{{/if}}
{{/foreach}} diff --git a/view/theme/frio/css/style.css b/view/theme/frio/css/style.css index 8d7a5f769..47973ed44 100644 --- a/view/theme/frio/css/style.css +++ b/view/theme/frio/css/style.css @@ -2193,6 +2193,9 @@ ul li:hover .contact-wrapper a.contact-action-link:hover { #event-edit-form-wrapper #event-edit-time { padding: 10px 0; } +.event-buttons .plink-event-link { + margin-left: 20px; +} /* Profiles Page */ .profile-listing-table { display: table; diff --git a/view/theme/frio/templates/event.tpl b/view/theme/frio/templates/event.tpl index ee2875686..dc37f1926 100644 --- a/view/theme/frio/templates/event.tpl +++ b/view/theme/frio/templates/event.tpl @@ -17,8 +17,9 @@
- {{if $event.item.plink}}{{/if}} - {{if $event.edit}}{{/if}} + {{if $event.edit}}{{/if}} + {{if $event.drop}}{{/if}} + {{if $event.item.plink}}{{/if}}