rename classes + bugfixes
[banana.git] / thread.php
1 <?php
2 /********************************************************************************
3 * thread.php : group overview
4 * ------------
5 *
6 * This file is part of the banana distribution
7 * Copyright: See COPYING files that comes with this distribution
8 ********************************************************************************/
9
10 require_once("include/session.inc.php");
11 require_once("include/misc.inc.php");
12 require_once("include/format.inc.php");
13 require_once("include/config.inc.php");
14 require_once("include/NetNNTP.inc.php");
15 require_once("include/post.inc.php");
16 require_once("include/spool.inc.php");
17 require_once("include/password.inc.php");
18 require_once("include/profile.inc.php");
19 require_once("include/error.inc.php");
20
21 $profile=getprofile();
22 require_once("include/header.inc.php");
23
24 if (isset($_REQUEST['group'])) {
25 $group=htmlentities(strtolower($_REQUEST['group']));
26 } else {
27 $group=htmlentities(strtolower(strtok(str_replace(" ","",$_REQUEST['newsgroups']),",")));
28 }
29
30 if (isset($_REQUEST['id'])) {
31 $id=htmlentities(strtolower($_REQUEST['id']));
32 }
33
34 //$nntp = new nntp($news['server'],120,1);
35 $nntp = new nntp($news['server']);
36 if (!$nntp) error("nntpsock");
37 if ($news['user']!="anonymous") {
38 $result = $nntp->authinfo($news["user"],$news["pass"]);
39 if (!$result) error("nntpauth");
40 }
41 $spool = new BananaSpool($nntp,$group,$profile['display'],
42 $profile['lastnews']);
43 if (!$spool) error("nntpspool");
44 $max = 50;
45 if (isset($_REQUEST['first']) && ($_REQUEST['first']>sizeof($spool->overview)))
46 $_REQUEST['first']=sizeof($spool->overview);
47 $first = (isset($_REQUEST['first'])?
48 (floor($_REQUEST['first']/$max)*$max+1):1);
49 $last = (isset($_REQUEST['first'])?
50 (floor($_REQUEST['first']/$max+1)*$max):$max);
51
52 if (isset($_REQUEST['action']) && (isset($_REQUEST['type'])) &&
53 (isset($_SESSION['bananapostok'])) && ($_SESSION['bananapostok'])) {
54 switch ($_REQUEST['type']) {
55 case 'cancel':
56 $mid = array_search($id,$spool->ids);
57 $nntp->group($group);
58 $post = new BananaPost($nntp,$id);
59
60 if (checkcancel($post->headers)) {
61 $message = 'From: '.$profile['name']."\n"
62 ."Newsgroups: $group\n"
63 ."Subject: cmsg $mid\n"
64 .$news['customhdr']
65 ."Control: cancel $mid\n"
66 ."\n"
67 ."Message canceled with Banana";
68 $result = $nntp->post($message);
69 if ($result) {
70 $spool->delid($id);
71 $text = "<p class=\"normal\">"._b_('Message annulé')."</p>";
72 } else {
73 $text = "<p class=\"error\">"._b_('Impossible d\'annuler le message')."</p>";
74 }
75 } else {
76 $text="<p class=\"error\">\n\t"._b_('Vous n\'avez pas les permissions pour annuler ce message')."\n</p>";
77 }
78 break;
79 case 'new':
80 $body = preg_replace("/\n\.[ \t\r]*\n/m","\n..\n",stripslashes($_REQUEST['body']));
81 $message = 'From: '.$profile['name']."\n"
82 ."Newsgroups: ".stripslashes(str_replace(" ","",
83 $_REQUEST['newsgroups']))."\n"
84 ."Subject: ".stripslashes($_REQUEST['subject'])."\n"
85 .(isset($profile['org'])?"Organization: ".$profile['org']."\n":"")
86 .($_REQUEST['followup']!=''?'Followup-To: '
87 .stripslashes($_REQUEST['followup'])."\n":"")
88 .$news['customhdr']
89 ."\n"
90 .wrap($body,"",$news['wrap']);
91 $result = $nntp->post($message);
92 if ($result) {
93 $text="<p class=\"normal\">"._b_('Message posté')."</p>";
94 } else {
95 $text="<p class=\"error\">"._b_('Impossible de poster le message')."</p>";
96 }
97 break;
98 case 'followupok':
99 $rq=$nntp->group($group);
100 $post = new BananaPost($nntp,$id);
101 if ($post) {
102 $refs = (isset($post->headers['references'])?
103 $post->headers['references']." ":"").$post->headers['message-id'];
104 }
105
106 $body = preg_replace("/\n\.[ \t\r]*\n/m","\n..\n",stripslashes($_REQUEST['body']));
107 $message = 'From: '.$profile['name']."\n"
108 ."Newsgroups: ".stripslashes($_REQUEST['newsgroups'])."\n"
109 ."Subject: ".stripslashes($_REQUEST['subject'])."\n"
110 .(isset($profile['org'])?"Organization: ".$profile['org']."\n":"")
111 .($_REQUEST['followup']!=''?'Followup-To: '
112 .stripslashes($_REQUEST['followup'])."\n":"")
113 ."References: $refs\n"
114 .$news['customhdr']
115 .$profile['customhdr']
116 ."\n"
117 .wrap($body,"",$news['wrap']);
118 $result = $nntp->post($message);
119 if ($result) {
120 $text="<p class=\"normal\">"._b_('Message posté')."</p>";
121 } else {
122 $text="<p class=\"error\">"._b_('Impossible de poster le message')."</p>";
123 }
124 break;
125 }
126 $_SESSION['bananapostok']=false;
127 $spool = new BananaSpool($nntp,$group,$profile['display'],
128 $profile['lastnews']);
129 if (!$spool) error("nntpspool");
130 }
131
132
133 ?>
134 <h1>
135 <?php echo $group; ?>
136 </h1>
137 <?php
138 if (isset($text)) {
139 echo $text;
140 }
141 displayshortcuts();
142
143 ?>
144
145 <table class="<?php echo $css['bicol']?>" cellpadding="0" cellspacing="0" border="0">
146 <tr>
147 <th class="<?php echo $css['date']?>">
148 <?php echo _b_('Date'); ?>
149 </th>
150 <th class="<?php echo $css['subject']?>">
151 <?php echo _b_('Sujet'); ?>
152 </th>
153 <th class="<?php echo $css['from']?>">
154 <?php echo _b_('Auteur'); ?>
155 </th>
156 </tr>
157 <?php
158 $spool->disp($first,$last);
159 $nntp->quit();
160 echo "</table>";
161
162 displayshortcuts();
163
164 require_once("include/footer.inc.php");
165 ?>