Example #1
0
        /// <summary>
        /// Checks if an item has a group alert
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="groupId"></param>
        /// <param name="userId"></param>
        /// <param name="siteId"></param>
        /// <param name="itemType"></param>
        /// <param name="itemId"></param>
        static public void HasGroupAlertOnItem(IDnaDataReaderCreator readerCreator, ref int groupId, int userId, int siteId, EventItemTypes itemType, int itemId)
        {
            groupId =0;
            IDnaDataReader reader = null;
            switch (itemType)
            {
                case EventItemTypes.IT_FORUM: reader = readerCreator.CreateDnaDataReader("getforumgroupalertid"); reader.AddParameter("itemid", itemId); break;
                case EventItemTypes.IT_H2G2: reader = readerCreator.CreateDnaDataReader("getarticlegroupalertid"); reader.AddParameter("itemid", itemId); break;
                case EventItemTypes.IT_NODE: reader = readerCreator.CreateDnaDataReader("getnodegroupalertid"); reader.AddParameter("nodeid", itemId); break;
                case EventItemTypes.IT_THREAD: reader = readerCreator.CreateDnaDataReader("getthreadgroupalertid"); reader.AddParameter("threadid", itemId); break;
                case EventItemTypes.IT_CLUB: reader = readerCreator.CreateDnaDataReader("getclubgroupalertid"); reader.AddParameter("itemid", itemId); break;
                default: throw new NotImplementedException();
            }

            using (reader)
            {
                

                reader.AddParameter("userid", userId);
                reader.AddParameter("siteid", siteId);
                reader.Execute();
                if (reader.Read())
                {
                    groupId = reader.GetInt32NullAsZero("GroupID");
                }
            }
        }
Example #2
0
        public static List<ArticleSummary> GetChildArticles(IDnaDataReaderCreator readerCreator, int nodeID, int siteID)
        {
 
            List<ArticleSummary> childArticles = new List<ArticleSummary>();
            using (IDnaDataReader reader = readerCreator.CreateDnaDataReader("getarticlesinhierarchynode"))
            {
                reader.AddParameter("nodeID", nodeID);
                reader.AddParameter("currentsiteid", siteID);
                reader.Execute();
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        ArticleSummary childArticle = new ArticleSummary();
                        childArticle.H2G2ID = reader.GetInt32NullAsZero("h2g2id");
                        childArticle.Name = reader.GetStringNullAsEmpty("subject");
                        childArticle.StrippedName = StringUtils.StrippedName(reader.GetStringNullAsEmpty("subject"));
                        childArticle.Type = Article.GetArticleTypeFromInt(reader.GetInt32NullAsZero("Type"));
                        childArticle.Editor = new UserElement() { user = User.CreateUserFromReader(reader, "editor")} ;
                        childArticle.DateCreated = new DateElement(reader.GetDateTime("datecreated"));
                        childArticle.LastUpdated = new DateElement(reader.GetDateTime("lastupdated")); ;
                        //childArticle.SortOrder = null;
                        childArticle.Status = ArticleStatus.GetStatus(reader.GetInt32NullAsZero("status"));
                        childArticles.Add(childArticle);
                    }
                }
            }
            return childArticles;
        }
Example #3
0
        static public ReviewForum CreateFromDatabase(IDnaDataReaderCreator readerCreator, int id, bool isReviewForumID)
        {
            ReviewForum forum = new ReviewForum()
            {
                Id = id
            };

            using (IDnaDataReader reader = readerCreator.CreateDnaDataReader("fetchreviewforumdetails"))
            {
                if (isReviewForumID)
                {
                    reader.AddParameter("reviewforumid", id);
                }
                else
                {
                    reader.AddParameter("h2g2id", id);
                }

                reader.Execute();
                // Check to see if we found anything
                if (reader.HasRows && reader.Read())
                {
                    forum.Id = reader.GetInt32NullAsZero("ReviewForumID");
                    forum.ForumName = reader.GetStringNullAsEmpty("forumname");
                    forum.UrlFriendlyName = reader.GetStringNullAsEmpty("urlfriendlyname");
                    forum.H2g2Id = reader.GetInt32NullAsZero("h2g2id");
                    forum.SiteId = reader.GetInt32NullAsZero("siteid");
                    forum.IncubateTime = reader.GetInt32NullAsZero("IncubateTime");
                    forum.Recommendable= reader.GetByteNullAsZero("recommend");
                }
            }
            return forum;
        }
        static public ArticleInfoPageAuthor CreateListForArticle(int h2g2Id, int editorId, IDnaDataReaderCreator readerCreator)
        {

            ArticleInfoPageAuthor author = new ArticleInfoPageAuthor();
            
            // Create the datareader to get the authors
            using (IDnaDataReader reader = readerCreator.CreateDnaDataReader("getauthorsfromh2g2id"))
            {
                reader.AddParameter("h2g2ID", h2g2Id);
                reader.Execute();

                // Now go through all the results in turn
                int lastUserID = 0;
                while (reader.Read())
                {
                    // Get the current researcher
                    int researcherID = reader.GetInt32("UserID");
                    if (researcherID != lastUserID)
                    {
                        // Check to see if we've just got the editors results
                        User researcher = User.CreateUserFromReader(reader);
                        author.Researchers.Add(researcher);
                        if (researcherID == editorId)
                        {
                            author.Editor = new UserElement() { user = researcher };
                        }
                        lastUserID = researcherID;
                    }
                }
            }
            return author;
        }
        static public ArticleInfoSubmittable CreateSubmittable(IDnaDataReaderCreator readerCreator, int h2g2Id, bool isSubmittable)
        {
            ArticleInfoSubmittable submittable = new ArticleInfoSubmittable();
            using (IDnaDataReader reader = readerCreator.CreateDnaDataReader("fetchreviewforummemberdetails"))
            {
                reader.AddParameter("h2g2id", h2g2Id);
                reader.Execute();

                if (reader.HasRows && reader.Read())
                {
                    
                    submittable.Forum = new SubmittableForum(){Id=reader.GetInt32("ForumID")};
                    submittable.Thread = new SubmittableThread() { Id = reader.GetInt32("ThreadID") };
                    submittable.Post = new SubmittablePost() { Id = reader.GetInt32("PostID") };
                    submittable.Type = "IN";
                    submittable.ReviewForum = ReviewForum.CreateFromDatabase(readerCreator, reader.GetInt32("ReviewForumID"), true);
                }
                else if (isSubmittable)
                {
                    submittable.Type = "YES";
                }
                else
                {
                    submittable.Type = "NO";
                }
            }
            return submittable;
        }
Example #6
0
        /// <summary>
        /// Calls the db and updates the term and action for a given modclassid
        /// </summary>
        /// <param name="readerCreator"></param>
        /// <param name="modClassId"></param>
        /// <param name="historyId"></param>
        public bool UpdateTermForModClassId(IDnaDataReaderCreator readerCreator, int modClassId, int historyId)
        {
            if (string.IsNullOrEmpty(Value))
            {//if empty then throw exception
                throw new Exception("Term value cannot be empty.");
            }
            if (historyId == 0)
            {//if empty then throw exception
                throw new Exception("HistoryId cannot be 0.");
            }
            if (modClassId == 0)
            {//if empty then throw exception
                throw new Exception("ModClassId cannot be 0.");
            }

            bool termUpdated = true;
            using (IDnaDataReader reader = readerCreator.CreateDnaDataReader("addtermsfilterterm"))
            {
                reader.AddParameter("term", Value);
                reader.AddParameter("actionId", (byte)Action);
                reader.AddParameter("modClassId", modClassId);
                reader.AddParameter("historyId", historyId);
                reader.Execute();

                if (reader.HasRows && reader.Read())
                {
                    termUpdated = reader.GetBoolean("termupdated");
                }
            }

            return termUpdated;
        }
Example #7
0
        /// <summary>
        /// Registers complaint against post
        /// </summary>
        /// <param name="creator"></param>
        /// <param name="userId"></param>
        /// <param name="complaintText"></param>
        /// <param name="email"></param>
        /// <param name="postId"></param>
        /// <param name="verificationUid"></param>
        /// <param name="modId"></param>
        public static void RegisterComplaint(IDnaDataReaderCreator creator, int userId, String complaintText, 
            String email, int postId, string ipAddress, Guid bbcUid, out Guid verificationUid, out int modId)
        {
            verificationUid = Guid.Empty;
            modId = 0;
            using (IDnaDataReader dataReader = creator.CreateDnaDataReader("registerpostingcomplaint"))
            {
                dataReader.AddParameter("complainantid", userId);
                dataReader.AddParameter("correspondenceemail", email);
                dataReader.AddParameter("postid", postId);
                dataReader.AddParameter("complainttext", complaintText);
                dataReader.AddParameter("ipaddress", ipAddress);
                dataReader.AddParameter("bbcuid", bbcUid);

                //HashValue
                Guid hash = DnaHasher.GenerateHash(Convert.ToString(userId) + ":" + email + ":" + Convert.ToString(postId) + ":" + complaintText);
                dataReader.AddParameter("hash", hash);
                dataReader.Execute();

                // Send Email

                if (dataReader.Read())
                {
                    if (dataReader.DoesFieldExist("modId"))
                    {
                        modId = dataReader.GetInt32NullAsZero("modId");
                    }
                    if (dataReader.DoesFieldExist("verificationUid"))
                    {
                        verificationUid = dataReader.GetGuid("verificationUid");

                    }
                }
            }
        }
Example #8
0
        /// <summary>
        /// Load list of smileys which need to be replaced by Smiley XML.
        /// Generate XML replacements.
        /// Generate RegEx to match smiley shortcode.
        /// </summary>
        /// <returns></returns>
        public static void LoadSmileys(IDnaDataReaderCreator  creator)
        {
            Replacements.Clear();
            TagReplacements.Clear();
            IsInitialised = false;
            String regex = String.Empty;
            using (IDnaDataReader dataReader = creator.CreateDnaDataReader("getsmileylist"))
            {
                dataReader.Execute();
                while (dataReader.Read())
                {
                    String name = dataReader.GetStringNullAsEmpty("name");
                    String shorthand = dataReader.GetStringNullAsEmpty("tag");
                    
                    String replace = "<SMILEY TYPE='***' H2G2='Smiley#***'/>";
                    shorthand = StringUtils.EscapeAllXml(shorthand);
                    if (shorthand.IndexOf("&lt;") == 0)
                    {
                        TagReplacements.Add(shorthand, replace.Replace("***", name));
                    }
                    else
                    {
                        Replacements.Add(shorthand, replace.Replace("***", name));
                    }                   
                }
            }

            IsInitialised = true;
        }
Example #9
0
 public static string GetDatabaseVersion(IDnaDataReaderCreator readerCreator)
 {
     using (var dataReader = readerCreator.CreateDnaDataReader("dna.DatabaseVersion"))
     {
         dataReader.Execute();
         dataReader.Read();
         var databaseVersion = dataReader.GetString("DatabaseVersion");
         return databaseVersion;
     }
 }
Example #10
0
 static public void ProcessUserModatedEventActivity(IDnaDataReaderCreator DataReaderCreator)
 {
     using (IDnaDataReader reader = DataReaderCreator.CreateDnaDataReader("getsiteevents_usermoderation"))
     {
         reader.Execute();
         while (reader.Read())
         {
             CreateUserModatedEventActivity(reader, DataReaderCreator);
         }
     }
     
 }
Example #11
0
 /// <summary>
 /// Stores the event in the db...
 /// </summary>
 /// <param name="creator"></param>
 public void SaveEvent(IDnaDataReaderCreator creator)
 {
     using (IDnaDataReader reader = creator.CreateDnaDataReader("insertsiteactivityitem"))
     {
         reader.AddParameter("type", (int)Type);
         reader.AddParameter("activitydata", ActivityData.ToString());
         reader.AddParameter("datetime", Date.DateTime);
         reader.AddParameter("siteid", SiteId);
         reader.AddParameter("userid", UserId);
         reader.Execute();
     }
 }
 static public void ProcessArticleModerationDecisionActivity(IDnaDataReaderCreator DataReaderCreator)
 {
 //Get Article Moderation Events
         using (IDnaDataReader reader = DataReaderCreator.CreateDnaDataReader("getsiteevents_articlemoderationdecision"))
         {
             reader.Execute();
             while (reader.Read())
             {
                 ArticleModerationDecision.CreateArticleModerationDecisionActivity(reader, DataReaderCreator);
             }
         }
 }
Example #13
0
 static public void ProcessComplaintArticleEventActivity(IDnaDataReaderCreator DataReaderCreator)
 {
     using (IDnaDataReader reader = DataReaderCreator.CreateDnaDataReader("getsiteevents_complaintarticle"))
     {
         reader.Execute();
         while (reader.Read())
         {
             CreateComplaintArticleEventActivity(reader, DataReaderCreator);
         }
     }
     
 }
Example #14
0
 static public void ProcessNewUserEventActivity(IDnaDataReaderCreator DataReaderCreator)
 {
     using (IDnaDataReader reader = DataReaderCreator.CreateDnaDataReader("getsiteevents_newuser"))
     {
         reader.Execute();
         while (reader.Read())
         {
             CreateNewUserEventActivity(reader, DataReaderCreator);
         }
     }
     
 }
Example #15
0
        /// <summary>
        /// This method creates the Crumbtrail xml for a given article id
        /// </summary>
        /// <param name="h2g2ID">The id of the article you want to get the crumbtrail for</param>
        static public CrumbTrails CreateArticleCrumbtrail(int h2g2ID, IDnaDataReaderCreator readerCreator)
        {
            // Create the reader to get the details
            using (IDnaDataReader reader = readerCreator.CreateDnaDataReader("getarticlecrumbtrail"))
            {
                reader.AddParameter("h2g2ID", h2g2ID);
                reader.Execute();

                // Now create the crumbtrails from the results
                return GetCrumbtrailForItem(reader);
            }
        }
Example #16
0
        /// <summary>
        /// Gets the total number of uneditted articles
        /// </summary>
        /// <param name="siteID">The site id</param>
        /// <returns></returns>
        private static int GetUneditedArticleCount(IDnaDataReaderCreator readerCreator, int siteID)
        {
            int count;
            using (IDnaDataReader dataReader = readerCreator.CreateDnaDataReader("totalunapprovedentries"))
            {
                dataReader.AddParameter("siteid", siteID);
                dataReader.Execute();

                if (!dataReader.HasRows || !dataReader.Read()) { return 0; }
                count =  dataReader.GetInt32NullAsZero("cnt");
            }
            return count;
        }
Example #17
0
 public void QueueEmail(IDnaDataReaderCreator readerCreator, string toEmailAddress, string fromEmailAddress, string ccAddress, string subject, string body, string notes, EmailPriority priority)
 {
     using (IDnaDataReader reader = readerCreator.CreateDnaDataReader("QueueEmail"))
     {
         reader.AddParameter("toEmailAddress", toEmailAddress);
         reader.AddParameter("fromEmailAddress", fromEmailAddress);
         reader.AddParameter("ccAddress", ccAddress == null ? "" : ccAddress);
         reader.AddParameter("subject", subject);
         reader.AddParameter("body", body);
         reader.AddParameter("priority", priority);
         reader.AddParameter("notes", notes);
         reader.Execute();
     }
 }
Example #18
0
        /// <summary>
        /// Allowed URL List Class
        /// </summary>
        /// <param name="context">The context</param>
        public void LoadAllowedURLLists(IDnaDataReaderCreator readerCreator)
        {

            string getAllowedURLListData = "getallallowedurls";
            using (IDnaDataReader dataReader = readerCreator.CreateDnaDataReader(getAllowedURLListData))
            {
                dataReader.Execute();

                if (dataReader.HasRows)
                {
                    ProcessAllowedURLListData(dataReader);
                }
            }
        }
Example #19
0
        /// <summary>
        /// This metho gets all the Email Inserts for a given site or mod class
        /// </summary>
        /// <param name="readerCreator">A data reader creator to create procedure calls</param>
        /// <param name="insertType">The type of inserts to get, modclass or site</param>
        /// <param name="typeID">The ID of the modclass or site to get</param>
        /// <returns>An EmailInserts object that holds a list of all the email inserts for the requested object</returns>
        public static EmailInserts GetEmailInserts(IDnaDataReaderCreator readerCreator, EmailTemplateTypes insertType, int typeID)
        {
            // Create a new EmailInserts object and initialise the collection
            EmailInserts emailInserts = new EmailInserts();
            emailInserts.EmailInsertList = new Collection<EmailInsert>();

            // Work out which type of inserts we're trying to get
            string procName = "getemailinsertsbyclass";
            string paramName = "ModClassID";
            if (insertType == EmailTemplateTypes.SiteTemplates)
            {
                procName = "getemailinsertsbysite2";
                paramName = "siteid";
            }
            else if (insertType == EmailTemplateTypes.AllTemplates)
            {
                typeID = -1;
            }

            // Go through all the results creating the inserts and adding them to the list
            using (IDnaDataReader reader = readerCreator.CreateDnaDataReader(procName))
            {
                reader.AddParameter(paramName, typeID);
                reader.Execute();
                
                while (reader.HasRows && reader.Read())
                {
                    EmailInsert insert = new EmailInsert();
                    insert.ID = reader.GetInt32("EmailInsertID");
                    insert.Name = reader.GetString("InsertName");
                    insert.DisplayName = reader.GetString("DisplayName");
                    insert.Group = reader.GetString("InsertGroup");
                    if (!reader.IsDBNull("SiteID"))
                    {
                        insert.SiteID = reader.GetInt32("SiteID");
                    }
                    insert.DefaultText = reader.GetString("DefaultText");
                    insert.InsertText = reader.GetString("InsertText");
                    insert.ClassID = reader.GetInt32("ModClassID");

                    emailInserts.EmailInsertList.Add(insert);
                }
            }

            // Return the new object
            return emailInserts;
        }
Example #20
0
        /// <summary>
        /// Gets the topics for a given site and status from the db.
        /// </summary>
        /// <param name="readerCreator"></param>
        /// <param name="siteId"></param>
        /// <param name="status"></param>
        /// <returns></returns>
        static public TopicElementList GetTopicListFromDatabase(IDnaDataReaderCreator readerCreator, int siteId, TopicStatus status, bool includeArchived)
        {
            var topicList = new TopicElementList{Status = status};
            using (var reader = readerCreator.CreateDnaDataReader("gettopicsforsiteid2"))
            {
                reader.AddParameter("isiteid", siteId);
                reader.AddParameter("itopicstatus", (int)status);
                reader.AddParameter("includearchived", includeArchived ? 1 : 0);
                
                reader.Execute();
                while(reader.Read())
                {
                    topicList.Topics.Add(TopicElement.GetTopicFromReader(reader));
                }
            }

            return topicList;
        }
Example #21
0
       /// <summary>
        /// Updates the frontpage elements attributes of the topic
        /// </summary>
        /// <param name="readerCreator"></param>
        /// <param name="siteId"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        public BaseResult UpdateFrontPageElements(IDnaDataReaderCreator readerCreator, int userId, int topicId)
        {
            //updatetopicelement	@topicelementid int, @topicid int = NULL, @templatetype int = NULL, @textboxtype int = NULL,
            //@textbordertype int = NULL, @frontpageposition int = NULL, @elementstatus int = NULL, @elementlinkid int = NULL,
            //@title varchar(256) = NULL, @text text = NULL, @imagename varchar(256) = NULL,
            //@applytemplatetoallinsite int = 0, @imagewidth int = NULL, @imageheight int = NULL,
            //@imagealttext varchar(256) = NULL,  @editorid INT, @editkey uniqueidentifier
            using (var reader = readerCreator.CreateDnaDataReader("updatetopicelement"))
            {
                reader.AddParameter("topicelementid", Elementid);
                reader.AddParameter("topicid", topicId);
                reader.AddParameter("templatetype", TemplateElement);
                reader.AddParameter("frontpageposition", Position);
                reader.AddParameter("elementstatus", StatusElement);
                reader.AddParameter("title", Title);
                reader.AddParameter("text", Text);
                reader.AddParameter("imagename", ImageName);
                reader.AddParameter("imagealttext", ImageAltText);
                reader.AddParameter("editorid", userId);
                reader.AddParameter("editkey", Editkey);
                reader.Execute();

                if (reader.Read())
                {
                    //SELECT 'ValidID' = 1,'NewEditKey' = @NewEditKey
                    if (reader.GetInt32NullAsZero("ValidID") == 1)
                    {
                        Editkey = reader.GetGuid("NewEditKey");
                    }
                    else
                    {
                        return new Error("UpdateFrontPageElements", "Unable to update - invalid edit key");
                    }

                }
                else
                {
                    return new Error("UpdateFrontPageElements", "Unable to update");
                }
                return new Result("UpdateFrontPageElements", "Update successful");
            }


        }
Example #22
0
        /// <summary>
        /// This method gets all the Email Templates for a given type
        /// </summary>
        /// <param name="readerCreator">A data reader creator to create procedures</param>
        /// <param name="templateType">The type of templates to get</param>
        /// <param name="typeID">The ID of the template type</param>
        /// <returns>An Email Templates object that contains a collection of all the requested email templates</returns>
        public static EmailTemplates GetEmailTemplates(IDnaDataReaderCreator readerCreator, EmailTemplateTypes templateType, int typeID)
        {
            // Create a new email templates object and intialise the collection
            EmailTemplates emailTemplates = new EmailTemplates();
            emailTemplates.EmailTemplatesList = new Collection<EmailTemplate>();

            // Work out which procedure and params we need to call for the requested type
            string emailTemplateProc = "getemailtemplatesbymodclassid";
            string typeIDName = "modclassid";
            if (templateType == EmailTemplateTypes.SiteTemplates)
            {
                emailTemplateProc = "getemailtemplatesbysiteid";
                typeIDName = "siteid";
            }
            else if (templateType == EmailTemplateTypes.AllTemplates)
            {
                typeID = -1;
            }

            // Go through all the results creating and adding the templates to the list
            using (IDnaDataReader reader = readerCreator.CreateDnaDataReader(emailTemplateProc))
            {
                reader.AddParameter(typeIDName, typeID);
                reader.Execute();
                while (reader.HasRows && reader.Read())
                {
                    EmailTemplate emailTemplate = new EmailTemplate()
                    {
                        ModClassID = reader.GetInt32("ModClassID"),
                        AutoFormat = reader.IsDBNull("AutoFormat") ? 0 : reader.GetBoolean("AutoFormat") ? 1 : 0,
                        EmailTemplateID = reader.GetInt32("EmailTemplateID"),
                        Name = reader.GetString("Name"),
                        Subject = reader.GetString("Subject"),
                        Body = reader.GetString("Body")
                    };

                    emailTemplates.EmailTemplatesList.Add(emailTemplate);
                }
            }

            // Return the new Email template object
            return emailTemplates;
        }
Example #23
0
        /// <summary>
        /// Gets the latest articles for a given site
        /// </summary>
        /// <param name="siteID">The site id</param>
        /// <param name="skip">Number to skip</param>
        /// <param name="show"></param>
        /// <returns></returns>
        private static List<ArticleSummary> CreateRecentArticles(IDnaDataReaderCreator readerCreator, int siteID, int skip, int show)
        {            
            List<ArticleSummary> recentArticles = new List<ArticleSummary>();
            using (IDnaDataReader dataReader = readerCreator.CreateDnaDataReader("freshestarticles"))
            {
                dataReader.AddParameter("siteid", siteID);
                dataReader.AddParameter("show", show);
                dataReader.AddParameter("skip", skip);
                dataReader.Execute();

                if (!dataReader.HasRows) { return null; }

                while (dataReader.Read())
                {
                    recentArticles.Add(ArticleSummary.CreateArticleSummaryFromReader(dataReader));
                }
            }
            return recentArticles;
        }
Example #24
0
        /// <summary>
        /// Returns the object filles from the preview table.
        /// </summary>
        /// <param name="siteId"></param>
        /// <param name="readerCreator"></param>
        /// <returns></returns>
        public static SiteConfig GetPreviewSiteConfig(int siteId, IDnaDataReaderCreator readerCreator)
        {
            var siteConfig = new SiteConfig {SiteId = siteId};

            using(var reader = readerCreator.CreateDnaDataReader("fetchpreviewsiteconfig"))
            {
                reader.AddParameter("siteid", siteId);
                reader.Execute();
                if(reader.Read())
                {
                    siteConfig.EditKey = reader.GetGuid("editkey");
                    var siteConfigStr = reader.GetStringNullAsEmpty("config");
                    if(!string.IsNullOrEmpty(siteConfigStr))
                    {
                        var xmlSiteConfig = new XmlDocument();
                        xmlSiteConfig.LoadXml(Entities.GetEntities() + siteConfigStr);

                        /*var xmlV2Node = xmlSiteConfig.SelectSingleNode("//SITECONFIG/V2_BOARDS");
                        if(xmlV2Node != null)
                        {
                            siteConfig.V2Board = (SiteConfigV2Board)StringUtils.DeserializeObjectUsingXmlSerialiser(xmlV2Node.OuterXml, typeof(SiteConfigV2Board));
                        }*/

                        var elements = new List<XmlElement>();
                        foreach (XmlElement childNode in xmlSiteConfig.ChildNodes[1].ChildNodes)
                        {
                            if(childNode.Name == "V2_BOARDS")
                            {
                                siteConfig.V2Board = (SiteConfigV2Board)StringUtils.DeserializeObjectUsingXmlSerialiser(childNode.OuterXml, typeof(SiteConfigV2Board));
                            }
                            else
                            {
                                elements.Add(childNode);
                            }
                        }
                        siteConfig.LegacyElements = elements.ToArray();
                    }
                    
                }
            }
            return siteConfig;
        }
Example #25
0
        /// <summary>
        /// This methos gets the list of related clubs for a given article
        /// </summary>
        /// <param name="h2g2ID">The id of the article you want to get the related clubs for</param>
        static public RelatedClubs GetRelatedClubs(int h2g2ID, IDnaDataReaderCreator readerCreator)
        {
            RelatedClubs relatedClubs = new RelatedClubs();
            // Create a data reader to get all the clubs
            using (IDnaDataReader reader = readerCreator.CreateDnaDataReader("getrelatedclubs"))
            {
                reader.AddParameter("h2g2ID", h2g2ID);
                reader.Execute();
                // Add each club member in turn
                while (reader.Read())
                {
                    RelatedClubsMember member = new RelatedClubsMember();
                    member.ClubId = reader.GetInt32("ClubID");
                    member.Name = reader.GetString("Subject");
                    member.Type = Article.GetArticleTypeFromInt(reader.GetInt32NullAsZero("Type"));

                    

                    relatedClubs.ClubMember.Add(member);
                    //ExtraInfo clubExtraInfo = new ExtraInfo();
                    //clubExtraInfo.TryCreate(reader.GetInt32("Type"), reader.GetString("ExtraInfo"));
                    //clubNode.AppendChild(ImportNode(clubExtraInfo.RootElement.FirstChild));
                    //if (reader.Exists("DateCreated"))
                    //{
                    //    XmlNode dateCreatedNode = AddElementTag(clubNode, "DATECREATED");
                    //    dateCreatedNode.AppendChild(DnaDateTime.GetDateTimeAsElement(RootElement.OwnerDocument, reader.GetDateTime("DateCreated"), true));
                    //}
                    //if (reader.Exists("Lastupdated"))
                    //{
                    //    XmlNode dateCreatedNode = AddElementTag(clubNode, "LASTUPDATE");
                    //    dateCreatedNode.AppendChild(DnaDateTime.GetDateTimeAsElement(RootElement.OwnerDocument, reader.GetDateTime("DateCreated"), true));
                    //}

                    // NEED TO ADD EDITOR, CLUBMEMBERS, LOCAL, EXTRAINFO, STRIPPED NAME... CHECK CLUB MEMBERS
                }
            }
            return relatedClubs;
        }
Example #26
0
        /// <summary>
        /// Makes the topics and related front page elements active/live
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="siteId"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        static public BaseResult MakePreviewTopicsActiveForSiteID(IDnaDataReaderCreator readerCreator, int siteId, int userId)
        {
            using (var reader = readerCreator.CreateDnaDataReader("MakePreviewTopicsActiveForSiteID"))
            {
                reader.AddIntReturnValue();
                reader.AddParameter("isiteid", siteId);
                reader.AddParameter("ieditorid", userId);
                reader.Execute();

                int retVal=-1;
                if (!reader.TryGetIntReturnValue(out retVal) || retVal != 0)
                {
                    return new Error("MakePreviewTopicsActiveForSiteID", "Unable to create new topic, error returned " + retVal.ToString());
                }
            }
            using (var reader = readerCreator.CreateDnaDataReader("MakePreviewTopicElementsActive"))
            {
                reader.AddParameter("siteid", siteId);
                reader.AddParameter("editorid", userId);
                reader.Execute();
            }
            return new Result("MakePreviewTopicsActiveForSiteID", "Successful");
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="creator"></param>
        /// <param name="userIDs"></param>
        /// <returns></returns>
        static public List<ArticleInfoReferencesUser> CreateUserReferences(IDnaDataReaderCreator creator, List<int> userIDs)
        {
            List<ArticleInfoReferencesUser> users = new List<ArticleInfoReferencesUser>();
            using (IDnaDataReader reader = creator.CreateDnaDataReader("getusernames"))
            {
                for (int i = 1; i < 90 && userIDs.Count > 0; i++)
                {
                    reader.AddParameter("id" + i.ToString(), userIDs[0]);
                    userIDs.RemoveAt(0);
                }
                reader.Execute();

                while (reader.Read())
                {
                    ArticleInfoReferencesUser user = new ArticleInfoReferencesUser();
                    user.UserId = reader.GetInt32NullAsZero("UserID");
                    user.H2g2 = "U" + user.UserId.ToString();
                    user.Username = reader.GetStringNullAsEmpty("UserName");
                    users.Add(user);
                }
            }
            return users;
        }
Example #28
0
        /// <summary>
        /// Creates the topic from the filled in TopicElement object
        /// </summary>
        /// <param name="readerCreator"></param>
        /// <param name="siteId"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        public BaseResult CreateFrontPageElement(IDnaDataReaderCreator readerCreator, int siteId, int userId)
        {
            using (var reader = readerCreator.CreateDnaDataReader("createtopicelement"))
            {
                reader.AddParameter("siteid", siteId);
                reader.AddParameter("userid", userId);
                reader.AddParameter("ElementStatus", StatusElement);
                
                reader.Execute();

                if (reader.Read())
                {
                    Elementid = reader.GetInt32NullAsZero("TopicElementID");
                    Editkey = reader.GetGuid("editkey");
                    return new Result("CreateFrontPageElement", "Created Successfully");
                }
                else
                {
                    return new Error("CreateFrontPageElement", "Unable to create new topic element");
                }
            }
            

        }
        static public List<ArticleInfoReferencesEntryLink> CreateArticleReferences(List<int> articleIDs, IDnaDataReaderCreator readerCreator)
        {
            List<ArticleInfoReferencesEntryLink> entryLinks = new List<ArticleInfoReferencesEntryLink>();
            using (IDnaDataReader reader = readerCreator.CreateDnaDataReader("fetcharticles"))
            {
                // Now add all the user References
                for (int i = 1; i < 90 && articleIDs.Count > 0; i++)
                {
                    reader.AddParameter("id" + i.ToString(), articleIDs[0]);
                    articleIDs.RemoveAt(0);
                }
                reader.Execute();

                while (reader.Read())
                {
                    ArticleInfoReferencesEntryLink link = new ArticleInfoReferencesEntryLink();
                    link.H2g2Id = reader.GetInt32("h2g2ID");
                    link.H2g2 = "A" + link.H2g2Id.ToString();
                    link.Subject = reader.GetString("Subject");
                    entryLinks.Add(link);
                }
            }
            return entryLinks;
        }
Example #30
0
        /// <summary>
        /// Generates user reputation object
        /// </summary>
        /// <param name="creator"></param>
        /// <param name="modClass"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        public static UserReputation GetUserReputation(IDnaDataReaderCreator creator, ModerationClass modClass,
            int userId)
        {
            UserReputation userRep = new UserReputation() { ModClass = modClass, UserId = userId };

            using (IDnaDataReader dataReader = creator.CreateDnaDataReader("getuserreputation"))
            {
                dataReader.AddParameter("userid", userId);
                dataReader.AddParameter("modclassid", modClass.ClassId);
                dataReader.AddIntOutputParameter("@currentStatus");
                dataReader.AddIntOutputParameter("@reputationDeterminedStatus");
                dataReader.Execute();

                if (dataReader.Read())
                {
                    userRep.CurrentStatus = (ModerationStatus.UserStatus)dataReader.GetInt32NullAsZero("currentstatus");
                    userRep.ReputationDeterminedStatus = (ModerationStatus.UserStatus)dataReader.GetInt32NullAsZero("ReputationDeterminedStatus");
                    userRep.ReputationScore = dataReader.GetInt16("accumulativescore");
                    userRep.UserName = dataReader.GetStringNullAsEmpty("username");
                    userRep.LastUpdated = new DateElement(dataReader.GetDateTime("lastupdated"));
                }
            }
            return userRep;
        }