added missing icons
[mspang/www.git] / newsgroup / post.php
1 <?
2 /*  Newsportal NNTP<->HTTP Gateway
3  *  Download: http://florian-amrhein.de/newsportal
4  *
5  *  Copyright (C) 2002-2004 Florian Amrhein
6  *  E-Mail: florian.amrhein@gmx.de
7  *  Web: http://florian-amrhein.de
8  *
9  *  This program is free software; you can redistribute it and/or modify
10  *  it under the terms of the GNU General Public License as published by
11  *  the Free Software Foundation; either version 2 of the License, or
12  *  (at your option) any later version.
13  *
14  *  This program is distributed in the hope that it will be useful,
15  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  *  GNU General Public License for more details.
18  *
19  *  You should have received a copy of the GNU General Public License
20  *  along with this program; if not, write to the Free Software
21  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22  */
23
24 @$newsgroups=$_REQUEST["newsgroups"];
25 @$group=$_REQUEST["group"];
26 @$type=$_REQUEST["type"];
27 @$subject=stripslashes($_REQUEST["subject"]);
28 @$name=$_REQUEST["name"];
29 @$email=$_REQUEST["email"];
30 @$body=stripslashes($_REQUEST["body"]);
31 @$abspeichern=$_REQUEST["abspeichern"];
32 @$references=$_REQUEST["references"];
33 @$id=$_REQUEST["id"];
34 if (!isset($group)) $group=$newsgroups;
35
36 include "config.inc.php";
37 include "auth.inc";
38
39 // Save name and email in cookies
40 if (($setcookies==true) && (isset($abspeichern)) && ($abspeichern=="ja")) {
41   setcookie("cookie_name",stripslashes($name),time()+(3600*24*90));
42   setcookie("cookie_email",$email,time()+(3600*24*90));
43
44 if ((isset($post_server)) && ($post_server!=""))
45   $server=$post_server;
46 if ((isset($post_port)) && ($post_port!=""))
47   $port=$post_port;
48
49  include "head.inc";
50  include $file_newsportal;
51
52
53 ?>
54 <?
55
56   // has the user write-rights on the newsgroups?
57   if((function_exists("npreg_group_has_read_access") &&
58       !npreg_group_has_read_access($group)) ||
59      (function_exists("npreg_group_is_visible") &&
60       !npreg_group_is_visible($group)) ||
61      (function_exists("npreg_group_has_write_access") &&
62       !npreg_group_has_write_access($group))) {
63     die("access denied");
64   }
65
66
67 // Load name and email from cookies
68 if ($setcookies) {
69   if ((isset($_COOKIE["cookie_name"])) && (!isset($name)))
70     $name=$_COOKIE["cookie_name"];
71   if ((isset($_COOKIE["cookie_email"])) && (!isset($email)))
72     $email=$_COOKIE["cookie_email"];
73 }
74
75 // Load name and email from the registration system, if available
76 if(function_exists("npreg_get_firstname")) {
77   $name=npreg_get_firstname();
78   $form_noname=true;
79   if(function_exists("npreg_get_lastname"))
80     $name.=" ".npreg_get_lastname();
81 }
82
83 if(function_exists("npreg_get_email")) {
84   $email=npreg_get_email();
85   $form_noemail=true;
86 }
87
88 if((!isset($references)) || ($references=="")) {
89   $references=false;
90 }
91
92 if (!isset($type)) {
93   $type="new";
94 }
95
96 if ($type=="new") {
97   $subject="";
98   $bodyzeile="";
99   $show=1;
100 }
101
102
103
104 // Is there a new article to be bost to the newsserver?
105 if ($type=="post") {
106   $show=0;
107   // error handling
108   if (trim($body)=="") {
109     $type="retry";
110     $error=$text_post["missing_message"];
111   }
112   if ((trim($email)=="") && (!isset($anonym_address))) {
113     $type="retry";
114     $error=$text_post["missing_email"];
115   }
116   if (($email) && (!validate_email(trim($email)))) {
117     $type="retry";
118     $error=$text_post["error_wrong_email"];
119   }
120   if (trim($name)=="") {
121     $type="retry";
122     $error=$text_post["missing_name"];
123   }
124   if (trim($subject)=="") {
125     $type="retry";
126     $error=$text_post["missing_subject"];
127   }
128   if ($type=="post") {
129     if (!$readonly) {
130       // post article to the newsserver
131       if($references)
132         $references_array=explode(" ",$references);
133       else
134         $references_array=false;
135       if(($email=="") && (isset($anonym_address)))
136         $nemail=$anonym_address;
137       else
138         $nemail=$email;
139       $message=message_post(quoted_printable_encode($subject),
140                  $nemail." (".quoted_printable_encode($name).")",
141                  $newsgroups,$references_array,addslashes($body));
142       // Article sent without errors, or duplicate?
143       if ((substr($message,0,3)=="240") ||
144           (substr($message,0,7)=="441 435")) {
145 ?>
146
147 <h1 class="np_post_headline"><? echo $text_post["message_posted"];?></h1>
148
149 <p><? echo $text_post["message_posted2"];?></p>
150
151 <p><a href="<? echo $file_thread.'?group='.urlencode($group).'">'.$text_post["button_back"].'</a> '
152      .$text_post["button_back2"].' '.urlencode($group) ?></p>
153 <?
154       } else {
155         // article not accepted by the newsserver
156         $type="retry";
157         $error=$text_post["error_newsserver"]."<br><pre>$message</pre>";
158       }
159     } else {
160       echo $text_post["error_readonly"];
161     }
162   }
163 }
164
165 // A reply of an other article.
166 if ($type=="reply") {
167   $message=message_read($id,0,$group);
168   $head=$message->header;
169   $body=explode("\n",$message->body[0]);
170   nntp_close($ns);
171   if ($head->name != "") {
172     $bodyzeile=$head->name;
173   } else {
174     $bodyzeile=$head->from;
175   }
176   $bodyzeile=$text_post["wrote_prefix"].$bodyzeile.
177              $text_post["wrote_suffix"]."\n\n";
178   for ($i=0; $i<=count($body)-1; $i++) {
179     if((isset($cutsignature)) && ($cutsignature==true) &&
180        ($body[$i]=='-- '))
181       break;
182     if (trim($body[$i])!="") {
183       if($body[$i][0]=='>')
184         $bodyzeile.=">".$body[$i]."\n";
185       else
186         $bodyzeile.="> ".$body[$i]."\n";
187     } else {
188       $bodyzeile.="\n";
189     }
190   }
191   $subject=$head->subject;
192   if (isset($head->followup) && ($head->followup != "")) {
193     $newsgroups=$head->followup;
194   } else {
195     $newsgroups=$head->newsgroups;
196   }
197   splitSubject($subject);
198   $subject="Re: ".$subject;
199   // Cut off old parts of a subject
200   // for example: 'foo (was: bar)' becomes 'foo'.
201   $subject=eregi_replace('(\(wa[sr]: .*\))$','',$subject);
202   $show=1;
203   $references=false;
204   if (isset($head->references[0])) {
205     for ($i=0; $i<=count($head->references)-1; $i++) {
206       $references .= $head->references[$i]." ";
207     }
208   }
209   $references .= $head->id;
210 }
211
212 if ($type=="retry") {
213   $show=1;
214   $bodyzeile=$body;
215 }
216
217 if ($show==1) {
218
219 if ($testgroup) {
220   $testnewsgroups=testgroups($newsgroups);
221 } else {
222   $testnewsgroups=$newsgroups;
223 }
224
225 if ($testnewsgroups == "") {
226   echo $text_post["followup_not_allowed"];
227   echo " ".$newsgroups;
228 } else {
229   $newsgroups=$testnewsgroups;
230
231   echo '<h1 class="np_post_headline">'.$text_post["group_head"].$newsgroups
232     .$text_post["group_tail"].'</h1>';
233
234   if (isset($error)) echo "<p>$error</p>"; ?>
235
236 <form action="<? echo $file_post?>" method="post" name="postform">
237
238 <div class="np_post_header">
239 <table>
240 <tr><td align="right"><b><? echo $text_header["subject"] ?></b></td>
241 <td><input type="text" name="subject" value="<?
242 echo htmlspecialchars($subject);?>" size="40" maxlength="80"></td></tr>
243 <tr><td align="right"><b><?=$text_post["name"]?></b></td>
244  <td align="left">
245  <?
246  if($form_noname===true) {
247    echo htmlspecialchars($name);
248  } else {
249    echo '<input type="text" name="name"';
250    if (isset($name)) echo 'value="'.
251     htmlspecialchars(stripslashes($name)).'"';
252    echo 'size="40" maxlength="40">';
253  }
254  ?>
255  </td></tr>
256  <tr><td align="right"><b><?=$text_post["email"]?></b></td>
257  <td align="left">
258  <?
259  if($form_noemail===true) {
260    echo htmlspecialchars($email);
261  } else {
262    echo '<input type="text" name="email"';
263    if (isset($email)) echo 'value="'.htmlspecialchars(stripslashes($email)).'"';
264    echo 'size="40" maxlength="40">';
265  }
266  ?>
267  </td></tr>
268 </table>
269 </div>
270
271 <div class="np_post_body">
272 <table>
273 <tr><td><b><? echo $text_post["message"];?></b><br>
274 <textarea id="postbody" name="body" rows="20" cols="79" wrap="virtual"><?
275 if ((isset($bodyzeile)) && ($post_autoquote))
276   echo htmlspecialchars($bodyzeile); ?>
277 </textarea></td></tr>
278 <tr><td>
279
280 <? if(!$post_autoquote) { ?>
281 <input type="hidden" id="hidebody" value="<?
282 if (isset($bodyzeile)) echo htmlspecialchars(stripslashes($bodyzeile)); ?>">
283
284 <script language="JavaScript">
285 <!--
286 function quoten() {
287   document.getElementById("postbody").value=document.getElementById("hidebody").value;
288   document.getElementById("hidebody").value="";
289 }
290 //-->
291 </script>
292
293
294 <input tabindex="100" type="Button" name="quote" value="<?=$text_post["quote"]?>" onclick="quoten()">
295
296 <? } ?>
297
298 <input type="submit"  value="<? echo $text_post["button_post"];?>">
299 <? if ($setcookies==true) { ?>
300 <input type="checkbox" name="abspeichern" value="ja">
301 <? echo $text_post["remember"];?>
302 <? } ?>
303 </td>
304 </tr>
305 </table>
306 </div>
307 <input type="hidden" name="type" value="post">
308 <input type="hidden" name="newsgroups" value="<?=htmlspecialchars($newsgroups); ?>">
309 <input type="hidden" name="references" value="<?=htmlentities($references); ?>">
310 <input type="hidden" name="group" value="<?=htmlspecialchars($group); ?>">
311 </form>
312
313 <? } } ?>
314
315 <? include "tail.inc"; ?>