Exemplo n.º 1
0
        public ActionResult results(BasicSearch f)
        {
            int[] r;
            r = f.GetResults(true);

            //if (f.Page == 1 || Request.Cookies["counter"] == null)
            //{



            //    HttpCookie newCookie = new HttpCookie("counter", counter.ToString());
            //    newCookie.Expires = DateTime.Now.AddDays(1);
            //    Response.AppendCookie(newCookie);

            //}
            //else
            //{
            //    r = SearchEngine.results(f.AgeMin, f.AgeMax, 5, f.Sign, f.Ethnicity, 70, f.Page, out speed);
            //    //r = f.GetResults(false).ToArray();
            //    Int32.TryParse(Request.Cookies["counter"].Value, out counter);
            //}

            return(View("results", r));
        }
        private void performSearch()
        {
            BasicSearch search = new BasicSearch();
            search.active_isSet = false;
            search.hasAnswer_isSet = false;
            search.visible_isSet = false;
            search.SpamSuspected = true;

            search.SortColumn = SortField;
            search.SortAsc = SortAsc;

            Results = search.GetResults();

            loadResultsPage();
        }
        protected void btnSend_Click(object sender, EventArgs e)
        {
            string subject = txtSubject.Text.Trim();
            string text = htmlEditor != null ? htmlEditor.Content.Trim() : ckeditor.Text.Trim();

            if (subject.Length == 0)
            {
                Messagebox1.Show(Lang.TransA("Please enter subject!"), Misc.MessageType.Error);
                return;
            }
            if (text.Length == 0)
            {
                Messagebox1.Show(Lang.TransA("Please enter body!"), Misc.MessageType.Error);
                return;
            }

            BasicSearch search = new BasicSearch();
            search.hasAnswer_isSet = false;
            if (ddGender.SelectedIndex > 0)
                search.Gender = (User.eGender)Convert.ToInt32(ddGender.SelectedValue);
            if (ddPaid.SelectedIndex > 0)
                search.Paid = ddPaid.SelectedIndex == 1;
            if (ddHasPhotos.SelectedIndex > 0)
                search.HasPhoto = ddHasPhotos.SelectedIndex == 1;
            if (ddHasProfile.SelectedIndex > 0)
                search.HasAnswer = ddHasProfile.SelectedIndex == 1;
            search.Country = ddCountry.SelectedValue.Trim();
            search.State = ddRegion.SelectedValue.Trim();
            if (ddLanguage.SelectedIndex > 0)
                search.LanguageID = Convert.ToInt32(ddLanguage.SelectedValue);

            UserSearchResults results = search.GetResults();

            if (results == null)
            {
                Messagebox1.Show(Lang.TransA("There are no users that match your criteria!"), Misc.MessageType.Success);
                return;
            }

            string[] users = results.Usernames;

            foreach (string username in users)
            {
                subject = txtSubject.Text.Trim();
                text = htmlEditor != null ? htmlEditor.Content.Trim() : ckeditor.Text.Trim();
                User user = Classes.User.Load(username);
                subject = subject.Replace("%%USER%%", user.Username);
                subject = subject.Replace("%%NAME%%", user.Name);
                text = text.Replace("%%USER%%", user.Username);
                text = text.Replace("%%NAME%%", user.Name);

                Email.Send(Config.Misc.SiteTitle, Config.Misc.SiteEmail, user.Name, user.Email, subject, text, false);
            }
            Messagebox1.Show(Lang.TransA("Your announcement has been sent!"), Misc.MessageType.Success);
            txtSubject.Text = "";
            if (htmlEditor != null)
                htmlEditor.Content = "";
            else
                ckeditor.Text = "";
        }
Exemplo n.º 4
0
        private static void AsyncProcessPaymentsQueue(object data)
        {
            if (paymentsLock)
            {
                return;
            }

            try
            {
                paymentsLock = true;

                BasicSearch search = new BasicSearch();
                search.deleted_isSet = false;
                search.active_isSet = false;
                search.hasAnswer_isSet = false;
                search.visible_isSet = false;
                search.Paid = true;

                UserSearchResults results = search.GetResults();
                if (results != null && results.Usernames != null)
                    foreach (string username in results.Usernames)
                    {
                        CheckPaymentStatus(username);
                    }
            }
            catch (Exception err)
            {
                Global.Logger.LogError("AsyncProcessEmailQueue", err);
            }
            finally
            {
                paymentsLock = false;
            }
        }
Exemplo n.º 5
0
        public static void FetchUserCacheDataThread(HttpContext context)
        {
            lock (context.Session.SyncRoot)
            {
                UserSession userSession = (UserSession)context.Session["UserSession"];

                userSession.SessionPagesDic = new Dictionary<string, StringWriter>
                    {
                        //{"~/Home.aspx", new StringWriter()},
                        //{"~/Home_mm.aspx", new StringWriter()},
                        {"Search3.aspx", new StringWriter()},
                        {"Friends3.aspx", new StringWriter()},
                        {"Mailbox.aspx", new StringWriter()},
                        {"ManageProfile.aspx", new StringWriter()},
                        {"InviteFriends.aspx", new StringWriter()}
                    };

                DateTime[] t = new DateTime[10];
                t[0] = DateTime.Now;
                userSession.ProfileAnswers = userSession.FetchAnswers();
                t[1] = DateTime.Now;
                var search = new BasicFriendsSearch
                                 {
                                     Username = userSession.Username,
                                     Active = true,
                                     Deleted = false,
                                     HasPhoto = true,
                                     Visible = true,
                                     SortByColumn = OrderByColumnEnum.FacebookMutualFriends
                                 };
                var results = search.GetResults();
                userSession.UserFriends = results.Get();
                context.Session["UserFriends"] = userSession.UserFriends;
                context.Session["UserFriendsUsernames"] = results.Usernames;
                //userSession.FetchFriends();
                userSession.UserFriendsPrimaryPhotoIds =
                    userSession.UserFriends.Select(user =>
                        Photo.GetPrimaryOrDefaultId(user.Username)).ToArray();
                if (userSession.UserFriendsPrimaryPhotoIds.Count() > 0)
                {
                    FetchDbImageToCacheDirectoryBackgroundWorker.PhotosIdsList =
                        FetchDbImageToCacheDirectoryBackgroundWorker.PhotosIdsList
                            .Union(userSession.UserFriendsPrimaryPhotoIds.Take(400)).ToList();

                    userSession.UserFriendsPrelodImages =
                        userSession.UserFriendsPrimaryPhotoIds.Where(id => id > 0)
                            .Select(id => ImageHelper.CreateImageUrl(id, 117, 117, false, true, true))
                            .Where(s => !s.Contains(".jpg")).Take(500).Union(
                        userSession.UserFriendsPrimaryPhotoIds.Where(id => id > 0)
                            .Select(id => ImageHelper.CreateImageUrl(id, 32, 32, false, true, true))
                            .Where(s => !s.Contains(".jpg")).Take(500)).ToArray();
                }

                t[2] = DateTime.Now;
                userSession.FavouriteUsers = userSession.FetchFavouriteUsers();
                context.Session["FavouriteUsers"] = userSession.FavouriteUsers;
                t[3] = DateTime.Now;
                userSession.BlockedUsers = userSession.FetchBlockedUsers();
                context.Session["BlockedUsers"] = userSession.BlockedUsers;
                t[4] = DateTime.Now;
                //userSession.FacebookFriends = userSession.FetchFacebookFriends();
                var search2 = new BasicSearch
                {
                    ViewerUsername = userSession.Username,
                    Gender = userSession.InterestedIn,
                    InterestedIn = userSession.Gender,
                    MaxAge = Math.Min(userSession.IncomingMessagesRestrictions.AgeTo, Config.Users.MaxAge),
                    MinAge = Math.Max(userSession.IncomingMessagesRestrictions.AgeFrom, Config.Users.MinAge),
                    SortColumn = "MutualFriendsCount"
                };
                search2.SortColumn = "LastOnline";
                search2.ExcludeUsername.Add(userSession.Username);
                context.Session["BasicSearchResultsUsernames"] = search2.GetResults().Usernames;
                t[5] = DateTime.Now;

                if (context.Session != null)
                {
                    foreach (var pageName in userSession.SessionPagesDic.Keys)
                    {
                        try
                        {
                            context.Server.Execute("~/" + pageName, false);
                            //context.Server.Execute("~/" + pageName, userSession.SessionPagesDic[pageName], false);
                            //context.Session[pageName] = userSession.SessionPagesDic[pageName];
                        }
                        catch (Exception ex) { }
                    }
                    foreach (var url in userSession.UserFriendsPrelodImages)
                    {
                        try
                        {
                            context.Server.Execute(url.Replace(Config.ServerSettings.DomainURL, "~"), true);
                            //context.Session[pageName] = userSession.SessionPagesDic[pageName];
                        }
                        catch (Exception ex) { }
                    }

                }

                t[6] = DateTime.Now;
                UpdatePopupTips(userSession);
                t[7] = DateTime.Now;
            }
        }
Exemplo n.º 6
0
        private static void AsyncProcessMailerQueue(object data)
        {
            if (mailerLock)
            {
                return;
            }

            try
            {
                mailerLock = true;

                var announcements = ScheduledAnnouncement.Fetch().Take(100000);
                if (announcements.Count() > 0)
                {
                    foreach (ScheduledAnnouncement announcement in announcements)
                    {
                        BasicSearch search = new BasicSearch();
                        search.hasAnswer_isSet = false;

                        if (announcement.Gender.HasValue)
                            if (announcement.Gender.Value == Classes.User.eGender.Matchmaker)
                                search.InterestedIn = announcement.Gender.Value;
                            else search.Gender = announcement.Gender.Value;

                        if (announcement.PaidMember.HasValue)
                            search.Paid = announcement.PaidMember.Value;
                        if (announcement.HasPhotos.HasValue)
                            search.HasPhoto = announcement.HasPhotos.Value;
                        if (announcement.HasProfile.HasValue)
                            search.HasAnswer = announcement.HasProfile.Value;
                        if (!String.IsNullOrEmpty(announcement.Country))
                            search.Country = announcement.Country;
                        if (!String.IsNullOrEmpty(announcement.Region))
                            search.State = announcement.Region;
                        if (announcement.LanguageId.HasValue)
                            search.LanguageID = announcement.LanguageId;

                        switch (announcement.Type)
                        {
                            case ScheduledAnnouncement.eType.SpecificDate:
                                if (DateTime.Now.Date == announcement.Date.Value.Date)
                                {
                                    ScheduledAnnouncement.Delete(announcement.ID);
                                }
                                else continue;
                                break;

                            case ScheduledAnnouncement.eType.DaysAfterInactivity:
                                if (announcement.Days.HasValue)
                                {
                                    search.LastLogin = (DateTime.Now - TimeSpan.FromDays(announcement.Days.Value)).Date;
                                }
                                break;

                            case ScheduledAnnouncement.eType.Weekly:

                                if (!announcement.Days.HasValue || announcement.Days.Value < 0)
                                    announcement.Days = 0;
                                if (announcement.Days.Value > 6)
                                    announcement.Days = 6;

                                if (DateTime.Now.DayOfWeek != (DayOfWeek.Sunday + announcement.Days))
                                {
                                    search.LastLogin = DateTime.MaxValue;
                                }
                                break;

                            case ScheduledAnnouncement.eType.Monthly:

                                if (!announcement.Days.HasValue || announcement.Days.Value < 1)
                                    announcement.Days = 1;
                                if (announcement.Days.Value > 28)
                                    announcement.Days = 28;

                                if (DateTime.Now.Day != announcement.Days)
                                {
                                    search.LastLogin = DateTime.MaxValue;
                                }
                                break;

                            case ScheduledAnnouncement.eType.DaysAfterRegistration:
                                if (announcement.Days.HasValue)
                                {
                                    search.UserSince = (DateTime.Now - TimeSpan.FromDays(announcement.Days.Value)).Date;
                                }
                                break;

                            case ScheduledAnnouncement.eType.DaysBeforeMembershipEnd:
                                if (announcement.Days.HasValue)
                                {
                                    search.Paid = true;
                                }
                                break;
                        }

                        UserSearchResults results = search.GetResults();

                        if (results == null)
                        {
                            continue;
                        }

                        string[] users = null;

                        if (announcement.Type == ScheduledAnnouncement.eType.DaysBeforeMembershipEnd)
                        {
                            var elapsedUsernames =
                                Subscription.FetchActiveElapsedSubscriptions(
                                    DateTime.Today.AddDays(announcement.Days.Value - 1),
                                    DateTime.Today.AddDays(announcement.Days.Value + 1)
                                    ).Select(s => s.Username);
                            users = results.Usernames.Where(u => elapsedUsernames.Contains(u)).ToArray();
                        }
                        else
                        {
                            users = results.Usernames;
                        }

                        foreach (string username in users)
                        {
                            string subject = announcement.Subject;
                            string text = announcement.Body;

                            User user = Classes.User.Load(username);
                            subject = subject.Replace("%%USER%%", user.Username);
                            subject = subject.Replace("%%NAME%%", user.Name);
                            text = text.Replace("%%USER%%", user.Username);
                            text = text.Replace("%%NAME%%", user.Name);

                            Email.Send(Config.Misc.SiteTitle, Config.Misc.SiteEmail, user.Name, user.Email, subject, text, false);
                        }
                    }
                }
            }
            catch (Exception err)
            {
                Global.Logger.LogError("ScheduledAnnouncementEmails", err);
            }
            finally
            {
                mailerLock = false;
            }
        }
Exemplo n.º 7
0
        private static void AsyncProcessMailerQueue(object data)
        {
            if (mailerLock)
            {
                return;
            }

            try
            {
                mailerLock = true;

                ScheduledAnnouncement[] announcements = ScheduledAnnouncement.Fetch();
                if (announcements.Length > 0)
                {
                    foreach (ScheduledAnnouncement announcement in announcements)
                    {
                        BasicSearch search = new BasicSearch();
                        search.hasAnswer_isSet = false;

                        if (announcement.Gender.HasValue)
                            search.Gender = announcement.Gender.Value;
                        if (announcement.PaidMember.HasValue)
                            search.Paid = announcement.PaidMember.Value;
                        if (announcement.HasPhotos.HasValue)
                            search.HasPhoto = announcement.HasPhotos.Value;
                        if (announcement.HasProfile.HasValue)
                            search.HasAnswer = announcement.HasProfile.Value;
                        if (!String.IsNullOrEmpty(announcement.Country))
                            search.Country = announcement.Country;
                        if (!String.IsNullOrEmpty(announcement.Region))
                            search.State = announcement.Region;
                        if (announcement.LanguageId.HasValue)
                            search.LanguageID = announcement.LanguageId;

                        switch (announcement.Type)
                        {
                            case ScheduledAnnouncement.eType.SpecificDate:
                                if (DateTime.Now.Date == announcement.Date.Value.Date)
                                {
                                    ScheduledAnnouncement.Delete(announcement.ID);
                                }
                                else continue;
                                break;
                            case ScheduledAnnouncement.eType.DaysAfterInactivity:
                                if (announcement.Days.HasValue)
                                {
                                    search.LastLogin = (DateTime.Now - TimeSpan.FromDays(announcement.Days.Value)).Date;
                                }
                                break;
                            case ScheduledAnnouncement.eType.DaysAfterRegistration:
                                if (announcement.Days.HasValue)
                                {
                                    search.UserSince = (DateTime.Now - TimeSpan.FromDays(announcement.Days.Value)).Date;
                                }
                                break;
                        }

                        UserSearchResults results = search.GetResults();

                        if (results == null)
                        {
                            continue;
                        }

                        string[] users = results.Usernames;

                        foreach (string username in users)
                        {
                            string subject = announcement.Subject;
                            string text = announcement.Body;

                            User user = User.Load(username);
                            subject = subject.Replace("%%USER%%", user.Username);
                            subject = subject.Replace("%%NAME%%", user.Name);
                            text = text.Replace("%%USER%%", user.Username);
                            text = text.Replace("%%NAME%%", user.Name);

                            Email.Send(Config.Misc.SiteTitle, Config.Misc.SiteEmail, user.Name, user.Email, subject, text, false);
                        }
                    }
                }
            }
            catch (Exception err)
            {
                Global.Logger.LogError("ScheduledAnnouncementEmails", err);
            }
            finally
            {
                mailerLock = false;
            }
        }
Exemplo n.º 8
0
        private static void GenerateSitemaps()
        {
            SiteMapDataSet sitemap = new SiteMapDataSet();

            SiteMapDataSet.urlsetRow urlSet = sitemap.urlset.AddurlsetRow();

            #region Basic pages

            sitemap.url.AddurlRow(new Uri(Config.Urls.Home), null, "weekly", 1, urlSet);
            sitemap.url.AddurlRow(new Uri(Config.Urls.Home + "/Login.aspx"), null, "monthly", 0.1m, urlSet);
            sitemap.url.AddurlRow(new Uri(Config.Urls.Home + "/Registration.aspx"), null, "monthly", 0.8m, urlSet);
            sitemap.url.AddurlRow(new Uri(Config.Urls.Home + "/Search2.aspx"), null, "monthly", 0.1m, urlSet);
            if (Config.Ratings.EnableProfileRatings)
                sitemap.url.AddurlRow(new Uri(Config.Urls.Home + "/TopUsers.aspx"), null, "daily", 0.7m, urlSet);
            if (Config.Ratings.EnablePhotoRatings)
                sitemap.url.AddurlRow(new Uri(Config.Urls.Home + "/TopPhotos.aspx"), null, "daily", 0.7m, urlSet);

            #endregion

            #region Photo contests

            if (Config.Ratings.EnablePhotoContests)
            {
                sitemap.url.AddurlRow(new Uri(Config.Urls.Home + "/PhotoContests.aspx"), null, "weekly", 0.5m, urlSet);
                PhotoContest[] contests = PhotoContest.Load(null);
                foreach (PhotoContest contest in contests)
                {
                    if (contest.DateEnds.HasValue && contest.DateEnds.Value < DateTime.Now)
                    {
                        sitemap.url.AddurlRow(new Uri(Config.Urls.Home + "/PhotoContest.aspx?cid=" + contest.Id), 
                            null, "yearly", 0.2m, urlSet);
                    }
                    else
                    {
                        sitemap.url.AddurlRow(new Uri(Config.Urls.Home + "/PhotoContest.aspx?cid=" + contest.Id),
                            null, "daily", 0.5m, urlSet);
                    }
                }
            }

            #endregion

            Language[] langs = Language.FetchAll();
            IFormatProvider mmddFormat = new CultureInfo(String.Empty, false);

            #region News

            foreach (Language lang in langs)
            {
                if (!lang.Active) continue;
                foreach (News news in News.FetchAsArray(lang.Id))
                {
                    sitemap.url.AddurlRow(new Uri(Config.Urls.Home + "/News.aspx?id=" + news.ID),
                        news.PublishDate.ToString("yyy-MM-dd", mmddFormat), "monthly", 0.5m, urlSet);
                }
            }

            #endregion

            #region Content pages

            foreach (Language lang in langs)
            {
                if (!lang.Active) continue;
                foreach (ContentPage page in ContentPage.FetchContentPages(lang.Id, ContentPage.eSortColumn.None))
                {
                    if (page.URL != null || page.VisibleFor == ContentPage.eVisibility.LoggedOnUsers
                        || page.VisibleFor == ContentPage.eVisibility.Paid
                        || page.VisibleFor == ContentPage.eVisibility.Unpaid
                        || (!page.HeaderPosition.HasValue && !page.FooterPosition.HasValue)) continue;
                    sitemap.url.AddurlRow(new Uri(UrlRewrite.CreateContentPageUrl(page.ID)),
                        null, "weekly", 0.5m, urlSet);
                }
            }

            #endregion

            #region Groups

            if (Config.Groups.EnableGroups)
            {
                sitemap.url.AddurlRow(new Uri(Config.Urls.Home + "/Groups.aspx"),
                                      null, "weekly", 0.5m, urlSet);
                foreach (Group group in Group.Fetch(true, Group.eSortColumn.None))
                {
                    sitemap.url.AddurlRow(new Uri(UrlRewrite.CreateShowGroupUrl(group.ID.ToString())),
                                          null, "weekly", 0.5m, urlSet);

                    if (group.IsPermissionEnabled(eGroupPermissions.ViewGalleryNonMembers))
                        sitemap.url.AddurlRow(new Uri(UrlRewrite.CreateShowGroupPhotosUrl(group.ID.ToString())),
                                              null, "weekly", 0.5m, urlSet);

                    if (group.IsPermissionEnabled(eGroupPermissions.ViewMessageBoardNonMembers))
                    {
                        sitemap.url.AddurlRow(new Uri(UrlRewrite.CreateShowGroupTopicsUrl(group.ID.ToString())),
                                              null, "daily", 0.8m, urlSet);
                        foreach (GroupTopic topic in GroupTopic.FetchByGroup(group.ID))
                        {
                            sitemap.url.AddurlRow(
                                new Uri(UrlRewrite.CreateShowGroupTopicsUrl(group.ID.ToString(), topic.ID.ToString())),
                                topic.DateUpdated.ToString("yyy-MM-dd", mmddFormat), "weekly", 0.6m, urlSet);
                        }
                    }

                    if (group.IsPermissionEnabled(eGroupPermissions.ViewEventsNonMembers))
                    {
                        sitemap.url.AddurlRow(new Uri(UrlRewrite.CreateShowGroupEventsUrl(group.ID.ToString())),
                                              null, "daily", 0.8m, urlSet);
                        foreach (GroupEvent groupEvent in GroupEvent.FetchByGroupID(group.ID))
                        {
                            sitemap.url.AddurlRow(
                                new Uri(
                                    UrlRewrite.CreateShowGroupEventsUrl(group.ID.ToString(), groupEvent.ID.ToString())),
                                null, "weekly", 0.6m, urlSet);
                        }
                    }
                }
            }

            #endregion

            #region Profiles

            BasicSearch search = new BasicSearch();
            search.Deleted = false;
            search.Active = true;
            search.hasAnswer_isSet = false;
            search.hasPhoto_isSet = false;

            foreach (string username in search.GetResults().Usernames)
            {
                sitemap.url.AddurlRow(new Uri(UrlRewrite.CreateShowUserUrl(username)),
                    null, "weekly", 0.5m, urlSet);

                if (Config.Misc.EnableBlogs)
                {
                    Blog blog = Blog.Load(username);
                    if (blog != null)
                    {
                        foreach (BlogPost post in BlogPost.Fetch(blog.Id))
                        {
                            sitemap.url.AddurlRow(new Uri(UrlRewrite.CreateShowUserBlogUrl(username, post.Id)),
                                null, "monthly", 0.6m, urlSet);
                        }
                    }
                }
            }

            #endregion

            XmlDataDocument sitemapDoc = new XmlDataDocument(sitemap);
            XmlTextWriter writer = new XmlTextWriter(Config.Directories.Home + "/sitemap.xml",
                System.Text.Encoding.UTF8);
            writer.Formatting = Formatting.Indented;
            writer.Indentation = 1;
            writer.IndentChar = '\t';
            writer.WriteStartDocument();
            sitemapDoc.DocumentElement.WriteContentTo(writer);
            writer.Close();
        }
Exemplo n.º 9
0
        private void PerformSearch()
        {
            BasicSearch search = new BasicSearch();
            search.deleted_isSet = false;
            search.active_isSet = false;
            search.hasAnswer_isSet = false;
            search.visible_isSet = false;
            search.FaceControlApproved = null;

            search.SortColumn = SortField;
            search.SortAsc = SortAsc;

            if (txtUsername.Text.Trim().Length > 0)
                search.Username = txtUsername.Text.Trim();
            if (txtName.Text.Trim().Length > 0)
                search.Name = txtName.Text.Trim();
            if (ddGender.SelectedIndex > 0)
                search.Gender = (User.eGender) Convert.ToInt32(ddGender.SelectedValue);

            try
            {
                search.MinAge = Convert.ToInt32(txtAgeFrom.Text.Trim());
                search.MaxAge = Convert.ToInt32(txtAgeTo.Text.Trim());
            }
            catch
            {
            }

            if (txtCountry.Text.Trim().Length > 0)
                search.Country = txtCountry.Text.Trim();
            if (txtRegion.Text.Trim().Length > 0)
                search.State = txtRegion.Text.Trim();
            if (txtCity.Text.Trim().Length > 0)
                search.City = txtCity.Text.Trim();

            if (txtEmail.Text.Trim().Length > 0)
                search.Email = txtEmail.Text.Trim();
            if (txtIP.Text.Trim().Length > 0)
                search.IP = txtIP.Text.Trim();
            if (ddPhoto.SelectedIndex > 0)
                search.HasPhoto = ddPhoto.SelectedIndex == 1;
            if (ddActive.SelectedIndex > 0)
                search.Active = ddActive.SelectedIndex == 1;
            if (ddDeleted.SelectedIndex > 0)
                search.Deleted = ddDeleted.SelectedIndex == 1;
            if (ddPaid.SelectedIndex > 0)
                search.Paid = ddPaid.SelectedIndex == 1;

            Results = search.GetResults();

            btnGetCSV.Visible = Results != null;

            LoadResultsPage();
        }
Exemplo n.º 10
0
        private void LoadSimilarProfiles()
        {
            if (ViewedUser == null) {
                return;
            }

            DataTable dtNewUsers;
            var spSearch = new BasicSearch();

            if (Config.Users.RequireProfileToShowInSearch)
            {
                spSearch.HasAnswer = true;
            }
            else
            {
                spSearch.hasAnswer_isSet = false;
            }

            if (!Config.Users.DisableGenderInformation)
            {
                spSearch.Gender = ViewedUser.Gender;

                if (Config.Users.InterestedInFieldEnabled && !Config.Users.DisableGenderInformation)
                {
                    spSearch.InterestedIn = ViewedUser.InterestedIn;
                }
            }

            if (!Config.Users.DisableAgeInformation)
            {
                spSearch.MinAge = (ViewedUser.Age - (int)Math.Round(ViewedUser.Age * 0.1));
                spSearch.MaxAge = (ViewedUser.Age + (int)Math.Round(ViewedUser.Age * 0.1));
            }

            if (Config.Users.LocationPanelVisible)
            {
                spSearch.City = ViewedUser.City;
                spSearch.Country = ViewedUser.Country;
                spSearch.Zip = ViewedUser.ZipCode;
                spSearch.State = ViewedUser.State;
                spSearch.Distance = 500;

                spSearch.FromLocation = Config.Users.GetLocation(ViewedUser.Country, ViewedUser.State, ViewedUser.City);
            }

            UserSearchResults nuResults = spSearch.GetResults();
            dtNewUsers = new DataTable();
            dtNewUsers.Columns.Add("Username");
            dtNewUsers.Columns.Add("ImageId", typeof(int));
            dtNewUsers.Columns.Add("Age");
            dtNewUsers.Columns.Add("Age2");
            dtNewUsers.Columns.Add("Gender");
            dtNewUsers.Columns.Add("City");

            if (nuResults != null && nuResults.Usernames != null)
            {
                nuResults.Usernames = nuResults.Usernames.Except(new string[] { ViewedUser.Username }).ToArray();

                if (nuResults.Usernames.Length > Config.Profiles.NumberOfSimilarProfilesToShow)
                {
                    Random random = new Random();
                    List<int> listRandIndexProfiles = new List<int>();

                    while (listRandIndexProfiles.Count < Config.Profiles.NumberOfSimilarProfilesToShow)
                    {
                        int index = random.Next(0, nuResults.Usernames.Length);
                        if (listRandIndexProfiles.Count == 0 || !listRandIndexProfiles.Contains(index))
                        {
                            listRandIndexProfiles.Add(index);
                        }
                    }

                    string[] randomizedUsersArr = new string[Config.Profiles.NumberOfSimilarProfilesToShow];

                    for (int i = 0; i < listRandIndexProfiles.Count; i++)
                    {
                        int randomIndex = listRandIndexProfiles[i];
                        randomizedUsersArr[i] = nuResults.Usernames[randomIndex];
                    }

                    nuResults.Usernames = randomizedUsersArr;
                }

                foreach (string username in nuResults.Usernames)
                {
                    int imageId;
                    User user;

                    try
                    {
                        user = User.Load(username);
                    }
                    catch (NotFoundException)
                    {
                        continue;
                    }

                    try
                    {
                        imageId = Photo.GetPrimary(username).Id;
                    }
                    catch (NotFoundException)
                    {
                        imageId = ImageHandler.GetPhotoIdByGender(user.Gender);
                    }
                    string age = !Config.Users.DisableAgeInformation ? user.Age.ToString() : String.Empty;
                    string age2 = !Config.Users.DisableAgeInformation ? user.Age2.ToString() : String.Empty;
                    string g = !Config.Users.DisableGenderInformation ? user.Gender.ToString() : String.Empty;
                    dtNewUsers.Rows.Add(
                        new object[]
                            {
                                username, imageId, age, user.Gender == User.eGender.Couple ? age2 : String.Empty, g, user.City
                            });
                }
            }

            if (dtNewUsers.Rows.Count > 0)
            {
                dlSimilarProfiles.DataSource = dtNewUsers;
                dlSimilarProfiles.DataBind();
            }
            else
            {
                Visible = false;
            }
        }
Exemplo n.º 11
0
        private static void GenerateSitemaps()
        {
            var nodes = new List<SitemapNode>();

            #region Basic pages

            nodes.AddRange(new[]{
                         new SitemapNode
                         {
                             Location = Config.Urls.Home,
                             ChangeFrequency = Frequency.weekly,
                             Priority = 1.0M
                         },
                         new SitemapNode
                         {
                             Location = Config.Urls.Home + "/Login.aspx",
                             ChangeFrequency = Frequency.monthly,
                             Priority = 0.1M
                         },
                         new SitemapNode
                         {
                             Location = Config.Urls.Home + "/Register.aspx",
                             ChangeFrequency = Frequency.monthly,
                             Priority = 0.8M
                         },
                         new SitemapNode
                         {
                             Location = Config.Urls.Home + "/Search2.aspx",
                             ChangeFrequency = Frequency.monthly,
                             Priority = 0.1M
                         }
            });

            if (Config.Ratings.EnableProfileRatings)
                nodes.Add(
                         new SitemapNode
                         {
                             Location = Config.Urls.Home + "/TopUsers.aspx",
                             ChangeFrequency = Frequency.daily,
                             Priority = 0.7M
                         }
                    );

            if (Config.Ratings.EnablePhotoRatings)
                nodes.Add(
                         new SitemapNode
                         {
                             Location = Config.Urls.Home + "/TopPhotos.aspx",
                             ChangeFrequency = Frequency.daily,
                             Priority = 0.7M
                         }
                    );

            #endregion

            #region Photo contests

            if (Config.Ratings.EnablePhotoContests)
            {
                nodes.Add(
                         new SitemapNode
                         {
                             Location = Config.Urls.Home + "/PhotoContests.aspx",
                             ChangeFrequency = Frequency.weekly,
                             Priority = 0.5M
                         }
                    );
                PhotoContest[] contests = PhotoContest.Load(null);
                foreach (PhotoContest contest in contests)
                {
                    if (contest.DateEnds.HasValue && contest.DateEnds.Value < DateTime.Now)
                    {
                        nodes.Add(
                                 new SitemapNode
                                 {
                                     Location = Config.Urls.Home + "/PhotoContest.aspx?cid=" + contest.Id,
                                     ChangeFrequency = Frequency.yearly,
                                     Priority = 0.2M
                                 }
                            );
                    }
                    else
                    {
                        nodes.Add(
                                 new SitemapNode
                                 {
                                     Location = Config.Urls.Home + "/PhotoContest.aspx?cid=" + contest.Id,
                                     ChangeFrequency = Frequency.daily,
                                     Priority = 0.5M
                                 }
                            );
                    }
                }
            }

            #endregion

            Language[] langs = Language.FetchAll();

            #region News

            foreach (Language lang in langs)
            {
                if (!lang.Active) continue;
                foreach (News news in News.FetchAsArray(lang.Id))
                {
                    nodes.Add(
                             new SitemapNode
                             {
                                 Location = Config.Urls.Home + "/News.aspx?id=" + news.ID,
                                 LastModified = news.PublishDate,
                                 ChangeFrequency = Frequency.monthly,
                                 Priority = 0.5M
                             }
                        );
                }
            }

            #endregion

            #region Content pages

            foreach (Language lang in langs)
            {
                if (!lang.Active) continue;
                foreach (ContentPage page in ContentPage.FetchContentPages(lang.Id, ContentPage.eSortColumn.None))
                {
                    if (page.URL != null || page.VisibleFor == ContentPage.eVisibility.LoggedOnUsers
                        || page.VisibleFor == ContentPage.eVisibility.Paid
                        || page.VisibleFor == ContentPage.eVisibility.Unpaid
                        || (!page.HeaderPosition.HasValue && !page.FooterPosition.HasValue)) continue;

                    nodes.Add(
                             new SitemapNode
                             {
                                 Location = UrlRewrite.CreateContentPageUrl(page.ID),
                                 ChangeFrequency = Frequency.weekly,
                                 Priority = 0.5M
                             }
                        );
                }
            }

            #endregion

            #region Groups

            if (Config.Groups.EnableGroups)
            {
                nodes.Add(
                         new SitemapNode
                         {
                             Location = Config.Urls.Home + "/Groups.aspx",
                             ChangeFrequency = Frequency.weekly,
                             Priority = 0.5M
                         }
                    );

                foreach (Group group in Group.Fetch(true, Group.eSortColumn.None))
                {
                    nodes.Add(
                             new SitemapNode
                             {
                                 Location = UrlRewrite.CreateShowGroupUrl(group.ID.ToString()),
                                 ChangeFrequency = Frequency.weekly,
                                 Priority = 0.5M
                             }
                        );

                    if (group.IsPermissionEnabled(eGroupPermissions.ViewGalleryNonMembers))
                        nodes.Add(
                                 new SitemapNode
                                 {
                                     Location = UrlRewrite.CreateShowGroupPhotosUrl(group.ID.ToString()),
                                     ChangeFrequency = Frequency.weekly,
                                     Priority = 0.5M
                                 }
                            );

                    if (group.IsPermissionEnabled(eGroupPermissions.ViewMessageBoardNonMembers))
                    {
                        nodes.Add(
                                 new SitemapNode
                                 {
                                     Location = UrlRewrite.CreateShowGroupTopicsUrl(group.ID.ToString()),
                                     ChangeFrequency = Frequency.daily,
                                     Priority = 0.8M
                                 }
                            );

                        foreach (GroupTopic topic in GroupTopic.FetchByGroup(group.ID))
                        {
                            nodes.Add(
                                     new SitemapNode
                                     {
                                         Location = UrlRewrite.CreateShowGroupTopicsUrl(group.ID.ToString(), topic.ID.ToString()),
                                         LastModified = topic.DateUpdated,
                                         ChangeFrequency = Frequency.weekly,
                                         Priority = 0.6M
                                     }
                                );
                        }
                    }

                    if (group.IsPermissionEnabled(eGroupPermissions.ViewEventsNonMembers))
                    {
                        nodes.Add(
                                 new SitemapNode
                                 {
                                     Location = UrlRewrite.CreateShowGroupEventsUrl(group.ID.ToString()),
                                     ChangeFrequency = Frequency.daily,
                                     Priority = 0.8M
                                 }
                            );

                        foreach (GroupEvent groupEvent in GroupEvent.FetchByGroupID(group.ID))
                        {
                            nodes.Add(
                                     new SitemapNode
                                     {
                                         Location = UrlRewrite.CreateShowGroupEventsUrl(group.ID.ToString(), groupEvent.ID.ToString()),
                                         ChangeFrequency = Frequency.weekly,
                                         Priority = 0.6M
                                     }
                                );
                        }
                    }
                }
            }

            #endregion

            #region Profiles

            BasicSearch search = new BasicSearch();
            search.Deleted = false;
            search.Active = true;
            search.hasAnswer_isSet = false;
            search.hasPhoto_isSet = false;

            foreach (string username in search.GetResults().Usernames)
            {
                nodes.Add(
                         new SitemapNode
                         {
                             Location = UrlRewrite.CreateShowUserUrl(username),
                             ChangeFrequency = Frequency.weekly,
                             Priority = 0.5M
                         }
                    );

                if (Config.Misc.EnableBlogs)
                {
                    Blog blog = Blog.Load(username);
                    if (blog != null)
                    {
                        foreach (BlogPost post in BlogPost.Fetch(blog.Id))
                        {
                            nodes.Add(
                                    new SitemapNode
                                    {
                                        Location = UrlRewrite.CreateShowUserBlogUrl(username, post.Id),
                                        ChangeFrequency = Frequency.monthly,
                                        Priority = 0.6M
                                    }
                                );
                        }
                    }
                }
            }

            #endregion

            var xml = new XElement("urlset",
                new XAttribute("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9"),
                from node in nodes
                select new XElement("url",
                    new XElement("loc", node.Location),
                    node.LastModified.HasValue ?
                    new XElement("lastmod", node.LastModified.Value.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture)) : null,
                    new XElement("changefreq", node.ChangeFrequency.ToString()),
                    new XElement("priority", node.Priority)
                )
            );

            XmlTextWriter writer = new XmlTextWriter(Config.Directories.Home + "/sitemap.xml",
                System.Text.Encoding.UTF8);
            writer.Formatting = Formatting.Indented;
            writer.Indentation = 1;
            writer.IndentChar = '\t';
            writer.WriteStartDocument();
            xml.WriteTo(writer);
            writer.Close();
        }
Exemplo n.º 12
0
        private void prepareStats()
        {
            #region New registrations chart

            ChartNewRegistrations.Series["Default"]["DrawingStyle"] = "Cylinder";
            ChartNewRegistrations.Titles["Title1"].Text =
                Lang.TransA("At-a-glance: New registrations for the past 30 days");
            ChartNewRegistrations.Series["Default"].ToolTip = String.Format("#VALX\n#VALY {0}",
                                                                            "Registrations".TranslateA());
            NewUsersSearch nuSearch = new NewUsersSearch();
            nuSearch.ProfileReq = false;
            nuSearch.UsersSince = DateTime.Now.AddDays(-31);
            UserSearchResults nuResults = nuSearch.GetResults();

            List<string> xValues = new List<string>();
            List<int> yValues = new List<int>();
            List<int> newUsersCount = new List<int>(30);
            newUsersCount.AddRange(new int[30]);

            int max = 10;
            if (nuResults != null)
            {
                foreach (string username in nuResults.Usernames)
                {
                    User user = Classes.User.Load(username);
                    int dayIndex = 30 - DateTime.Now.Subtract(user.UserSince).Days;
                    if (dayIndex < 0 || dayIndex >= newUsersCount.Count) continue;
                    newUsersCount[dayIndex]++;
                }

                for (int i = 0; i < 30; i++)
                {
                    int registrations = newUsersCount[i];
                    xValues.Add(DateTime.Now.AddDays(i - 30).ToString("d MMM"));
                    yValues.Add(registrations);

                    if (max < registrations) max = registrations;
                }
            }

            ChartNewRegistrations.Series["Default"].Points.DataBindXY(xValues, yValues);

            #endregion

            #region Total users chart

            if (Config.Users.DisableGenderInformation)
            {
                ChartTotalRegistrations.Visible = false;
            }
            else
            {
                ChartTotalRegistrations.Titles["Title1"].Text = Lang.TransA("At-a-glance: Total Registrations");
                ChartTotalRegistrations.Series["Default"]["PieLabelStyle"] = "Outside";

                BasicSearch search = new BasicSearch();
                search.hasAnswer_isSet = false;
                search.hasPhoto_isSet = false;
                search.interestedIn_isSet = false;
                search.Gender = Classes.User.eGender.Male;
                UserSearchResults results = search.GetResults();
                int count = results == null ? 0 : results.Usernames.Length;

                xValues = new List<string>();
                yValues = new List<int>();

                xValues.Add(String.Format(Lang.TransA("{0} Males"), count));
                yValues.Add(count);

                search.Gender = Classes.User.eGender.Female;
                results = search.GetResults();
                count = results == null || results.Usernames == null ? 0 : results.Usernames.Length;
                xValues.Add(String.Format(Lang.TransA("{0} Females"), count));
                yValues.Add(count);

                if (Config.Users.CouplesSupport)
                {
                    search.Gender = Classes.User.eGender.Couple;
                    results = search.GetResults();
                    count = results == null || results.Usernames == null ? 0 : results.Usernames.Length;
                    if (count != 0)
                    {
                        xValues.Add(String.Format(Lang.TransA("{0} Couples"), count));
                        yValues.Add(count);
                    }
                }

                ChartTotalRegistrations.Series["Default"].Points.DataBindXY(xValues, yValues);
            }

            #endregion
        }