示例#1
0
        public void CreateWaifuUser(string login, object image = null, object url = null, object name = null)
        {
            SqlConnection _connection = new SqlConnection(Global.WaifString);

            _connection.Open();
            try
            {
                SqlCommand command = new SqlCommand("INSERT INTO Users (Id, Name, Image, Url, RealName)" +
                                                    " VALUES (@Id, @Name, @Image, @Url, @RealName)", _connection);
                var Id = Membership.GetUser(login).ProviderUserKey.ToString();
                Notification.AddNew(Id, "Благодарим за регистрацию на нашем сайте!", false, "/images/hanekawa.png");
                command.Parameters.AddWithValue("Id", Id);
                command.Parameters.AddWithValue("Name", login);
                if (image != null)
                {
                    command.Parameters.AddWithValue("Image", image);
                }
                command.Parameters.AddWithValue("Url", url ?? DBNull.Value);
                command.Parameters.AddWithValue("RealName", name ?? DBNull.Value);

                command.ExecuteNonQuery();
            }
            finally
            {
                _connection.Close();
            }
        }
        public bool PostComment(string text, string type, string userFrom, string id)
        {
            if (!IsUser(userFrom))
            {
                return(false);
            }
            var table = ReaderHelper.GetCommentsTable(type);

            if (table == "")
            {
                return(false);
            }
            using (_connection = new SqlConnection(Global.WaifString))
            {
                _connection.Open();
                using (var cmd = new SqlCommand("SELECT Name FROM Users WHERE Id=@Id", _connection))
                {
                    cmd.Parameters.AddWithValue("Id", userFrom);
                    if (String.IsNullOrEmpty(cmd.ExecuteScalar().ToString()))
                    {
                        return(false);
                    }
                }
                var postedId = "";
                using (var cmd = new SqlCommand("INSERT INTO " + table + " VALUES(@UserId, @Id, @Text, " +
                                                "GETDATE()); SELECT TOP 1 Id FROM " + table + " ORDER BY Id DESC;", _connection))
                {
                    cmd.Parameters.AddWithValue("UserId", userFrom);
                    cmd.Parameters.AddWithValue("Id", id);
                    cmd.Parameters.AddWithValue("Text", text);
                    postedId = cmd.ExecuteScalar().ToString();
                }
                /* Comment reply notification section */
                var ind = text.IndexOf("methods.replyHover(");
                if (ind != -1)
                {
                    var tempText = text;
                    ind     += 19;
                    tempText = tempText.Substring(ind);
                    tempText = tempText.Remove(tempText.IndexOf("this"));
                    var parameters = tempText.Split(',');
                    var userToId   = "";
                    using (var cmd = new SqlCommand("SELECT UserFrom FROM " + table + " WHERE Id=@Id", _connection))
                    {
                        cmd.Parameters.AddWithValue("Id", parameters[1]);
                        userToId = cmd.ExecuteScalar().ToString();
                    }
                    UserLight user = new UserLight();

                    user.LoadById(userFrom);

                    var notifyContent = String.Format("Пользователь <a href=\"/profile/{0}\">{0}</a> " +
                                                      "ответил на ваш <a onmouseover=\"notifyCommentHover('{1}',{2}, '{3}',this);\">" +
                                                      "комментарий</a>", user.Login, type, postedId, id);
                    Notification.AddNew(userToId, notifyContent, false, user.Image, "/profile/" + user.Login);
                }
            }
            return(true);
        }
        public void ChangeRole(string userToken, string userTo, string role)
        {
            var user    = Membership.GetUser(new Guid(userToken));
            var userFor = Membership.GetUser(userTo);

            if (user == null || userFor == null ||
                !Roles.RoleExists(role) || role.ToLower() == "creator")
            {
                return;
            }
            var ufRole = Roles.GetRolesForUser(user.UserName)[0];
            var utRole = Roles.GetRolesForUser(userTo)[0];

            if ((ufRole == "Moderator") || (ufRole == "User") ||
                (ufRole == utRole) || (utRole == "Creator"))
            {
                return;
            }
            if (role == "Admin" && ufRole != "Creator")
            {
                return;
            }
            Roles.RemoveUserFromRole(userTo, utRole);
            Roles.AddUserToRole(userTo, role);
            var message = "";

            switch (role.ToLower())
            {
            case "banned":
                message = "Вас забанили! Теперь вы не можете оставлять комментарии и отправлять свои описания.";
                break;

            case "user":
                message = "Вы снова стали обычным пользователем!";
                break;

            case "moderator":
                message = "Вы стали модератором! Теперь вы обязаны следить за порядком на сайте. Вы можете удалять неподобающие комментарии пользователей, ваши жалобы будут более тщательно рассматриваться.";
                break;

            case "admin":
                message = "Вы стали администратором! Теперь вам доступны функции добавления новостей, назначения модераторов, бана пользователей, принятия описаний, добавления страниц аниме, манги и игр.";
                break;
            }
            Notification.AddNew(userFor.ProviderUserKey.ToString(), message, false, "/images/notify.png");
        }