[Collab-qa-commits] r1527 - wnpp
Sebastian Pipping
sping-guest at alioth.debian.org
Wed Jul 22 16:41:08 UTC 2009
Author: sping-guest
Date: 2009-07-22 16:41:07 +0000 (Wed, 22 Jul 2009)
New Revision: 1527
Added:
wnpp/REPOSITORY_HAS_MOVED.txt
Removed:
wnpp/COPYING
wnpp/config_inc.php5.dist
wnpp/cron_shared.php5
wnpp/cron_sync_list.php5
wnpp/cron_sync_popcon.php5
wnpp/images/
wnpp/index.php5
wnpp/news.php5
wnpp/php.ini
wnpp/popcon/
wnpp/soap_test.php5
wnpp/tables/
Log:
Move wnpp-debian-net code to Git
Deleted: wnpp/COPYING
===================================================================
--- wnpp/COPYING 2009-07-20 15:33:38 UTC (rev 1526)
+++ wnpp/COPYING 2009-07-22 16:41:07 UTC (rev 1527)
@@ -1,340 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
Added: wnpp/REPOSITORY_HAS_MOVED.txt
===================================================================
--- wnpp/REPOSITORY_HAS_MOVED.txt (rev 0)
+++ wnpp/REPOSITORY_HAS_MOVED.txt 2009-07-22 16:41:07 UTC (rev 1527)
@@ -0,0 +1,4 @@
+This project has moved on to Git.
+
+You can now find it over here:
+http://git.goodpoint.de/?p=wnpp-debian-net.git
Deleted: wnpp/config_inc.php5.dist
===================================================================
--- wnpp/config_inc.php5.dist 2009-07-20 15:33:38 UTC (rev 1526)
+++ wnpp/config_inc.php5.dist 2009-07-22 16:41:07 UTC (rev 1527)
@@ -1,13 +0,0 @@
-<?php
-
-$SERVER = 'localhost';
-$DATABASE = 'database';
-$USERNAME = 'user';
-$PASSWORD = 'password';
-
-$WNPP_TABLE = 'debian_wnpp';
-$POPCON_TABLE = 'debian_popcon';
-$LOG_INDEX_TABLE = 'debian_log_index';
-$LOG_MODS_TABLE = 'debian_log_mods';
-
-?>
Deleted: wnpp/cron_shared.php5
===================================================================
--- wnpp/cron_shared.php5 2009-07-20 15:33:38 UTC (rev 1526)
+++ wnpp/cron_shared.php5 2009-07-22 16:41:07 UTC (rev 1527)
@@ -1,48 +0,0 @@
-<?php
-
-function open_page() {
- global $ENABLE_REFRESH_HEADER;
- global $REFRESH_INTERVAL;
-
- echo "<html>";
- if ($ENABLE_REFRESH_HEADER) {
- echo "<head>";
- echo "<meta http-equiv=\"Refresh\" content=\"" . $REFRESH_INTERVAL . "; url=\">";
- echo "</head>";
- }
- echo "<body>";
- echo "<pre>\n";
-}
-
-function close_page() {
- echo "\nDONE.\n";
-
- echo "</pre>";
- echo "</body>";
- echo "</html>\n";
-}
-
-function check_run_allowed() {
- global $ENABLE_GAP_CHECK;
- global $LAST_RUN_FILENAME;
- global $MINIMUM_RUN_GAP;
-
- if (!$ENABLE_GAP_CHECK) {
- return TRUE;
- }
-
- echo "CHECK TIME OF LAST RUN\n";
- $atime = @fileatime($LAST_RUN_FILENAME);
- if ($atime) {
- $seconds_since_last_run = (time() - $atime);
- if ($seconds_since_last_run < $MINIMUM_RUN_GAP) {
- echo " GAP TOO SMALL (come back in " . ($MINIMUM_RUN_GAP - $seconds_since_last_run) . " seconds)\n";
- return FALSE;
- }
- }
-
- touch($LAST_RUN_FILENAME);
- return TRUE;
-}
-
-?>
Deleted: wnpp/cron_sync_list.php5
===================================================================
--- wnpp/cron_sync_list.php5 2009-07-20 15:33:38 UTC (rev 1526)
+++ wnpp/cron_sync_list.php5 2009-07-22 16:41:07 UTC (rev 1527)
@@ -1,280 +0,0 @@
-<?php
-/**
- * Debian WNPP related PHP/MySQL Scripts
- *
- * Copyright (C) 2008 Sebastian Pipping
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * Sebastian Pipping, webmaster at hartwork.org
- */
-
-include("config_inc.php5");
-include("cron_shared.php5");
-
-$LAST_RUN_FILENAME = "__last_sync_list_run";
-$MINIMUM_RUN_GAP = 55;
-$ENABLE_GAP_CHECK = TRUE;
-
-$ENABLE_REFRESH_HEADER = FALSE;
-$REFRESH_INTERVAL = 60;
-$MAX_SOAP_QUERIES = 201;
-$TROUBLE_BLACKLIST = array(429035, 451077, 461925);
-
-
-$done_soap_queries = 0;
-
-ob_implicit_flush(TRUE);
-ob_end_flush();
-
-function cleanup() {
- global $link;
-
- // Disconnect
- echo "LOCAL DISCONNECT\n";
- mysql_close($link);
-
- close_page();
-}
-
-open_page();
-
-/*
-echo "BACK IN A FEW MINUTES\n";
-exit(0);
-*/
-
-if (!check_run_allowed()) {
- close_page();
- exit(0);
-}
-
-// Connect to database
-echo "LOCAL CONNECT\n";
-$link = mysql_connect($SERVER, $USERNAME, $PASSWORD);
-mysql_select_db($DATABASE);
-
-// Get all related bug numbers
-echo "REMOTE LIST\n";
-$PACKAGE = 'wnpp';
-try {
- $done_soap_queries++;
- $client = new SoapClient(NULL,
- array('location' => "http://bugs.debian.org/cgi-bin/soap.cgi",
- 'uri' => "Debbugs/SOAP",
- 'proxy_host' => "http://bugs.debian.org"));
-
- $remote_idents = $client->__soapCall("get_bugs", array('package', $PACKAGE, 'status', 'open'));
-} catch (Exception $e) {
- cleanup();
- exit(0);
-}
-echo " " . count($remote_idents) . " entries in remote database, " . count($TROUBLE_BLACKLIST) . " blacklisted\n";
-
-// Detect SQL injections
-foreach ($remote_idents as $i) {
- if (!preg_match("/^\\d+$/", $i)) {
- echo "INSECURE '$i'\n";
- cleanup();
- exit(0);
- }
-}
-
-// Get all idents from database
-echo "LOCAL LIST\n";
-$result = mysql_query("SELECT ident FROM $WNPP_TABLE");
-$count = mysql_num_rows($result);
-$local_idents = array();
-for ($i = 0; $i < $count; $i++) {
- $entry = mysql_fetch_row($result);
- $ident = $entry[0];
- array_push($local_idents, $ident);
-}
-echo " " . count($local_idents) . " entries in local database\n";
-
-// Diff
-$local_only = array_diff($local_idents, $remote_idents);
-$count_local_only = count($local_only);
-$remote_only = array_diff(array_diff($remote_idents, $local_idents), $TROUBLE_BLACKLIST);
-$count_remote_only = count($remote_only);
-
-// Remove old bugs
-if ($count_local_only > 0) {
- echo "LOCAL REMOVE\n";
- $delete_set = implode(",", $local_only);
-
- // Log entries
- $query = "INSERT INTO $LOG_INDEX_TABLE (ident,type,project,description,event,event_stamp) "
- . "SELECT ident,type,project,description,'CLOSE',NOW() "
- . "FROM $WNPP_TABLE WHERE ident IN ($delete_set)";
- $result = mysql_query($query);
-
- // Delete entries
- echo " Removing $count_local_only entries\n";
- echo " {" . $delete_set . "}\n";
- $query = "DELETE FROM $WNPP_TABLE WHERE ident IN ($delete_set)";
- $result = mysql_query($query);
-}
-$local_only = array();
-
-
-function get_bug_soap($ident, $cur, $count, $isUpdate) {
- global $client;
- global $done_soap_queries;
- global $WNPP_TABLE;
- global $LOG_INDEX_TABLE;
- global $LOG_MODS_TABLE;
-
- echo "REMOTE QUERY [$cur/$count] " . ($isUpdate ? "UPDATE" : "ADD") . " $ident\n";
- try {
- $done_soap_queries++;
- $bugresponse = $client->__soapCall("get_status", array('bug'=>$ident));
- } catch (Exception $e) {
- echo " EXCEPTION\n";
- return;
- }
- $bugobj = $bugresponse[$ident];
-
- if (!preg_match("/^(IT[AP]|O|RF[AHP]): ([^ ]+) -- (.+)$/", $bugobj->subject, $matches)) {
- echo " FORMAT ERROR\n";
- return;
- }
-
- $mod_stamp = mysql_real_escape_string($bugobj->log_modified);
- $type = $matches[1];
- $project = mysql_real_escape_string($matches[2]);
- $description = mysql_real_escape_string($matches[3]);
- $charge_person = mysql_real_escape_string($bugobj->owner);
-
- if ($isUpdate) {
- // Get current state
- $condition = "ident = '" . mysql_real_escape_string($ident) . "'";
- $query = "SELECT *,UNIX_TIMESTAMP(open_stamp) as unix_open_stamp FROM $WNPP_TABLE WHERE $condition";
- $result = mysql_query($query);
- $count = mysql_num_rows($result);
- if ($count != 1) {
- return;
- }
- $entry = mysql_fetch_assoc($result);
-
- // Compare
- $old_mod_stamp = $entry['unix_open_stamp'];
- $old_type = $entry['type'];
- $old_project = mysql_real_escape_string($entry['project']);
- $old_description = mysql_real_escape_string($entry['description']);
- $old_charge_person = mysql_real_escape_string($entry['charge_person']);
-
- $changes = array();
- if ($mod_stamp != $old_mod_stamp) {
- array_push($changes, "mod_stamp=FROM_UNIXTIME($mod_stamp)");
- }
- $type_changed = ($type != $old_type);
- if ($type_changed) {
- array_push($changes, "type='$type'");
- echo " TYPE set from [$old_type] to [$type]\n";
- }
- if ($project != $old_project) {
- array_push($changes, "project='$project'");
- echo " PROJECT set from [$old_project] to [$project]\n";
- }
- if ($description != $old_description) {
- array_push($changes, "description='$description'");
- }
- if ($charge_person != $old_charge_person) {
- array_push($changes, "charge_person='$charge_person'");
- echo " OWNER set from [" . htmlspecialchars($old_charge_person)
- . "] to [" . htmlspecialchars($charge_person) . "]\n";
- }
-
- // Update state
-/*
- if (true) { // TODO Remove once filled, originator won't change
- $open_person = mysql_real_escape_string($bugobj->originator);
- array_push($changes, "open_person='$open_person'");
- }
-*/
- array_push($changes, "cron_stamp=NOW()");
- $updates = implode(", ", $changes);
- $query = "UPDATE $WNPP_TABLE SET $updates WHERE $condition";
- $result = mysql_query($query);
-
- if ($type_changed) {
- // Log entry
- $query = "INSERT INTO $LOG_INDEX_TABLE (ident,type,project,description,event,event_stamp) "
- . "SELECT ident,type,project,description,'MOD',FROM_UNIXTIME($mod_stamp) FROM $WNPP_TABLE WHERE "
- . "ident = '$ident'";
- $result = mysql_query($query);
-
- // Log details
- $query = "INSERT INTO $LOG_MODS_TABLE (log_id,before_type,after_type) "
- . "VALUES "
- . "(LAST_INSERT_ID(),'$old_type','$type')";
- $result = mysql_query($query);
- }
- } else {
- // Add
- $open_person = mysql_real_escape_string($bugobj->originator);
- $open_stamp = mysql_real_escape_string($bugobj->date);
- echo " [$ident][$type][$project][$description]\n";
-
- // Bug data
- $query = "INSERT INTO $WNPP_TABLE (ident,open_person,open_stamp,mod_stamp,type,project,description,charge_person) "
- . "VALUES "
- . "($ident,'$open_person',FROM_UNIXTIME(${open_stamp}),FROM_UNIXTIME(${mod_stamp}),'$type',"
- . "'$project','$description','$charge_person')";
- $result = mysql_query($query);
-
- // Log entry
- $query = "INSERT INTO $LOG_INDEX_TABLE (ident,type,project,description,event,event_stamp) "
- . "SELECT ident,type,project,description,'OPEN',open_stamp FROM $WNPP_TABLE WHERE "
- . "ident = '$ident'";
- $result = mysql_query($query);
-
- echo " ADDED\n";
- }
-}
-
-// Add new bugs
-if ($count_remote_only > 0) {
- echo "LOCAL ADD\n";
- echo " Adding $count_remote_only entries\n";
- $entries_to_grab = min($MAX_SOAP_QUERIES - $done_soap_queries, $count_remote_only);
- for ($i = 0; $i < $entries_to_grab; $i++) {
- $ident = array_pop($remote_only);
- get_bug_soap($ident, $i + 1, $entries_to_grab, FALSE);
- }
-}
-
-// Update existing bugs
-echo "LOCAL UPDATE\n";
-$entries_to_update = $MAX_SOAP_QUERIES - $done_soap_queries;
-$query = "SELECT ident FROM $WNPP_TABLE ORDER BY cron_stamp ASC LIMIT $entries_to_update";
-$result = mysql_query($query);
-$entries_to_update = mysql_num_rows($result);
-
-if ($entries_to_update > 0) {
- echo " Checking " . $entries_to_update . " entries for updates\n";
-
- for ($i = 0; $i < $entries_to_update; $i++) {
- $entry = mysql_fetch_row($result);
- $ident = $entry[0];
- get_bug_soap($ident, $i + 1, $entries_to_update, TRUE);
- }
-}
-
-cleanup();
-exit(0);
-
-?>
Deleted: wnpp/cron_sync_popcon.php5
===================================================================
--- wnpp/cron_sync_popcon.php5 2009-07-20 15:33:38 UTC (rev 1526)
+++ wnpp/cron_sync_popcon.php5 2009-07-22 16:41:07 UTC (rev 1527)
@@ -1,149 +0,0 @@
-<?php
-/**
- * Debian WNPP related PHP/MySQL Scripts
- *
- * Copyright (C) 2008 Sebastian Pipping
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * Sebastian Pipping, webmaster at hartwork.org
- */
-
-include("config_inc.php5");
-include("cron_shared.php5");
-
-
-$LAST_RUN_FILENAME = "__last_sync_popcon_run";
-$MINIMUM_RUN_GAP = 60 * 60 * 12; // 12 hours
-$ENABLE_GAP_CHECK = TRUE;
-
-$KEEP_FILES = 4;
-$POPCON_DIR = "popcon";
-
-
-ob_implicit_flush(TRUE);
-ob_end_flush();
-
-function cleanup() {
- global $link;
-
- // Disconnect
- echo "LOCAL DISCONNECT\n";
- mysql_close($link);
-
- close_page();
-}
-
-
-function process($remote_url, $local_file_prefix) {
- global $POPCON_DIR;
- global $POPCON_TABLE;
- global $KEEP_FILES;
-
- $local_filename = "${POPCON_DIR}/${local_file_prefix}_" . date("Ymd_His"). ".gz";
-
-
- // Download
- echo "REMOTE READ\n";
- $online_file = @file_get_contents($remote_url);
- if (empty($online_file)) {
- echo " ERROR\n";
- cleanup();
- exit(0);
- }
- echo " SUCCESS\n";
-
- // Remove old files
- $old_files = glob("${POPCON_DIR}/${local_file_prefix}_????????_??????.gz");
- $count_old_files = count($old_files);
- $rem_files = max(0, $count_old_files - $KEEP_FILES);
- if ($rem_files > 0) {
- echo "LOCAL DELETE\n";
- for ($i = 1; $i <= $rem_files; $i++) {
- $file_to_delete = $old_files[$i];
- echo " [$i/$rem_files] $file_to_delete\n";
- unlink($file_to_delete);
- }
- }
-
- // Write to file
- echo "LOCAL WRITE\n";
- $FILE = @fopen($local_filename, "w");
- if ($FILE) {
- $written_bytes = @fwrite($FILE, $online_file);
- @fclose($FILE);
- echo " SUCCESS\n";
- } else {
- echo " ERROR\n";
- }
-
- // Reading local file
- echo "LOCAL READ\n";
- $GZ_FILE = gzopen($local_filename, "rb");
- $matches = array();
- if ($GZ_FILE) {
- for (;;) {
- $line = gzgets($GZ_FILE);
- if (!$line) {
- if (!gzeof($GZ_FILE)) {
- echo " ERROR\n";
- }
- break;
- }
-
- if (!preg_match('/^\\d+\s+(\S+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)[^\r\n]*[\r\n]+$/', $line, $matches)) {
- continue;
- }
-
- $package = mysql_real_escape_string($matches[1]);
- $inst = mysql_real_escape_string($matches[2]);
- $vote = mysql_real_escape_string($matches[3]);
- $old = mysql_real_escape_string($matches[4]);
- $recent = mysql_real_escape_string($matches[5]);
- $nofiles = mysql_real_escape_string($matches[6]);
-
-// echo " [$package][$inst][$vote][$old][$recent][$nofiles]\n";
- $query = "INSERT INTO $POPCON_TABLE (package,inst,vote,old,recent,nofiles) VALUES "
- . "('$package',$inst,$vote,$old,$recent,$nofiles) ON DUPLICATE KEY UPDATE "
- . "inst=$inst,vote=$vote,old=$old,recent=$recent,nofiles=$nofiles";
- $result = mysql_query($query);
- }
- gzclose($GZ_FILE);
- }
-}
-
-
-open_page();
-
-if (!check_run_allowed()) {
- close_page();
- exit(0);
-}
-
-// Ensure directory presence
- at mkdir($POPCON_DIR, 0750);
-
-// Connect to database
-echo "LOCAL CONNECT\n";
-$link = mysql_connect($SERVER, $USERNAME, $PASSWORD);
-mysql_select_db($DATABASE);
-
-process('http://popcon.debian.org/source/by_inst.gz', 'source_by_inst_');
-process('http://popcon.debian.org/by_inst.gz', 'binary_by_inst_');
-
-
-cleanup();
-
-?>
Deleted: wnpp/index.php5
===================================================================
--- wnpp/index.php5 2009-07-20 15:33:38 UTC (rev 1526)
+++ wnpp/index.php5 2009-07-22 16:41:07 UTC (rev 1527)
@@ -1,697 +0,0 @@
-<?php
-/**
- * Debian WNPP related PHP/MySQL Scripts
- *
- * Copyright (C) 2008 Sebastian Pipping
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * Sebastian Pipping, webmaster at hartwork.org
- */
-
-// MySQL >=4.1.x required
-
-include("config_inc.php5");
-
-$TITLE = "Debian Packages that Need Lovin'";
-$MAX_PROJECT_LEN = 20;
-$MAX_DESCR_LEN = 60;
-
-
-// Get order settings
-function other_direction_lower($dir) {
- return ($dir == "ASC") ? "desc" : "asc";
-}
-
-function to_order_col($user_col) {
- switch ($user_col) {
- case "dust": return "mod_stamp";
- case "age": return "open_stamp";
- case "users": return "vote";
- case "installs": return "inst";
- case "owner": return "charge_person";
- case "reporter": return "open_person";
- default: return $user_col;
- }
-}
-
-function get_sort_part_for_column($user_col) {
- global $order_col;
- global $order_dir;
-
- switch ($user_col) {
- case "age": // FALLTRHOUGH
- case "dust":
- return "sort=$user_col;" . (($order_col == to_order_col($user_col))
- ? strtolower($order_dir)
- : "asc");
- default:
- return "sort=$user_col;" . (($order_col == to_order_col($user_col))
- ? other_direction_lower($order_dir)
- : "asc");
- }
-}
-
-if (empty($_GET['sort'])) {
- $_GET['sort'] = "project";
-}
-$matches = array();
-if (!preg_match("/^(dust|age|type|project|users|installs|owner|reporter)(?:;((?:a|de)sc))?$/", $_GET['sort'], $matches)) {
- $order_col = 'project';
- $order_dir = 'ASC';
-} else {
- $order_col = to_order_col($matches[1]);
- $order_dir = ($matches[2] == "") ? "ASC" : strtoupper($matches[2]);
-
- // Age must be inverted, proper column name
- switch ($order_col) {
- case "open_stamp": // FALLTROUGH
- case "mod_stamp": // FALLTROUGH
- $order_dir = ($order_dir == "ASC") ? "DESC" : "ASC";
- break;
- }
-}
-$sort_part = "sort=$order_col;" . strtolower($order_dir);
-
-
-
-// Get owner settings
-$with_owner = FALSE;
-$without_owner = FALSE;
-
-if (isset($_GET['owner'])) {
- foreach($_GET['owner'] as $owner) {
- switch ($owner) {
- case "yes": $with_owner = TRUE; break;
- case "no": $without_owner = TRUE; break;
- }
- }
-}
-
-$owners = array();
-if ($with_owner) { array_push($owners, "yes"); }
-if ($without_owner) { array_push($owners, "no"); }
-
-if (empty($owners)) {
- $owner_match = '1';
- $owner_uri_part = '';
-
- $with_owner = TRUE;
- $without_owner = TRUE;
-} else {
- if ($with_owner && $without_owner) {
- $owner_match = '1';
- $owner_uri_part = '';
- } else {
- $OWNER_KEY = to_order_col('owner');
- if ($with_owner) {
- $owner_match = "(($OWNER_KEY IS NOT NULL) AND ($OWNER_KEY != ''))";
- $owner_uri_part = 'owner%5B%5D=yes&';
- } else {
- $owner_match = "(($OWNER_KEY IS NULL) OR ($OWNER_KEY = ''))";
- $owner_uri_part = 'owner%5B%5D=no&';
- }
- }
-}
-
-
-
-// Get type settings
-$show_ita = FALSE;
-$show_itp = FALSE;
-$show_o = FALSE;
-$show_rfa = FALSE;
-$show_rfh = FALSE;
-$show_rfp = FALSE;
-
-if (isset($_GET['type'])) {
- foreach($_GET['type'] as $type) {
- switch ($type) {
- case "ITA": $show_ita = TRUE; break;
- case "ITP": $show_itp = TRUE; break;
- case "O": $show_o = TRUE; break;
- case "RFA": $show_rfa = TRUE; break;
- case "RFH": $show_rfh = TRUE; break;
- case "RFP": $show_rfp = TRUE; break;
- }
- }
-}
-
-$types = array();
-if ($show_ita) { array_push($types, "ITA"); }
-if ($show_itp) { array_push($types, "ITP"); }
-if ($show_o ) { array_push($types, "O" ); }
-if ($show_rfa) { array_push($types, "RFA"); }
-if ($show_rfh) { array_push($types, "RFH"); }
-if ($show_rfp) { array_push($types, "RFP"); }
-
-$DEFAULT_SHOW_ITA = FALSE;
-$DEFAULT_SHOW_ITP = FALSE;
-$DEFAULT_SHOW_O = TRUE;
-$DEFAULT_SHOW_RFA = TRUE;
-$DEFAULT_SHOW_RFH = TRUE;
-$DEFAULT_SHOW_RFP = TRUE;
-
-if (empty($types)) {
- $type_match = 'type NOT IN (\'ita\',\'itp\')';
- $type_uri_part = '';
-
- $show_ita = $DEFAULT_SHOW_ITA;
- $show_itp = $DEFAULT_SHOW_ITP;
- $show_o = $DEFAULT_SHOW_O;
- $show_rfa = $DEFAULT_SHOW_RFA;
- $show_rfh = $DEFAULT_SHOW_RFH;
- $show_rfp = $DEFAULT_SHOW_RFP;
-} else {
- if (($show_ita == $DEFAULT_SHOW_ITA)
- && ($show_itp == $DEFAULT_SHOW_ITP)
- && ($show_o == $DEFAULT_SHOW_O)
- && ($show_rfa == $DEFAULT_SHOW_RFA)
- && ($show_rfh == $DEFAULT_SHOW_RFH)
- && ($show_rfp == $DEFAULT_SHOW_RFP)) {
- $type_uri_part = '';
- } else {
- $type_uri_part = "type%5B%5D=" . implode("&type%5B%5D=", $types) . "&";
- }
-
- if (count($types) == 6) { // XXX
- $type_match = '1';
- } else {
- $type_match = "type IN ('" . implode("','", $types) . "')";
- }
-}
-
-
-
-// Get col settings
-$show_dust = FALSE;
-$show_age = FALSE;
-$show_type = FALSE;
-$show_description = FALSE;
-$show_users = FALSE;
-$show_installs = FALSE;
-$show_owner = FALSE;
-$show_reporter = FALSE;
-
-if (isset($_GET['col'])) {
- foreach($_GET['col'] as $col) {
- switch ($col) {
- case "dust": $show_dust = TRUE; break;
- case "age": $show_age = TRUE; break;
- case "type": $show_type = TRUE; break;
- case "description": $show_description = TRUE; break;
- case "users": $show_users = TRUE; break;
- case "installs": $show_installs = TRUE; break;
- case "owner": $show_owner = TRUE; break;
- case "reporter": $show_reporter = TRUE; break;
- }
- }
-}
-
-$cols = array();
-if ($show_dust) { array_push($cols, "dust"); }
-if ($show_age) { array_push($cols, "age"); }
-if ($show_type) { array_push($cols, "type"); }
-if ($show_description) { array_push($cols, "description"); }
-if ($show_users) { array_push($cols, "users"); }
-if ($show_installs) { array_push($cols, "installs"); }
-if ($show_owner) { array_push($cols, "owner"); }
-if ($show_reporter) { array_push($cols, "reporter"); }
-
-
-$DEFAULT_SHOW_DUST = TRUE;
-$DEFAULT_SHOW_AGE = FALSE;
-$DEFAULT_SHOW_TYPE = TRUE;
-$DEFAULT_SHOW_DESCRIPTION = TRUE;
-$DEFAULT_SHOW_USERS = FALSE;
-$DEFAULT_SHOW_INSTALLS = TRUE;
-$DEFAULT_SHOW_OWNER = FALSE;
-$DEFAULT_SHOW_REPORTER = FALSE;
-
-if (empty($cols)) {
- $col_uri_part = '';
-
- $show_dust = $DEFAULT_SHOW_DUST;
- $show_age = $DEFAULT_SHOW_AGE;
- $show_type = $DEFAULT_SHOW_TYPE;
- $show_description = $DEFAULT_SHOW_DESCRIPTION;
- $show_users = $DEFAULT_SHOW_USERS;
- $show_installs = $DEFAULT_SHOW_INSTALLS;
- $show_owner = $DEFAULT_SHOW_OWNER;
- $show_reporter = $DEFAULT_SHOW_REPORTER;
-} else {
- if (($show_dust == $DEFAULT_SHOW_DUST)
- && ($show_age == $DEFAULT_SHOW_AGE)
- && ($show_type == $DEFAULT_SHOW_TYPE)
- && ($show_description == $DEFAULT_SHOW_DESCRIPTION)
- && ($show_users == $DEFAULT_SHOW_USERS)
- && ($show_installs == $DEFAULT_SHOW_INSTALLS)
- && ($show_owner == $DEFAULT_SHOW_OWNER)
- && ($show_reporter == $DEFAULT_SHOW_REPORTER)) {
- $col_uri_part = '';
- } else {
- $col_uri_part = "col%5B%5D=" . implode("&col%5B%5D=", $cols) . "&";
- }
-}
-
-
-
-// Magic quotes
-// http://de3.php.net/manual/en/security.magicquotes.php#59438
-if (get_magic_quotes_gpc()) {
- echo "Magic quotes is borking the request data. php.ini missing?";
- exit(1);
-}
-
-// Page header
-echo "<html>\n";
-echo "<head>\n";
-echo "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\">\n";
-echo "<title>$TITLE</title>\n";
-
-// Colors selected with help from the Color schemes generator 2
-// http://wellstyled.com/tools/colorscheme2/index-en.html
-
-// derived from blue orange green red
-$COLORS = array('#FFCCFF', '#FFFFCC', '#CCFFFF', '#FFCCCC');
-
-echo "<style>\n";
-echo " * { font-family: 'Bitstream Vera Sans', 'Verdana', Sans-Serif; }\n";
-echo " table.data_table { border:1px solid #C0C0C0; background-color:#C0C0C0; }\n";
-echo " table.form_table { border:2px solid #C0C0C0; background-color:#F8F8F8; }\n";
-echo " th { background-color:#F8F8F8; }\n";
-echo " td, input, select, body { font-size: 10.5pt; }\n";
-echo " td.ITA { background-color: #FFFFFF; }\n";
-echo " td.ITP { background-color: #FFFFFF; }\n";
-echo " td.O { background-color: $COLORS[3]; }\n";
-echo " td.RFA { background-color: $COLORS[1]; }\n";
-echo " td.RFH { background-color: $COLORS[0]; }\n";
-echo " td.RFP { background-color: $COLORS[2]; }\n";
-echo "</style>\n";
-
-echo "</head>\n";
-echo "<body style=\"margin:0;\">\n";
-
-echo "<table width=\"100%\" bgcolor=\"#C0C0C0\" cellspacing=\"0\" cellpadding=\"0\">\n";
-echo "<tr>\n";
-echo " <td align=\"left\">\n";
-echo " <table cellspacing=\"0\" cellpadding=\"0\">\n";
-echo " <tr>\n";
-echo " <td valign=\"center\" style=\"padding:1 2 1 4;\"><img src=\"images/feed-icon.png\" width=\"20\" height=\"20\"></td>\n";
-echo " <td valign=\"center\" style=\"margin:0;padding:0;\">\n";
-echo " <form action=\"news.php5\" method=\"GET\" style=\"margin:0;padding:2;\">\n";
-echo " <select name=\"data\" size=\"1\" style=\"background-color:#C0C0C0;\">\n";
-echo " <option value=\"all\">All Changes</option>\n";
-echo " <option value=\"good_news\">Good News</option>\n";
-echo " <option value=\"bad_news\">Bad News</option>\n";
-echo " <option value=\"help_existing\" selected>Help Existing Packages</option>\n";
-echo " <option value=\"new_packages\">New Packages</option>\n";
-echo " </select> <select name=\"title_format\" size=\"1\" style=\"background-color:#C0C0C0;\">\n";
-echo " <option value=\"0\" selected>Default Title Format (0)</option>\n";
-echo " <option value=\"1\">Alternative Title Format (1)</option>\n";
-echo " </select> <input type=\"submit\" value=\"Feed\">\n";
-echo " </form>\n";
-echo " </td>\n";
-echo " </tr>\n";
-echo " </table>\n";
-echo " </td>\n";
-echo " <td align=\"right\">\n";
-echo " <table cellspacing=\"0\" cellpadding=\"0\">\n";
-echo " <tr>\n";
-echo " <td valign=\"center\" style=\"padding:1 2 1 2;\"><img src=\"images/valid-rss-20.png\" width=\"57\" height=\"20\"></td>\n";
-echo " <td valign=\"center\" style=\"margin:0;padding:0;\">\n";
-echo " <form action=\"http://feedvalidator.org/check.cgi\" method=\"GET\" style=\"margin:0;padding:2;\">\n";
-echo " <input type=\"hidden\" name=\"url\" value=\"http://debian.binera.de/wnpp/news.php5?data=all&amp;title_format=0\">\n";
-echo " <input type=\"submit\" value=\"Validate\">\n";
-echo " </form>\n";
-echo " </td>\n";
-echo " </tr>\n";
-echo " </table>\n";
-echo " </td>\n";
-echo "</tr>\n";
-echo "<tr>\n";
-echo " <td bgcolor=\"#000000\" colspan=\"2\" style=\"font-size:1px\"> </td>\n";
-echo "</tr>\n";
-echo "</table>\n";
-echo "<br>\n";
-
-
-
-
-
-
-echo "<table width=\"100%\">\n";
-echo "<tr>\n";
-echo " <td align=\"center\">\n";
-echo " <h1>$TITLE</h1>\n";
-echo " <form action=\"\" method=\"get\">\n";
-echo " <table cellspacing=\"1\" class=\"form_table\">\n";
-echo " <tr>\n";
-echo " <td>\n";
-echo " <table>\n";
-echo " <tr>\n";
-echo " <td valign=\"top\">\n";
-echo " <select multiple size=\"8\" name=\"type[]\">\n";
-echo " <option " . ($show_ita ? "selected " : "") . "value=\"ITA\">ITA </option>\n";
-echo " <option " . ($show_itp ? "selected " : "") . "value=\"ITP\">ITP </option>\n";
-echo " <option " . ($show_o ? "selected " : "") . "value=\"O\">O </option>\n";
-echo " <option " . ($show_rfa ? "selected " : "") . "value=\"RFA\">RFA </option>\n";
-echo " <option " . ($show_rfh ? "selected " : "") . "value=\"RFH\">RFH </option>\n";
-echo " <option " . ($show_rfp ? "selected " : "") . "value=\"RFP\">RFP </option>\n";
-echo " </select>\n";
-echo " </td>\n";
-echo " <td valign=\"top\">\n";
-echo " <table height=\"100%\">\n";
-echo " <tr>\n";
-echo " <td>\n";
-echo " <table>\n";
-echo " <tr>\n";
-echo " <td>Project:</td>\n";
-if (!empty($_GET['project'])) {
- $project_filter = htmlspecialchars($_GET['project']);
- $project_uri_part = "project=" . urlencode($_GET['project']) . "&";
-} else {
- $project_filter = "";
- $project_uri_part = "";
-}
-echo " <td><input type=\"text\" size=\"24\" name=\"project\" value=\"$project_filter\"></td>\n";
-echo " </tr>\n";
-echo " <tr>\n";
-echo " <td>Description:</td>\n";
-if (!empty($_GET['description'])) {
- $description_filter = htmlspecialchars($_GET['description']);
- $description_uri_part = "description=" . urlencode($_GET['description']) . "&";
-} else {
- $description_filter = "";
- $description_uri_part = "";
-}
-echo " <td><input type=\"text\" size=\"24\" name=\"description\" value=\"$description_filter\"></td>\n";
-echo " </tr>\n";
-echo " <tr>\n";
-echo " <td>Owner:</td>\n";
-echo " <td><input type=\"checkbox\" name=\"owner[]\" value=\"yes\"" . ($with_owner ? "checked " : "") . ">With"
- . " <input type=\"checkbox\" name=\"owner[]\" value=\"no\"" . ($without_owner ? "checked " : "") . ">Without</td>\n";
-echo " </tr>\n";
-echo " </table>\n";
-echo " </td>\n";
-echo " </tr>\n";
-echo " <tr>\n";
-echo " <td valign=\"bottom\">\n";
-echo " <table width=\"100%\">\n";
-echo " <tr>\n";
-echo " <td align=\"left\"><a href=\"cron_sync_list.php5\" target=\"_blank\">Force BTS sync</a></td>\n";
-echo " <td align=\"right\"><input type=\"submit\" value=\"Query\"></td>\n";
-echo " </tr>\n";
-echo " </table>\n";
-echo " </td>\n";
-echo " </tr>\n";
-echo " </table>\n";
-echo " </td>\n";
-echo " <td valign=\"top\">\n";
-echo " <select multiple size=\"8\" name=\"col[]\">\n";
-echo " <option " . ($show_dust ? "selected " : "") . "value=\"dust\">Dust</option>\n";
-echo " <option " . ($show_age ? "selected " : "") . "value=\"age\">Age</option>\n";
-echo " <option " . ($show_type ? "selected " : "") . "value=\"type\">Type</option>\n";
-echo " <option " . ($show_description ? "selected " : "") . "value=\"description\">Description</option>\n";
-echo " <option " . ($show_users ? "selected " : "") . "value=\"users\">Users</option>\n";
-echo " <option " . ($show_installs ? "selected " : "") . "value=\"installs\">Installs</option>\n";
-echo " <option " . ($show_owner ? "selected " : "") . "value=\"owner\">Owner</option>\n";
-echo " <option " . ($show_reporter ? "selected " : "") . "value=\"reporter\">Reporter</option>\n";
-echo " </select>\n";
-echo " </td>\n";
-echo " </tr>\n";
-echo " </table>\n";
-echo " </td>\n";
-echo " </tr>\n";
-echo " </table>\n";
-if (!empty($_GET['sort'])) {
-echo " <input type=\"hidden\" name=\"sort\" value=\"" . htmlspecialchars($_GET['sort']) . "\">\n";
-}
-echo " </form>\n";
-
-
-// Connect
-$link = mysql_connect($SERVER, $USERNAME, $PASSWORD);
-mysql_select_db($DATABASE);
-
-function make_like_chain($user_col, $words, $empty_value, $op) {
- if (empty($words)) {
- return $empty_value;
- }
-
- return "($user_col LIKE '%" . implode("%') $op ($user_col LIKE '%", $words) . "%')";
-}
-
-function make_condition($get_var, $user_col) {
- if (!isset($_GET[$get_var])) {
- return "1";
- }
-
- if ($user_col == "") {
- $user_col = $get_var;
- }
-
- $words = explode(" ", mysql_real_escape_string($_GET[$get_var]));
- if (empty($words)) {
- return "1";
- }
-
- $positive = array();
- $negative = array();
- $matches = array();
-
- foreach($words as $i) {
- if (!preg_match("/^([+-]?)(.+)$/", $i, $matches)) {
- continue;
- }
-
- $signum = $matches[1];
- // Fix for SQL
- $word = str_replace(array('_', '%'), array('\_','\%'), $matches[2]);
- if ($signum == "-") {
- array_push($negative, $word);
- } else {
- array_push($positive, $word);
- }
- }
-
- $cond_positive = make_like_chain($user_col, $positive, "1", "AND");
- $cond_negative = make_like_chain($user_col, $negative, "0", "OR");
-
- return "(($cond_positive) AND NOT ($cond_negative))";
-}
-
-$project_match = make_condition("project", "project");
-$description_match = make_condition("description", "description");
-
-
-
-// Get list
-$condition = "($type_match AND $project_match AND $description_match AND $owner_match)";
-
-// What columns do we need
-$query_cols = array();
-array_push($query_cols, 'GROUP_CONCAT(ident ORDER BY ident ASC SEPARATOR \',\') AS ident_list');
-if ($show_dust) { array_push($query_cols, 'UNIX_TIMESTAMP(' . to_order_col('dust') . ') AS unix_mod_stamp'); }
-if ($show_age) { array_push($query_cols, 'UNIX_TIMESTAMP(' . to_order_col('age') . ') AS unix_open_stamp'); }
-array_push($query_cols, 'type');
-array_push($query_cols, 'project');
-if ($show_description) { array_push($query_cols, to_order_col('description')); }
-if ($show_users) { array_push($query_cols, to_order_col('users')); }
-if ($show_installs) { array_push($query_cols, to_order_col('installs')); }
-if ($show_owner) { array_push($query_cols, to_order_col('owner')); }
-if ($show_reporter) { array_push($query_cols, to_order_col('reporter')); }
-
-$col_part = implode(',', $query_cols);
-$query = "SELECT $col_part "
- . "FROM $WNPP_TABLE " . (($show_users || $show_installs) ? "LEFT JOIN $POPCON_TABLE ON project = package " : ' ')
- . "WHERE $condition GROUP BY project ORDER BY ${order_col} ${order_dir}";
-$result = mysql_query($query);
-// echo "[$query]<br>\n"; // XXX
-$count = $result ? mysql_num_rows($result) : 0;
-
-
-
-// Legend
-echo "ITA/ITP = <i>Intent to <u>p</u>ackage/<u>a</u>dopt</i> ..... O = <i><u>O</u>rphaned</i> ..... RFA/RFH/RFP = <i>Request for <u>a</u>doption/<u>h</u>elp/<u>p</u>ackaging</i><br>\n";
-echo "<br>\n";
-
-echo " </td>\n";
-echo "</tr>\n";
-echo "</table>\n";
-echo "<table width=\"100%\">\n";
-echo "<tr>\n";
-echo " <td align=\"center\">\n";
-
-// Table header
-// NOTE: Order should match that appearing in the form to give identical URLs where possible
-$uri_part_but_sort = "?" . $type_uri_part . $project_uri_part . $description_uri_part . $owner_uri_part . $col_uri_part;
-echo "<table cellpadding=\"4\" cellspacing=\"1\" class=\"data_table\">\n";
-echo "<tr>";
- echo "<th align=\"right\"> # </th>";
- if ($show_dust) {
- echo "<th> <a href=\"" . $uri_part_but_sort . get_sort_part_for_column('dust') . "\" title=\"Number of days without changes\">Dust</a> </th>";
- }
- if ($show_age) {
- echo "<th> <a href=\"" . $uri_part_but_sort . get_sort_part_for_column('age') . "\" title=\"Number of days since this bug's creation\">Age</a> </th>";
- }
- if ($show_type) {
- echo "<th><a href=\"" . $uri_part_but_sort . get_sort_part_for_column('type') . "\">Type</a></th>";
- }
- echo "<th><a href=\"" . $uri_part_but_sort . get_sort_part_for_column('project') . "\">Project</a></th>";
- if ($show_description) {
- echo "<th>Description</th>";
- }
- if ($show_users) {
- echo "<th> <a href=\"" . $uri_part_but_sort . get_sort_part_for_column('users') . "\" title=\"Minimum number of people using this package on a regular basis\">Users</a> </th>";
- }
- if ($show_installs) {
- echo "<th> <a href=\"" . $uri_part_but_sort . get_sort_part_for_column('installs') . "\" title=\"Minimum number of people having this package installed\">Installs</a> </th>";
- }
- if ($show_owner) {
- echo "<th><a href=\"" . $uri_part_but_sort . get_sort_part_for_column('owner') . "\">Owner</a></th>";
- }
- if ($show_reporter) {
- echo "<th><a href=\"" . $uri_part_but_sort . get_sort_part_for_column('reporter') . "\">Reporter</a></th>";
- }
-echo "</tr>\n";
-
-/*
-// http://de3.php.net/manual/en/function.utf8-decode.php#51417
-function is_utf8($string) {
- return (preg_match('/^(?:[\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}'
- . '|[\xf0-\xf7][\x80-\xbf]{3}|[\xf8-\xfb][\x80-\xbf]{4}|'
- . '[\xfc-\xfd][\x80-\xbf]{5})*$/', $string) === 1);
-}
-*/
-
-// http://de3.php.net/manual/en/function.ucwords.php#76786
-function custom_cap($name) {
- // $name = strtolower($name);
- $name = mb_strtolower($name, "UTF-8");
- $name = join("'", array_map('ucwords', explode("'", $name)));
- $name = join("-", array_map('ucwords', explode("-", $name)));
- $name = join("Mac", array_map('ucwords', explode("Mac", $name)));
- $name = join("Mc", array_map('ucwords', explode("Mc", $name)));
- return $name;
-}
-
-/* TEST CASES
- Tyler Macdonald
- Marc-andr Lureau
- Mario Izquierdo \(mariodebian\)
- Aurlien Grme
- Chanop Silpa-anan
-*/
-
-function name_only($mail_and_name) {
- if (empty($mail_and_name)) {
- return "<i>nobody</i>";
- }
-
- $matches = array();
- if (!preg_match("/^([^@]+)\s+<[^>]+>$/", $mail_and_name, $matches)) {
- return "<i>hidden</i>";
- }
-
- $text = str_replace("\"", "", $matches[1]);
- $text = str_replace(array("\\(", "\\)"), array("(", ")"), $text);
- return htmlspecialchars(custom_cap($text));
-}
-
-function shrink($text, $maxlen) {
- return (strlen($text) > $maxlen)
- ? substr($text, 0, $maxlen - 4) . "[..]"
- : $text;
-}
-
-function null_is_zero($value) {
- return empty($value) ? 0 : $value;
-}
-
-// Table body, get single entries
-for ($i = 0; $i < $count; $i++) {
- $entry = mysql_fetch_assoc($result);
-
- echo "<tr>";
- $row = $i + 1;
- $type = $entry['type'];
- echo "<td class=\"$type\" align=\"right\"> $row </td>";
-
- if ($show_dust) {
- $dust = (int)((time() - $entry['unix_mod_stamp']) / 60 / 60 / 24);
- echo "<td class=\"$type\" align=\"right\"> $dust </td>";
- }
- if ($show_age) {
- $age = (int)((time() - $entry['unix_open_stamp']) / 60 / 60 / 24);
- echo "<td class=\"$type\" align=\"right\"> $age </td>";
- }
- if ($show_type) {
- echo "<td class=\"$type\"><nobr>$type</nobr></td>";
- }
-
- $project = shrink($entry['project'], $MAX_PROJECT_LEN);
- $ident_list = explode(',', $entry['ident_list']);
- $count_ident_list = count($ident_list);
- $url_base = 'http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=';
- $project_cell = '';
- if ($count_ident_list == 0) {
- $project_cell = '<nobr><i>ERROR</i></nobr>';
- } else if ($count_ident_list == 1) {
- $project_cell = '<nobr><a href="' . $url_base . $ident_list[0] . '">' . $project . '</a></nobr>';
- } else {
- $project_cell = "<nobr>$project ";
- for ($j = 0; $j < $count_ident_list; $j++) {
- $project_cell .= ('<a href="' . $url_base . $ident_list[$j] . '">[' . ($j + 1) . ']');
- }
- $project_cell .= '</nobr>';
- }
- echo "<td class=\"$type\">$project_cell</td>";
-
- if ($show_description) {
- $description = shrink($entry['description'], $MAX_DESCR_LEN);
- echo "<td class=\"$type\"><nobr>$description</nobr></td>";
- }
- if ($show_users) {
- $users = null_is_zero($entry['vote']);
- echo "<td class=\"$type\" align=\"right\"><nobr> $users </nobr></td>";
- }
- if ($show_installs) {
- $installs = null_is_zero($entry['inst']);
- echo "<td class=\"$type\" align=\"right\"><nobr> $installs </nobr></td>";
- }
- if ($show_owner) {
- $owner = name_only($entry['charge_person']);
- echo "<td class=\"$type\"><nobr>$owner</nobr></td>";
- }
- if ($show_reporter) {
- $reporter = name_only($entry['open_person']);
- echo "<td class=\"$type\"><nobr>$reporter</nobr></td>";
- }
- echo "</tr>\n";
-}
-
-// Page footer
-echo "</table><br>\n";
-echo " </td>\n";
-echo "</tr>\n";
-echo "</table>\n";
-echo "</body>\n";
-echo "</html>\n";
-
-// Disconnect
-mysql_close($link);
-
-?>
Deleted: wnpp/news.php5
===================================================================
--- wnpp/news.php5 2009-07-20 15:33:38 UTC (rev 1526)
+++ wnpp/news.php5 2009-07-22 16:41:07 UTC (rev 1527)
@@ -1,248 +0,0 @@
-<?php
-/**
- * Debian WNPP related PHP/MySQL Scripts
- *
- * Copyright (C) 2008 Sebastian Pipping
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * Sebastian Pipping, webmaster at hartwork.org
- */
-
-include("config_inc.php5");
-include("cron_shared.php5");
-
-$DEBUG = FALSE;
-
-function open_feed() {
- global $DEBUG;
- if ($DEBUG) {
- header("Content-type: text/plain");
- } else {
- header("Content-type: application/rss+xml");
- }
-
- echo "<?xml version=\"1.0\"?>\n";
- echo "<rss version=\"2.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n";
- echo " <channel>\n";
- echo "\n";
-}
-
-// Title style
-if (!empty($_GET['title_format'])) {
- $title_format = $_GET['title_format'];
-} else {
- $title_format = 0;
-}
-switch ($title_format) {
-case 0:
-case 1:
- break;
-
-default:
- $title_format = 0;
-}
-
-// Data set
-if (!empty($_GET['data'])) {
- $data = $_GET['data'];
-} else {
- $data = 'all';
-}
-
-switch ($data) {
-case 'new_packages':
- $CONDITION = "(event = 'CLOSE') AND (type = 'ITP')";
- $FEED_TITLE = "New Debian Packages";
- break;
-
-case 'good_news':
- $CONDITION = "(event = 'CLOSE') OR ((event IN ('MOD','OPEN')) AND (type IN ('ITA','ITP')))";
- $FEED_TITLE = "Good News on Debian Packages";
- break;
-
-case 'bad_news':
- $CONDITION = "!((event = 'CLOSE') OR ((event IN ('MOD','OPEN')) AND (type IN ('ITA','ITP'))))";
- $FEED_TITLE = "Bad News on Debian Packages";
- break;
-
-case 'help_existing':
- $CONDITION = "(event IN ('OPEN','MOD')) AND (type IN ('O','RFA','RFH'))";
- $FEED_TITLE = "Existing Debian Packages In Need For Help";
- break;
-
-case 'all': // fall through
-default:
- $data = 'all';
- $CONDITION = "1";
- $FEED_TITLE = "Debian Packaging News";
- break;
-}
-
-$DATA_QUERY = "SELECT ident,type,before_type,after_type,project,description,event,UNIX_TIMESTAMP(event_stamp) AS unix_event_stamp "
- . "FROM $LOG_INDEX_TABLE LEFT JOIN $LOG_MODS_TABLE ON $LOG_INDEX_TABLE.log_id = $LOG_MODS_TABLE.log_id "
- . "WHERE $CONDITION ORDER BY event_stamp DESC LIMIT 30";
-$MAX_QUERY = "SELECT UNIX_TIMESTAMP(MAX(event_stamp)) AS unix_event_stamp FROM $LOG_INDEX_TABLE WHERE $CONDITION";
-
-function print_feed_header($unix_content_change) {
- global $data;
- global $title_format;
- global $DEBUG;
- global $FEED_TITLE;
- $lastBuildDate = date('r', $unix_content_change);
- $self_url = "http://wnpp.debian.net/news.php5?data=$data&amp;title_format=$title_format";
-
- if (!$DEBUG) {
- echo " <title>$FEED_TITLE</title>\n";
- }
- echo " <link>$self_url</link>\n";
- echo " <atom:link href=\"$self_url\" rel=\"self\" type=\"application/rss+xml\" />\n";
- echo " <description>Debian news feed on packaging bugs</description>\n";
- echo " <language>en-us</language>\n";
- echo " <pubDate>$lastBuildDate</pubDate>\n";
- echo " <lastBuildDate>$lastBuildDate</lastBuildDate>\n";
- echo " <webMaster>webmaster at hartwork.org (Sebastian Pipping)</webMaster>\n";
- echo " <ttl>15</ttl>\n"; // because the cron runs every 30 minutes
- echo "\n";
-}
-
-function close_feed() {
- echo "\n";
- echo " </channel>\n";
- echo "</rss>\n";
-}
-
-function cleanup() {
- global $link;
-
- // Disconnect
- mysql_close($link);
-
- close_feed();
-}
-
-open_feed();
-
-// Connect to database
-$link = mysql_connect($SERVER, $USERNAME, $PASSWORD);
-mysql_select_db($DATABASE);
-
-function escape_xml($text) {
- // Extensible Markup Language (XML) 1.0 (Fourth Edition)
- // 2.4 Character Data and Markup
- // http://www.w3.org/TR/REC-xml/#syntax
- return str_replace(array('&', '<', '>', '\'', '"'),
- array('&', '<', '>', ''', '"'),
- $text);
-}
-
-function print_entry($entry) {
- global $title_format;
-
- $type = $entry['type'];
- $after_type = $entry['after_type'];
- $before_type = $entry['before_type'];
- $ident = $entry['ident'];
- $project = $entry['project'];
- $description = $entry['description'];
- $event = $entry['event'];
- $rfc822 = date("r", $entry['unix_event_stamp']);
- $guid_layout = ($entry['unix_event_stamp'] <= 1202047202 + 1200) ? 0 : 1;
-
- switch($event) {
- case 'CLOSE':
- $type_title_part = $type;
- $event_title_part = "Closed";
- break;
-
- case 'MOD': // fall through
- $type_title_part = "$before_type -> $after_type";
- $event_title_part = "Modified";
- break;
-
- case 'OPEN': // fall through
- default:
- $type_title_part = $type;
- $event_title_part = "Opened";
- break;
- }
-
- switch ($title_format) {
- case 1:
- if ($event != 'CLOSE') {
- $title = '#' . "$ident $type_title_part: $project -- $description";
- } else {
- $title = "CLOSED : $project -- $description";
- }
- break;
-
- case 0: // fall through
- default:
- $title = "$event_title_part [$type_title_part] $project -- $description";
- }
- $title = escape_xml($title);
-
- $url = 'http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=' . $ident;
- switch ($guid_layout) {
- case 1:
- $guid = 'http://wnpp.debian.net/' . $ident . '/' . $entry['unix_event_stamp'];
- break;
-
- case 0: // fall through
- default:
- $guid = 'http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=' . $ident;
- break;
-
- }
- $author = $ident . '@bugs.debian.org';
-
- echo " <item>\n";
- echo " <title>$title</title>\n";
- echo " <link>$url</link>\n";
- echo " <description>$url</description>\n";
- echo " <pubDate>$rfc822</pubDate>\n";
- echo " <guid>$guid</guid>\n";
- echo " <dc:creator>$author</dc:creator>\n";
- echo " </item>\n";
-}
-
-// Feed header
-$query = $MAX_QUERY;
-$result = mysql_query($query);
-if (!$result) {
- cleanup();
- exit(0);
-}
-$entry = mysql_fetch_assoc($result);
-$unix_content_change = $entry['unix_event_stamp'];
-print_feed_header($unix_content_change);
-
-// Feed data
-$query = $DATA_QUERY;
-// echo "[$query]\n";
-$result = mysql_query($query);
-if (!$result) {
- cleanup();
- exit(0);
-}
-$count = mysql_num_rows($result);
-for ($i = 0; $i < $count; $i++) {
- $entry = mysql_fetch_assoc($result);
- print_entry($entry);
-}
-
-cleanup();
-
-?>
Deleted: wnpp/php.ini
===================================================================
--- wnpp/php.ini 2009-07-20 15:33:38 UTC (rev 1526)
+++ wnpp/php.ini 2009-07-22 16:41:07 UTC (rev 1527)
@@ -1,3 +0,0 @@
-magic_quotes_runtime=off
-magic_quotes_gpc=off
-magic_quotes_sybase=off
Deleted: wnpp/soap_test.php5
===================================================================
--- wnpp/soap_test.php5 2009-07-20 15:33:38 UTC (rev 1526)
+++ wnpp/soap_test.php5 2009-07-22 16:41:07 UTC (rev 1527)
@@ -1,13 +0,0 @@
-<?php
-header("Content-type: text/plain;charset=utf-8");
-
-$bugnumber = 433106;
-$client = new SoapClient(NULL,
- array('location' => "http://bugs.debian.org/cgi-bin/soap.cgi",
- 'uri' => "Debbugs/SOAP",
- 'proxy_host' => "http://bugs.debian.org"));
-$response = $client->__soapCall("get_status", array('bug'=>$bugnumber));
-$obj = $response[$bugnumber];
-
-print_r($obj);
-?>
\ No newline at end of file
More information about the Collab-qa-commits
mailing list