Esempio n. 1
0
        /// <summary>
        /// Functions generates the User Subscription List
        /// </summary>
        /// <param name="userID">The user of the subscriptions to get</param>
        /// <param name="siteID">Site of the posts</param>
        /// <param name="skip">number of posts to skip</param>
        /// <param name="show">number to show</param>
        /// <returns>Whether created ok</returns>
        public bool CreateUserSubscriptionsList(int userID, int siteID, int skip, int show)
        {
            // check object is not already initialised
            if (userID <= 0 || show <= 0)
            {
                return false;
            }

            int count = show;

            XmlElement UserSubscriptionsList = AddElementTag(RootElement, "USERSUBSCRIPTION-LIST");
            AddAttribute(UserSubscriptionsList, "SKIP", skip);
            AddAttribute(UserSubscriptionsList, "SHOW", show);

            using (IDnaDataReader dataReader = GetUsersSubscriptionList(userID, siteID, skip, show + 1))	// Get +1 so we know if there are more left
            {
                // Check to see if we found anything Owner of the list record first 
                // then their list in the following recordset
                string userName = String.Empty;
                if (dataReader.HasRows && dataReader.Read())
                {
                    User subscriber = new User(InputContext);
                    subscriber.AddPrefixedUserXMLBlock(dataReader, userID, "Subscriber", UserSubscriptionsList);

                    _userAcceptsSubscriptions = dataReader.GetBoolean("SubscriberAcceptSubscriptions");

                    dataReader.NextResult();
                    if (dataReader.HasRows && dataReader.Read())
                    {
                        XmlElement users = CreateElement("USERS");
                        do
                        {
                            User subscribedTo = new User(InputContext);
                            int subscribedToID = dataReader.GetInt32NullAsZero("subscribedToID");

                            subscribedTo.AddUserXMLBlock(dataReader, subscribedToID, users);

                            count--;

                        } while (count > 0 && dataReader.Read());	// dataReader.Read won't get called if count == 0

                        UserSubscriptionsList.AppendChild(users);

                        // See if there's an extra row waiting
                        if (count == 0 && dataReader.Read())
                        {
                            AddAttribute(UserSubscriptionsList, "MORE", 1);
                        }
                    }
                }
            }

            return true;
        }
Esempio n. 2
0
        /// <summary>
        /// Functions generates the TryCreateComingUp XML
        /// </summary>
        /// <param name="skip">Number of posts to skip</param>
        /// <param name="show">Number of posts to show</param>
        public void TryCreateComingUpXML(int skip, int show)
        {
            //Clean any existing XML.
            RootElement.RemoveAll();

            int recordsCount = 0;
            int total = 0;
            int numberToTryandGet = show + 1;

            XmlElement recommendations = AddElementTag(RootElement, "RECOMMENDATIONS");
            AddAttribute(recommendations, "COUNT", show);
            AddAttribute(recommendations, "SKIPTO", skip);

            using (IDnaDataReader dataReader = InputContext.CreateDnaDataReader("getacceptedentries"))
            {
                dataReader.AddParameter("siteID", InputContext.CurrentSite.SiteID);
                dataReader.Execute();

                // Check to see if we found anything
                if (dataReader.HasRows && dataReader.Read())
                {
                    //Read/skip over the skip number of rows so that the row that the first row that in the do below is 
                    //the one required
                    for (int i = 0; i < skip; i++)
                    {
                        dataReader.Read();
                    }
                    do
                    {
                        string subject = dataReader.GetStringNullAsEmpty("Subject");

                        int guideStatus = dataReader.GetInt32NullAsZero("GuideStatus");
                        int acceptedStatus = dataReader.GetByteNullAsZero("AcceptedStatus");
                        int originalEntryID = dataReader.GetInt32NullAsZero("OriginalEntryID");
                        int originalh2g2ID = dataReader.GetInt32NullAsZero("Originalh2g2ID");
                        int newEntryID = dataReader.GetInt32NullAsZero("EntryID");
                        int newh2g2ID = dataReader.GetInt32NullAsZero("h2g2ID");
                        int subEditorID = dataReader.GetInt32NullAsZero("SubEditorID");
                        int scoutID = dataReader.GetInt32NullAsZero("ScoutID");

		                DateTime dateAllocated = DateTime.MinValue;
                        DateTime dateReturned = DateTime.MinValue;
                        bool existsDateAllocated = !dataReader.IsDBNull("DateAllocated");
                        bool existsDateReturned = !dataReader.IsDBNull("DateReturned");
                        if (existsDateAllocated)
		                {
                            dateAllocated = dataReader.GetDateTime("DateAllocated");
		                }
                        if (existsDateReturned)
		                {
                            dateReturned = dataReader.GetDateTime("DateReturned");
		                }

                        XmlElement recommendation = AddElementTag(recommendations, "RECOMMENDATION");
                        AddTextTag(recommendation, "SUBJECT", subject);
                        AddIntElement(recommendation, "ACCEPTEDSTATUS", acceptedStatus);
                        AddIntElement(recommendation, "GUIDESTATUS", guideStatus);

                        XmlElement original = AddElementTag(recommendation, "ORIGINAL");
                        AddIntElement(original, "ENTRYID", originalEntryID);
                        AddIntElement(original, "H2G2ID", originalh2g2ID);

                        XmlElement edited = AddElementTag(recommendation, "EDITED");
                        AddIntElement(edited, "ENTRYID", newEntryID);
                        AddIntElement(edited, "H2G2ID", newh2g2ID);

                        User user = new User(InputContext);
                        user.AddPrefixedUserXMLBlock(dataReader, scoutID, "scout", recommendation);

                        user = new User(InputContext);
                        user.AddPrefixedUserXMLBlock(dataReader, subEditorID, "subeditor", recommendation);

                        if (existsDateAllocated)
		                {
                            AddDateXml(dateAllocated, recommendation, "DATEALLOCATED");
                        }

                        if (existsDateReturned)
                        {
                            AddDateXml(dateReturned, recommendation, "DATERETURNED");
                        }

                        total++;
                        recordsCount++;

                    } while (dataReader.Read());
                }
            }

            AddAttribute(recommendations, "COUNT", recordsCount);
            AddAttribute(recommendations, "TOTAL", total);
        }
        /// <summary>
        /// Generates XML for Blocked User Subscriptions.
        /// Allows the author to stop blocked users from tracking their content.
        /// </summary>
        /// <param name="userID">The ID of the user to get the list of blocked users for</param>
        /// <param name="skip">Number of blocked users to skip</param>
        /// <param name="show">Number of blocked users to show</param>
        private void GenerateBlockedUserSubscriptionsXml(int userID, int skip, int show)
        {
            XmlElement bannedUserSubscriptions = AddElementTag(RootElement, "BLOCKEDUSERSUBSCRIPTIONS");
            AddAttribute(bannedUserSubscriptions, "USERID", userID);
            bool userAcceptsSubscriptions = false;

			if (_actionResult != null)
			{
				bannedUserSubscriptions.AppendChild(_actionResult);
			}
            XmlElement bannedList = AddElementTag(bannedUserSubscriptions, "BLOCKEDUSERSUBSCRIPTIONS-LIST");
            AddAttribute(bannedList, "SKIP", skip);
            AddAttribute(bannedList, "SHOW", show);
            bannedUserSubscriptions.AppendChild(bannedList);
			XmlElement users = CreateElement("USERS");
            using (IDnaDataReader dataReader = InputContext.CreateDnaDataReader("getblockedusersubscriptions"))
            {
                dataReader.AddParameter("userid", userID);
                dataReader.AddParameter("siteid", InputContext.CurrentSite.SiteID);
                dataReader.AddParameter("skip", skip);
                dataReader.AddParameter("show", show + 1);
                dataReader.Execute();

                if (dataReader.HasRows && dataReader.Read())
                {
                    User blocker = new User(InputContext);
                    blocker.AddPrefixedUserXMLBlock(dataReader, userID, "Blocker", bannedList);

                    userAcceptsSubscriptions = dataReader.GetBoolean("BlockerAcceptSubscriptions");
                    AddAttribute(bannedUserSubscriptions, "ACCEPTSUBSCRIPTIONS", Convert.ToInt32(userAcceptsSubscriptions));

                    //Get the list from the second recordset
                    dataReader.NextResult();
                    if (dataReader.HasRows)
                    {
                        User user = new User(InputContext);
                        int count = show;
                        while (((count--) > 0) && dataReader.Read())
                        {
                            //Delegate generation of standardised User XML to User class.
                            int blockedUserId = dataReader.GetInt32NullAsZero("userid");
                            user.AddUserXMLBlock(dataReader, blockedUserId, users);
                        }
                        if (count <= 0 && dataReader.Read())
                        {
                            AddAttribute(bannedList, "MORE", 1);
                        }
                    }
                }
            }
			bannedList.AppendChild(users);

        }
Esempio n. 4
0
        /// <summary>
        /// Helper method to create the list after a specific stored procedure
		///		has been called to return an appropriate results set.
        /// </summary>
        /// <param name="articleList"></param>
        /// <param name="dataReader"></param>
        /// <param name="skip">Number of Articles to skip</param>
        /// <param name="show">Number of Articles to show</param>
        /// <returns></returns>
        public int CreateList(XmlElement articleList, IDnaDataReader dataReader, int skip, int show)
        {
            int count = show;
            bool records = true;

            //Read/skip over the skip number of rows so that the row that the first row that in the do below is 
            //the one required
            for (int i = 0; i < skip; i++)
            {
                records = dataReader.Read();
                if (!records)
                {
                    break;
                }
            }

            if (records)
            {
                do
                {
                    // Setup the article
                    XmlElement article = AddElementTag(articleList, "ARTICLE");

                    if (dataReader.DoesFieldExist("EntryID"))
                    {
                        AddIntElement(article, "ENTRY-ID", dataReader.GetInt32NullAsZero("EntryID"));
                    }
                    if (dataReader.DoesFieldExist("h2g2ID"))
                    {
                        AddAttribute(article, "H2G2ID", dataReader.GetInt32NullAsZero("h2g2ID"));
                        //TODO: remove the H2G2-ID from all schemas and skins...
                        AddIntElement(article, "H2G2-ID", dataReader.GetInt32NullAsZero("h2g2ID"));
                    }
                    if (dataReader.DoesFieldExist("SiteID"))
                    {
                        AddIntElement(article, "SITEID", dataReader.GetInt32NullAsZero("SiteID"));
                    }
                    if (dataReader.DoesFieldExist("RecommendationID"))
                    {
                        AddIntElement(article, "RECOMMENDATION-ID", dataReader.GetInt32NullAsZero("RecommendationID"));
                    }
                    if (dataReader.DoesFieldExist("NotificationSent"))
                    {
                        AddIntElement(article, "NOTIFIED", dataReader.GetBoolean("NotificationSent") ? 1 : 0);
                    }

                    User user = new User(InputContext);
                    if (dataReader.DoesFieldExist("Editor"))
                    {
                        // place all user details within a USER tag and structure them appropriately
                        // editor info
                        int editorID = dataReader.GetInt32NullAsZero("Editor");
                        XmlElement editorTag = AddElementTag(article, "EDITOR");
                        user.AddPrefixedUserXMLBlock(dataReader, editorID, "Editor", editorTag);
                    }

                    if (dataReader.DoesFieldExist("AuthorID"))
                    {
                        // author info
                        int authorID = dataReader.GetInt32NullAsZero("AuthorID");
                        XmlElement authorTag = AddElementTag(article, "AUTHOR");
                        user.AddPrefixedUserXMLBlock(dataReader, authorID, "Author", authorTag);
                    }

                    if (dataReader.DoesFieldExist("AcceptorID"))
                    {
                        // acceptor info (user that accepted a recommendation)
                        int acceptorID = dataReader.GetInt32NullAsZero("AcceptorID");
                        XmlElement acceptorTag = AddElementTag(article, "ACCEPTOR");
                        user.AddPrefixedUserXMLBlock(dataReader, acceptorID, "Acceptor", acceptorTag);
                    }

                    if (dataReader.DoesFieldExist("AllocatorID"))
                    {
                        // allocator info (user that allocated a recommendation to a sub)
                        int allocatorID = dataReader.GetInt32NullAsZero("AllocatorID");
                        XmlElement allocatorTag = AddElementTag(article, "ALLOCATOR");
                        user.AddPrefixedUserXMLBlock(dataReader, allocatorID, "Allocator", allocatorTag);
                    }

                    if (dataReader.DoesFieldExist("ScoutID"))
                    {
                        // scout info
                        int scoutID = dataReader.GetInt32NullAsZero("ScoutID");
                        XmlElement scoutTag = AddElementTag(article, "SCOUT");
                        user.AddPrefixedUserXMLBlock(dataReader, scoutID, "Scout", scoutTag);
                    }

                    if (dataReader.DoesFieldExist("SubEditorID"))
                    {
                        // sub editor info
                        int subEditorID = dataReader.GetInt32NullAsZero("SubEditorID");
                        XmlElement subEditorTag = AddElementTag(article, "SUBEDITOR");
                        user.AddPrefixedUserXMLBlock(dataReader, subEditorID, "SubEditor", subEditorTag);
                    }

                    if (dataReader.DoesFieldExist("Status"))
                    {
                        AddIntElement(article, "STATUS", dataReader.GetInt32NullAsZero("Status"));
                    }
                    if (dataReader.DoesFieldExist("RecommendationStatus"))
                    {
                        AddIntElement(article, "RECOMMENDATION-STATUS", dataReader.GetInt32NullAsZero("RecommendationStatus"));
                    }
                    if (dataReader.DoesFieldExist("SubbingStatus"))
                    {
                        AddIntElement(article, "SUBBING-STATUS", dataReader.GetInt32NullAsZero("SubbingStatus"));
                    }
                    if (dataReader.DoesFieldExist("Style"))
                    {
                        AddIntElement(article, "STYLE", dataReader.GetInt32NullAsZero("Style"));
                    }

                    if (dataReader.DoesFieldExist("Subject"))
                    {
                        AddTextTag(article, "SUBJECT", dataReader.GetStringNullAsEmpty("Subject"));
                    }

                    if (dataReader.DoesFieldExist("DateCreated"))
                    {
                        AddDateXml(dataReader, article, "DateCreated", "DATE-CREATED");
                    }
                    if (dataReader.DoesFieldExist("LastUpdated"))
                    {
                        AddDateXml(dataReader, article, "LastUpdated", "LASTUPDATED");
                    }
                    if (dataReader.DoesFieldExist("DateRecommended"))
                    {
                        AddDateXml(dataReader, article, "DateRecommended", "DATE-RECOMMENDED");
                    }
                    if (dataReader.DoesFieldExist("DecisionDate"))
                    {
                        AddDateXml(dataReader, article, "DecisionDate", "RECOMMENDATION-DECISION-DATE");
                    }
                    if (dataReader.DoesFieldExist("DateAllocated"))
                    {
                        AddDateXml(dataReader, article, "DateAllocated", "DATE-ALLOCATED");
                    }
                    if (dataReader.DoesFieldExist("DateReturned"))
                    {
                        AddDateXml(dataReader, article, "DateReturned", "DATE-RETURNED");
                    }

                    //TODO add Extra Info correctly
                    if (dataReader.DoesFieldExist("ExtraInfo"))
                    {
                        //Add Extra Info XML where it exists.
                        string extraInfo = dataReader.GetAmpersandEscapedStringNullAsEmpty("ExtraInfo");
                        if (extraInfo != string.Empty)
                        {
                            XmlDocument extraInfoXml = new XmlDocument();
                            extraInfoXml.LoadXml(extraInfo);
                            article.AppendChild(ImportNode(extraInfoXml.FirstChild));
                        }

                        //TODO Use Extra Info Class will need to change SP to get out the guide entry Type
                        //ExtraInfo extraInfo = new ExtraInfo();
                        //extraInfo.TryCreate(dataReader.GetInt32NullAsZero("Type"), dataReader.GetStringNullAsEmpty("ExtraInfo"));
                        //AddInside(article, extraInfo);
                    }

                    if (dataReader.DoesFieldExist("ForumPostCount"))
                    {
                        AddIntElement(article, "FORUMPOSTCOUNT", dataReader.GetInt32NullAsZero("ForumPostCount"));
                        AddIntElement(article, "FORUMPOSTLIMIT", InputContext.GetSiteOptionValueInt("Forum", "PostLimit"));
                    }

                    if (dataReader.DoesFieldExist("StartDate") && !dataReader.IsDBNull("StartDate"))
                    {
                        AddDateXml(dataReader, article, "StartDate", "DATERANGESTART");
                    }
                    // Take a day from the end date as stored in the database for UI purposes. 
                    // E.g. User submits a date range of 01/09/1980 to 02/09/1980. They mean for this to represent 2 days i.e. 01/09/1980 00:00 - 03/09/1980 00:00. 
                    // This gets stored in the database but for display purposes we subtract a day from the database end date to return the 
                    // original dates submitted by the user inorder to match their expectations.
                    if (dataReader.DoesFieldExist("EndDate") && !dataReader.IsDBNull("EndDate"))
                    {
                        AddDateXml(dataReader.GetDateTime("EndDate").AddDays(-1), article, "DATERANGEEND");
                    }

                    if (dataReader.DoesFieldExist("TimeInterval"))
                    {
                        AddIntElement(article, "TIMEINTERVAL", dataReader.GetInt32NullAsZero("TimeInterval"));
                    }

                    if (dataReader.DoesFieldExist("LASTPOSTED"))
                    {
                        AddDateXml(dataReader, article, "LASTPOSTED", "FORUMLASTPOSTED");
                    }
                    //////////


                    if (dataReader.DoesFieldExist("BookmarkCount"))
                    {
                        AddTextTag(article, "BOOKMARKCOUNT", dataReader.GetInt32NullAsZero("BookmarkCount"));
                    }

                    if (dataReader.DoesFieldExist("ZeitgeistScore"))
                    {
                        AddElement(article, "ZEITGEIST", "<SCORE>" + dataReader.GetDoubleNullAsZero("ZeitgeistScore") + "</SCORE>");
                    }

                    #region LocationXML
                    //***********************************************************************
                    // Location Info
                    //***********************************************************************
                    if (dataReader.DoesFieldExist("Latitude") && !dataReader.IsDBNull("Latitude"))
                    {
                        AddTextTag(article, "LATITUDE", dataReader.GetDoubleNullAsZero("Latitude").ToString());
                        AddTextTag(article, "LONGITUDE", dataReader.GetDoubleNullAsZero("Longitude").ToString());
                        if (dataReader.DoesFieldExist("Distance"))
                        {
                            if (dataReader.GetDoubleNullAsZero("Distance") < 0.0001)
                            {
                                AddTextTag(article, "DISTANCE", "0");
                            }
                            else
                            {
                                AddTextTag(article, "DISTANCE", dataReader.GetDoubleNullAsZero("Distance").ToString());
                            }
                        }
                        AddTextTag(article, "LOCATIONTITLE", dataReader.GetString("LocationTitle"));
                        AddTextTag(article, "LOCATIONDESCRIPTION", dataReader.GetString("LocationDescription"));
                        AddTextTag(article, "LOCATIONZOOMLEVEL", dataReader.GetInt32NullAsZero("LocationZoomLevel").ToString());
                        AddTextTag(article, "LOCATIONUSERID", dataReader.GetInt32NullAsZero("LocationUserID").ToString());
                        AddDateXml(dataReader.GetDateTime("LocationDateCreated"), article, "LOCATIONDATECREATED");
                    }
                    //***********************************************************************
                    #endregion

                    if (dataReader.DoesFieldExist("MediaAssetID"))
                    {
                        AddMediaAssetXml(dataReader, article, dataReader.GetInt32NullAsZero("MediaAssetID"));
                    }

                    if (dataReader.DoesFieldExist("CRPollID"))
                    {
                        AddPollXml(dataReader, article);
                    }



                    count--;

                } while (count > 0 && dataReader.Read());	// dataReader.Read won't get called if count == 0

                // See if there's an extra row waiting
                if (count == 0 && dataReader.Read())
                {
                    AddAttribute(articleList, "MORE", 1);
                }
            }
            return count;
        }