#!/usr/bin/perl ############################################################# # Ikonboard v2.1 # Copyright 2001 Ikonboard.com - All Rights Reserved # Ikonboard is a trademark of Ikonboard.com # # Software Distributed by: Ikonboard.com # Visit us online at http://www.ikonboard.com # Email us on boards@ikonboard.com # # All files written by Matthew Mecham ############################################################# use CGI::Carp "fatalsToBrowser"; # Output errors to browser use CGI qw(:standard); # Saves loads of work $CGI::POST_MAX=1024 * 150; # limit post data $CGI::DISABLE_UPLOADS = 1; # Disable uploads $CGI::HEADERS_ONCE = 1; # Kill redundant headers eval { ($0 =~ m,(.*)/[^/]+,) and unshift (@INC, "$1"); ($0 =~ m,(.*)\\[^\\]+,) and unshift (@INC, "$1"); require "ikon.lib"; # Require ikonboard () require "data/progs.cgi"; # Require prog names require "data/boardinfo.cgi";# Require board info require "data/styles.cgi"; # Require styles info }; if ($@) { print header(); print start_html(-title=>"Ikonboard Error!"); print "Could not find these files: $@\nIf you are running NT you may need to enter the full path in each require statement in each script"; print end_html; exit; } $|++; # Unbuffer the output #################--- Begin the program ---################### $thisprog = "ikonboard.cgi"; $query = new CGI; $action = $query->param('action'); $inmembername = cookie("amembernamecookie"); $inpassword = cookie("apasswordcookie"); if ($inmembername eq "") { $inmembername = "Guest"; } else { &getmemberstime("$inmembername"); &getlastvisit; } if ($action eq "resetall") { $filetoopen = "$ikondir" . "data/allforums.cgi"; $filetoopen = &stripMETA($filetoopen); open(FILE, "$filetoopen") or die "Could not locate the needed files"; flock(FILE, 1); @forums = ; close(FILE); $currenttime = time; foreach (@forums) { #start foreach @forums ($tempno, $trash) = split(/\|/,$_); $lvisit .= "$tempno-$currenttime--"; } $cookie = cookie(-name => "lastvisit", -value => "$lvisit", -path => "$cookiepath", -expires => "+30d"); $tempcookie = cookie(-name => "templastvisit", -value => "$lvisit", -path => "$cookiepath"); print header(-cookie =>[$cookie, $tempcookie]); } &title; require "$ikondir" . "data/boardstats.cgi"; ### Set up the variables for the last registered Member $cleanlastregistered = $lastregisteredmember; $cleanlastregistered =~ y/ /_/; $lastregisteredmember = substr($lastregisteredmember,0,20) if length $lastregisteredmember > 19; $cleanlastregistered = qq~$lastregisteredmember~; #------- HTML $output .= qq~
$boardname welcomes its newest member $cleanlastregistered
$boardname has $totalmembers members with $totalposts posts in $totalthreads topics

~; #------- END OF HTML if ($announcements eq 'yes') { #------- HTML $output .= qq~ ~; #------- END OF HTML my $filetoopen = "$ikondir" . "data/news.cgi"; if (-e $filetoopen) { openFILE(-FH=>'FILE',-FN=>"$filetoopen",-MD=>'r'); my @announcementdata = ; close(FILE); my $totalannouncements = @announcementdata; ($title, $dateposted, $trash) = split(/\|/, $announcementdata[0]); } else { $dateposted = time; $title = 'No current announcements'; } my $dateposted = $dateposted + ($timedifferencevalue*3600) + ($timezone*3600); $dateposted = &longdate("$dateposted"); #------- HTML $output .= qq~ ~; #------- END OF HTML } ### Open up the allforums file. $filetoopen = "$ikondir" . "data/allforums.cgi"; $filetoopen = &stripMETA($filetoopen); open(FILE, "$filetoopen") or die "Have you created any forums yet?"; flock FILE,1; @forums = ; close(FILE); foreach $forum (@forums) { #start foreach @forums chomp $forum; ($forumid, $category, $categoryplace, $forumname, $forumdescription, $forummoderator ,$htmlstate ,$idmbcodestate ,$privateforum, $startnewthreads ,$lastposter ,$lastposttime, $threads, $posts, $forumgraphic) = split(/\|/,$forum); $rearrange = ("$categoryplace|$category|$forumname|$forumdescription|$forummoderator|$htmlstate|$idmbcodestate|$privateforum|$startnewthreads|$lastposter|$lastposttime|$threads|$posts|$forumgraphic|$forumid"); push (@rearrangedforums, $rearrange); } # end foreach (@forums) @finalsortedforums = sort numerically(@rearrangedforums); foreach $sortedforums (@finalsortedforums) { #start foreach @finalsortedforums ($categoryplace, $category, $forumname, $forumdescription, $forummoderator, $htmlstate, $idmbcodestate, $privateforum, $startnewthreads, $lastposter, $lastposttime, $threads, $posts, $forumgraphic, $forumid) = split(/\|/,$sortedforums); if ($forummoderator) { $forummoderator =~ s/\, /\,/g; my @mods = split(/\,/,$forummoderator); my $tm = @mods; my $mc = 1; foreach (@mods) { my $cmodn = $_; $cmodn =~ y/ /_/; if ($mc != $tm) { $modout .= qq~$_, ~; } else { $modout .= qq~$_~; } $mc++; } $modout = qq!(Moderated by: $modout)!; } if ($categoryplace ne $lastcategoryplace) { $output .= qq~~; } my $fm = $forumname; $forumname = qq~$forumname~; $forumlastvisit = $lastvisitinfo{$forumid}; $folderpicture = qq( ); if (($lastposttime > $forumlastvisit) and ($inmembername ne 'Guest')) { $folderpicture = qq~~; $posts = qq~$posts~; } else { $folderpicture = qq~~; $posts = qq~$posts~; } if ($inmembername eq 'Guest') { $folderpicture = qq( ); $loginmessage = "You must be logged in to view the post markers"; } $forumlastvisit = $forumlastvisit + ($timedifferencevalue*3600) + ($timezone*3600); $lastdate = &longdate("$forumlastvisit"); $lasttime = &shorttime("$forumlastvisit"); if ($lastposttime) { $lastposttime = $lastposttime + ($timedifferencevalue*3600) + ($timezone*3600); $longdate = &longdate("$lastposttime"); $shorttime = &shorttime("$lastposttime"); $forumlastpost = qq~Date: $longdate
Time: $shorttime
~; } else { $forumlastpost = qq~N/A~; } $lastposterfilename = $lastposter; $lastposterfilename =~ y/ /_/; $lastposter =~ y/_/ /; #------- HTML $output .= qq~
~; #------- END OF HTML $lastcategoryplace = $categoryplace; undef $forumlastvisit; undef $forummoderator; undef $modout; } &whosonline("$inmembername|Main board page|both"); my $total_users = $guests + $members; #------- HTML $output .= qq~
  Forum Info Replies Topics Last Post
» Announcements
$title [ Read ] $dateposted
» $category
$folderpicture $forumname
$forumdescription

$modout
$posts $threads $forumlastpost
by: $lastposter
$total_users user(s) active in the past 15 minutes
Guests: $guests, Total members: $members
$memberoutput
~; #------- END OF HTML if ($loginmessage) { #------- HTML $output .= qq~

All times are $basetimes

$loginmessage

~; } else { $output .= qq~

All times are $basetimes

New posts since your last visit
No new posts since your last visit
~; #------- END OF HTML } print header(); &output( -Title => $boardname, -ToPrint => $output, -Version => $versionnumber );