/** * generate new dataset in frm_posts * @param integer $topic * @param integer $thread * @param integer $user * @param string $message * @param integer $parent_pos * @param integer $notify * @param integer $anonymize * @param string $subject * @param datetime $date * @return integer $lastInsert: new post ID * @access public */ public function generatePost($forum_id, $thread_id, $user, $message, $parent_pos, $notify, $subject = '', $alias = '', $date = '', $status = 1, $send_activation_mail = 0) { global $ilUser, $ilDB; $objNewPost = new ilForumPost(); $objNewPost->setForumId($forum_id); $objNewPost->setThreadId($thread_id); $objNewPost->setSubject($subject); $objNewPost->setMessage($message); $objNewPost->setUserId($user); $objNewPost->setUserAlias($alias); if ($date == "") { $objNewPost->setCreateDate(date("Y-m-d H:i:s")); } else { if (strpos($date, "-") > 0) { $objNewPost->setCreateDate($date); } else { $objNewPost->setCreateDate(date("Y-m-d H:i:s", $date)); } } $objNewPost->setImportName($this->getImportName()); $objNewPost->setNotification($notify); $objNewPost->setStatus($status); $objNewPost->insert(); // entry in tree-table if ($parent_pos == 0) { $this->addPostTree($objNewPost->getThreadId(), $objNewPost->getId(), $objNewPost->getCreateDate()); } else { $this->insertPostNode($objNewPost->getId(), $parent_pos, $objNewPost->getThreadId(), $objNewPost->getCreateDate()); } //echo "<br>->".$objNewPost->getId()."-".$parent_pos."-".$objNewPost->getThreadId()."-". // $objNewPost->getCreateDate()."-".$forum_id."-".$message."-".$user."-"; // string last post $lastPost = $objNewPost->getForumId() . "#" . $objNewPost->getThreadId() . "#" . $objNewPost->getId(); // update thread $result = $ilDB->manipulateF(' UPDATE frm_threads SET thr_num_posts = thr_num_posts + 1, thr_last_post = %s WHERE thr_pk = %s', array('text', 'integer'), array($lastPost, $objNewPost->getThreadId())); // update forum $result = $ilDB->manipulateF(' UPDATE frm_data SET top_num_posts = top_num_posts + 1, top_last_post = %s WHERE top_pk = %s', array('text', 'integer'), array($lastPost, $objNewPost->getForumId())); // MARK READ $forum_obj = ilObjectFactory::getInstanceByRefId($this->getForumRefId()); $forum_obj->markPostRead($objNewPost->getUserId(), $objNewPost->getThreadId(), $objNewPost->getId()); $pos_data = $objNewPost->getDataAsArray(); $pos_data["ref_id"] = $this->getForumRefId(); // Send notification to moderators if they have to enable a post if (!$status && $send_activation_mail) { $pos_data["top_name"] = $forum_obj->getTitle(); $this->sendPostActivationNotification($pos_data); } // Add Notification to news if ($status) { require_once 'Services/RTE/classes/class.ilRTE.php'; include_once "./Services/News/classes/class.ilNewsItem.php"; $news_item = new ilNewsItem(); $news_item->setContext($forum_obj->getId(), 'frm', $objNewPost->getId(), 'pos'); $news_item->setPriority(NEWS_NOTICE); $news_item->setTitle($objNewPost->getSubject()); $news_item->setContent(ilRTE::_replaceMediaObjectImageSrc($this->prepareText($objNewPost->getMessage(), 0), 1)); $news_item->setUserId($user); $news_item->setVisibility(NEWS_USERS); $news_item->create(); } return $objNewPost->getId(); }