Exemplo n.º 1
0
        public void AddRecentSearchTests()
        {
            string rootPath = TestConfig.GetConfig().GetRipleyServerPath();
            BBC.Dna.AppContext.OnDnaStartup(rootPath);



            Console.WriteLine("Before RecentSearch - AddRecentSearchTests");

            //Create the mocked inputcontext
            Mockery mock = new Mockery();
            IInputContext context = DnaMockery.CreateDatabaseInputContext();

            Stub.On(context).Method("GetParamIntOrZero").WithAnyArguments().Will(Return.Value(0));

            // Create a mocked site for the context
            ISite mockedSite = DnaMockery.CreateMockedSite(context, 70, "mbiplayer", "mbiplayer", true, "comment");//changed to miss cache
            Stub.On(context).GetProperty("CurrentSite").Will(Return.Value(mockedSite));
            Stub.On(context).Method("DoesParamExist").With("forumid", "forumid").Will(Return.Value(false));
            Stub.On(mockedSite).GetProperty("ModClassID").Will(Return.Value(1));


            BBC.Dna.User user = new BBC.Dna.User(context);
            Stub.On(context).GetProperty("ViewingUser").Will(Return.Value(user));
            Stub.On(context).GetProperty("CurrentSite").Will(Return.Value(mockedSite));


            // Initialise the profanities object
            var p = new ProfanityFilter(DnaMockery.CreateDatabaseReaderCreator(), DnaDiagnostics.Default, CacheFactory.GetCacheManager(), null, null);

            RecentSearch recentsearch = new RecentSearch(context);
            Assert.IsTrue(recentsearch.AddSearchTerm("test article", RecentSearch.SEARCHTYPE.ARTICLE),"Adding valid artical search");
            Assert.IsTrue(recentsearch.AddSearchTerm("test forum", RecentSearch.SEARCHTYPE.FORUM), "Adding valid forum search");
            Assert.IsFalse(recentsearch.AddSearchTerm("This contains the profanity f**k", RecentSearch.SEARCHTYPE.ARTICLE), "Failing to add search term with profanity");
            Assert.IsFalse(recentsearch.AddSearchTerm("This contains the an email - [email protected]", RecentSearch.SEARCHTYPE.ARTICLE), "Failing to add search term with email");


            recentsearch.ProcessRequest();
            XmlElement xml = recentsearch.RootElement;
            Assert.IsTrue(xml.SelectSingleNode("RECENTSEARCHES") != null, "The xml is not generated correctly!!!");
          
            DnaXmlValidator validator = new DnaXmlValidator(xml.InnerXml, _schemaUri);
            validator.Validate();

            Console.WriteLine("after RecentSearch - AddRecentSearchTests");
        }
Exemplo n.º 2
0
        /// <summary>
        /// Used to process the current request.
        /// </summary>
        public override void ProcessRequest()
        {

            string searchQuery = InputContext.GetParamStringOrEmpty("searchstring","searchstring");

            // Show Options.
            bool showApproved = InputContext.GetParamIntOrZero("showapproved", "showapproved") != 0;
            bool showNormal = InputContext.GetParamIntOrZero("shownormal","shownormal") != 0;
            bool showSubmitted = InputContext.GetParamIntOrZero("showsubmitted","showsubmitted") != 0;
            if (showApproved == showNormal == showSubmitted == false)
            {
                showApproved = true;
                showNormal = true;
                showSubmitted = true;
            }
            bool showContentRating = InputContext.GetParamIntOrZero("showcontentratingdata","showcontentratingdata") != 0;
            bool showPhrases = InputContext.GetParamIntOrZero("showphrases","showphrases") != 0;
         
            //Skip and Show.
            int show = InputContext.GetSiteOptionValueInt("ArticleSearch", "DefaultShow");
            if (InputContext.DoesParamExist("show", "show"))
            {
                show = InputContext.GetParamIntOrZero("show", "show");
            }
            int skip = InputContext.GetParamIntOrZero("skip","skip");

            //Get use groups filter as a comma separated string.
            string userGroups = string.Empty;
            for ( int count = 0; count < InputContext.GetParamCountOrZero("usergroups","usergroups"); ++count )
            {
                if ( userGroups != string.Empty )
                {
                    userGroups += ",";
                }
                 userGroups += InputContext.GetParamStringOrEmpty("usergroup",count,"usergroup");
            }

            int nodeId = InputContext.GetParamIntOrZero("category","category");

            //Support for GOOSearch.
            string searchtype = InputContext.GetParamStringOrEmpty("searchtype","searchtype");
            if ( searchtype == "GOOSEARCH")
            {
                if (searchQuery.Contains("@"))
                {
                    searchtype = "USER";
                }
                else
                {
                    searchtype = "ARTICLE";
                }
            }
            
            int forumid = 0;
            if (InputContext.DoesParamExist("forumid", "forumid"))
            {
                forumid = InputContext.GetParamIntOrZero("forumid", "forumid");
            }
            string failed = string.Empty;
            List<Term> terms = null;
            ProfanityFilter.FilterState state = ProfanityFilter.CheckForProfanities(InputContext.CurrentSite.ModClassID, searchQuery, out failed, out terms, forumid);
            if ( state == ProfanityFilter.FilterState.FailBlock && !InputContext.ViewingUser.IsEditor )
            {
                //Error - search query failed profanity check.
                //TODO:  Need to insert profanity error.
                return;
            }

            //set up recent search object
            RecentSearch recentsearch = new RecentSearch(InputContext);

            //Article Search
            if ( InputContext.GetParamIntOrZero("article","article") == 1 || searchtype.ToUpper() == "ARTICLE")
            {
                bool useFreeTextSearch = InputContext.GetParamIntOrZero("usefreetextsearch", "UseFreeTextSearch") == 1;
			    int articleType = InputContext.GetParamIntOrZero("articletype","articletype");
			    bool bResults = ArticleSearch(searchQuery, showApproved, showNormal, showSubmitted, showContentRating, showPhrases, userGroups, skip, show,nodeId, articleType, useFreeTextSearch );

                //add recent search values
                recentsearch.AddSearchTerm(searchQuery, RecentSearch.SEARCHTYPE.ARTICLE);
            }

            //User Search.
            if ( InputContext.GetParamIntOrZero("user","user") == 1 || searchtype.ToUpper() == "USER"  )
            {
                bool currentSiteOnly = InputContext.GetParamIntOrZero("thissite","current site only") == 1;
                UserSearch(searchQuery,skip,show,currentSiteOnly);

                //add recent search values
                recentsearch.AddSearchTerm(searchQuery, RecentSearch.SEARCHTYPE.USER);

                
            }

            if (InputContext.GetParamIntOrZero("hierarchy", "hierarchy") == 1 || searchtype.ToUpper() == "HIERARCHY" )
            {
                HierarchySearch(searchQuery, skip, show);

                //add recent search values
                recentsearch.AddSearchTerm(searchQuery, RecentSearch.SEARCHTYPE.HIERARCHY);
            }

            if (InputContext.GetParamIntOrZero("forum", "forum") == 1 || searchtype.ToUpper() == "FORUM")
            {
                int threadId = InputContext.GetParamIntOrZero("forumid","forumid");
                int forumId = InputContext.GetParamIntOrZero("threadid","threadid");
                ForumSearch(searchQuery, skip, show, userGroups, nodeId, threadId, forumId);

                //add recent search values
                recentsearch.AddSearchTerm(searchQuery, RecentSearch.SEARCHTYPE.FORUM);
            }

            //Add All User Groups.
            XmlElement groups = UserGroupsHelper.GetSiteGroupsElement(InputContext.CurrentSite.SiteID, InputContext);
            RootElement.AppendChild(ImportNode(groups));
            
            //Add Functionality / Parameters for each search type.
            /*XmlElement functionality = AddElementTag(RootElement, "FUNCTIONALITY");
            XmlElement searchArticles = AddElementTag(functionality, "SEARCHARTICLES");
            if (InputContext.GetParamIntOrZero("article", "article") == 1)
            {
                AddAttribute(searchArticles, "SELECTED", 1);
            }
            AddElementTag(searchArticles, "SHOWAPPROVED");
            AddElementTag(searchArticles, "SHOWNORMAL");
            AddElementTag(searchArticles, "SHOWSUBMITTED");

            XmlElement searchUsers = AddElementTag(functionality, "SEARCHUSERS");
            if (InputContext.GetParamIntOrZero("users", "users") == 1)
            {
                AddAttribute(searchUsers, "SELECTED", 1);
            }

            XmlElement searchForums = AddElementTag(functionality, "SEARCHFORUMS");
            if (InputContext.GetParamIntOrZero("forums", "forums") == 1)
            {
                AddAttribute(searchForums, "SELECTED", 1);
            }*/
        }