Exemple #1
0
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
}
Exemple #2
0
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
}
Exemple #3
0
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
}
Exemple #4
0
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)
	}
}
Exemple #5
0
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
}
Exemple #6
0
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
}
Exemple #7
0
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)
}