/** * updateForumFromTopic * * @param Xcforum_TopicsObject $obj * * @param array $attributes * * @return Xcforum_ForumsObject **/ public function updateForumFromTopic($obj, $attributes, $opt) { // called from Posts.class.php // TODO: 権限エラー(?)が出るが書き込みは完了している $_forum_id = $obj->get('forum_id'); //adump($_topic_id); if (!empty($_forum_id) && (int) $_forum_id > 0) { $forum = $this->get($_forum_id); //adump($opt); foreach ($attributes as $key => $value) { $forum->set($key, $value); } if ($opt['post_countup'] === true) { $forum->set('forum_posts_count', (int) $forum->get('forum_posts_count') + 1); } if ($opt['topic_countup'] === true) { $forum->set('forum_topics_count', (int) $forum->get('forum_topics_count') + 1); } //adump($forum); // update topic information if ($forum instanceof Xcforum_ForumsObject) { if ($this->insert($forum, true) === true) { //die; return $this->get($_forum_id); } } } return NULL; }
/** * updateTopicFromPost * * @param Xcforum_PostObject $obj * * @param array $attributes * * @return Xcforum_TopicsObject **/ public function updateTopicFromPost($obj, $attributes) { // called from Posts.class.php $_topic_id = $obj->get('topic_id'); //adump($_topic_id); if (!empty($_topic_id) && (int) $_topic_id > 0) { $topic = $this->get($_topic_id); } else { // add new topic $topic = new Xcforum_TopicsObject(); //$topic->set('forum_id', $forum_id); $topic->set('topic_title', $obj->get('subject')); $topic->set('topic_first_post_id', $obj->get('post_id')); $topic->set('topic_first_post_time', $obj->get('post_time')); } foreach ($attributes as $key => $value) { $topic->set($key, $value); } //adump($topic); // update post information //$topic->set('topic_last_post_id', $obj->get('post_id')); //$topic->set('topic_last_post_time', $obj->get('post_time')); $topic->set('topic_posts_count', (int) $topic->get('topic_posts_count') + 1); if ($topic instanceof Xcforum_TopicsObject) { if ($this->insert($topic, true) === true) { $inserted_id = (int) $this->db->getInsertId(); $tp_id = $inserted_id > 0 ? $inserted_id : $_topic_id; $topic->set('topic_id', $tp_id); return $topic; } } return NULL; }