xref: /web-php/mailing-lists.php (revision f0035890)
1<?php
2$_SERVER['BASE_PAGE'] = 'mailing-lists.php';
3include_once __DIR__ . '/include/prepend.inc';
4include_once __DIR__ . '/include/posttohost.inc';
5include_once __DIR__ . '/include/email-validation.inc';
6
7$SIDEBAR_DATA = '
8<h3>Would like to unsubscribe yourself?</h3>
9
10<p>
11 If you have trouble getting off from any of our mailing lists, or
12 would like to unsubscribe from a mailing list not listed here, we
13 have more information for you on <a href="/unsub.php">the
14 unsubscription page</a>.
15</p>
16
17<h3>Other PHP related mailing lists</h3>
18
19<p>
20 Find the <a href="http://pear.php.net/support/lists.php">PEAR
21 lists</a>, the <a href="http://pecl.php.net/support.php">PECL
22 lists</a>, and the <a href="http://gtk.php.net/resources.php">PHP-GTK
23 lists</a> on their own pages.
24</p>
25
26<a id="local"></a>
27<h3>Local Mailing Lists and Newsgroups</h3>
28
29<ul class="toc">
30 <li><a href="http://groups.google.com/group/dk.edb.internet.webdesign.serverside.php/topics">Danish Newsgroup</a></li>
31 <li><a href="http://groups.google.com/group/fr.comp.lang.php/topics">French Newsgroup</a></li>
32 <li><a href="http://lists.phpbar.de/mailman/listinfo">German Mailing List</a></li>
33 <li><a href="http://groups.google.com/group/de.comp.lang.php.misc/topics">German Newsgroup</a> (also other topics under de.comp.lang.php)</li>
34 <li><a href="http://groups.yahoo.com/group/php_greek/">Greek Mailing List</a></li>
35 <li><a href="http://weblabor.hu/levlistak">Hungarian Mailing List</a></li>
36 <li><a href="http://www.domeus.it/circles/php">Italian Mailing List (at PHPItalia)</a></li>
37 <li><a href="http://ml.php.gr.jp/">The Japanese PHP User Group\'s Mailing lists</a></li>
38 <li><a href="http://br.groups.yahoo.com/group/php-pt/">Portuguese Mailing List</a></li>
39</ul>
40';
41
42site_header("Mailing Lists", ["current" => "help"]);
43
44// Some mailing list is selected for [un]subscription
45if (isset($_POST['action'])) {
46
47    // No error found yet
48    $error = "";
49
50    // Check email address
51    if (empty($_POST['email']) || $_POST['email'] == 'user@example.com' ||
52        $_POST['email'] == 'fake@from.net' || !is_emailable_address($_POST['email'])) {
53        $error = "You forgot to specify an email address to be added to the list, or specified an invalid address." .
54                 "<br>Please go back and try again.";
55    }
56
57    // Check if any mailing list was selected
58    elseif (empty($_POST['maillist'])) {
59        $error = "You need to select at least one mailing list to subscribe to." .
60                 "<br>Please go back and try again.";
61    }
62
63    // Seems to be a valid email address
64    else {
65
66        // Decide on request mode, email address part and IP address
67        $request = strtolower($_POST['action']);
68        if ($request != "subscribe" && $request != "unsubscribe") {
69            $request = "subscribe";
70        }
71        $remote_addr = i2c_realip();
72
73        // Get in contact with main server to [un]subscribe the user
74        $result = posttohost(
75            "https://main.php.net/entry/subscribe.php",
76            [
77                "request" => $request,
78                "email" => $_POST['email'],
79                "maillist" => $_POST['maillist'],
80                "remoteip" => $remote_addr,
81                "referer" => $MYSITE . "mailing-lists.php",
82            ],
83        );
84
85        // Provide error if unable to [un]subscribe
86        if ($result) {
87            $error = "We were unable to subscribe you due to some technical problems.<br>" .
88                     "Please try again later.";
89        }
90    }
91
92    // Give error information or success report
93    if (!empty($error)) {
94        echo "<p class=\"formerror\">$error</p>";
95    } else {
96?>
97<p>
98 A request has been entered into the mailing list processing queue. You
99 should receive an email at <?php echo clean($_POST['email']); ?> shortly describing
100 how to complete your request.
101</p>
102<?php
103    }
104    site_footer();
105    exit;
106}
107
108// No form submitted
109?>
110<h1>Mailing Lists</h1>
111
112<p>
113 There are many PHP-related mailing lists available on our server.
114 Most of them are archived, and all of them are available as newsgroups
115 on our <a href="news://news.php.net">news server</a>. You can search
116 some mailing lists right from this website from <a href="/search.php">the
117 search page</a> or by using the search input box selecting the
118 appropriate option on the top-right of every page.
119</p>
120<p>
121 There is an experimental web interface for the news server at
122 <a href="http://news.php.net/">http://news.php.net/</a>, and
123 there are also other archives provided by
124 <a href="http://marc.info/">Marc</a>.
125</p>
126
127<h2>Twitter</h2>
128<p>
129 The PHP team maintains an official PHP.net account on twitter,
130 <a href="https://twitter.com/official_php">@official_php</a>, for those
131 interested in following news and other announcements from the PHP project.
132</p>
133
134<h2>Mailing List Posting guidelines</h2>
135
136<p>
137 When posting to mailing lists or newsgroups, please keep the following in mind:
138</p>
139
140<ul>
141 <li>
142  Use a valid email address. Every new poster's email address
143  is checked for validity through confirmation.
144 </li>
145 <li>
146  Send plain ASCII messages, no HTML-formatted emails please.
147 </li>
148 <li>
149  Turn on word wrapping so your entire message doesn't show up on
150  a single line.
151 </li>
152 <li>
153  Be sure to click <strong>Reply-All</strong> to reply to list. Clicking
154  <strong>Reply</strong> will email the author of the message privately.
155 </li>
156 <li>
157  No attachments please, just post a URL if you want someone to
158  look at something.
159 </li>
160 <li>
161  Don't GPG/PGP sign your messages. If you want people to be able
162  to send you encrypted email, stick your key-locator in your signature
163 </li>
164 <li>
165  Don't hijack other peoples' threads. To post on a new topic, start
166  a new message, don't reply and just change the subject.
167 </li>
168 <li>
169  Check the archives before posting a question, chances are it has
170  already been asked and answered a few times.
171 </li>
172 <li>
173  When asking a question, don't just tell us, &quot;it doesn't work&quot;.
174  Tell us what you are trying to accomplish, a <strong>short</strong> code
175  snippet showing how you tried to solve it, what you expected to get and
176  what you got instead.
177 </li>
178</ul>
179<p>
180 And make sure you have read our
181 <a href="https://github.com/php/php-src/blob/master/docs/mailinglist-rules.md">Mailinglist Rules</a>.
182</p>
183<?php
184
185  // array of lists (list, name, short desc., moderated, archive, digest, newsgroup)
186  $general_mailing_lists = [
187
188      'General mailing lists for PHP users',
189      [
190          'php-announce', 'Announcements',
191          'Announcements of new PHP releases are sent to this very low-volume list',
192          true, false, false, "php.announce",
193      ],
194      [
195          'php-general', 'General user list',
196          'This is a high volume list for general PHP support; ask PHP questions here',
197          false, true, true, "php.general",
198      ],
199      [
200          'php-windows', 'Windows PHP users list',
201          'Using PHP on Microsoft Windows',
202          false, true, true, "php.windows",
203      ],
204
205      'Subject specific lists for PHP users',
206      [
207          'php-install', 'Installation issues and problems',
208          'How to install PHP with particular configurations and servers',
209          false, true, true, "php.install",
210      ],
211      [
212          'php-db', 'Databases and PHP',
213          'This list is for the discussion of PHP database topics',
214          false, true, true, "php.db",
215      ],
216      [
217          'php-i18n', 'Unicode and Internationalization',
218          'Unicode support, Internationalization (i18n) and localization (l10n) issues and features',
219          false, true, true, "php.i18n",
220      ],
221      [
222          'php-evangelism', 'PHP evangelism mailing list',
223          'A list for people interested in promoting PHP and learning good reasons to support PHP in the enterprise',
224          true, true, true, "php.evangelism",
225      ],
226      [
227          'soap', 'PHP SOAP list',
228          'List for the SOAP developers',
229          false, false, false, 'php.soap',
230      ],
231      'Non-English language mailing lists',
232      [
233          'php-es', 'Spanish PHP Mailing list',
234          'List for Spanish speaking people interested in PHP',
235          false, false, false, 'php.general.es',
236      ],
237
238  ];
239
240  // array of lists (list, name, short desc., moderated, archive, digest, newsgroup)
241  $internals_mailing_lists = [
242
243      'PHP and Zend Engine internals lists',
244      [
245          'internals', 'Internals list',
246          'A medium volume list for those who want to help out with the development of PHP',
247          false, 'php-internals', true, "php.internals",
248      ],
249      [
250          'internals-win', 'Windows Internals list',
251          'A low volume list for those who want to help out with the development of PHP on Windows',
252          false, false, true, "php.internals.win",
253      ],
254      [
255          'php-cvs', 'Git commit list',
256          'All commits to internals (php-src) and the Zend Engine are posted to this list automatically',
257          true, true, false, "php.cvs",
258      ],
259      [
260          'git-pulls', 'Git pull requests',
261          'Pull requests from Github',
262          false, false, false, "php.git-pulls",
263      ],
264      [
265          'php-qa', 'Quality Assurance list',
266          'List for the members of the PHP-QA Team',
267          false, true, false, "php.qa",
268      ],
269      [
270          'php-bugs', 'General bugs',
271          'General bug activity are posted here',
272          false, false, false, "php.bugs",
273      ],
274      [
275          'standards', 'PHP Standardization and interoperability list',
276          'Development of language standards',
277          false, false, false, "php.standards",
278      ],
279
280      'PHP internal website mailing lists',
281      [
282          'php-webmaster', 'PHP php.net internal infrastructure discussion',
283          'List for discussing and maintaining the php.net web infrastructure.<br>
284       For general PHP support questions, see "General Mailing Lists" or the <a href="/support.php">support page</a>',
285          false, false, false, "php.webmaster",
286      ],
287
288      'PHP documentation mailing lists',
289      [
290          'phpdoc', 'Documentation discussion',
291          'List for discussing the PHP documentation',
292          false, true, false, "php.doc",
293      ],
294      [
295          'doc-cvs', 'Documentation changes and commits',
296          'Changes to the documentation are posted here',
297          true, "php-doc-cvs", false, "php.doc.cvs",
298      ],
299      [
300          'doc-bugs', 'Documentation bugs',
301          'Documentation bug activity (translations, sources, and build system) are posted here',
302          true, 'php-doc-bugs', false, "php.doc.bugs",
303      ],
304  ];
305
306// Print out a table for a given list array
307function output_lists_table($mailing_lists): void
308{
309    echo '<table cellpadding="5" border="0" class="standard mailing-lists">', "\n";
310    foreach ($mailing_lists as $listinfo) {
311        if (!is_array($listinfo)) {
312            echo "<tr><th>{$listinfo}</th><th>Moderated</th><th>Archive</th>" .
313                 "<th>Newsgroup</th><th>Normal</th><th>Digest</th></tr>\n";
314        } else {
315            echo '<tr align="center">';
316            echo '<td align="left"><strong>' . $listinfo[1] . '</strong> <small>&lt;<a href="mailto:' . $listinfo[0] . '@lists.php.net">' . $listinfo[0] . '@lists.php.net</a>&gt;</small><br><small>' . $listinfo[2] . '</small></td>';
317            echo '<td>' . ($listinfo[3] ? 'yes' : 'no') . '</td>';
318
319            // Let the list name defined with a string, if the
320            // list is archived under a different name then php.net
321            // uses for it (for backward compatibilty for example)
322            if ($listinfo[4] !== false) {
323                $larchive = ($listinfo[4] === true ? $listinfo[0] : $listinfo[4]);
324            } else { $larchive = false; }
325            echo '<td>' . ($larchive ? "<a href=\"http://marc.info/?l={$larchive}\">yes</a>" : 'n/a') . '</td>';
326            echo '<td>' . ($listinfo[6] ? "<a href=\"news://news.php.net/{$listinfo[6]}\">yes</a> <a href=\"http://news.php.net/group.php?group={$listinfo[6]}\">http</a>" : 'n/a') . '</td>';
327            echo '<td><input name="maillist" type="radio" value="' . $listinfo[0] . '"></td>';
328            echo '<td>' . ($listinfo[5] ? '<input name="maillist" type="radio" value="' . $listinfo[0] . '-digest">' : 'n/a') . '</td>';
329            echo "</tr>\n";
330        }
331    }
332    echo "</table>\n";
333}
334
335?>
336
337<form method="post" action="/mailing-lists.php">
338
339<h2 id="general">General Mailing Lists</h2>
340
341<?php output_lists_table($general_mailing_lists); ?>
342
343<h2 id="internals">Internals Mailing Lists</h2>
344
345<?php output_lists_table($internals_mailing_lists); ?>
346
347<p class="center">
348 <strong>Email:</strong>
349 <input type="text" name="email" size="40" value="user@example.com">
350 <input type="submit" name="action" value="Subscribe">
351 <input type="submit" name="action" value="Unsubscribe">
352</p>
353
354</form>
355
356<p>
357 You will be sent a confirmation mail at the address you wish to
358 be subscribed or unsubscribed, and only added to the list after
359 following the directions in that mail.
360</p>
361
362<p>
363 <strong>Warning:</strong> The PHP users mailing list gets close to 1500-2000
364 messages per month currently. Do the math. That translates to about 60
365 messages per day. If your mailbox can't handle this sort of traffic you
366 might want to consider subscribing to the digest list instead (two messages
367 per day), using the news server, or reading the mailing list using the
368 archives.
369</p>
370
371<h2>Subscribe via Email</h2>
372
373<p>
374 If you experience trouble subscribing via the form above, you may also
375 subscribe by sending an email to the list server.
376 To subscribe to any mailing list, send an email to
377 <code><em>listname</em>+subscribe@lists.php.net</code>
378 (substituting the name of the list for <code><em>listname</em></code>
379 &mdash; for example, <code>php-general+subscribe@lists.php.net</code>).
380</p>
381
382<h2>Mailing list options</h2>
383
384<p>
385 All of the mailing lists hosted at <a
386 href="http://lists.php.net/">lists.php.net</a> are managed using the <a
387 href="http://mlmmj.org/">mlmmj</a> mailing list software.
388 There are a variety of commands you can use to modify your subscription.
389 Either send a message to <code>php-whatever+help@lists.php.net</code> (as in,
390 <code>php-general+help@lists.php.net</code>).</a>
391</p>
392
393<?php site_footer(); ?>
394