Mercurial > hg > pnewss
annotate common.php @ 11:e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
author | Ivo Smits <Ivo@UCIS.nl> |
---|---|
date | Sat, 18 Jun 2011 15:59:11 +0200 |
parents | |
children | 7917bd536187 |
rev | line source |
---|---|
11
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
1 <?php |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
2 /* Copyright 2010 Ivo Smits <Ivo@UCIS.nl>. All rights reserved. |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
3 Redistribution and use in source and binary forms, with or without modification, are |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
4 permitted provided that the following conditions are met: |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
5 |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
6 1. Redistributions of source code must retain the above copyright notice, this list of |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
7 conditions and the following disclaimer. |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
8 |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
9 2. Redistributions in binary form must reproduce the above copyright notice, this list |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
10 of conditions and the following disclaimer in the documentation and/or other materials |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
11 provided with the distribution. |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
12 |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
13 THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
14 WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
15 FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
16 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
17 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
18 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
19 ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
20 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
21 ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
22 |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
23 The views and conclusions contained in the software and documentation are those of the |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
24 authors and should not be interpreted as representing official policies, either expressed |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
25 or implied, of Ivo Smits.*/ |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
26 |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
27 require_once './pdo.php'; |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
28 require_once './config.php'; |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
29 |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
30 function nntp_readline($socket) { |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
31 $line = fgets($socket, 512); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
32 if ($line === FALSE || $line === NULL) return $line; |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
33 $line = rtrim($line, "\r\n"); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
34 writelog('R: '.$line); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
35 return $line; |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
36 } |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
37 function nntp_writeline_data($socket, $line) { |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
38 if (strlen($line) && $line[0] == '.') $line = '.'.$line; |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
39 nntp_writeline($socket, $line); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
40 } |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
41 function nntp_writeline($socket, $line) { |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
42 writelog('W: '.$line); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
43 fwrite($socket, $line."\r\n"); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
44 } |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
45 function nntp_readlines($socket) { |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
46 $line = nntp_readline($socket); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
47 $lines = array(); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
48 while ($line != '.' && $line !== FALSE && $line !== FALSE) { |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
49 if (strlen($line) && $line[0] == '.') $line = substr($line, 1); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
50 $lines[] = $line; |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
51 $line = nntp_readline($socket); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
52 } |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
53 if ($line != '.') throw new Exception('Unexpected end of message'); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
54 return $lines; |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
55 } |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
56 |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
57 function nntp_article_store($lines, $header = array()) { |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
58 global $db; |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
59 $headers = array(); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
60 if (!count($header)) { |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
61 while (count($lines)) { |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
62 $line = array_shift($lines); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
63 if (!strlen($line)) break; |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
64 $header[] = $line; |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
65 } |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
66 } |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
67 foreach ($header as $headerid => $line) { |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
68 if (!strlen($line) || $line == '.') throw new Exception('Empty or terminating header line'); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
69 if (strpos($line, "\r") !== FALSE || strpos($line, "\n") !== FALSE || strpos($line, "\0")) throw new Exception('Invalid newline or NUL character in header line'); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
70 $parts = explode(': ', $line, 2); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
71 $headername = strtoupper($parts[0]); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
72 switch ($headername) { |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
73 case 'PATH': case 'FROM': case 'NEWSGROUPS': case 'SUBJECT': case 'DATE': case 'MESSAGE-ID': case 'SENDER': |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
74 if (isset($headers[$headername])) throw new Exception('Duplicate header: '.$headername); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
75 $headers[strtoupper($parts[0])] = $parts[1]; |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
76 unset($header[$headerid]); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
77 break; |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
78 case 'ORGANIZATION': case 'LINES': |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
79 case 'MIME-VERSION': case 'CONTENT-TYPE': case 'CONTENT-TRANSFER-ENCODING': case 'USER-AGENT': |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
80 case 'REFERENCES': case 'REPLY-TO': case 'SENDER': case 'FOLLOWUP-TO': case 'IN-REPLY-TO': |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
81 case 'EXPIRES': case 'CONTROL': case 'DISTRIBUTION': case 'KEYWORDS': case 'SUMMARY': |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
82 break; |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
83 case 'NNTP-POSTING-HOST': case 'X-TRACE': case 'XREF': case 'X-COMPLAINTS-TO': |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
84 case 'NNTP-POSTING-DATE': |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
85 unset($header[$headerid]); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
86 $line = NULL; |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
87 break; |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
88 default: |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
89 writelog("Received unknown header $headername"); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
90 } |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
91 } |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
92 foreach ($lines as $line) { |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
93 if ($line == '.') throw new Exception('Terminating body line'); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
94 if (strpos($line, "\r") !== FALSE || strpos($line, "\n") !== FALSE || strpos($line, "\0")) throw new Exception('Invalid newline or NUL character in header line'); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
95 } |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
96 if (!isset($headers['NEWSGROUPS'])) throw new Exception('Missing required Newsgroups: header'); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
97 $newsgroups = array(); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
98 foreach (explode(',', $headers['NEWSGROUPS']) as $groupname) { |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
99 $group = $db->evalRowAssoc('SELECT * FROM `groups` WHERE `name` = ?', $groupname); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
100 if ($group === FALSE) continue; |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
101 $newsgroups[] = $group['id']; |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
102 } |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
103 if (!count($newsgroups)) throw new Exception('No known newsgroups listed'); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
104 if (!isset($headers['MESSAGE-ID'])) $headers['MESSAGE-ID'] = '<'.md5(time().rand()).'@pNewss.Core.UCIS.nl>'; |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
105 $messageid = $headers['MESSAGE-ID']; |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
106 if (strlen($messageid) < 3 || strlen($messageid) > 250 || $messageid[0] != '<' || strpos($messageid, '>') !== strlen($messageid) - 1) throw new Exception('Bad Message-ID'); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
107 $messageid = substr($messageid, 1, -1); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
108 $article = $db->evalRowAssoc('SELECT * FROM `messages` WHERE `messageid` = ?', $messageid); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
109 if ($article !== FALSE) throw new Exception('Duplicate'); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
110 $headers['PATH'] = 'pNewss.Core.UCIS.nl'.(isset($headers['PATH'])?'!'.$headers['PATH']:''); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
111 foreach (array('Path', 'From', 'Newsgroups', 'Subject', 'Date', 'Message-ID', 'Sender') as $headername) { |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
112 if (isset($headers[strtoupper($headername)])) $header[] = $headername.': '.$headers[strtoupper($headername)]; |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
113 } |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
114 $id = $db->insert('INSERT INTO `messages` (`messageid`, `header`, `body`) VALUES (?, ?, ?)', array($messageid, implode("\r\n", $header), implode("\r\n", $lines))); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
115 foreach ($newsgroups as $groupid) $db->insert('INSERT INTO `groupmessages` (`group`, `message`) VALUES (?, ?)', array($groupid, $id)); |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
116 return $messageid; |
e0807e0b1a67
Added common.php, updated server synchronization to continue after a connection failure
Ivo Smits <Ivo@UCIS.nl>
parents:
diff
changeset
|
117 } |