outsider

Rework #2 of https://github.com/CrbrGit/old-ircbots/blob/mas

Jul 8th, 2018
279
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. # 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.     global mysqlnewsv2
  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 mysqlnewsv2(lock) 1
  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.         set newsurl         [lindex $row 4]
  48.         set newsdate        [lindex $row 5]
  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.         }
  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 } {
  67.     putlog "Unable to connect to mysql server!"
  68. }
Add Comment
Please, Sign In to add comment