]> mj.ucw.cz Git - pciids.git/blobdiff - scripts/importil.pl
Merge branch 'master' of /home/vorner/pciids
[pciids.git] / scripts / importil.pl
index 21da83f1325ed470c64bc442360c635c4ee04341..6a902fb02acfd5772a61b23c7e0b696b83e2c4ba 100755 (executable)
@@ -1,4 +1,23 @@
 #!/usr/bin/perl
+
+#      PciIds web database
+#      Copyright (C) 2008 Michal Vaner (vorner@ucw.cz)
+#
+#      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
+#      he 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., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
 use strict;
 use warnings;
 BEGIN {
@@ -12,8 +31,8 @@ use PciIds::Users;
 my $dbh = connectDb();
 print "Deleting all PCI devices\n";
 $dbh->prepare( "DELETE FROM locations WHERE id like 'PC/%'" )->execute();
-my $newcomment = $dbh->prepare( 'INSERT INTO history (owner, location, time, nodename, nodedescription, text) VALUES (?, ?, FROM_UNIXTIME(?), ?, ?, ?)' );
-my $mismatch = $dbh->prepare( "INSERT INTO history (location, nodename, nodedescription, seen) VALUES(?, ?, ?, '1')" );
+my $newcomment = $dbh->prepare( 'INSERT INTO history (owner, location, time, nodename, nodenote, discussion) VALUES (?, ?, FROM_UNIXTIME(?), ?, ?, ?)' );
+my $mismatch = $dbh->prepare( "INSERT INTO history (location, nodename, nodenote, seen) VALUES(?, ?, ?, '1')" );
 my $db = PciIds::DBQ::new( $dbh );
 my @toMark;
 my %ids;
@@ -46,6 +65,7 @@ sub insertId( $ ) {
 
 sub getUser( $ ) {
        my( $email ) = @_;
+       $email = "" unless defined $email;
        $email =~ s/.*<([^<>]*)>.*/$1/;
        my( $mailCheck ) = emailCheck( $email, undef );
        if( defined $mailCheck ) {
@@ -62,9 +82,12 @@ sub getUser( $ ) {
 }
 
 sub addComment( $$$$$ ) {
-       my( $email, $time, $name, $comment, $history ) = @_;
+       my( $email, $time, $name, $comment, $discussion ) = @_;
        my $user = getUser( $email );
-       $newcomment->execute( $user, $addr->get(), $time, $name, $comment, $history );
+       $name = undef if( ( defined $name ) && $name !~ /\S/ && $name ne '' );
+       $comment = undef if( ( defined $comment ) && $comment !~ /\S/ );
+       $discussion = undef if( ( defined $discussion ) && $discussion !~ /\S/ );
+       $newcomment->execute( $user, $addr->get(), $time, $name, $comment, $discussion );
        my $id = $db->last();
        $comment = "" unless defined $comment;
        $name = "" unless defined $name;
@@ -79,12 +102,13 @@ sub markAllSeen() {
 }
 
 sub setMain( $ ) {
-       $db->setMainComment( $addr->get(), shift );
+       $db->setMainHistory( $addr->get(), shift );
 }
 
 print "Importing\n";
 
 while( defined( $_ = <> ) ) {
+       chomp;
        if( my( $lid ) = /^### ([0-9a-f]+) ###$/ ) {
                %ids = ();
                @toMark = ();
@@ -100,10 +124,10 @@ while( defined( $_ = <> ) ) {
                        my $hid = addComment( $email, $time, $name, $comment, $discussion );
                } elsif ( $command eq "APPROVE" ) {
                        my( $time, $email, $name, $comment ) = @params;
-                       $comment = "" unless defined $comment;
-                       $name = "" unless defined $name;
+                       $comment = "" if( !defined $comment || $comment !~ /\S/ );
+                       $name = "" if( !defined $name || $name !~ /\S/ );
                        my $hid = $ids{"$name\t$comment"};
-                       $hid = addComment( $email, $time, $name, $comment, undef );
+                       $hid = addComment( $email, $time, $name, $comment, undef ) unless defined $hid;
                        markAllSeen();
                        setMain( $hid );
                } elsif ( $command eq "COMMENT" ) {# Comments are from admins -> they mark as seen too