View difference between Paste ID: 3NX2Bugm and VXeqmSU9
SHOW: | | - or go back to the newest paste.
1
# news.tcl
2
# 
3
# Script qui display des news depuis une base de données, juste les nouvelles news
4
5
## infos de connexion a la base
6
set mysqlnewsv2(host)	"127.0.0.1"
7
set mysqlnewsv2(user)	"BDD-USER"
8
set mysqlnewsv2(pass)	"BDD-PASS"
9
set mysqlnewsv2(db)		"news"
10
set mysqlnewsv2(table)	"newsv2"
11
12-
setudef chan newsv2
12+
# for this version, you need to do this in mysql:
13
# ALTER TABLE newsv2 ADD posted ENUM(0,1) NOT NULL DEFAULT 0
14
15
setudef flag newsv2
16
package require mysqltcl 
17
18
proc newsv2:dbcheck {} {
19
	global mysqlnewsv2
20
	if {[info exists mysqlnewsv2(connect)]} {
21
		if {[mysqlping $mysqlnewsv2(connect)]} { return 1 }
22
	}
23
	set mysqlnewsv2(connec) [mysqlconnect -user $mysqlnewsv2(user) -password $mysqlnewsv2(pass) -host $mysqlnewsv2(host)]
24
	if  {[catch {mysqluse $mysqlnewsv2(connec) $mysqlnewsv2(db)}]} {
25
		return 0
26
	}
27
}
28
29
bind time - "* * * * *" newsv2:display
30
proc newsv2:display { min hour day month year } { 
31-
	if  { newsv2:dbcheck == 0 } { return 0 }
31+
32
33
	if  { $mysqlnewsv2(lock) == 1 } { return 0 }
34
	if  { [newsv2:dbcheck] == 0 } { return 0 }
35
36
	# on met un lock pour etre sur que cet proc sera finie avant le lancement de la suivante
37-
	set sql "SELECT id_unique, source, subsource, titre, url, date, count(id) as nbsites FROM $mysqlnewsv2(table) WHERE id_unique > $mysqlnewsv2(lastsaid) GROUP BY id_unique ORDER by date ASC"
37+
38
39
	# cherche les differences a afficher depuis la derniere fois
40
	set sql "SELECT id_unique, source, subsource, titre, url, date, count(id) as nbsites FROM $mysqlnewsv2(table) WHERE posted = '0' GROUP BY id_unique ORDER by date ASC"
41
	set result [mysqlquery $mysqlnewsv2(connec) $sql]
42
	while {[set row [mysqlnext $result]] != ""} {
43
		set mysaidv2		[lindex $row 0]
44
		set newssource		[lindex $row 1]
45
		set newssubsource		[lindex $row 2]
46
		set newstext		[lindex $row 3]
47-
		if { $mysqlnewsv2(lastsaid) < $mysaidv2 } {
47+
48-
			set mysqlnewsv2(lastsaid) $mysaidv2
48+
49
50
		if { "$newssubsource" != "" } {
51
			set newssource		"$newssource - $newssubsource"
52
		}
53
54
		foreach chan [channels] {
55
			if {![channel get $chan newsv2]} { continue }
56
			putquick "PRIVMSG $chan :\[$newssource\] $newstext ($newsdate) \[ $newsurl \]"
57-
			putquick "PRIVMSG $mysqlnewsv2(channel) :\[$newssource\] $newstext ($newsdate) \[ $newsurl \]"
57+
58
		mysqlquery $mysqlnewsv2(connec) "UPDATE $mysqlnewsv2(table) SET posted = '1' WHERE id_unique = $mysaidv2"
59
	}
60
	mysqlendquery $result
61
62
	# a la fin, on enleve le lock
63
	set mysqlnewsv2(lock) 0
64
}
65
66-
if  { newsv2:dbcheck == 0 } {
66+
if  { [newsv2:dbcheck] == 0 } {
67
    putlog "Unable to connect to mysql server!"
68-
} else {
68+