func (m *UserMgr) Logout(name string) int { user := m.Users[name] if user == nil { return RS.RS_user_inexistence } user.LogoutTime = time.Now() db.Update(DB, C_USER, bson.M{"username": name}, *m.Users[name]) return RS.RS_success }
func (m *UserMgr) Update() int { for _, u := range m.Users { err := db.Update(DB, C_USER, bson.M{"username": u.UserName}, *u) if err != nil { return RS.RS_update_failed } } return RS.RS_success }
func (m *TopicMgr) Update() int { for _, topic := range m.Topics { err := db.Update(DB, C_TOPIC, bson.M{"id": topic.ID}, bson.M{"$set": bson.M{"pv": topic.PV}}) if err != nil { log.Error(err) return RS.RS_update_failed } } return RS.RS_success }
func (conf *Config) UpdateConf() { data, err := json.Marshal(conf.SiteVerify) if err != nil { log.Error(err) return } err = db.Update(DB, C_CONFIG, bson.M{}, bson.M{"$set": bson.M{SITE_VERIFY: string(data)}}) if err != nil { log.Error(err) } }
func (m *UserMgr) Register(user *User) int { m.lock.Lock() defer m.lock.Unlock() err := db.Update(DB, C_USER, bson.M{"username": user.UserName}, *user) if err != nil { log.Warn(err) return RS.RS_register_failed } m.Users[user.UserName] = user return RS.RS_success }
func (m *TopicMgr) ModTopic(topic *Topic, catgoryID string, tags string) error { m.lock.Lock() defer m.lock.Unlock() if topic.CategoryID != catgoryID { m.CategoryGroupDeleteTopic(topic) category := Blogger.GetCategoryByID(catgoryID) if category == nil { topic.CategoryID = "default" category = Blogger.GetCategoryByID(catgoryID) } topic.CategoryID = catgoryID topic.PCategory = category m.GroupByCategory[catgoryID] = append(m.GroupByCategory[catgoryID], topic.ID) category.addCount() } if tags == "" { topic.TagIDs = make([]string, 0) topic.PTags = make([]*Tag, 0) } else { tagIDS := strings.Split(tags, ",") for _, id := range topic.TagIDs { m.TagGroupDeleteTopic(id, topic) } topic.TagIDs = make([]string, 0, len(tagIDS)) topic.PTags = make([]*Tag, 0, len(tagIDS)) for _, id := range tagIDS { topic.TagIDs = append(topic.TagIDs, id) if tag := Blogger.GetTagByID(id); tag != nil { topic.PTags = append(topic.PTags, tag) tag.addCount() m.GroupByTag[id] = append(m.GroupByTag[id], topic.ID) } else { newtag := NewTag() newtag.ID = id newtag.Extra = "/tag/" + id newtag.Text = id m.GroupByTag[id] = append(m.GroupByTag[id], topic.ID) topic.PTags = append(topic.PTags, newtag) Blogger.AddTag(newtag) } } } topic.EditTime = time.Now() if err := db.Update(DB, C_TOPIC, bson.M{"id": topic.ID}, topic); err != nil { return err } m.DoTopicUpdate(topic) return nil }
func (m *TopicMgr) DelTopic(id int32) error { if topic := m.GetTopic(id); topic != nil && topic.NeedDelete.IsZero() { topic.NeedDelete = time.Now() if topic.CategoryID != "" { m.CategoryGroupDeleteTopic(topic) } for _, id := range topic.TagIDs { m.TagGroupDeleteTopic(id, topic) } for i, id := range m.IDs { if id == topic.ID { m.IDs = append(m.IDs[:i], m.IDs[i+1:]...) } } m.DeleteTopics[topic.ID] = topic m.DelArchive(topic) delete(m.Topics, id) return db.Update(DB, C_TOPIC, bson.M{"id": id}, topic) } return fmt.Errorf("Topic id=%d not found in cache.", id) }