From: <ys...@us...> - 2003-12-28 12:34:19
|
Update of /cvsroot/ngetsuite/ngetsuite/web In directory sc8-pr-cvs1:/tmp/cvs-serv10571 Added Files: dump.rhtml Log Message: experimental test file for release detection (very incomplete; has to be handled during group update & stored into db) --- NEW FILE: dump.rhtml --- <% require 'ngetsuite/db' require 'ngetsuite/utils' require 'ngetsuite/web' web = NgetSuite::Web.new(servlet_request) web.handle_args web.update_queue class Release attr_reader :files attr_writer :files attr_reader :nbexpected attr_reader :refsubject def initialize @files = Array.new @nbfiles = 0 @lastnb = 0 end def nbactual return @files.size end # Returns the index of current file/nb of files # if guessed from the subject (0 if not) def Release.filenb_from_subject(subject) subject =~ /[\[\( ](\d+)([\/]|\s?of\s?)(\d+)[\]\) ]/ return [$1.to_i, $3.to_i] end # Magic function to tell if an article belongs to a release # It adds it and return true if it does, return false if not def add?(mid,subject,author) fn = Release.filenb_from_subject(subject) # If the release is still empty, everything matches # And this file will act as a reference for the others if @files.empty? then @refsubject = subject @author = author @nbexpected = fn[1] if fn[1] @lastnb = fn[0] if fn[0] @files.push [mid,subject,fn[0]] return true end return false if author != @author return false if fn[1] != @nbexpected return false if fn[0] <= @lastnb if 1 # TODO Compare subject with the reference @files.push [mid,subject,fn[0]] return true end end def rlsmap return "" if !@nbexpected map = '_' * @nbexpected @files.each { |file| map[file[2]-1] = '#' if file[2] > 0 and file[2] <= map.size } return map end end %> <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <link href="ngetsuite.css" rel="stylesheet" type="text/css"> <title>Queue editor</title> </head> <body style="font-size: 8pt;"> <% if web.group != nil req = "select articles.mid, DATE_FORMAT(`time`, '%e/%c %H:%i'), `subject`, `size`,`from`, nfos.mid from `articles` LEFT JOIN `nfos` USING (`mid`) where articles.group = '#{web.group._fullname}' " if web.filter != nil req += " and LOWER(`subject`) LIKE '%#{web.filter.downcase}%' " end req += "ORDER BY `subject`;" # req += " order by `time` desc limit #{web.offset},#{web.articles_by_page} " puts req sth = NgetSuite::Db.dbh.execute req rls = Release.new sth.fetch do |row| if rls.add?(row[0],row[2],row[4]) == false then # New release! Dump the footer for the current one %> <center><b><%= rls.nbactual.to_s+"/"+rls.nbexpected.to_s %> file(s), <code>[<%= rls.rlsmap %>]</code></b></center><hr> <% # And make another rls = Release.new rls.add?(row[0],row[2],row[4]) end %> <b><%= row[1] %></b> <%= (row[5]) ? "<a target=\"_blank\" href=\"nfoviewer.rhtml?mid=#{WEBrick::HTTPUtils.escape(row[0])}\">#{row[2]}</a>" : row[2] %> <br /> <% end sth.finish end %> </body> </html> <% NgetSuite::Db.dbh.disconnect %> |