public void calprops( DDay.iCal.iCalendar iCal ) //throws RecognitionException, TokenStreamException { calprop(iCal); { // ( ... )+ int _cnt20 = 0; for (;;) { if ((tokenSet_0_.member(LA(1)))) { calprop(iCal); } else { if (_cnt20 >= 1) { goto _loop20_breakloop; } else { throw new NoViableAltException(LT(1), getFilename());; } } _cnt20++; } _loop20_breakloop :; } // ( ... )+ }
/// <summary> /// Old DDay.iCal does it WRONG, because doesn't respect Timezones DST rules or offsets, /// just append the TZ to them but does no calculations, so all DST changes and offsets comes /// from the local machine. /// </summary> /// <returns></returns> static string DDayRecurrentExample(string tz) { // This time created is being used as the local time on the time zone later specified, so // is NOT the local machine time and is a different UTC value depending on the TZ var now = new DateTime(2016, 1, 1, 12, 0, 0); var later = now.AddHours(1); var rrule = new DDay.iCal.RecurrencePattern(DDay.iCal.FrequencyType.Monthly, 1) { Count = 12 }; var e = new DDay.iCal.Event { DTStart = new DDay.iCal.iCalDateTime(now, tz), DTEnd = new DDay.iCal.iCalDateTime(later, tz) }; e.RecurrenceRules.Add(rrule); var calendar = new DDay.iCal.iCalendar(); calendar.Events.Add(e); //var serializer = new CalendarSerializer(new SerializationContext()); //return serializer.SerializeToString(calendar); var end = new DateTime(2017, 1, 1, 12, 0, 0); return(e.GetOccurrences(now, end).Aggregate("", (ret, a) => { return ret + a.Period.StartTime.UTC.ToString() + "\n"; })); }
public static Schedule SyncSchedule( ESpace.Occurrence eSpaceOccurrence, EventItemOccurrence rockOccurrence, out bool changed ) { changed = false; if (rockOccurrence.Schedule == null) { rockOccurrence.Schedule = new Schedule { ForeignKey = ForeignKey_eSpaceOccurrenceId, ForeignId = eSpaceOccurrence.OccurrenceId.Value }; changed = true; } var schedule = rockOccurrence.Schedule; if (schedule.EffectiveStartDate != eSpaceOccurrence.EventStart) { schedule.EffectiveStartDate = eSpaceOccurrence.EventStart; changed = true; } if (schedule.EffectiveEndDate != eSpaceOccurrence.EventEnd) { schedule.EffectiveEndDate = eSpaceOccurrence.EventEnd; changed = true; } var scheduleName = ""; if (schedule.Name != scheduleName) { schedule.Name = scheduleName; changed = true; } var iCalEvent = SyncICalEvent(eSpaceOccurrence, schedule, out var iCalChanged); if (iCalChanged) { // Serialize the event var calendar = new DDay.iCal.iCalendar(); calendar.Events.Add(iCalEvent); var serializer = new DDay.iCal.Serialization.iCalendar.iCalendarSerializer(calendar); schedule.iCalendarContent = serializer.SerializeToString(calendar); changed = true; } return(schedule); }
public void icalbody( DDay.iCal.iCalendar iCal ) //throws RecognitionException, TokenStreamException { { switch (LA(1)) { case IANA_TOKEN: case X_NAME: case PRODID: case VERSION: case CALSCALE: case METHOD: { calprops(iCal); break; } case BEGIN: case CRLF: case END: { break; } default: { throw new NoViableAltException(LT(1), getFilename()); } } } { switch (LA(1)) { case BEGIN: case CRLF: { component(iCal); break; } case END: { break; } default: { throw new NoViableAltException(LT(1), getFilename()); } } } }
public DDay.iCal.iCalendar icalobject() //throws RecognitionException, TokenStreamException { DDay.iCal.iCalendar iCal = (DDay.iCal.iCalendar)Activator.CreateInstance(iCalendarType);; { // ( ... )* for (;;) { if ((LA(1) == BEGIN)) { match(BEGIN); match(COLON); match(VCALENDAR); match(CRLF); icalbody(iCal); match(END); match(COLON); match(VCALENDAR); { // ( ... )* for (;;) { if ((LA(1) == CRLF)) { match(CRLF); } else { goto _loop4_breakloop; } } _loop4_breakloop :; } // ( ... )* } else { goto _loop5_breakloop; } } _loop5_breakloop :; } // ( ... )* iCal.OnLoad(EventArgs.Empty); return(iCal); }
public override iCalObject Deserialize(TextReader tr, Type iCalendarType) { // Create a lexer for our text stream iCalLexer lexer = new iCalLexer(tr); iCalParser parser = new iCalParser(lexer); // Determine the calendar type we'll be using when constructing // iCalendar objects... parser.iCalendarType = iCalendarType; // Parse the iCalendar! DDay.iCal.iCalendar iCal = parser.icalobject(); // Close our text stream tr.Close(); // Return the parsed iCalendar return(iCal); }
public static DDay.iCal.IICalendar ConvertCalendar(BaseCalendar calandarObj) { if (calandarObj == null) { return(null); } var result = new DDay.iCal.iCalendar(); result.Method = DDay.iCal.CalendarMethods.Publish; result.Scale = DDay.iCal.CalendarScales.Gregorian; result.Version = DDay.iCal.CalendarVersions.v2_0; result.ProductID = "-//Ascensio System//OnlyOffice Calendar//EN"; if (!string.IsNullOrEmpty(calandarObj.Name)) { result.AddProperty("X-WR-CALNAME", calandarObj.Name); } if (!string.IsNullOrEmpty(calandarObj.Description)) { result.AddProperty("X-WR-CALDESC", calandarObj.Description); } if (calandarObj.TimeZone == null) { calandarObj.TimeZone = CoreContext.TenantManager.GetCurrentTenant().TimeZone; } var olsonTzId = TimeZoneConverter.WindowsTzId2OlsonTzId(calandarObj.TimeZone.Id); var olsonTz = olsonTzId == calandarObj.TimeZone.Id ? calandarObj.TimeZone : TimeZoneInfo.CreateCustomTimeZone(olsonTzId, calandarObj.TimeZone.BaseUtcOffset, calandarObj.TimeZone.DisplayName, calandarObj.TimeZone.StandardName); result.AddTimeZone(olsonTz); result.AddProperty("X-WR-TIMEZONE", olsonTzId); return(result); }
public void icalbody( DDay.iCal.iCalendar iCal ) //throws RecognitionException, TokenStreamException { { // ( ... )* for (;;) { if ((LA(1) == IANA_TOKEN || LA(1) == X_NAME)) { calprop(iCal); } else { goto _loop12_breakloop; } } _loop12_breakloop :; } // ( ... )* { switch (LA(1)) { case BEGIN : { component(iCal); break; } case END: { break; } default: { throw new NoViableAltException(LT(1), getFilename()); } } } }
public override iCalObject Deserialize(TextReader tr, Type iCalendarType) { // Normalize line endings, so "\r" is treated the same as "\r\n" // NOTE: fixed bug #1773194 - Some applications emit mixed line endings TextReader textReader = NormalizeLineEndings(tr, !OptimizeForSpeed); // Create a lexer for our text stream iCalLexer lexer = new iCalLexer(textReader); iCalParser parser = new iCalParser(lexer); // Determine the calendar type we'll be using when constructing // iCalendar objects... parser.iCalendarType = iCalendarType; // Parse the iCalendar! DDay.iCal.iCalendar iCal = parser.icalobject(); // Close our text stream textReader.Close(); // Return the parsed iCalendar return(iCal); }
public string RenderIcs(ZonelessEventStore eventstore, string view, int count, DateTime from, DateTime to, Dictionary<string,object> args) { eventstore = GetEventStore(eventstore, view, count, from, to); var ical = new DDay.iCal.iCalendar(); Collector.AddTimezoneToDDayICal(ical, this.calinfo.tzinfo); var tzid = this.calinfo.tzinfo.Id; foreach (var evt in eventstore.events) { var ical_evt = new DDay.iCal.Event(); ical_evt.Start = new DDay.iCal.iCalDateTime(evt.dtstart); ical_evt.Start.TZID = tzid; ical_evt.End = new DDay.iCal.iCalDateTime(evt.dtend); ical_evt.End.TZID = tzid; ical_evt.Summary = evt.title; ical_evt.Url = new Uri(evt.url); if (evt.description != null) ical_evt.Description = evt.description + " " + evt.url; else ical_evt.Description = evt.url; ical_evt.Description = evt.description; ical_evt.Location = evt.location; Collector.AddCategoriesFromCatString(ical_evt, evt.categories); ical.Children.Add(ical_evt); } var ics_text = Utils.SerializeIcalToIcs(ical); return ics_text; }
public static List <TaggableSource> GetFacebookPages(Calinfo calinfo, string location) { var search_template = String.Format("site:www.facebook.com/__TARGET__ \"{0}\"", location); var search_for_fan_pages = search_template.Replace("__TARGET__", "pages"); var search_for_groups = search_template.Replace("__TARGET__", "groups"); var stats = new Dictionary <string, object>(); var fan_page_results = Search.BingSearch(search_for_fan_pages, 1000, stats); // var group_results = Search.BingSearch(search_for_groups, 1000, stats); // doesn't work, location string won't usually appear var group_results = new List <SearchResult>(); // placeholder for now var bing_results = fan_page_results.Concat(group_results).ToList(); var taggable_sources = InitializeTaggables(calinfo, "facebook"); var seen_ids = new List <string>(); string name_and_pk = "facebooksources"; var settings = GenUtils.GetSettingsFromAzureTable(); var options = new ParallelOptions(); Parallel.ForEach(source: bing_results, parallelOptions: options, body: (result) => //foreach (var result in bing_results) { try { var url = Regex.Replace(result.url, @"\?.+", ""); // remove query string if any var name = Regex.Match(result.url, "facebook.com/(pages|groups)/([^/]+)").Groups[2].Value; name = name.Replace('-', ' '); var fb_id = Utils.id_from_fb_fanpage_or_group(url); if (seen_ids.Exists(x => x == fb_id)) { return; } else { seen_ids.Add(fb_id); } string slat = null; string slon = null; var ical = new DDay.iCal.iCalendar(); var facebook_access_token = settings["facebook_access_token"]; // todo: merge with code in collector var j_obj = Utils.GetFacebookEventsAsJsonObject(fb_id, facebook_access_token); var events = Utils.iCalendarizeJsonObjectFromFacebook(j_obj, calinfo, ical, slat, slon, settings); if (events.Count == 0) // no calendar on this page { return; } string page; if (FacebookPageMatchesLocation(url, location, settings, out page) == false) { return; } string origin_url = ""; if (!String.IsNullOrEmpty(page)) { origin_url = GetFacebookPageOrGroupOriginUrl(page); } var ical_url = string.Format("http://{0}/ics_from_fb_page?fb_id={1}&elmcity_id={2}", ElmcityUtils.Configurator.appdomain, fb_id, calinfo.id); var has_future_events = FacebookPageHasFutureEvents(events, calinfo); var taggable = new TaggableSource(name, calinfo.id, url + "?sk=events", ical_url, has_future_events, origin_url); taggable_sources.Add(taggable); RememberTaggable(name_and_pk, fb_id, taggable); } catch (Exception e) { GenUtils.PriorityLogMsg("exception", "GetFacebookPages", e.Message + e.StackTrace); return; } }); return(taggable_sources); }
public static List<TaggableSource> GetFacebookPages(Calinfo calinfo, string location) { var search_template = String.Format( "site:www.facebook.com/__TARGET__ \"{0}\"", location); var search_for_fan_pages = search_template.Replace("__TARGET__", "pages"); var search_for_groups = search_template.Replace("__TARGET__", "groups"); var stats = new Dictionary<string, object>(); var fan_page_results = Search.BingSearch(search_for_fan_pages, 1000, stats); // var group_results = Search.BingSearch(search_for_groups, 1000, stats); // doesn't work, location string won't usually appear var group_results = new List<SearchResult>(); // placeholder for now var bing_results = fan_page_results.Concat(group_results).ToList(); var taggable_sources = InitializeTaggables(calinfo, "facebook"); var seen_ids = new List<string>(); string name_and_pk = "facebooksources"; var settings = GenUtils.GetSettingsFromAzureTable(); var options = new ParallelOptions(); Parallel.ForEach(source: bing_results, parallelOptions: options, body: (result) => //foreach (var result in bing_results) { try { var url = Regex.Replace(result.url, @"\?.+", ""); // remove query string if any var name = Regex.Match(result.url, "facebook.com/(pages|groups)/([^/]+)").Groups[2].Value; name = name.Replace('-', ' '); var fb_id = Utils.id_from_fb_fanpage_or_group(url); if (seen_ids.Exists(x => x == fb_id)) return; else seen_ids.Add(fb_id); string slat = null; string slon = null; var ical = new DDay.iCal.iCalendar(); var facebook_access_token = settings["facebook_access_token"]; // todo: merge with code in collector var j_obj = Utils.GetFacebookEventsAsJsonObject(fb_id, facebook_access_token); var events = Utils.iCalendarizeJsonObjectFromFacebook(j_obj, calinfo, ical, slat, slon, settings); if (events.Count == 0) // no calendar on this page return; string page; if (FacebookPageMatchesLocation(url, location, settings, out page) == false) return; string origin_url = ""; if ( ! String.IsNullOrEmpty(page) ) origin_url = GetFacebookPageOrGroupOriginUrl(page); var ical_url = string.Format("http://{0}/ics_from_fb_page?fb_id={1}&elmcity_id={2}", ElmcityUtils.Configurator.appdomain, fb_id, calinfo.id); var has_future_events = FacebookPageHasFutureEvents(events, calinfo); var taggable = new TaggableSource(name, calinfo.id, url + "?sk=events", ical_url, has_future_events, origin_url); taggable_sources.Add(taggable); RememberTaggable(name_and_pk, fb_id, taggable); } catch (Exception e) { GenUtils.PriorityLogMsg("exception", "GetFacebookPages", e.Message + e.StackTrace); return; } }); return taggable_sources; }
public ActionResult TestIcal() { DDay.iCal.iCalendar calendario = new DDay.iCal.iCalendar(); DDay.iCal.Event evento = calendario.Create<DDay.iCal.Event>(); evento.Start = new DDay.iCal.iCalDateTime(System.DateTime.Now); evento.Summary = "Presentacion Demo"; evento.End = new DDay.iCal.iCalDateTime(System.DateTime.Now).AddHours(2); evento.GeographicLocation = new DDay.iCal.GeographicLocation(-33.372909, -70.581080); DDay.iCal.Serialization.iCalendar.iCalendarSerializer serializer = new DDay.iCal.Serialization.iCalendar.iCalendarSerializer(calendario); String ruta = Server.MapPath("..\\Content\\Eventos\\"); serializer.Serialize(ruta+"filename.ics"); return View(); }
public iCalendarSerializer(DDay.iCal.iCalendar iCal) : base(iCal) { iCalendar = iCal; }
public iCalendarSerializer(DDay.iCal.iCalendar iCal) : base(iCal) { this.m_iCal = iCal; }
// in support of add-to-calendar public static string RenderEventAsIcs(string elmcity_id, string summary, string start, string end, string description, string location, string url) { try { var calinfo = Utils.AcquireCalinfo(elmcity_id); var tzname = calinfo.tzname; var tzid = calinfo.tzinfo.Id; var ical = new DDay.iCal.iCalendar(); Collector.AddTimezoneToDDayICal(ical, Utils.TzinfoFromName(tzname)); var evt = new DDay.iCal.Event(); evt.Summary = summary; evt.Description = Utils.MakeAddToCalDescription(description, url, location); evt.Location = location; evt.Url = new Uri(url); var dtstart = DateTime.Parse(start); evt.Start = new DDay.iCal.iCalDateTime(dtstart, tzname); evt.Start.TZID = tzid; if (evt.End != null) { var dtend = DateTime.Parse(end); evt.End = new DDay.iCal.iCalDateTime(dtend, tzname); evt.End.TZID = tzid; } ical.Events.Add(evt); var serializer = new DDay.iCal.Serialization.iCalendar.iCalendarSerializer(); return serializer.SerializeToString(ical); } catch (Exception e) { GenUtils.PriorityLogMsg("exception", "RenderEventAsIcs", e.Message); return "exception: " + e.Message; } }