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 | + |