示例#1
0
        public EntryCollection GetCategoryEntries(string categoryName)
        {
            CategoryCache cache = new CategoryCache();

            cache.Ensure(data);

            EntryCollection entryList = new EntryCollection();

            foreach (CategoryCacheEntry catEntry in cache.Entries)
            {
                if (catEntry.Name.ToUpper() == categoryName)
                {
                    foreach (CategoryCacheEntryDetail detail in catEntry.EntryDetails)
                    {
                        foreach (DayEntry day in data.Days)
                        {
                            if (day.Date == detail.DayDate)
                            {
                                day.Load();
                                foreach (Entry entry in day.Entries)
                                {
                                    if (entry.EntryId == detail.EntryId)
                                    {
                                        entryList.Add(entry);
                                    }
                                }
                            }
                        }
                    }
                }
            }

            entryList.Sort(new EntrySorter());
            return(entryList);
        }
示例#2
0
        protected override EntryCollection LoadEntries()
        {
            if (WeblogEntryId.Length == 0)
            {
                Response.StatusCode      = 404;
                Response.SuppressContent = true;
                Response.End();
                return(null);                //save us all the time
            }


            EntryCollection     entryCollection = new EntryCollection();
            Entry               entry           = DataService.GetEntry(WeblogEntryId);
            ILoggingDataService logService      = this.LoggingService;

            if (entry != null)
            {
                entryCollection.Add(entry);

                if (NotModified(entryCollection))
                {
                    Response.End();
                    return(null);
                }
            }

            return(entryCollection);
        }
示例#3
0
        private void WebForm1_PreRender(object sender, System.EventArgs e)
        {
            Control root     = content;
            string  category = Request.QueryString["category"];

            if (category != null && category.Length > 0)
            {
                category = category.ToUpper();
            }
            else
            {
                category = Request.PathInfo.Substring(1).ToUpper();
            }

            CategoryCache cache = new CategoryCache();

            cache.Ensure(data);

            EntryCollection entryList = new EntryCollection();

            foreach (CategoryCacheEntry catEntry in cache.Entries)
            {
                if (catEntry.Name.ToUpper() == category)
                {
                    title.Controls.Clear();
                    title.Controls.Add(new LiteralControl(catEntry.Name));

                    foreach (CategoryCacheEntryDetail detail in catEntry.EntryDetails)
                    {
                        foreach (DayEntry day in data.Days)
                        {
                            if (day.Date == detail.DayDate)
                            {
                                day.Load();
                                foreach (Entry entry in day.Entries)
                                {
                                    if (entry.EntryId == detail.EntryId)
                                    {
                                        entryList.Add(entry);
                                    }
                                }
                            }
                        }
                    }
                }
            }

            entryList.Sort(new EntrySorter());
            foreach (Entry entry in entryList)
            {
                EntryView view = (EntryView)LoadControl("EntryView.ascx");
                view.DateFormat = "MM/dd/yyyy h:mm tt";
                view.Data       = data;
                // UNDONE : perf problem!
                view.Extra = data.GetDayExtra(entry.Created.Date);
                view.Entry = entry;
                root.Controls.Add(view);
            }
        }
		public static IEntryCollection Wrap(this SearchResultCollection wrapped) {
			var result = new EntryCollection();
			if(wrapped != null) {
				foreach(SearchResult searchResult in wrapped) {
					result.Add(searchResult.Wrap());
				}
			}
			return result;
		}
示例#5
0
        public void GetAllRoles_AddTwoRolesThatWillBeReturnedFromAdapter_ReturnsRoleSortedAlphabetical()
        {
            var roleEntries = new EntryCollection();
            var roleEntry1  = A.Fake <IEntry>();
            var roleEntry2  = A.Fake <IEntry>();

            A.CallTo(() => roleEntry1.Name).Returns("role z");
            A.CallTo(() => roleEntry2.Name).Returns("role a");
            roleEntries.Add(roleEntry1);
            roleEntries.Add(roleEntry2);

            A.CallTo(() => container.GroupEntryAdapter.GetAllRoleEntries()).Returns(roleEntries);
            A.CallTo(() => container.GroupEntryAdapter.GetGroupName(A <IEntry> .Ignored)).ReturnsLazily(c => c.GetArgument <IEntry>(0).Name);

            var result = provider.GetAllRoles();

            Assert.AreEqual("role a", result[0]);
            Assert.AreEqual("role z", result[1]);
        }
示例#6
0
 public void VerifyContains()
 {
     Entry entry1, entry2;
     entry1 = BlogDataService.GetEntry("ebd3060-b3b0-4ab1-baea-cd12ae34a575");
     EntryCollection entries = new EntryCollection();
     entries.Add(entry1);
     Assert.IsTrue(entries.Contains(entry1), "Unexpectedly the entry did not exist.");
     entry2 = BlogDataService.GetEntry("ebd3060-b3b0-4ab1-baea-cd12ae34a575");
     // The entries returned are identical (ReferenceEquals)
     Assert.AreSame(entry1, entry2, "Unexpectedly and entirely different entry instance was returned.");
     Assert.IsTrue(entries.Contains(entry2), "Unexpectedly the entry did not exist.");
 }
示例#7
0
        /// <summary>
        /// Gets the media files
        /// </summary>
        public void GetMediaFiles(TextReader reader, string playlistDirectory, EntryCollection entries, uint startIndex, uint requestedCount)
        {
            Initialize();

            string line;
            File   mediaFile = new File();
            File   newFile;
            int    idx = 0;

            while ((line = reader.ReadLine()) != null)
            {
                line = line.Trim();
                try
                {
                    newFile = null;
                    if (AnalyzeLine(playlistDirectory, mediaFile, line, () => newFile = new File()))
                    {
                        if (idx >= startIndex && entries.Count < requestedCount)
                        {
                            entries.Add(mediaFile);
                            if (entries.Count == requestedCount)
                            {
                                break;
                            }
                            mediaFile = newFile ?? new File();
                        }
                        idx += 1;
                    }
                }
                catch (Exception)
                {
                }
            }

            if (idx >= startIndex && entries.Count > 0 && entries.Count < requestedCount && entries[entries.Count - 1] != mediaFile &&
                !String.IsNullOrWhiteSpace(mediaFile.Path) && !String.IsNullOrWhiteSpace(mediaFile.Label))
            {
                entries.Add(mediaFile);
            }
        }
示例#8
0
        public void GetRolesForUser_AddTwoRoles_ReturnRolesSortedAlphabetial()
        {
            var roleEntries = new EntryCollection();
            var roleEntry1  = A.Fake <IEntry>();
            var roleEntry2  = A.Fake <IEntry>();

            A.CallTo(() => roleEntry1.Name).Returns("role z");
            A.CallTo(() => roleEntry2.Name).Returns("role a");
            roleEntries.Add(roleEntry1);
            roleEntries.Add(roleEntry2);
            A.CallTo(() => providerConfig.LdapConfig.Groups.MembershipAttribute).Returns("rdnattribute");
            A.CallTo(() => container.GroupEntryAdapter.GetGroupsWithEntryAsMemebership(A <IEntry> .Ignored)).Returns(roleEntries);
            A.CallTo(() => container.GroupEntryAdapter.GetGroupEntry("role z", true)).Returns(roleEntry1);
            A.CallTo(() => container.GroupEntryAdapter.GetGroupEntry("role a", true)).Returns(roleEntry2);
            A.CallTo(() => container.GroupEntryAdapter.GetGroupName(A <IEntry> .Ignored)).ReturnsLazily(c => c.GetArgument <IEntry>(0).Name);
            A.CallTo(() => container.UserEntryAdapter.GetUsersFromEntry(A <IEntry> .Ignored, "rdnattribute")).Returns(new[] { "username" });

            var result = provider.GetRolesForUser("username");

            Assert.AreEqual("role a", result[0]);
            Assert.AreEqual("role z", result[1]);
        }
示例#9
0
        public static IEntryCollection Wrap(this SearchResultCollection wrapped)
        {
            var result = new EntryCollection();

            if (wrapped != null)
            {
                foreach (SearchResult searchResult in wrapped)
                {
                    result.Add(searchResult.Wrap());
                }
            }
            return(result);
        }
        public void VerifyContains()
        {
            Entry entry1, entry2;

            entry1 = BlogDataService.GetEntry("ebd3060-b3b0-4ab1-baea-cd12ae34a575");
            EntryCollection entries = new EntryCollection();

            entries.Add(entry1);
            Assert.IsTrue(entries.Contains(entry1), "Unexpectedly the entry did not exist.");
            entry2 = BlogDataService.GetEntry("ebd3060-b3b0-4ab1-baea-cd12ae34a575");
            // The entries returned are identical (ReferenceEquals)
            Assert.AreSame(entry1, entry2, "Unexpectedly and entirely different entry instance was returned.");
            Assert.IsTrue(entries.Contains(entry2), "Unexpectedly the entry did not exist.");
        }
示例#11
0
        public void CreateCollection_PassCollectionWithOneEntry_ReturnsMembershipUserCollectionWithOneUser()
        {
            var config  = A.Fake <ILdapConfig>();
            var factory = new TestableLdapMembershipUserFactory("providername", config);

            var entries = new EntryCollection();
            var entry   = A.Fake <IEntry>();

            A.CallTo(() => entry.Name).Returns("uniqueusername");
            entries.Add(entry);

            var result = factory.CreateCollection(entries);

            Assert.AreEqual(1, result.Count);
        }
示例#12
0
        public void GetAllRoles_GetOneRoleEntriyFromAdapter_ReturnsRoleWithSameNameAsInAdapter()
        {
            var roleEntries = new EntryCollection();
            var roleEntry   = A.Fake <IEntry>();

            A.CallTo(() => roleEntry.Name).Returns("role");
            roleEntries.Add(roleEntry);

            A.CallTo(() => container.GroupEntryAdapter.GetAllRoleEntries()).Returns(roleEntries);
            A.CallTo(() => container.GroupEntryAdapter.GetGroupName(A <IEntry> .Ignored)).ReturnsLazily(c => c.GetArgument <IEntry>(0).Name);

            var result = provider.GetAllRoles();

            Assert.AreEqual("role", result[0]);
        }
示例#13
0
        public void GetUsersInRole_NoRangeRetrievalSupportSoGetUserEntriesFromGroupMembershipAttribute_ReturnUserInRole()
        {
            var roleEntries = new EntryCollection();
            var roleEntry   = A.Fake <IEntry>();

            A.CallTo(() => roleEntry.Name).Returns("role");
            roleEntries.Add(roleEntry);

            A.CallTo(() => providerConfig.LdapConfig.Groups.MembershipAttribute).Returns("rdnattribute");
            A.CallTo(() => container.GroupEntryAdapter.GetGroupEntry("role", true)).Returns(roleEntry);
            A.CallTo(() => container.GroupEntryAdapter.GetGroupName(A <IEntry> .Ignored)).ReturnsLazily(c => c.GetArgument <IEntry>(0).Name);
            A.CallTo(() => container.UserEntryAdapter.GetUsersFromEntry(roleEntry, "rdnattribute")).Returns(new[] { "username" });

            var result = provider.GetUsersInRole("role");

            Assert.AreEqual("username", result[0]);
        }
示例#14
0
        public void GetRolesForUser_UsersMembershipAttributeIsNotConfigured_RetrunsRolesFromAllRolesComparedToUsersRoles()
        {
            var roleEntries = new EntryCollection();
            var roleEntry   = A.Fake <IEntry>();

            A.CallTo(() => roleEntry.Name).Returns("role");
            roleEntries.Add(roleEntry);
            A.CallTo(() => providerConfig.LdapConfig.Groups.MembershipAttribute).Returns("rdnattribute");
            A.CallTo(() => container.GroupEntryAdapter.GetGroupsWithEntryAsMemebership(A <IEntry> .Ignored)).Returns(roleEntries);
            A.CallTo(() => container.GroupEntryAdapter.GetGroupEntry("role", true)).Returns(roleEntry);
            A.CallTo(() => container.GroupEntryAdapter.GetGroupName(A <IEntry> .Ignored)).ReturnsLazily(c => c.GetArgument <IEntry>(0).Name);
            A.CallTo(() => container.UserEntryAdapter.GetUsersFromEntry(roleEntry, "rdnattribute")).Returns(new[] { "username" });

            var result = provider.GetRolesForUser("username");

            Assert.AreEqual("role", result[0]);
        }
示例#15
0
        private CategoryListViewModel GetCategoryListFromCategoryManager(string category)
        {
            var entries = !string.IsNullOrEmpty(category)
                                ? categoryManager.GetEntries(category, httpContextAccessor.HttpContext.Request.Headers["Accept-Language"])
                                : categoryManager.GetEntries();

            var entryList = new EntryCollection();

            foreach (var entry in entries?.ToList()?.Where(e => e.IsPublic))
            {
                entryList.Add(entry);
            }

            var viewModel = CategoryListViewModel.Create(entryList, category);

            DefaultPage(CATEGORY);
            return(viewModel);
        }
示例#16
0
        protected EntryCollection BuildEntries(string category, int maxDayCount, int maxEntryCount)
        {
            var entryList = new EntryCollection();

            if (category != null)
            {
                int entryCount = dasBlogSettings.SiteConfiguration.RssEntryCount;
                category = category.Replace(dasBlogSettings.SiteConfiguration.TitlePermalinkSpaceReplacement, " ");
                foreach (var catEntry in dataService.GetCategories())
                {
                    if (string.Compare(catEntry.Name, category, CultureInfo.CurrentCulture, CompareOptions.IgnoreCase | CompareOptions.IgnoreSymbols) == 0)
                    {
                        foreach (CategoryCacheEntryDetail detail in catEntry.EntryDetails)
                        {
                            Entry entry = dataService.GetEntry(detail.EntryId);
                            if (entry != null)
                            {
                                entryList.Add(entry);
                                entryCount--;
                            }
                            if (entryCount <= 0)
                            {
                                break;
                            }
                        } // foreach (CategoryCacheEntryDetail
                    }
                    if (entryCount <= 0)
                    {
                        break;
                    }
                } // foreach (CategoryCacheEntry
            }
            else
            {
                entryList = dataService.GetEntriesForDay(dasBlogSettings.GetContentLookAhead(), dasBlogSettings.GetConfiguredTimeZone(), null, maxDayCount, maxEntryCount, null);
            }
            entryList.Sort(new EntrySorter());
            return(entryList);
        }
        protected EntryCollection BuildEntries(string category, int maxDayCount, int maxEntryCount)
        {
            EntryCollection entryList = new EntryCollection();

            if (category != null)
            {
                int entryCount = dasBlogSettings.SiteConfiguration.RssEntryCount;
                category = category.ToUpper();
                foreach (CategoryCacheEntry catEntry in dataService.GetCategories())
                {
                    if (catEntry.Name.ToUpper() == category)
                    {
                        foreach (CategoryCacheEntryDetail detail in catEntry.EntryDetails)
                        {
                            Entry entry = dataService.GetEntry(detail.EntryId);
                            if (entry != null)
                            {
                                entryList.Add(entry);
                                entryCount--;
                            }
                            if (entryCount <= 0)
                            {
                                break;
                            }
                        } // foreach (CategoryCacheEntryDetail
                    }
                    if (entryCount <= 0)
                    {
                        break;
                    }
                } // foreach (CategoryCacheEntry
            }
            else
            {
                entryList = dataService.GetEntriesForDay(dasBlogSettings.GetContentLookAhead(), dasBlogSettings.GetConfiguredTimeZone(), null, maxDayCount, maxEntryCount, null);
            }
            entryList.Sort(new EntrySorter());
            return(entryList);
        }
        protected EntryCollection BuildEntries(string category, int maxDayCount, int maxEntryCount)
        {
            EntryCollection entryList = new EntryCollection();

            if (category != null)
            {
                int entryCount = _dasBlogSettings.SiteConfiguration.RssEntryCount;
                category = category.ToUpper();
                foreach (CategoryCacheEntry catEntry in _dataService.GetCategories())
                {
                    if (catEntry.Name.ToUpper() == category)
                    {
                        foreach (CategoryCacheEntryDetail detail in catEntry.EntryDetails)
                        {
                            Entry entry = _dataService.GetEntry(detail.EntryId);
                            if (entry != null)
                            {
                                entryList.Add(entry);
                                entryCount--;
                            }
                            if (entryCount <= 0)
                            {
                                break;
                            }
                        } // foreach (CategoryCacheEntryDetail
                    }
                    if (entryCount <= 0)
                    {
                        break;
                    }
                } // foreach (CategoryCacheEntry
            }
            else
            {
                entryList = _dataService.GetEntriesForDay(DateTime.Now.AddDays(_dasBlogSettings.SiteConfiguration.ContentLookaheadDays).ToUniversalTime(), new newtelligence.DasBlog.Util.UTCTimeZone(), null, maxDayCount, maxEntryCount, null);
            }
            entryList.Sort(new EntrySorter());
            return(entryList);
        }
示例#19
0
        /// <summary>
        /// Parse a json string containing an array of <seealso cref="EventEntry"/>
        /// </summary>
        /// <param name="apiResponse">json string containing an array</param>
        /// <returns>Collection of EventEntry objects</returns>
        public EntryCollection <EventEntry> Parse(object apiResponse)
        {
            string json = ParserResponseHelper.GetResponseString(apiResponse);
            EntryCollection <EventEntry> events = new EntryCollection <EventEntry>();
            JObject jo = JsonConvert.DeserializeObject(json) as JObject;

            if (jo != null)
            {
                foreach (var property in jo["events"])
                {
                    try
                    {
                        events.Add(Parse(property));
                    }
                    catch (Exception e)
                    {
                        Debug.WriteLine(e);
                        GwApi.Logger.Error(e);
                    }
                }
            }
            return(events);
        }
示例#20
0
        private bool Build(DataManager data)
        {

            EntryCollection entriesCacheCopy = new EntryCollection();

            Dictionary<string, DateTime> entryIdToDateCopy = new Dictionary<string, DateTime>(StringComparer.InvariantCultureIgnoreCase);
            Dictionary<string, DateTime> compressedTitleToDateCopy = new Dictionary<string, DateTime>(StringComparer.InvariantCultureIgnoreCase);

            try
            {
                foreach (DayEntry day in data.Days)
                {
                    day.Load(data);

                    foreach (Entry entry in day.Entries)
                    {

                        // create a lite entry for faster searching 
                        Entry copy = entry.Clone();
                        copy.Content = "";
                        copy.Description = "";

                        copy.AttachmentsArray = null;
                        copy.CrosspostArray = null;

                        entriesCacheCopy.Add(copy);

                        entryIdToDateCopy.Add(copy.EntryId, copy.CreatedUtc.Date);

                        //SDH: Only the first title is kept, in case of duplicates
                        // TODO: should be able to fix this, but it's a bunch of work.
                        string compressedTitle = copy.CompressedTitle;
                        compressedTitle = compressedTitle.Replace("+", "");
                        if (compressedTitleToDateCopy.ContainsKey(compressedTitle) == false)
                        {
                            compressedTitleToDateCopy.Add(compressedTitle, copy.CreatedUtc.Date);
                        }
                    }
                }
            }

                //TODO: SDH: Temporary, as sometimes we get collection was modified from the EntryCollection...why does this happen? "Database" corruption? 
            // Misaligned Entries?
            catch (InvalidOperationException) //something wrong enumerating the entries?
            {
                //set flags to start over to prevent getting stuck...
                booting = true;
                changeNumber = 0;
                throw;
            }

            //try to be a little more "Atomic" as others have been enumerating this list...
            entryIDToDate.Clear();
            entryIDToDate = entryIdToDateCopy;

            compressedTitleToDate.Clear();
            compressedTitleToDate = compressedTitleToDateCopy;

            entriesCache = entriesCacheCopy;

            changeNumber = data.CurrentEntryChangeCount;

            return true;
        }
示例#21
0
		public EntryCollection SearchEntries(string searchString)
		{
			StringCollection searchWords = new StringCollection();

			string[] splitString = Regex.Split(searchString, @"(""[^""]*"")", RegexOptions.IgnoreCase |
				RegexOptions.Compiled);

			for (int index = 0; index < splitString.Length; index++)
			{
				if (splitString[index] != "")
				{
					if (index == splitString.Length - 1)
					{
						foreach (string s in splitString[index].Split(' '))
						{
							if (s != "") searchWords.Add(s);
						}
					}
					else
					{
						searchWords.Add(splitString[index].Substring(1, splitString[index].Length - 2));
					}
				}
			}

			EntryCollection matchEntries = new EntryCollection();

			foreach (Entry entry in requestPage.DataService.GetEntriesForDay(DateTime.MaxValue.AddDays(-2), new UTCTimeZone(), Request.Headers["Accept-Language"], int.MaxValue, int.MaxValue, null))
			{
				string entryTitle = entry.Title;
				string entryDescription = entry.Description;
				string entryContent = entry.Content;

				foreach (string searchWord in searchWords)
				{
					if (entryTitle != null)
					{
						if (searchEntryForWord(entryTitle, searchWord))
						{
							if (!matchEntries.Contains(entry))
							{
								matchEntries.Add(entry);
							}
							continue;
						}
					}
					if (entryDescription != null)
					{
						if (searchEntryForWord(entryDescription, searchWord))
						{
							if (!matchEntries.Contains(entry))
							{
								matchEntries.Add(entry);
							}
							continue;
						}
					}
					if (entryContent != null)
					{
						if (searchEntryForWord(entryContent, searchWord))
						{
							if (!matchEntries.Contains(entry))
							{
								matchEntries.Add(entry);
							}
							continue;
						}
					}
				}
			}

			// log the search to the event log
            ILoggingDataService logService = requestPage.LoggingService;
			string referrer = Request.UrlReferrer != null ? Request.UrlReferrer.AbsoluteUri : Request.ServerVariables["REMOTE_ADDR"];	
			logService.AddEvent(
				new EventDataItem(EventCodes.Search, String.Format("{0}", searchString), referrer));

			return matchEntries;
		}
示例#22
0
        /// <summary>
        /// Returns an EntryCollection whose entries all fit the criteria
        /// specified by include.
        /// </summary>
        /// <param name="dayEntryCriteria">A delegate that specifies which days should be included.</param>
        /// <param name="entryCriteria">A delegate that specifies which entries should be included.</param>
        /// <param name="maxDays">The maximum number of days to include.</param>
        /// <param name="maxEntries">The maximum number of entries to return.</param>
        /// <returns></returns>
        public EntryCollection /*IBlogDataService*/ GetEntries(
            Predicate<DayEntry> dayEntryCriteria,
            Predicate<Entry> entryCriteria,
            int maxDays, int maxEntries)
        {
            EntryCollection entries = new EntryCollection();
            DayEntryCollection days = this.InternalGetDayEntries(dayEntryCriteria, maxDays);
            int entryCount = 0;

            foreach (DayEntry day in days)
            {
                day.Load(data);

                foreach (Entry entry in day.GetEntries(entryCriteria))
                {
                    if (entryCount < maxEntries)
                    {
                        entries.Add(entry);
                        entryCount++;
                    }
                    else
                    {
                        break;
                    }
                }
                if (entryCount >= maxEntries)
                {
                    break;
                }
            }
            return entries;
        }
示例#23
0
        EntryCollection IBlogDataService.GetEntriesForUser(string user)
        {
            Predicate<Entry> entryCriteria = null;
            EntryCollection entries = new EntryCollection();
            entryCriteria += EntryCollectionFilter.DefaultFilters.IsFromUser(user);

            DayEntryCollection dayEntries = InternalGetDayEntries(null, int.MaxValue);

            foreach (DayEntry dayEntry in dayEntries)
            {
                foreach (Entry entry in dayEntry.GetEntries(entryCriteria))
                    entries.Add(entry);
            }

            return entries;
        }
示例#24
0
        // TODO:  Consider refactoring to use InternalGetDayEntries that takes delegates.  It is slightly more
        // complicated because this method uses CategoryCache().
        EntryCollection IBlogDataService.GetEntriesForCategory(string categoryName, string acceptLanguages)
        {
            CategoryCache cache = new CategoryCache();
            cache.Ensure(data);

            EntryCollection entryList = new EntryCollection();
            Entry entry;

            if (cache.UrlSafeCategories.ContainsKey(categoryName))
            {
                categoryName = cache.UrlSafeCategories[categoryName];
            }

            CategoryCacheEntry catEntry = cache.Entries[categoryName];
            if (catEntry != null)
            {
                foreach (CategoryCacheEntryDetail detail in catEntry.EntryDetails)
                {
                    DayEntry day = data.Days[detail.DayDateUtc];
                    if (day != null)
                    {
                        Predicate<Entry> entryCriteria = null;

                        if (acceptLanguages != null && acceptLanguages.Length > 0)
                        {
                            entryCriteria += EntryCollectionFilter.DefaultFilters.IsInAcceptedLanguagesOrMultiLingual(acceptLanguages);
                        }


                        day.Load(data);
                        entry = day.GetEntries(entryCriteria)[detail.EntryId];
                        if (entry != null)
                        {
                            entryList.Add(entry);
                        }
                    }
                }
            }
            entryList.Sort((left, right) => right.CreatedUtc.CompareTo(left.CreatedUtc));
            return entryList;
        }
		public void CreateCollection_PassCollectionWithOneEntry_ReturnsMembershipUserCollectionWithOneUser() {
			var config = A.Fake<ILdapConfig>();
			var factory = new TestableLdapMembershipUserFactory("providername", config);

			var entries = new EntryCollection();
			var entry = A.Fake<IEntry>();
			A.CallTo(() => entry.Name).Returns("uniqueusername");
			entries.Add(entry);

			var result = factory.CreateCollection(entries);

			Assert.AreEqual(1, result.Count);
		}
示例#26
0
        public void ProcessRequest(HttpContext context)
        {
            SiteConfig          siteConfig     = SiteConfig.GetSiteConfig();
            ILoggingDataService loggingService = LoggingDataServiceFactory.GetService(SiteConfig.GetLogPathFromCurrentContext());
            IBlogDataService    dataService    = BlogDataServiceFactory.GetService(SiteConfig.GetContentPathFromCurrentContext(), loggingService);


            string referrer = context.Request.UrlReferrer != null?context.Request.UrlReferrer.AbsoluteUri:"";

            if (ReferralBlackList.IsBlockedReferrer(referrer))
            {
                if (siteConfig.EnableReferralUrlBlackList404s)
                {
                    context.Response.StatusCode = 404;
                    context.Response.End();
                    return;
                }
            }
            else
            {
                loggingService.AddReferral(
                    new LogDataItem(
                        context.Request.RawUrl,
                        referrer,
                        context.Request.UserAgent,
                        context.Request.UserHostName));
            }
            context.Response.ContentType = "application/x-cdf";

            //Create the XmlWriter around the Response
            XmlTextWriter xw = new XmlTextWriter(context.Response.Output);

            xw.Formatting = Formatting.Indented;

            EntryCollection entriesAll = dataService.GetEntriesForDay(
                DateTime.Now.ToUniversalTime(), new Util.UTCTimeZone(),
                null, siteConfig.RssDayCount, siteConfig.RssMainEntryCount, null);
            EntryCollection entries = new EntryCollection();

            foreach (Entry e in entriesAll)
            {
                if (e.IsPublic == true)
                {
                    entries.Add(e);
                }
            }
            entries.Sort(new EntrySorter());

            //Write out the boilerplate CDF
            xw.WriteStartDocument();

            xw.WriteStartElement("CHANNEL");
            xw.WriteAttributeString("HREF", SiteUtilities.GetBaseUrl(siteConfig));

            foreach (Entry current in entries)
            {
                xw.WriteAttributeString("LASTMOD",
                                        FormatLastMod(current.ModifiedLocalTime));
            }

            /*IEnumerator enumerator = entries.GetEnumerator();
             * if(enumerator.MoveNext())
             * {
             *      xw.WriteAttributeString("LASTMOD",
             *              FormatLastMod(((Entry)enumerator.Current).ModifiedLocalTime));
             * }*/
            xw.WriteAttributeString("LEVEL", "1");
            xw.WriteAttributeString("PRECACHE", "YES");

            xw.WriteElementString("TITLE", siteConfig.Title);
            xw.WriteElementString("ABSTRACT", siteConfig.Subtitle);

            foreach (Entry entry in entries)
            {
                xw.WriteStartElement("ITEM");
                xw.WriteAttributeString("HREF", SiteUtilities.GetPermaLinkUrl(siteConfig, (ITitledEntry)entry));
                xw.WriteAttributeString("LASTMOD", FormatLastMod(entry.ModifiedLocalTime));
                xw.WriteAttributeString("LEVEL", "1");
                xw.WriteAttributeString("PRECACHE", "YES");

                xw.WriteElementString("TITLE", entry.Title);

                if (entry.Description != null && entry.Description.Length > 0)
                {
                    xw.WriteElementString("ABSTRACT", entry.Description);
                }

                xw.WriteEndElement();
            }

            xw.WriteEndElement(); //channel
            xw.WriteEndDocument();
        }
示例#27
0
        public EntryCollection SearchEntries(string searchString)
        {
            StringCollection searchWords = new StringCollection();

            string[] splitString = Regex.Split(searchString, @"(""[^""]*"")", RegexOptions.IgnoreCase |
                                               RegexOptions.Compiled);

            for (int index = 0; index < splitString.Length; index++)
            {
                if (splitString[index] != "")
                {
                    if (index == splitString.Length - 1)
                    {
                        foreach (string s in splitString[index].Split(' '))
                        {
                            if (s != "")
                            {
                                searchWords.Add(s);
                            }
                        }
                    }
                    else
                    {
                        searchWords.Add(splitString[index].Substring(1, splitString[index].Length - 2));
                    }
                }
            }

            EntryCollection matchEntries = new EntryCollection();

            foreach (Entry entry in requestPage.DataService.GetEntriesForDay(DateTime.MaxValue.AddDays(-2), new UTCTimeZone(), Request.Headers["Accept-Language"], int.MaxValue, int.MaxValue, null))
            {
                string entryTitle       = entry.Title;
                string entryDescription = entry.Description;
                string entryContent     = entry.Content;

                foreach (string searchWord in searchWords)
                {
                    if (entryTitle != null)
                    {
                        if (searchEntryForWord(entryTitle, searchWord))
                        {
                            if (!matchEntries.Contains(entry))
                            {
                                matchEntries.Add(entry);
                            }
                            continue;
                        }
                    }
                    if (entryDescription != null)
                    {
                        if (searchEntryForWord(entryDescription, searchWord))
                        {
                            if (!matchEntries.Contains(entry))
                            {
                                matchEntries.Add(entry);
                            }
                            continue;
                        }
                    }
                    if (entryContent != null)
                    {
                        if (searchEntryForWord(entryContent, searchWord))
                        {
                            if (!matchEntries.Contains(entry))
                            {
                                matchEntries.Add(entry);
                            }
                            continue;
                        }
                    }
                }
            }

            // log the search to the event log
            ILoggingDataService logService = requestPage.LoggingService;
            string referrer = Request.UrlReferrer != null ? Request.UrlReferrer.AbsoluteUri : Request.ServerVariables["REMOTE_ADDR"];

            logService.AddEvent(
                new EventDataItem(EventCodes.Search, String.Format("{0}", searchString), referrer));

            return(matchEntries);
        }
示例#28
0
 /// <summary>
 /// Adds the underlying model to the entry collection
 /// </summary>
 /// <param name="models">collection of items</param>
 public virtual void AddModel(EntryCollection models)
 {
     models.Add(Model);
 }
示例#29
0
		public void GetRolesForUser_AddTwoRoles_ReturnRolesSortedAlphabetial() {
			var roleEntries = new EntryCollection();
			var roleEntry1 = A.Fake<IEntry>();
			var roleEntry2 = A.Fake<IEntry>();
			A.CallTo(() => roleEntry1.Name).Returns("role z");
			A.CallTo(() => roleEntry2.Name).Returns("role a");
			roleEntries.Add(roleEntry1);
			roleEntries.Add(roleEntry2);
			A.CallTo(() => providerConfig.LdapConfig.Groups.MembershipAttribute).Returns("rdnattribute");
			A.CallTo(() => container.GroupEntryAdapter.GetGroupsWithEntryAsMemebership(A<IEntry>.Ignored)).Returns(roleEntries);
			A.CallTo(() => container.GroupEntryAdapter.GetGroupEntry("role z", true)).Returns(roleEntry1);
			A.CallTo(() => container.GroupEntryAdapter.GetGroupEntry("role a", true)).Returns(roleEntry2);
			A.CallTo(() => container.GroupEntryAdapter.GetGroupName(A<IEntry>.Ignored)).ReturnsLazily(c => c.GetArgument<IEntry>(0).Name);
			A.CallTo(() => container.UserEntryAdapter.GetUsersFromEntry(A<IEntry>.Ignored, "rdnattribute")).Returns(new[]{ "username" });

			var result = provider.GetRolesForUser("username");

			Assert.AreEqual("role a", result[0]);
			Assert.AreEqual("role z", result[1]);
		}
示例#30
0
		public void GetUsersInRole_NoRangeRetrievalSupportSoGetUserEntriesFromGroupMembershipAttribute_ReturnUserInRole() {
			var roleEntries = new EntryCollection();
			var roleEntry = A.Fake<IEntry>();
			A.CallTo(() => roleEntry.Name).Returns("role");
			roleEntries.Add(roleEntry);

			A.CallTo(() => providerConfig.LdapConfig.Groups.MembershipAttribute).Returns("rdnattribute");
			A.CallTo(() => container.GroupEntryAdapter.GetGroupEntry("role", true)).Returns(roleEntry);
			A.CallTo(() => container.GroupEntryAdapter.GetGroupName(A<IEntry>.Ignored)).ReturnsLazily(c => c.GetArgument<IEntry>(0).Name);
			A.CallTo(() => container.UserEntryAdapter.GetUsersFromEntry(roleEntry, "rdnattribute")).Returns(new[]{ "username" });

			var result = provider.GetUsersInRole("role");

			Assert.AreEqual("username", result[0]);			
		}
示例#31
0
        /// <summary>
        /// Browse the folder
        /// </summary>
        /// <param name="startIndex">start index</param>
        /// <param name="requestedCount">requested count</param>
        /// <param name="userAgent">user agent</param>
        /// <returns>the browse result</returns>
        public override BrowseResult Browse(uint startIndex, uint requestedCount, UserAgent userAgent)
        {
            var entries = new EntryCollection();

            entries.AddRange(Children);
            if (!String.IsNullOrWhiteSpace(Path))
            {
                try
                {
                    bool isFreeboxV5 = (userAgent == UserAgent.FreeboxV5);
                    foreach (var file in Directory.GetFiles(Path, "*.*", SearchOption.TopDirectoryOnly))
                    {
                        try
                        {
                            var f = FileFactory.CreateFile(file);
                            if (f is IContainer)
                            {
                                var entry = ((IContainer)f).GetContent(isFreeboxV5);
                                if (entry == null)
                                {
                                    continue;
                                }
                                if (!(entry is IMedia))
                                {
                                    entries.Add(entry);
                                    continue;
                                }
                                f = (IMedia)entry;
                            }

                            if (f.MediaKind != null && (f.MediaKind & MediaKind) > 0)
                            {
                                entries.Add((Entry)f);
                            }
                        }
                        catch (Exception ex)
                        {
                            Utils.WriteException(ex);
                        }
                    }
                }
                catch (Exception ex)
                {
                    Utils.WriteException(ex);
                }

                try
                {
                    foreach (var directory in Directory.GetDirectories(Path, "*.*", SearchOption.TopDirectoryOnly))
                    {
                        try
                        {
                            var folder = new Folder()
                            {
                                UsePathAsId = true, Path = directory
                            };
                            if (!folder.IsHidden)
                            {
                                entries.Add(folder);
                            }
                        }
                        catch (Exception ex)
                        {
                            Utils.WriteException(ex);
                        }
                    }
                }
                catch (Exception ex)
                {
                    Utils.WriteException(ex);
                }
            }

            entries.Sort(new Comparison <Entry>((e1, e2) =>
            {
                if (e1 is FolderBase && !(e2 is FolderBase))
                {
                    return(-1);
                }
                if (e2 is FolderBase && !(e1 is FolderBase))
                {
                    return(1);
                }
                if (e1.Label == null)
                {
                    return(e2.Label == null ? 0 : -1);
                }
                return(e1.Label.CompareTo(e2.Label));
            }));

            var browseResult = new BrowseResult()
            {
                TotalCount = entries.Count
            };
            int i = 0;

            foreach (Entry entry in entries)
            {
                if (i == startIndex)
                {
                    if (browseResult.Entries.Count < requestedCount)
                    {
                        browseResult.Entries.Add(entry);
                    }
                    else
                    {
                        break;
                    }
                }
                else
                {
                    i += 1;
                }
            }
            return(browseResult);
        }
示例#32
0
		protected override EntryCollection LoadEntries()
		{
			if (WeblogEntryId.Length == 0) 
			{
				Response.StatusCode = 404;
				Response.SuppressContent = true;
				Response.End();
				return null; //save us all the time	
			}


			EntryCollection entryCollection = new EntryCollection();
			Entry entry = DataService.GetEntry(WeblogEntryId);
            ILoggingDataService logService = this.LoggingService;
			if (entry != null)
			{
				entryCollection.Add(entry);

				if (NotModified(entryCollection))
				{
					Response.End();
					return null;
				}
			}
			
			return entryCollection;
		}
示例#33
0
		public void GetAllRoles_GetOneRoleEntriyFromAdapter_ReturnsRoleWithSameNameAsInAdapter() {
			var roleEntries = new EntryCollection();
			var roleEntry = A.Fake<IEntry>();
			A.CallTo(() => roleEntry.Name).Returns("role");
			roleEntries.Add(roleEntry);

			A.CallTo(() => container.GroupEntryAdapter.GetAllRoleEntries()).Returns(roleEntries);
			A.CallTo(() => container.GroupEntryAdapter.GetGroupName(A<IEntry>.Ignored)).ReturnsLazily(c => c.GetArgument<IEntry>(0).Name);

			var result = provider.GetAllRoles();

			Assert.AreEqual("role", result[0]);
		}
示例#34
0
        private EntryCollection BuildEntries(BlogXData data, string category, int maxDayCount)
        {
            EntryCollection entryList = new EntryCollection();

            if (category != null)
            {
                int entryCount = SiteConfig.GetSiteConfig().RssEntryCount;
                category = category.ToUpper();
                CategoryCache cache = new CategoryCache();
                cache.Ensure(data);

                foreach (CategoryCacheEntry catEntry in cache.Entries)
                {
                    if (catEntry.Name.ToUpper() == category)
                    {
                        foreach (CategoryCacheEntryDetail detail in catEntry.EntryDetails)
                        {
                            foreach (DayEntry day in data.Days)
                            {
                                if (day.Date == detail.DayDate)
                                {
                                    day.Load();
                                    foreach (Entry entry in day.Entries)
                                    {
                                        if (entry.EntryId == detail.EntryId)
                                        {
                                            entryCount--;
                                            entryList.Add(entry);
                                            if (entryCount < 0)
                                            {
                                                break;
                                            }
                                        }
                                    }
                                }
                                if (entryCount < 0)
                                {
                                    break;
                                }
                            } // foreach (DayEntry day
                            if (entryCount < 0)
                            {
                                break;
                            }
                        } // foreach (CategoryCacheEntryDetail
                    }

                    if (entryCount < 0)
                    {
                        break;
                    }
                } // foreach (CategoryCacheEntry
            }
            else
            {
                int dayCount = 0;
                data.Days.Sort(new DaySorter());
                foreach (DayEntry day in data.Days)
                {
                    day.Load();
                    dayCount++;

                    foreach (Entry entry in day.Entries)
                    {
                        entryList.Add(entry);
                    }

                    if (dayCount >= maxDayCount)
                    {
                        break;
                    }
                }
            }
            entryList.Sort(new EntrySorter());
            return(entryList);
        }
示例#35
0
        private void ProcessScoreList(int semesters, List <string> printEntries)
        {
            //統計有成績的學期
            if (semesters <= 0)
            {
                semesters = int.MaxValue;
            }
            List <int> semesterlist = new List <int>();

            foreach (SemesterSubjectScoreInfo info in _student.SemesterSubjectScoreList)
            {
                if (info.Detail.GetAttribute("不需評分") == "是")
                {
                    continue;
                }
                if (!semesterlist.Contains((info.GradeYear - 1) * 2 + info.Semester))
                {
                    semesterlist.Add((info.GradeYear - 1) * 2 + info.Semester);
                }
            }

            foreach (SemesterEntryScoreInfo info in _student.SemesterEntryScoreList)
            {
                if (!semesterlist.Contains((info.GradeYear - 1) * 2 + info.Semester))
                {
                    semesterlist.Add((info.GradeYear - 1) * 2 + info.Semester);
                }
            }
            semesterlist.Sort();

            foreach (SemesterSubjectScoreInfo info in _student.SemesterSubjectScoreList)
            {
                if (info.Detail.GetAttribute("不需評分") == "是")
                {
                    continue;
                }
                //超過統計學期當沒看到
                if (semesterlist.Count > semesters && (info.GradeYear - 1) * 2 + info.Semester > semesterlist[semesters - 1])
                {
                    continue;
                }
                if (!_subjects.ContainsKey(info.Subject))
                {
                    SubjectInfo new_info = new SubjectInfo(info.Subject);
                    _subjects.Add(info.Subject, new_info);
                    new_info.AddSemsScore(info.GradeYear, info.Semester, SelectScore(info));
                }
                else
                {
                    _subjects[info.Subject].AddSemsScore(info.GradeYear, info.Semester, SelectScore(info));
                }
            }

            foreach (SemesterEntryScoreInfo info in _student.SemesterEntryScoreList)
            {
                //超過統計學期當沒看到
                if (semesterlist.Count > semesters && (info.GradeYear - 1) * 2 + info.Semester > semesterlist[semesters - 1])
                {
                    continue;
                }
                //不是要列印的分項當沒看到
                if (!printEntries.Contains(info.Entry))
                {
                    continue;
                }
                if (!_entries.ContainsKey(info.Entry))
                {
                    EntryInfo new_info = new EntryInfo(info.Entry);
                    _entries.Add(info.Entry, new_info);
                    new_info.AddSemsScore(info.GradeYear, info.Semester, info.Score);
                }
                else
                {
                    _entries[info.Entry].AddSemsScore(info.GradeYear, info.Semester, info.Score);
                }
            }
        }
示例#36
0
		public void GetAllRoles_AddTwoRolesThatWillBeReturnedFromAdapter_ReturnsRoleSortedAlphabetical() {
			var roleEntries = new EntryCollection();
			var roleEntry1 = A.Fake<IEntry>();
			var roleEntry2 = A.Fake<IEntry>();
			A.CallTo(() => roleEntry1.Name).Returns("role z");
			A.CallTo(() => roleEntry2.Name).Returns("role a");
			roleEntries.Add(roleEntry1);
			roleEntries.Add(roleEntry2);

			A.CallTo(() => container.GroupEntryAdapter.GetAllRoleEntries()).Returns(roleEntries);
			A.CallTo(() => container.GroupEntryAdapter.GetGroupName(A<IEntry>.Ignored)).ReturnsLazily(c => c.GetArgument<IEntry>(0).Name);

			var result = provider.GetAllRoles();

			Assert.AreEqual("role a", result[0]);
			Assert.AreEqual("role z", result[1]);
		}
示例#37
0
        public EntryCollection SearchEntries(string searchString, string acceptLanguageHeader)
        {
            var searchWords = GetSearchWords(searchString);

            var entries = dataService.GetEntriesForDay(DateTime.MaxValue.AddDays(-2),
                                                       dasBlogSettings.GetConfiguredTimeZone(),
                                                       acceptLanguageHeader, int.MaxValue, int.MaxValue, null);

            // no search term provided, return all the results
            if (searchWords.Count == 0)
            {
                return(entries);
            }

            EntryCollection matchEntries = new EntryCollection();

            foreach (Entry entry in entries)
            {
                string entryTitle       = entry.Title;
                string entryDescription = entry.Description;
                string entryContent     = entry.Content;

                foreach (string searchWord in searchWords)
                {
                    if (entryTitle != null)
                    {
                        if (searchEntryForWord(entryTitle, searchWord))
                        {
                            if (!matchEntries.Contains(entry))
                            {
                                matchEntries.Add(entry);
                            }
                            continue;
                        }
                    }
                    if (entryDescription != null)
                    {
                        if (searchEntryForWord(entryDescription, searchWord))
                        {
                            if (!matchEntries.Contains(entry))
                            {
                                matchEntries.Add(entry);
                            }
                            continue;
                        }
                    }
                    if (entryContent != null)
                    {
                        if (searchEntryForWord(entryContent, searchWord))
                        {
                            if (!matchEntries.Contains(entry))
                            {
                                matchEntries.Add(entry);
                            }
                            continue;
                        }
                    }
                }
            }

            // log the search to the event log

            /*
             *                      ILoggingDataService logService = requestPage.LoggingService;
             *                      string referrer = Request.UrlReferrer != null ? Request.UrlReferrer.AbsoluteUri : Request.ServerVariables["REMOTE_ADDR"];
             *                      logger.LogInformation(
             *                              new EventDataItem(EventCodes.Search, String.Format("{0}", searchString), referrer));
             */

            return(matchEntries);
        }
示例#38
0
		public void GetRolesForUser_UsersMembershipAttributeIsNotConfigured_RetrunsRolesFromAllRolesComparedToUsersRoles() {
			var roleEntries = new EntryCollection();
			var roleEntry = A.Fake<IEntry>();
			A.CallTo(() => roleEntry.Name).Returns("role");
			roleEntries.Add(roleEntry);
			A.CallTo(() => providerConfig.LdapConfig.Groups.MembershipAttribute).Returns("rdnattribute");
			A.CallTo(() => container.GroupEntryAdapter.GetGroupsWithEntryAsMemebership(A<IEntry>.Ignored)).Returns(roleEntries);
			A.CallTo(() => container.GroupEntryAdapter.GetGroupEntry("role", true)).Returns(roleEntry);
			A.CallTo(() => container.GroupEntryAdapter.GetGroupName(A<IEntry>.Ignored)).ReturnsLazily(c => c.GetArgument<IEntry>(0).Name);
			A.CallTo(() => container.UserEntryAdapter.GetUsersFromEntry(roleEntry, "rdnattribute")).Returns(new[]{ "username" });

			var result = provider.GetRolesForUser("username");

			Assert.AreEqual("role", result[0]);
		}