2 /****************************************************************/
4 /****************************************************************/
5 /* Copyright (c) 2002-2010 */
6 /* Inclusive Design Institute */
9 /* This program is free software. You can redistribute it and/or*/
10 /* modify it under the terms of the GNU General Public License */
11 /* as published by the Free Software Foundation. */
12 /****************************************************************/
15 define('AT_INCLUDE_PATH', '../../../../include/');
16 require(AT_INCLUDE_PATH.'vitals.inc.php');
17 require(AT_INCLUDE_PATH.'../mods/_standard/forums/lib/forums.inc.php');
19 $fid = intval($_REQUEST['fid']);
20 $_POST['parent_id'] = intval($_REQUEST['parent_id']);
22 $_pages['mods/_standard/forums/forum/index.php?fid='.$fid]['title'] = get_forum_name($fid);
23 $_pages['mods/_standard/forums/forum/index.php?fid='.$fid]['parent'] = 'mods/_standard/forums/forum/list.php';
24 $_pages['mods/_standard/forums/forum/index.php?fid='.$fid]['children'] = array('mods/_standard/forums/forum/new_thread.php');
26 $_pages['mods/_standard/forums/forum/new_thread.php']['title_var'] = 'new_thread';
27 $_pages['mods/_standard/forums/forum/new_thread.php']['parent'] = 'mods/_standard/forums/forum/index.php?fid='.$fid;
29 if (!valid_forum_user($fid) || !$_SESSION['enroll']) {
30 $msg->addError('FORUM_DENIED');
31 require(AT_INCLUDE_PATH.'header.inc.php');
32 require(AT_INCLUDE_PATH.'footer.inc.php');
37 if (isset($_POST['cancel'])) {
38 $msg->addFeedback('CANCELLED');
39 header('Location: '.url_rewrite('mods/_standard/forums/forum/index.php?fid='.$fid, AT_PRETTY_URL_IS_HEADER));
41 } else if (isset($_POST['submit'])) {
42 $missing_fields = array();
44 if ($_POST['subject'] == '') {
45 $missing_fields[] = _AT('subject');
48 $_POST['subject'] = validate_length($_POST['subject'], 60);
51 if ($_POST['body'] == '') {
52 $missing_fields[] = _AT('body');
54 if ($missing_fields) {
55 $missing_fields = implode(', ', $missing_fields);
56 $msg->addError(array('EMPTY_FIELDS', $missing_fields));
58 if (!$msg->containsErrors()) {
59 if ($_POST['replytext'] != '') {
60 $_POST['body'] .= "\n\n".'[reply][b]'._AT('in_reply_to').': [/b]'."\n";
61 if ($strlen($_POST['replytext']) > 200) {
62 $_POST['body'] .= $substr($_POST['replytext'], 0, 200).'...';
64 $_POST['body'] .= $_POST['replytext'];
66 $num_open_replies = substr_count($_POST['body'], '[reply]');
67 $num_close_replies = substr_count($_POST['body'], '[/reply]');
68 $num_replies_add = $num_open_replies - $num_close_replies - 1;
69 for ($i=0; $i < $num_replies_add; $i++) {
70 $_POST['body'] .= '[/reply]';
73 $_POST['body'] .= "\n".'[op]mods/_standard/forums/forum/view.php?fid='.$_POST['fid'].SEP.'pid='.$_POST['parent_id'].SEP.'page='.$_POST['page'].'#'.$_POST['reply'];
74 $_POST['body'] .= '[/op][/reply]';
77 /* use this value instead of NOW(), because we want the parent post to have the exact */
78 /* same date. and not a second off if that may happen */
79 $now = date('Y-m-d H:i:s');
81 $sql_subject = $addslashes($_POST['subject']);
82 $sql_body = $addslashes($_POST['body']);
84 $sql = "INSERT INTO ".TABLE_PREFIX."forums_threads VALUES (NULL, $_POST[parent_id], $_SESSION[member_id], $_POST[fid], '$now', 0, '$sql_subject', '$sql_body', '$now', 0, 0)";
85 $result = mysql_query($sql, $db);
86 $this_id = mysql_insert_id($db);
88 /* Increment count for posts in forums table in database */
89 $sql = "UPDATE ".TABLE_PREFIX."forums SET num_posts=num_posts+1, last_post='$now' WHERE forum_id=$_POST[fid]";
90 $result = mysql_query($sql, $db);
92 // If there are subscribers to this forum, send them an email notification
93 $subscriber_email_list = array(); // list of subscribers array('email', 'full_name')
94 $subscriber_list = '';
96 //get list of student enrolled in this course
97 // This needs to be replaced with a tool to clean forum subscriptions when unenrolling
98 $sql = "SELECT member_id from ".TABLE_PREFIX."course_enrollment WHERE course_id = '$_SESSION[course_id]' AND approved = 'y'";
99 $result1 = mysql_query($sql, $db);
100 while($row = mysql_fetch_assoc($result1)){
101 $enrolled[] = $row['member_id'];
103 //get a list of users subscribed to this forum
104 $sql = "SELECT member_id FROM ".TABLE_PREFIX."forums_subscriptions WHERE forum_id=$fid";
105 $result = mysql_query($sql, $db);
106 while($row = mysql_fetch_assoc($result)){
107 $subscriber_list .= $row['member_id'] . ',';
109 if ($_POST['parent_id']) {
110 $sql = "SELECT member_id FROM ".TABLE_PREFIX."forums_accessed WHERE post_id=$_POST[parent_id] AND subscribe=1";
111 $result = mysql_query($sql, $db);
112 while($row = mysql_fetch_assoc($result)){
113 if(in_array($row['member_id'], $enrolled)){
114 $subscriber_list .= $row['member_id'] . ',';
118 $subscriber_list = $substr($subscriber_list, 0, -1);
120 if ($subscriber_list != '') {
121 $sql = "SELECT first_name, second_name, last_name, email, member_id FROM ".TABLE_PREFIX."members WHERE member_id IN ($subscriber_list)";
122 $result = mysql_query($sql, $db);
123 while ($row = mysql_fetch_assoc($result)) {
124 $subscriber_email_list[] = array('email'=> $row['email'], 'full_name' => $row['first_name'] . ' '. $row['second_name'] . ' ' . $row['last_name'], 'member_id'=>$row['member_id']);
127 $sql = "UPDATE ".TABLE_PREFIX."forums_threads SET num_comments=num_comments+1, last_comment='$now', date=date WHERE post_id=$_POST[parent_id]";
128 $result = mysql_query($sql, $db);
130 if ($subscriber_email_list) {
131 require(AT_INCLUDE_PATH . 'classes/phpmailer/atutormailer.class.php');
133 if ($_POST['parent_name'] == ''){
134 $_POST['parent_name'] = $_POST['subject'];
136 $_POST['parent_name'] = urldecode($_POST['parent_name']);
137 foreach ($subscriber_email_list as $subscriber){
138 $mail = new ATutorMailer;
139 $mail->AddAddress($subscriber['email'], get_display_name($subscriber['member_id']));
140 $body = _AT('forum_new_submsg', $_SESSION['course_title'], get_forum_name($_POST['fid']), $_POST['parent_name'], AT_BASE_HREF.'mods/_standard/forums/forum/view.php?fid='.$_POST['fid'].SEP.'pid='.$_POST['parent_id']);
141 $body .= "\n----------------------------------------------\n";
142 $body .= _AT('posted_by').": ".get_display_name($_SESSION['member_id'])."\n";
143 $body .= $_POST['body']."\n";
144 $mail->FromName = $_config['site_name'];
145 $mail->From = $_config['contact_email'];
146 $mail->Subject = _AT('thread_notify1');
150 $msg->addError('SENDING_ERROR');
156 if ($_REQUEST['subscribe']) {
157 if($_POST['parent_id'] != 0){
158 $this_id = $_POST['parent_id'];
159 $subject = $_POST['parent_name'];
161 $subject = $_POST['subject'];
163 $sql = "REPLACE INTO ".TABLE_PREFIX."forums_accessed VALUES ($this_id, $_SESSION[member_id], NOW(), 1)";
164 $result = mysql_query($sql, $db);
166 $msg->addFeedback(array('THREAD_SUBSCRIBED', $subject));
167 } else if ($_POST['parent_id'] == 0) {
168 // not subscribe and it's a new thread, mark read:
170 $sql = "REPLACE INTO ".TABLE_PREFIX."forums_accessed VALUES ($this_id, $_SESSION[member_id], NOW(), 0)";
171 $result = mysql_query($sql, $db);
174 if ($_POST['parent_id'] == 0) {
175 $sql = "UPDATE ".TABLE_PREFIX."forums SET num_topics=num_topics+1, last_post='$now' WHERE forum_id=$_POST[fid]";
176 $result = mysql_query($sql, $db);
177 $msg->addFeedback('ACTION_COMPLETED_SUCCESSFULLY');
178 $_POST['parent_id'] = $this_id;
181 $msg->addFeedback('ACTION_COMPLETED_SUCCESSFULLY');
182 header('Location: '.url_rewrite('mods/_standard/forums/forum/view.php?fid='.$fid.SEP.'pid='.$_POST['parent_id'].SEP.'page='.$_POST['page'], AT_PRETTY_URL_IS_HEADER));
187 $onload = 'document.form.subject.focus();';
189 require(AT_INCLUDE_PATH.'header.inc.php');
193 require(AT_INCLUDE_PATH.'../mods/_standard/forums/html/new_thread.inc.php');
194 require(AT_INCLUDE_PATH.'footer.inc.php');