Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # news.tcl
- #
- # Script qui display des news depuis une base de données, juste les nouvelles news
- ## infos de connexion a la base
- set mysqlnewsv2(host) "127.0.0.1"
- set mysqlnewsv2(user) "BDD-USER"
- set mysqlnewsv2(pass) "BDD-PASS"
- set mysqlnewsv2(db) "news"
- set mysqlnewsv2(table) "newsv2"
- # for this version, you need to do this in mysql:
- # ALTER TABLE newsv2 ADD posted ENUM(0,1) NOT NULL DEFAULT 0
- setudef flag newsv2
- package require mysqltcl
- proc newsv2:dbcheck {} {
- global mysqlnewsv2
- if {[info exists mysqlnewsv2(connect)]} {
- if {[mysqlping $mysqlnewsv2(connect)]} { return 1 }
- }
- set mysqlnewsv2(connec) [mysqlconnect -user $mysqlnewsv2(user) -password $mysqlnewsv2(pass) -host $mysqlnewsv2(host)]
- if {[catch {mysqluse $mysqlnewsv2(connec) $mysqlnewsv2(db)}]} {
- return 0
- }
- }
- bind time - "* * * * *" newsv2:display
- proc newsv2:display { min hour day month year } {
- global mysqlnewsv2
- if { $mysqlnewsv2(lock) == 1 } { return 0 }
- if { [newsv2:dbcheck] == 0 } { return 0 }
- # on met un lock pour etre sur que cet proc sera finie avant le lancement de la suivante
- set mysqlnewsv2(lock) 1
- # cherche les differences a afficher depuis la derniere fois
- 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"
- set result [mysqlquery $mysqlnewsv2(connec) $sql]
- while {[set row [mysqlnext $result]] != ""} {
- set mysaidv2 [lindex $row 0]
- set newssource [lindex $row 1]
- set newssubsource [lindex $row 2]
- set newstext [lindex $row 3]
- set newsurl [lindex $row 4]
- set newsdate [lindex $row 5]
- if { "$newssubsource" != "" } {
- set newssource "$newssource - $newssubsource"
- }
- foreach chan [channels] {
- if {![channel get $chan newsv2]} { continue }
- putquick "PRIVMSG $chan :\[$newssource\] $newstext ($newsdate) \[ $newsurl \]"
- }
- mysqlquery $mysqlnewsv2(connec) "UPDATE $mysqlnewsv2(table) SET posted = '1' WHERE id_unique = $mysaidv2"
- }
- mysqlendquery $result
- # a la fin, on enleve le lock
- set mysqlnewsv2(lock) 0
- }
- if { [newsv2:dbcheck] == 0 } {
- putlog "Unable to connect to mysql server!"
- }
Add Comment
Please, Sign In to add comment