#!/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 {
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;
sub getUser( $ ) {
my( $email ) = @_;
+ $email = "" unless defined $email;
$email =~ s/.*<([^<>]*)>.*/$1/;
my( $mailCheck ) = emailCheck( $email, undef );
if( defined $mailCheck ) {
}
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;
}
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 = ();
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