remove old readme
[atutor.git] / mods / _standard / forums / forum / view.php
1 <?php
2 /****************************************************************************/
3 /* ATutor                                                                                                                                       */
4 /****************************************************************************/
5 /* Copyright (c) 2002-2010                                                  */
6 /* Inclusive Design Institute                                               */
7 /* http://atutor.ca                                                                                                                     */
8 /*                                                                                                                                                      */
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 /****************************************************************************/
13
14 define('AT_INCLUDE_PATH', '../../../../include/');
15 require(AT_INCLUDE_PATH.'vitals.inc.php');
16
17 $fid = intval($_GET['fid']);
18 $_GET['reply'] = isset($_GET['reply']) ? $_GET['reply'] : '';
19
20
21 if (!isset($_GET['fid']) || !$fid) {
22         header('Location: list.php');
23         exit;
24 }
25
26 require(AT_INCLUDE_PATH.'../mods/_standard/forums/lib/forums.inc.php'); // for print_entry et al
27
28 if (!valid_forum_user($fid)) {
29         require(AT_INCLUDE_PATH.'header.inc.php');
30         $msg->printErrors('FORUM_DENIED');
31         require(AT_INCLUDE_PATH.'footer.inc.php');
32         exit;
33 }
34
35 // set default thread display order to ascending
36 if (!isset($_SESSION['thread_order']))
37 {
38         $_SESSION['thread_order'] = 'a';
39 }
40 else if (isset($_GET['order']))
41 {
42         $_SESSION['thread_order'] = $_GET['order'];
43 }
44
45 $forum_info = get_forum($fid);
46
47 $_pages[url_rewrite('mods/_standard/forums/forum/index.php?fid='.$fid)]['title']    = get_forum_name($fid);
48 $_pages[url_rewrite('mods/_standard/forums/forum/index.php?fid='.$fid)]['parent']   = 'mods/_standard/forums/forum/list.php';
49 $_pages[url_rewrite('mods/_standard/forums/forum/index.php?fid='.$fid)]['children'] = array(url_rewrite('mods/_standard/forums/forum/new_thread.php?fid='.$fid), 'search.php?search_within[]=forums');
50
51 $_pages[url_rewrite('mods/_standard/forums/forum/new_thread.php?fid='.$fid)]['title_var'] = 'new_thread';
52 $_pages[url_rewrite('mods/_standard/forums/forum/new_thread.php?fid='.$fid)]['parent']    = url_rewrite('mods/_standard/forums/forum/index.php?fid='.$fid);
53
54 $_pages['mods/_standard/forums/forum/view.php']['parent'] = url_rewrite('mods/_standard/forums/forum/index.php?fid='.$fid);
55 $_pages['search.php?search_within[]=forums']['title_var'] = 'search';
56 $_pages['search.php?search_within[]=forums']['parent']    = url_rewrite('mods/_standard/forums/forum/index.php');
57
58 if ($_REQUEST['reply']) {
59         $onload = 'document.form.subject.focus();';
60 }
61
62 $pid = intval($_GET['pid']);
63
64 $num_per_page = 10;
65 if (!$_GET['page']) {
66         $page = 1;
67 } else {
68         $page = (intval($_GET['page'])>0)?(intval($_GET['page'])):1;
69 }
70 $start = ($page-1)*$num_per_page;
71         
72 /* get the first thread first */
73 $sql    = "SELECT *, DATE_FORMAT(date, '%Y-%m-%d %H:%i:%s') AS date, UNIX_TIMESTAMP(date) AS udate FROM ".TABLE_PREFIX."forums_threads WHERE post_id=$pid AND forum_id=$fid";
74 $result = mysql_query($sql, $db);
75
76 if (!($post_row = mysql_fetch_array($result))) {
77         require(AT_INCLUDE_PATH.'header.inc.php');
78         $_pages['mods/_standard/forums/forum/view.php']['title']  = _AT('no_post');
79
80         echo _AT('no_post');
81         require(AT_INCLUDE_PATH.'footer.inc.php');
82         exit;
83 }
84
85 $_pages['mods/_standard/forums/forum/view.php']['title']  = $post_row['subject'];
86
87 require(AT_INCLUDE_PATH.'header.inc.php');
88
89 ?>
90         <a href="<?php echo htmlspecialchars($_SERVER['REQUEST_URI'], ENT_QUOTES); ?>#post" style="border: 0px;"><img src="<?php echo $_base_path; ?>images/clr.gif" height="1" width="1" border="0" alt="<?php echo _AT('reply'); ?>" /></a>
91 <?php
92         /**
93         * Jacek M.
94         * Protect data consistency
95         * Make sure the pid we are inserting is actually a thread post_id, otherwise we get dangling pointers
96         * in the case of injection
97         */
98
99         if ($_SESSION['valid_user']) {
100                 $sql2 = "INSERT INTO ".TABLE_PREFIX."forums_accessed VALUES ($pid, $_SESSION[member_id], NOW(), 0)";
101                 $result2 = mysql_query($sql2, $db);
102                 if (!$result2) {
103                         $sql2 = "UPDATE ".TABLE_PREFIX."forums_accessed SET last_accessed=NOW() WHERE post_id=$pid AND member_id=$_SESSION[member_id]";
104                         $result2 = mysql_query($sql2, $db);
105                 }
106         }
107         
108         $num_threads = $post_row['num_comments']+1;
109         $num_pages = ceil($num_threads/$num_per_page);
110         $locked = $post_row['locked'];
111         if ($locked == 1) {
112                 echo '<p><strong>'._AT('lock_no_read1').'</strong></p>';
113                 require(AT_INCLUDE_PATH.'footer.inc.php');
114                 exit;
115         }
116
117         $parent_name = $post_row['subject'];
118
119         echo '<ul class="forum-thread">';
120         print_entry($post_row);
121         $subject = $post_row['subject'];
122         if ($_GET['reply'] == $post_row['post_id']) {
123                 $saved_post = $post_row;
124         }
125         echo '
126             </ul>
127           <div class="forum-paginator" style="background-color:#F5F5F5;">&nbsp;
128           </div><br />';
129
130         $sql    = "SELECT *, DATE_FORMAT(date, '%Y-%m-%d %H-%i:%s') AS date, UNIX_TIMESTAMP(date) AS udate FROM ".TABLE_PREFIX."forums_threads WHERE parent_id=$pid AND forum_id=$fid ORDER BY date ";
131         if ($_SESSION['thread_order'] == 'a')
132                 $sql .= "ASC LIMIT $start, $num_per_page";
133         else
134                 $sql .= "DESC LIMIT $start, $num_per_page";
135         
136         $result = mysql_query($sql, $db);
137
138         if (mysql_num_rows($result) > 0)
139         {
140                 echo '<div class="forum-paginator">';
141                 echo '<div style="float:right;">';
142                 if ($_SESSION['thread_order'] == 'a')
143                         echo '<a href="'.url_rewrite($_SERVER['PHP_SELF'].'?fid='.$fid.SEP.'pid='.$pid.SEP.'page='.$page.SEP.'order=d').'">
144                           <img src="'.AT_BASE_HREF.'images/up.png" border="0" alt="">&nbsp;'._AT('recent_first').'
145                         </a>';
146                 else
147                         echo '<a href="'.url_rewrite($_SERVER['PHP_SELF'].'?fid='.$fid.SEP.'pid='.$pid.SEP.'page='.$page.SEP.'order=a').'">
148                           <img src="'.AT_BASE_HREF.'images/down.png" border="0" alt="">&nbsp;'._AT('recent_last').'
149                         </a>';
150                 
151                 echo '</div>';
152                 
153                 echo _AT('page').': ';
154                 for ($i=1; $i<=$num_pages; $i++) {
155                         if ($i == $page) {
156                                 echo '<span class="forum-paginator-active">'.$i.'</span>';
157                         } else {
158                                 echo '<a href="'.url_rewrite($_SERVER['PHP_SELF'].'?fid='.$fid.SEP.'pid='.$pid.SEP.'page='.$i.SEP.'order='.$_SESSION['thread_order']).'">'.$i.'</a>';
159                         }
160         
161                         if ($i<$num_pages){
162                                 echo ' <span class="spacer">|</span> ';
163                         }
164                 }
165                 echo '</div>';
166                 echo '<ul class="forum-thread">';
167         
168                 while ($row = mysql_fetch_assoc($result)) {
169                         print_entry($row);
170                         $subject = $row['subject'];
171                         if ($_GET['reply'] == $row['post_id']) {
172                                 $saved_post = $row;
173                         }
174                 }
175                 echo '</ul>';
176                 
177                 echo '<div  class="forum-paginator">';
178                 echo _AT('page').': ';
179                 for ($i=1; $i<=$num_pages; $i++) {
180                         if ($i == $page) {
181                                 echo '<span class="forum-paginator-active">'.$i.'</span>';
182                         } else {
183                                 echo '<a href="'.url_rewrite($_SERVER['PHP_SELF'].'?fid='.$fid.SEP.'pid='.$pid.SEP.'page='.$i.SEP.'order='.$_SESSION['thread_order']).'">'.$i.'</a>';
184                         }
185         
186                         if ($i<$num_pages){
187                                 echo ' <span class="spacer">|</span> ';
188                         }
189                 }
190                 echo '</div>';
191         }
192
193         $parent_id = $pid;
194         $body      = '';
195         if (substr($subject,0,3) != 'Re:') {
196                 $subject = 'Re: '.$subject;
197         }
198         
199         if ($_SESSION['valid_user'] && $_SESSION['enroll'] && !$locked) {
200                 $sql    = "SELECT subscribe FROM ".TABLE_PREFIX."forums_accessed WHERE post_id=$_GET[pid] AND member_id=$_SESSION[member_id]";
201                 $result = mysql_query($sql, $db);
202                 $row = mysql_fetch_assoc($result);
203                 if ($row['subscribe']) {
204                         echo '<p><a href="mods/_standard/forums/forum/subscribe.php?fid='.$fid.SEP.'pid='.$_GET['pid'].SEP.'us=1">'._AT('unsubscribe').'</a></p>';
205                         $subscribed = true;
206                 } else {
207                         echo '<p><a href="mods/_standard/forums/forum/subscribe.php?fid='.$fid.SEP.'pid='.$_GET['pid'].'">'._AT('subscribe').'</a></p>';
208                         $subscribed = false;
209                 }
210         }
211         if ($_SESSION['valid_user'] && !$_SESSION['enroll']) {
212                 echo '<p><strong>'._AT('enroll_to_post').'</strong></p>';
213         } else if ($locked == 0) {
214                 require(AT_INCLUDE_PATH.'../mods/_standard/forums/html/new_thread.inc.php');
215         } else {
216                 echo '<p><strong>'._AT('lock_no_post1').'</strong></p>';
217         }
218
219 require(AT_INCLUDE_PATH.'footer.inc.php');
220 ?>