示例#1
0
        private void BindGrid()
        {
            List <LetterInfo> letterInfoList
                = LetterInfo.GetPage(
                      siteSettings.SiteGuid,
                      pageNumber,
                      pageSize,
                      out totalPages);

            if (this.totalPages > 1)
            {
                string pageUrl = SiteUtils.GetNavigationSiteRoot()
                                 + "/eletter/Admin.aspx?pagenumber={0}";

                pgrLetterInfo.PageURLFormat = pageUrl;
                pgrLetterInfo.ShowFirstLast = true;
                pgrLetterInfo.CurrentIndex  = pageNumber;
                pgrLetterInfo.PageSize      = pageSize;
                pgrLetterInfo.PageCount     = totalPages;
            }
            else
            {
                pgrLetterInfo.Visible = false;
            }

            grdLetterInfo.DataSource = letterInfoList;
            grdLetterInfo.PageIndex  = pageNumber;
            grdLetterInfo.PageSize   = pageSize;
            grdLetterInfo.DataBind();
        }
        private void PopulateControls()
        {
            if (letterInfoGuid == Guid.Empty)
            {
                return;
            }

            letterInfo = new LetterInfo(letterInfoGuid);

            lnkThisPage.Text = string.Format(CultureInfo.InvariantCulture,
                                             Resource.NewsletterSubscriberListHeadingFormatString,
                                             letterInfo.Title);

            lnkThisPage.ToolTip = lnkThisPage.Text;

            litHeading.Text = lnkThisPage.Text;

            Title = litHeading.Text;



            if (Page.IsPostBack)
            {
                return;
            }

            BindGrid();
        }
        private void LoadSettings()
        {
            spnAdmin.Visible = WebUser.IsAdminOrContentAdmin;
            letterGuid       = WebUtils.ParseGuidFromQueryString("letter", Guid.Empty);
            if (letterGuid == Guid.Empty)
            {
                return;
            }

            letter         = new Letter(letterGuid);
            letterInfoGuid = letter.LetterInfoGuid;
            if (letterInfoGuid == Guid.Empty)
            {
                return;
            }

            letterInfo = new LetterInfo(letterInfoGuid);
            if (letterInfo.SiteGuid != siteSettings.SiteGuid)
            {
                letterInfo     = null;
                letterInfoGuid = Guid.Empty;
                letter         = null;
                letterGuid     = Guid.Empty;
            }

            pageNumber = WebUtils.ParseInt32FromQueryString("pagenumber", 1);
            timeOffset = SiteUtils.GetUserTimeOffset();
            isAdmin    = WebUser.IsAdmin;
        }
示例#4
0
        private void LoadSettings()
        {
            spnAdmin.Visible = WebUser.IsAdminOrContentAdmin;

            if (letterInfoGuid != Guid.Empty)
            {
                letterInfo = new LetterInfo(letterInfoGuid);
                if (letterInfo.LetterInfoGuid == Guid.Empty)
                {
                    letterInfo = null;
                }
                if (letterInfo.SiteGuid != siteSettings.SiteGuid)
                {
                    letterInfo = null;
                }
            }

            if (letterGuid != Guid.Empty)
            {
                letter = new Letter(letterGuid);
                if (letter.LetterGuid == Guid.Empty)
                {
                    letter = null;
                }
                if (letter.LetterInfoGuid != letterInfoGuid)
                {
                    letter = null;
                }
            }

            lnkSendLog.NavigateUrl = SiteRoot + "/eletter/SendLog.aspx?letter=" + letterGuid.ToString();
        }
        private void LoadSettings()
        {
            subscriptionGuid = WebUtils.ParseGuidFromQueryString("s", subscriptionGuid);
            if (subscriptionGuid != Guid.Empty)
            {
                subscription = subscriptions.Fetch(subscriptionGuid);
                if ((subscription != null) && (subscription.SiteGuid == siteSettings.SiteGuid))
                {
                    subscriptions.Verify(subscription.SubscribeGuid, true, Guid.Empty);
                    if (subscription.UserGuid == Guid.Empty)
                    {
                        SiteUser user = SiteUser.GetByEmail(siteSettings, subscription.EmailAddress);
                        if (user != null)
                        {
                            subscription.UserGuid = user.UserGuid;
                            subscriptions.Save(subscription);
                        }
                    }

                    LetterInfo.UpdateSubscriberCount(subscription.LetterInfoGuid);
                }
                else
                {
                    subscription = null;
                }
            }
        }
示例#6
0
        private void LoadSettings()
        {
            currentUser = SiteUtils.GetCurrentSiteUser();
            letterInfoGuid = WebUtils.ParseGuidFromQueryString("l", Guid.Empty);
            //spnAdmin.Visible = WebUser.IsAdminOrContentAdmin;
            ScriptConfig.IncludeColorBox = true;

            if (letterInfoGuid == Guid.Empty) return;

            letterInfo = new LetterInfo(letterInfoGuid);
            if (letterInfo.SiteGuid != siteSettings.SiteGuid)
            {
                letterInfo = null;
                letterInfoGuid = Guid.Empty;

            }

            pageNumber = WebUtils.ParseInt32FromQueryString("pagenumber", 1);
            timeOffset = SiteUtils.GetUserTimeOffset();
            timeZone = SiteUtils.GetUserTimeZone();

            lnkAdminMenu.Visible = WebUser.IsAdminOrContentAdmin;
            litLinkSeparator1.Visible = lnkAdminMenu.Visible;

            AddClassToBody("administration");
            AddClassToBody("eletterarchive");

        }
示例#7
0
        public void Init(LettersPage _manager, LetterInfo letterInfo, bool _selected)
        {
            myLetterInfo = letterInfo;
            uIButton     = GetComponent <UIButton>();
            myManager    = _manager;

            if (myLetterInfo.unlocked || AppManager.I.Player.IsDemoUser)
            {
                OkIcon.enabled = true;
            }
            else
            {
                OkIcon.enabled = false;
            }

            if (myLetterInfo == null)
            {
                LetterText.SetTextUnfiltered("");
                EnglishLetterText.SetText("");
            }
            else
            {
                var isolatedChar = myLetterInfo.data.GetStringForDisplay(LetterForm.Isolated);

                LetterText.SetTextUnfiltered(isolatedChar);
                EnglishLetterText.SetText(myLetterInfo.data.Id);
            }

            hightlight(_selected);
        }
示例#8
0
        private void LoadSettings()
        {
            letterGuid = WebUtils.ParseGuidFromQueryString("letter", Guid.Empty);

            if (letterGuid != Guid.Empty)
            {
                letter = new Letter(letterGuid);
                if (letter.LetterGuid != Guid.Empty)
                {
                    letterInfo = new LetterInfo(letter.LetterInfoGuid);
                    if (letterInfo.SiteGuid != siteSettings.SiteGuid)
                    {
                        letter = null;
                    }
                    if (!WebUser.IsInRoles(letterInfo.AvailableToRoles))
                    {
                        letter = null;
                    }
                    if ((!letterInfo.AllowArchiveView) && (!WebUser.IsNewsletterAdmin))
                    {
                        letter            = null;
                        unavailableReason = Resource.NewsletterArchivesNotAllowed;
                    }
                }
                else
                {
                    letter = null;
                }
            }

            AddClassToBody("administration");
            AddClassToBody("letterview");
        }
示例#9
0
        private void LoadSettings()
        {
            letterInfoGuid = WebUtils.ParseGuidFromQueryString("l", letterInfoGuid);
            pageNumber     = WebUtils.ParseInt32FromQueryString("pagenumber", 1);
            timeOffset     = SiteUtils.GetUserTimeOffset();
            timeZone       = SiteUtils.GetUserTimeZone();
            pageSize       = WebConfigSettings.NewsletterArchivePageSize;
            ScriptConfig.IncludeColorBox = true;

            letterInfo = new LetterInfo(letterInfoGuid);
            if ((letterInfo.LetterInfoGuid == Guid.Empty) || (letterInfo.SiteGuid != siteSettings.SiteGuid))
            {
                letterInfo = null;
            }

            if (letterInfo != null)
            {
                canView = WebUser.IsInRoles(letterInfo.AvailableToRoles);
            }

            lnkNewsletters.NavigateUrl = SiteRoot + "/eletter/";

            AddClassToBody("administration");
            AddClassToBody("eletterarchive");
        }
示例#10
0
        private void LoadSettings()
        {
            //spnAdmin.Visible = WebUser.IsAdminOrContentAdmin;

            currentUser    = SiteUtils.GetCurrentSiteUser();
            letterInfoGuid = WebUtils.ParseGuidFromQueryString("l", Guid.Empty);

            if (letterInfoGuid == Guid.Empty)
            {
                return;
            }

            letterInfo = new LetterInfo(letterInfoGuid);
            if (letterInfo.SiteGuid != siteSettings.SiteGuid)
            {
                letterInfo     = null;
                letterInfoGuid = Guid.Empty;
            }

            pageNumber = WebUtils.ParseInt32FromQueryString("pagenumber", 1);

            lnkAdminMenu.Visible      = WebUser.IsAdminOrContentAdmin;
            litLinkSeparator1.Visible = lnkAdminMenu.Visible;

            AddClassToBody("administration");
            AddClassToBody("eletterdrafts");
        }
示例#11
0
        private void EnsureItems()
        {
            if (lstAll.Items.Count > 0)
            {
                return;
            }
            // if all items are selected the above can be 0
            // which would load them all again without this line below
            if (lstSelected.Items.Count > 0)
            {
                return;
            }

            SiteSettings siteSettings = CacheHelper.GetCurrentSiteSettings();

            if (siteSettings == null)
            {
                return;
            }

            List <LetterInfo> availableNewsletters = LetterInfo.GetAll(siteSettings.SiteGuid);
            ListItem          listItem;

            foreach (LetterInfo newsletter in availableNewsletters)
            {
                //if (newsletter.AvailableToRoles.Contains("All Users"))
                //{
                listItem = new ListItem(newsletter.Title, newsletter.LetterInfoGuid.ToString());

                lstAll.Items.Add(listItem);

                // }
            }
        }
示例#12
0
        /// <summary>
        /// 向某用户的客户端推送聊天信息,可通过指定LetterInfo.LetterType为Undo撤回信息
        /// </summary>
        /// <param name="p_userID">目标用户</param>
        /// <param name="p_letter">聊天信息</param>
        /// <returns>true 在线推送</returns>
        public async Task <bool> SendLetter(long p_userID, LetterInfo p_letter)
        {
            var result = await MsgKit.Push(new List <long> {
                p_userID
            }, WrapperLetter(p_letter));

            return(result.Count > 0);
        }
示例#13
0
        public void DetailLetter(LetterInfo info)
        {
            DetailPanel.SetActive(true);
            Debug.Log("Detail Letter :" + info.data.Id + " [" + info.data.GetAvailablePositions() + "]");
            AudioManager.I.PlayLetter(info.data.Id);
            MoreInfoPanel.SetActive(true);
            ArabicText.text = "";
            ScoreText.text  = "Score: " + info.score;

            var isolatedChar = info.data.GetCharFixedForDisplay(LetterPosition.Isolated);

            LL_Isolated.Init(new LL_LetterData(info.data));
            LL_Isolated.Label.text = isolatedChar;

            var InitialChar = info.data.GetCharFixedForDisplay(LetterPosition.Initial);

            if (InitialChar != "")
            {
                LL_Initial.gameObject.SetActive(true);
                LL_Initial.Init(new LL_LetterData(info.data));
                LL_Initial.Label.text = InitialChar;
            }
            else
            {
                LL_Initial.gameObject.SetActive(false);
            }

            var MedialChar = info.data.GetCharFixedForDisplay(LetterPosition.Medial);

            if (MedialChar != "")
            {
                LL_Medial.gameObject.SetActive(true);
                LL_Medial.Init(new LL_LetterData(info.data));
                LL_Medial.Label.text = MedialChar;
            }
            else
            {
                LL_Medial.gameObject.SetActive(false);
            }

            var FinalChar = info.data.GetCharFixedForDisplay(LetterPosition.Final);

            if (FinalChar != "")
            {
                LL_Final.gameObject.SetActive(true);
                LL_Final.Init(new LL_LetterData(info.data));
                LL_Final.Label.text = FinalChar;
            }
            else
            {
                LL_Final.gameObject.SetActive(false);
            }

            LetterTextIsolated.SetTextUnfiltered(isolatedChar);
            LetterTextInitial.SetTextUnfiltered(InitialChar);
            LetterTextMedial.SetTextUnfiltered(MedialChar);
            LetterTextFinal.SetTextUnfiltered(FinalChar);
        }
示例#14
0
 /// <summary>
 /// 向某用户的客户端推送聊天信息,可通过指定LetterInfo.LetterType为Undo撤回信息
 /// </summary>
 /// <param name="p_userID">目标用户</param>
 /// <param name="p_letter">聊天信息</param>
 /// <returns>true 在线推送</returns>
 public static Task <bool> SendLetter(long p_userID, LetterInfo p_letter)
 {
     return(new UnaryRpc(
                "msg",
                "InstantMsg.SendLetter",
                p_userID,
                p_letter
                ).Call <bool>());
 }
示例#15
0
 /// <summary>
 /// 向用户列表的所有客户端推送聊天信息,可通过指定LetterInfo.LetterType为Undo撤回信息
 /// </summary>
 /// <param name="p_userIDs">用户列表</param>
 /// <param name="p_letter">聊天信息</param>
 /// <returns>在线推送列表</returns>
 public static Task <List <long> > BatchSendLetter(List <long> p_userIDs, LetterInfo p_letter)
 {
     return(new UnaryRpc(
                "msg",
                "InstantMsg.BatchSendLetter",
                p_userIDs,
                p_letter
                ).Call <List <long> >());
 }
示例#16
0
        private void LoadSettings()
        {
            currentUser    = SiteUtils.GetCurrentSiteUser();
            letterInfoGuid = WebUtils.ParseGuidFromQueryString("l", Guid.Empty);
            imageSiteRoot  = WebUtils.GetSiteRoot();



            if (letterInfoGuid == Guid.Empty)
            {
                return;
            }

            letterInfo = new LetterInfo(letterInfoGuid);

            if (letterInfo.SiteGuid != siteSettings.SiteGuid)
            {
                letterInfo     = null;
                letterInfoGuid = Guid.Empty;
            }

            letterGuid = WebUtils.ParseGuidFromQueryString("letter", Guid.Empty);

            if (letterGuid == Guid.Empty)
            {
                letter = new Letter();
            }
            else
            {
                letter = new Letter(letterGuid);

                if (letter.LetterInfoGuid != letterInfo.LetterInfoGuid)
                {
                    letterGuid = Guid.Empty;
                    letter     = null;
                }
            }


            if (letter.SendCompleteUtc > DateTime.MinValue)
            {
                btnSave.Text = Resource.SaveNewsletterAsNewDraft;


                btnSendToList.Enabled = false;
                // once a letter has been sent only admin can delete it.
                btnDelete.Enabled = WebUser.IsAdmin;
            }

            //spnAdmin.Visible = WebUser.IsAdminOrContentAdmin;
            lnkAdminMenu.Visible      = WebUser.IsAdminOrContentAdmin;
            litLinkSeparator1.Visible = lnkAdminMenu.Visible;

            AddClassToBody("administration");
            AddClassToBody("letteredit");
        }
示例#17
0
        private void DoUnsubscribe()
        {
            if (subscriptionGuid != Guid.Empty)
            {
                LetterSubscriber s = subscriptions.Fetch(subscriptionGuid);
                if (s == null)
                {
                    ShowNotFoundMessge();
                    return;
                }
                subscriptions.Delete(s);
                LetterInfo.UpdateSubscriberCount(s.LetterInfoGuid);
                lblUnsubscribe.Text = Resource.NewsletterUnsubscribeSuccess;

                btnUnsubscribeConfirm.Visible = false;
                lblUnsubscribe.Visible        = true;
                return;
            }

            LetterInfo letterInfo = new LetterInfo(letterInfoGuid);

            if (letterInfo.LetterInfoGuid == Guid.Empty)
            {
                ShowNotFoundMessge();
                return;
            }

            List <LetterSubscriber> userSubscriptions = subscriptions.GetListByUser(siteSettings.SiteGuid, userGuid);

            bool unsubscribed = false;

            foreach (LetterSubscriber s in userSubscriptions)
            {
                if (s.LetterInfoGuid == letterInfoGuid)
                {
                    subscriptions.Delete(s);
                    unsubscribed = true;
                    LetterInfo.UpdateSubscriberCount(s.LetterInfoGuid);
                }
            }

            if (unsubscribed)
            {
                lblUnsubscribe.Text = string.Format(CultureInfo.InvariantCulture,
                                                    Resource.NewsletterUnsubscribeSuccessFormatString,
                                                    letterInfo.Title);

                btnUnsubscribeConfirm.Visible = false;
                lblUnsubscribe.Visible        = true;
            }
            else
            {
                ShowNotFoundMessge();
            }
        }
示例#18
0
        /// <summary>
        /// people can subscribe to the newsletters without registering on the site. This method is used to attach those existing subscriptions to the user upon registration
        /// </summary>
        /// <param name="siteUser"></param>
        public static void ClaimExistingSubscriptions(SiteUser siteUser)
        {
            SubscriberRepository    subscriptions     = new SubscriberRepository();
            List <LetterSubscriber> userSubscriptions = subscriptions.GetListByEmail(siteUser.SiteGuid, siteUser.Email);

            foreach (LetterSubscriber s in userSubscriptions)
            {
                if (s.UserGuid != siteUser.UserGuid)
                {
                    s.UserGuid = siteUser.UserGuid;
                    subscriptions.Save(s);
                }

                if (!s.IsVerified)
                {
                    subscriptions.Verify(s.SubscribeGuid, true, Guid.Empty);
                    LetterInfo.UpdateSubscriberCount(s.LetterInfoGuid);
                }
            }

            List <LetterSubscriber> memberSubscriptions = subscriptions.GetListByUser(siteUser.SiteGuid, siteUser.UserGuid);

            RemoveDuplicates(memberSubscriptions);

            // commented out 2012-11-16 since we now give the user a chance to opt in the registration
            // then we should not force him in if he chose not to opt in

            //if (memberSubscriptions.Count == 0)
            //{
            //    string ipAddress = SiteUtils.GetIP4Address();
            //    //user has no previous subscriptions and just registered
            //    // lets give him the site subscriptions that are configured for opting in new users by default
            //    List<LetterInfo> allNewsletters = LetterInfo.GetAll(siteUser.SiteGuid);
            //    foreach (LetterInfo l in allNewsletters)
            //    {
            //        if ((l.ProfileOptIn) && (l.AvailableToRoles.Contains("All Users;")))
            //        {
            //            LetterSubscriber s = new LetterSubscriber();
            //            s.SiteGuid = siteUser.SiteGuid;
            //            s.LetterInfoGuid = l.LetterInfoGuid;
            //            s.UserGuid = siteUser.UserGuid;
            //            s.EmailAddress = siteUser.Email;
            //            s.IsVerified = true;
            //            s.UseHtml = true;
            //            s.IpAddress = ipAddress;
            //            subscriptions.Save(s);

            //        }


            //    }

            //}
        }
示例#19
0
        private void LettersPanel()
        {
            if (LanguageSwitcher.I.IsLearningLanguageRTL())
            {
                ListPanel     = ListPanelRTL;
                ListContainer = ListContainerRTL;
                ListPanelLTR.SetActive(false);
                ListPanelRTL.SetActive(true);
            }
            else
            {
                ListPanel     = ListPanelLTR;
                ListContainer = ListContainerLTR;
                ListPanelLTR.SetActive(true);
                ListPanelRTL.SetActive(false);
            }

            ListPanel.SetActive(true);
            DetailPanel.SetActive(false);
            emptyContainer(ListContainer);

            List <LetterData> letters = AppManager.I.DB.FindLetterData((x) => (x.Kind == LetterDataKind.Letter && x.InBook));

            letters.Sort((x, y) => x.Number.CompareTo(y.Number));

            //adds Letter Vaiations
            List <LetterData> lettersVariations = AppManager.I.DB.FindLetterData((x) => (x.Kind == LetterDataKind.LetterVariation && x.InBook));

            lettersVariations.Sort((x, y) => x.Number.CompareTo(y.Number));
            letters.AddRange(lettersVariations);

            //adds Symbols
            List <LetterData> symbols = AppManager.I.DB.FindLetterData((x) => (x.Kind == LetterDataKind.Symbol && x.InBook));

            symbols.Sort((x, y) => x.Number.CompareTo(y.Number));
            letters.AddRange(symbols);

            List <LetterInfo> allLetterInfos = AppManager.I.ScoreHelper.GetAllLetterInfo();

            foreach (var letter in letters)
            {
                LetterInfo myLetterinfo = allLetterInfos.Find(value => value.data == letter);

                btnGO = Instantiate(LetterItemPrefab);
                btnGO.transform.SetParent(ListContainer.transform, false);
                if (LanguageSwitcher.I.IsLearningLanguageRTL())
                {
                    btnGO.transform.SetAsFirstSibling();
                }
                btnGO.GetComponent <ItemLetter>().Init(this, myLetterinfo, false);
            }

            MainLetterPanel.GetComponent <Button>().onClick.AddListener(BtnClickMainLetterPanel);
        }
        private static bool CanBeReduced(string str, LetterInfo l)
        {
            if (l.Index + 2 > str.Length)
            {
                return false;
            }

            var letter = l.Letter;
            var nextLetter = str[l.Index + 1].ToString();

            return letter != nextLetter;
        }
        void btnDelete_Click(object sender, EventArgs e)
        {
            Letter.DeleteByLetterInfo(letterInfoGuid);
            //LetterSubscriber.DeleteByLetter(letterInfoGuid);
            subscriptions.DeleteByLetter(letterInfoGuid);

            LetterInfo.Delete(letterInfoGuid);

            WebUtils.SetupRedirect(this,
                                   SiteRoot
                                   + "/eletter/Admin.aspx");
        }
示例#22
0
    private Dictionary <char, LetterInfo> GetWordInfo(string word)
    {
        var        info            = new Dictionary <char, LetterInfo>();
        const char noValue         = char.MinValue;
        char       prevChar        = noValue;
        int        groupStartIndex = -1;

        for (int i = 0; i < word.Length; i++)
        {
            char c = word[i];
            if (prevChar == noValue)
            {
                prevChar        = c;
                groupStartIndex = 0;
                continue;
            }

            if (c != prevChar)
            {
                var letterInfo = new LetterInfo();
                if (groupStartIndex == 0)
                {
                    letterInfo.Start = i;
                }
                else
                {
                    letterInfo.Mid = i - groupStartIndex;
                }

                AddLetterInfo(info, letterInfo, prevChar);

                prevChar        = c;
                groupStartIndex = i;
            }
        }

        if (info.Count == 0)
        {
            return(new Dictionary <char, LetterInfo> {
                { word[0], new LetterInfo {
                      Total = word.Length
                  } }
            });
        }

        var endLetterInfo = new LetterInfo {
            End = word.Length - groupStartIndex
        };

        AddLetterInfo(info, endLetterInfo, word[word.Length - 1]);

        return(info);
    }
示例#23
0
        /// <summary>
        /// 接收服务器推送的聊天信息
        /// </summary>
        /// <param name="p_letter"></param>
        internal static async void ReceiveLetter(LetterInfo p_letter)
        {
            if (p_letter == null || string.IsNullOrEmpty(p_letter.ID))
            {
                return;
            }

            // 撤回消息
            if (p_letter.LetterType == LetterType.Undo)
            {
                var letter = AtState.First <Letter>("select * from Letter where MsgID=@msgid and LoginID=@loginid and IsReceived=1", new Dict {
                    { "msgid", p_letter.ID }, { "loginid", Kit.UserID }
                });
                if (letter != null)
                {
                    // 删除
                    AtState.Exec($"delete from Letter where ID={letter.ID}");
                    UndoLetter?.Invoke(letter);
                }
                return;
            }

            // 新消息
            Letter l = new Letter(
                LoginID: Kit.UserID,
                MsgID: p_letter.ID,
                OtherID: p_letter.SenderID,
                OtherName: p_letter.SenderName,
                LetterType: p_letter.LetterType,
                Content: p_letter.Content,
                STime: p_letter.SendTime,
                IsReceived: true,
                Unread: true);

            // 自增主键插入后自动赋值
            await AtState.Save(l, false);

            // 外部可修改 Unread 状态
            NewLetter?.Invoke(l);

            if (l.Unread)
            {
                // 外部未读提示
                StateChanged?.Invoke(l.OtherID);
                ShowUnreadNotify(l);
            }
            else
            {
                // Unread状态被修改
                await AtState.Save(l, false);
            }
        }
示例#24
0
        private void RunTask()
        {
            // this is where the work gets done

            // Get a data table of up to 1000 users
            // who have not opted in but also have not previously
            // opted out and have valid email accounts and account is not locked
            DataTable dataTable = GetData();

            double completeRatio = .5;

            if (dataTable.Rows.Count == 0)
            {
                completeRatio = 1; //complete
                ReportStatus(completeRatio);
                return;
            }

            SubscriberRepository repository = new SubscriberRepository();

            int count = 0;

            foreach (DataRow row in dataTable.Rows)
            {
                Guid   userGuid = new Guid(row["UserGuid"].ToString());
                string email    = row["email"].ToString();

                LetterSubscriber s = new LetterSubscriber();
                s.SiteGuid       = SiteGuid;
                s.UserGuid       = userGuid;
                s.EmailAddress   = email;
                s.LetterInfoGuid = LetterInfoGuid;
                s.UseHtml        = true;
                s.IsVerified     = true;

                repository.Save(s);

                count += 1;

                if (count > 20)
                {
                    ReportStatus(completeRatio);
                    count = 0;
                }
            }

            LetterInfo.UpdateSubscriberCount(LetterInfoGuid);
            ReportStatus(completeRatio);

            // repeat until the table comes back with 0 rows
            RunTask();
        }
示例#25
0
    private void AddLetterInfo(Dictionary <char, LetterInfo> info, LetterInfo letterInfo, char c)
    {
        LetterInfo currentInfo;

        if (!info.TryGetValue(c, out currentInfo))
        {
            info[c] = letterInfo;
            return;
        }

        currentInfo.Mid = Math.Max(currentInfo.Mid, letterInfo.Mid);
        currentInfo.End = letterInfo.End;
    }
示例#26
0
 public void Shuffle()
 {
     for (int i = 0; i < letterList.Count; i++)
     { // for each position in list
         int j = Random.Range(i, letterList.Count);
         if (i != j)
         {
             LetterInfo temp = letterList[i];
             letterList[i] = letterList[j];
             letterList[j] = temp;
         }
     }
     needsUpdate = true;
 }
示例#27
0
        public static void SendSubscriberVerificationEmail(
            string siteRoot,
            string emailAddress,
            Guid subscribeGuid,
            LetterInfo letter,
            SiteSettings siteSettings)
        {
            string verificationTemplate;
            bool   useHtml = WebConfigSettings.NewsletterUseHtmlEmailConfirmation;

            if (useHtml)
            {
                verificationTemplate = ResourceHelper.GetMessageTemplate(SiteUtils.GetDefaultUICulture(), "NewsletterVerificationHtmlEmailMessage.config");
            }
            else
            {
                verificationTemplate = ResourceHelper.GetMessageTemplate(SiteUtils.GetDefaultUICulture(), "NewsletterVerificationEmailMessage.config");
            }

            string confirmLink = siteRoot + "/eletter/Confirm.aspx?s=" + subscribeGuid.ToString();
            string messageBody = verificationTemplate.Replace("{NewsletterName}", letter.Title).Replace("{ConfirmationLink}", confirmLink).Replace("{SiteLink}", siteRoot);
            string subject     = string.Format(CultureInfo.InvariantCulture, Resource.NewsletterVerifySubjectFormat, letter.Title);

            string fromAddress;
            string fromAlias;

            if (letter.FromAddress.Length > 0)
            {
                fromAddress = letter.FromAddress;
                fromAlias   = letter.FromName;
            }
            else
            {
                fromAddress = siteSettings.DefaultEmailFromAddress;
                fromAlias   = siteSettings.DefaultFromEmailAlias;
            }

            Email.Send(
                SiteUtils.GetSmtpSettings(),
                fromAddress,
                fromAlias,
                string.Empty,
                emailAddress,
                string.Empty,
                string.Empty,
                subject,
                messageBody,
                useHtml,
                Email.PriorityNormal);
        }
示例#28
0
        MsgInfo WrapperMsg(string p_msg)
        {
            LetterInfo li = new LetterInfo
            {
                ID         = Kit.NewGuid,
                SenderID   = 0,
                SenderName = "系统",
                LetterType = LetterType.Text,
                Content    = p_msg,
                SendTime   = DateTime.Now
            };

            return(WrapperLetter(li));
        }
示例#29
0
        public static void VerifyExistingSubscriptions(SiteUser siteUser)
        {
            SubscriberRepository    subscriptions     = new SubscriberRepository();
            List <LetterSubscriber> userSubscriptions = subscriptions.GetListByUser(siteUser.SiteGuid, siteUser.UserGuid);

            foreach (LetterSubscriber s in userSubscriptions)
            {
                if (!s.IsVerified)
                {
                    subscriptions.Verify(s.SubscribeGuid, true, Guid.Empty);
                    LetterInfo.UpdateSubscriberCount(s.LetterInfoGuid);
                }
            }
        }
示例#30
0
 private void PopulateControls()
 {
     if (subscription == null)
     {
         pnlNotFound.Visible  = true;
         pnlConfirmed.Visible = false;
     }
     else
     {
         letterInfo             = new LetterInfo(subscription.LetterInfoGuid);
         litConfrimDetails.Text = string.Format(CultureInfo.InvariantCulture, Resource.NewsletterConfirmedFormat, letterInfo.Title);
         pnlNotFound.Visible    = false;
         pnlConfirmed.Visible   = true;
     }
 }
示例#31
0
        private void DoSubscribe(LetterInfo letter, SiteUser siteUser)
        {
            LetterSubscriber s = new LetterSubscriber();

            s.SiteGuid       = siteSettings.SiteGuid;
            s.EmailAddress   = siteUser.Email;
            s.UserGuid       = siteUser.UserGuid;
            s.LetterInfoGuid = letter.LetterInfoGuid;
            s.UseHtml        = rbHtmlFormat.Checked;
            s.IsVerified     = (!siteSettings.UseSecureRegistration);
            s.IpAddress      = SiteUtils.GetIP4Address();
            subscriptions.Save(s);

            LetterInfo.UpdateSubscriberCount(s.LetterInfoGuid);
        }