Ejemplo n.º 1
0
        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 :;
            }        // ( ... )+
        }
Ejemplo n.º 2
0
        /// <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";
            }));
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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());
                }
                }
            }
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 8
0
        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());
                }
                }
            }
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
        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;
        }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
        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;
        }
Ejemplo n.º 13
0
 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();
 }
Ejemplo n.º 14
0
 public iCalendarSerializer(DDay.iCal.iCalendar iCal) : base(iCal)
 {
     iCalendar = iCal;
 }
Ejemplo n.º 15
0
 public iCalendarSerializer(DDay.iCal.iCalendar iCal) : base(iCal)
 {
     this.m_iCal = iCal;
 }
Ejemplo n.º 16
0
 public iCalendarSerializer(DDay.iCal.iCalendar iCal) : base(iCal)
 {
     iCalendar = iCal;
 }
Ejemplo n.º 17
0
 // 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;
     }
 }
Ejemplo n.º 18
0
 public iCalendarSerializer(DDay.iCal.iCalendar iCal) : base(iCal)
 {
     this.m_iCal = iCal;
 }