All pastes #450382 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-04-20 20:18 UTC
rendered paste body
	proc pubm:pretime {nick uhost handle channel args} {

	    global pretimedb
		set fileinfo ""
		set predornuked "PRED"
	    if { $args == "{}" } {
		set sql "SELECT `name`, `type`, `time`, `group`, `size`, `files`, `genre`, `nuke`, `nuke_reason`, `unnuke`, `unnuke_reason` FROM `release` ORDER BY `time` DESC LIMIT 1"
		set query [mysqlsel $pretimedb $sql]
		set predornuked "PRED"
		set fileinfo ""
		mysqlmap $pretimedb {name type time group size files genre nuke nuke_reason unnuke unnuke_reason} {
		        putserv "PRIVMSG $channel :[formatpre $name $type $time $group $size $files $genre $nuke $nuke_reason $unnuke $unnuke_reason $predornuked $fileinfo]"
			}
	        } else {
	        set args  [split $args " "]
	        set or ""

	        foreach arg $args { 
	            set arg [mircstrip $arg]
	            set arg [removechar $arg \{]
	            set arg [removechar $arg \}]
				

	    if {$or == ""} {
	        set or " `name` LIKE '%$arg%'"
		} else {
	        set or "$or AND `name` LIKE '%$arg%'"
	    }
	}	
	    set sql "SELECT `name`, `type`, `time`, `group`, `size`, `files`, `genre`, `nuke`, `nuke_reason`, `unnuke`, `unnuke_reason` FROM `release` WHERE $or ORDER BY `time` DESC LIMIT 1"
	    set query [mysqlsel $pretimedb $sql]
	    if {$query == 1}  {
		mysqlmap $pretimedb {name type time group size files genre nuke nuke_reason unnuke unnuke_reason} {
		    putserv "PRIVMSG $channel :[formatpre $name $type $time $group $size $files $genre $nuke $nuke_reason $unnuke $unnuke_reason $predornuked $fileinfo]"
		}
		} else {
	        putquick "PRIVMSG $channel :\[14PRED\] Found no matching releases"
	        }
	    }
	}

	proc formatpre {name type timestamp group size files genre nuke nuke_reason unnuke unnuke_reason predornuked fileinfo} {
	    set countdown "[countdowntime $timestamp true]"

		if {$size != 0 && $genre != ""} {set fileinfo "14\[12$files\14F/12$size\14MB/12$genre14\]12 "}
		if {$size != 0 && $genre == ""} {set fileinfo "14\[12$files\14F/12$size\14MB\]12 "}
		if {$size == 0 && $genre != ""} {set fileinfo "14\[12$genre14\]12 "}
		if {$nuke == 1} {set predornuked "04NUKED"}
		if {$unnuke == 1} {set predornuked "09UNNUKED"}	
		if {$nuke == 1} {set nuke "14\[NUKED:04 $nuke_reason14\]"}
		if {$unnuke == 1} {set nuke "14\[UNNUKED:09 $unnuke_reason14\]"}
		if {$nuke == 0} {set nuke ""}

		return "14\[12$predornuked14/12$type14\]12 $name $fileinfo\was released $countdown ago $nuke"
	}

    ################################################################################
    ## general used/important stuff
    ################################################################################
	proc countdowntime {lasttime tonow} {
	    #This is equiv to mIRC's $duration() function
		set years 0 ; set weeks 0 ; set days 0 ; set hours 0 ; set mins 0 ; set secs 0 ;
		if {$tonow == "true"} {
		set time [expr [unixtime] - $lasttime]
		} else {
		set time $lasttime
		}
		if {$time == 0} {set output "$time\s"}

		if {$time >= 31536000} {set years [expr int([expr $time/31536000])] ; set time [expr $time - [expr 31536000*$years]]}
		if {$time >= 604800} {set weeks [expr int([expr $time/604800])] ; set time [expr $time - [expr 604800*$weeks]]}
		if {$time >= 86400} {set days [expr int([expr $time/86400])] ; set time [expr $time - [expr 86400*$days]]}
		if {$time >= 3600} {set hours [expr int([expr $time/3600])] ; set time [expr $time - [expr 3600*$hours]]}
		if {$time >= 60} {set mins [expr int([expr $time/60])]; set time [expr $time - [expr 60*$mins]]}
		if {$time >= 1} {set secs $time}

		if {$years == 0} {set output ""} elseif {$years == 1} {set output "1year"} {set output "$years\years"}
		if {$weeks == 1} {lappend output "1week"} elseif {$weeks > 1} {lappend output "$weeks\weeks"}
		if {$days == 1} {lappend output "1day"} elseif {$days > 1} {lappend output "$days\days"}
		if {$hours == 1} {lappend output "1hour"} elseif {$hours > 1} {lappend output "$hours\hours"}
		if {$mins == 1} {lappend output "1min"} elseif {$mins > 1} {lappend output "$mins\mins"}
		if {$secs == 1} {lappend output "1sec"} elseif {$secs > 1} {lappend output "$secs\secs"}
		return "[string trimright [join $output] ", "]"
	}

	proc removechar {string error} { 

		set Start  [string first $error $string]
		set End    [expr $Start + [string length $error] - 1]
		set string [string replace $string $Start $End ]

		return $string
	}

	proc mircstrip { text } { 

		regsub -all {\002|\003([0-9]{1,2}(,[0-9]{1,2})?)?|\017|\026|\037} $text {} text
		return $text 
	}