File: 1.0to1.2

package info (click to toggle)
pronto 2.4.0-4
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 3,112 kB
  • ctags: 487
  • sloc: perl: 22,159; makefile: 127; sh: 34; sql: 7
file content (81 lines) | stat: -rwxr-xr-x 2,132 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#!/usr/bin/perl
use File::Copy;
require "prontolib.pl";
&read_prefs();
$conn=&open_db_conn;
print("Hi, this may take a minute depending on your db driver \nAdding the references field\n");
&add_refs;
print("Adding Filter count field\n");
&add_filtercount;
print("I'm done :)\n");
sub add_refs 
{
	if ($prefs{'DatabaseDriver'} eq "CSV") {
		&add_csv_column("$prefs{'MailDir'}/messages","ref");
	}
	if ($prefs{'DatabaseDriver'} eq "mysql" or $prefs{'DatabaseDriver'} eq "Pg") {
		if ($prefs{'DatabaseDriver'} eq "mysql") {
			$sql = "alter table messages add ref text;";
		} else {
			$sql = "alter table messages add column ref text";
		}
		$query=$conn->prepare($sql);
		$query->execute();
		
	}	
	$sql = "select id from messages";
	$query= $conn->prepare($sql);
	$query->execute();
	$count = 0;

	while (($msgid) = $query->fetchrow_array()) {
		$tmp = &filename_to_tree("$prefs{'MailDir'}/$msgid");
		open(TMP,"<$tmp");
		while (<TMP>) {
			if (/^References:\s*(.+)/i) {
				print ("Message: $msgid has ref $1 \n");
				$sql = "update messages set ref = '$1' where id = '$msgid'";
				$conn->do($sql);
				$count++
			}
		}	
		close(TMP);
	}
print $count . " messages have been updated with refs \n";
}


sub add_filtercount
{
	if ($prefs{'DatabaseDriver'} eq "mysql") {
		$sql = "alter table filters add count int";
	} elsif ($prefs{'DatabaseDriver'} eq "Pg") {
		$sql = "alter table filters add column count int";
	} elsif ($prefs{'DatabaseDriver'} eq "CSV") {
		&add_csv_column("$prefs{'MailDir'}/filters","count");
	}	
	$query = $conn->prepare($sql);
	$query->execute();
	$sql = "update filters set count = '0'";
	$conn->do($sql);
}

sub add_csv_column
{
	my ($filename, $column) = @_;
	open (FILE, $filename);
	@file = <FILE>;
	close (FILE);
	$columnlist = $file[0];
	if ($columnlist =~ m/\b$column\b/) { print "has been added already\n"; return 1; }
	if ($column eq "ref") {
		$columnlist=~ s/,score/,score,ref/i;
	} elsif ($column eq "count") {
		$columnlist=~ s/,name/,name,count/i;
	}
	$file[0] = $columnlist;
	copy($filename,$filename."_bak");
	open(FILE,">$filename");
	foreach(@file) { print FILE $_  }
	close(FILE);
}