- Publicity: Public Only All
package-procs.tcl
Definition of package procs for xolirc Integration for displaying eggdrop ( log2thml ) logs
- Location:
- packages/xolirc/tcl/package-procs.tcl
- Created:
- 2009-10-05
- Author:
- Victor Guerra <vguerra@vguerra.net>
- CVS Identification:
$Id$
Procedures in this file
Detailed information
[ hide source ] | [ make this the default ]Content File Source
ad_library { Definition of package procs for xolirc Integration for displaying eggdrop ( log2thml ) logs @author Victor Guerra (vguerra@vguerra.net) @creation-date 2009-10-05 @cvs-id $Id$ } ::xo::library require -package xowiki package-procs namespace eval ::xolirc { ::xo::PackageMgr create ::xolirc::Package \ -package_key "xolirc" \ -pretty_name "IRC Logs displayer based on Xowiki" \ -superclass ::xowiki::Package Package instproc initialize {} { my set logs_path "/usr/local/eggdrop/html/" } Package instproc query-actual-log {} { } Package instproc get-html-from-log {{-date ""}} { my instvar logs_path if {$date eq ""} { set date [clock format [clock seconds] -format "%Y%m%d"] } set content "" foreach log [lsort -dictionary [glob -nocomplain -directory $logs_path "openacs${date}*"]] { # We get the content of the div with id=mainblock that contains all the html # that we need to fill with the xowiki pages set file [open $log] set html [read $file] ; close $file regexp "<body class=\"l2hLogPage\">(.*)<\/body>" $html body set doc [dom parse -html $body] set body [$doc documentElement] set navtop [$body selectNodes "div/div/div\[@id='navtop'\]"] $navtop delete append content "[[$body selectNodes div/div\[@id='mainblock'\]] asHTML]" $doc delete } return $content } Package instproc dash-date {{date}} { return "[string range $date 0 3]-[string range $date 4 5]-[string range $date 6 7]" } Package ad_proc process-all-logs { {-overwrite 1} } { Goes through all the log files and creates the respective xowiki Page. @param overwrite In case that the page exists for the processing date, this parameter if overwrite it (1) or not (0). } { #my instvar logs_path set logs_path "/usr/local/eggdrop/html/" foreach log [glob -nocomplain -directory $logs_path "openacs*_pg1.html"] { regexp {.*openacs(\d{8})_pg1\.html} $log match date ns_log notice "working on $date" ::xolirc::Package create-page-from-log -overwrite $overwrite -date $date } } Package ad_proc create-page-from-log { {-overwrite 1} {-date ""} } { @param overwrite Indicates if the content of the page will be overwritted in case the page exists already. @param date Indicates the date of the log html files to read from. } { set package_id [apm_package_ids_from_key -mounted -package_key xolirc] ::xolirc::Package initialize \ -package_id $package_id \ -init_url 0 -actual_query "" if {$date ne ""} { regsub -all -- "-" $date {} date } else { set date [parameter::get -package_id $package_id \ -parameter "date2process" \ -default [clock format [clock seconds] -format "%Y%m%d"]] #ns_log notice "about to process $date" parameter::set_value -package_id $package_id \ -parameter "date2process" \ -value [clock format [clock seconds] -format "%Y%m%d"] } #ns_log notice "vguerra the date is $date" set text [$package_id get-html-from-log -date $date] if { $text eq "" } { ns_log Warning "xolirc: Nothing has been logged yet for the date [$package_id dash-date $date]" return "" } set page [$package_id resolve_page_name "en:$date"] if {$page eq ""} { set page [::xowiki::Page new \ -title "Conversation log in #openacs on [$package_id dash-date $date]" \ -name "en:$date" \ -package_id $package_id \ -parent_id [$package_id folder_id] \ -destroy_on_cleanup \ -text [list $text]] $page initialize_loaded_object $page save_new } elseif { $overwrite } { $page set text [list $text] $page save } set creation_date "[$package_id dash-date $date]" db_dml update_date "update acs_objects set creation_date = :creation_date where object_id = [$page set revision_id]" } }