#!/usr/bin/perl use CGI qw(:standard); $days = param("days"); $volume = param("volume"); $day = param("day"); $bom = "Book of Mormon"; $ot = "Old Testament"; $nt = "New Testament"; $dc = "Doctrine and Covenants"; $pgp = "Pearl of Great Price"; $sw = "Standard Works"; if ($volume eq $bom) { $volTitle = $bom; $volXml = "bom2.xml"; $totalVerses = 6613; } elsif ($volume eq $ot) { $volTitle = $ot; $volXml = "ot.xml"; $totalVerses = 23145; } elsif ($volume eq $nt) { $volTitle = $nt; $volXml = "nt.xml"; $totalVerses = 7957; } elsif ($volume eq $dc) { $volTitle = $dc; $volXml = "nt.xml"; $totalVerses = 3654; } elsif ($volume eq $pgp) { $volTitle = $pgp; $volXml = "nt.xml"; $totalVerses = 635; } elsif ($volume eq $sw) { $volTitle = $sw; $volXml = "nt.xml"; $totalVerses = 42004; } $volXml = "scriptures.xml"; if ($days) { $title = "Read The $volTitle in $days Days"; } print header(-charset=>'UTF-8'), start_html(-encoding=>'UTF-8', -head=>meta({-http_equiv=>'Content-Type', -content=>'text/html; CHARSET=UTF-8'}), $title), "
"; print h1($title); if ($volume) { open(BOOK, $volXml) || ERRHANDLER(2); } if ($days) { print "
    "; $versesPerDay = $totalVerses / $days; $found = 0; if ($volTitle eq $sw) { $found = 1; } $endOfVol = 0; while () { $line = $_; if (!$found && $volTitle ne $sw) { #print $line; if (/$volTitle<\/volume>/i) { $found = 1; $endOfVol = 0; } } elsif ($found && !$endOfVol && m//g) { #print $line; $verseCount++; $reference = getTag($line, "r"); #print $reference; if (!$verses) { $dayNumPlus = $dayNum + 1; print "
  1. $reference - "; $dayNum++; } $verses++; if ($verses >= $versesPerDay) { print "$reference
  2. "; $verses = 0; } if ($day == $dayNum) { push @verseText, "

    $reference " . getTag($line, "t") . "

    "; if ($verses == 0) { print @verseText; } } } else { if ($volTitle ne $sw) { $endOfVol = 1; } } } #print h3($chapter . " ($verseCount)"); print "$reference"; while ($dayNum++ < $days) { print ("
  3. Review, Catch up, etc.
  4. "); } print "
"; # print "
$verseCount
"; print "
"; } print "
"; print "Read The "; $defaultDays = 100; if ($days) { $defaultDays = $days; } print " in days"; print "
"; print "
", end_html(); sub ERRHANDLER { my($errnum) = @_; if ($errnum == 1) { print h2("Unknown media file type"); } elsif ($errnum == 2) { print h2("Unable to open XML file"); } } ############################################################ sub getTag { my ($string, $element) = @_; my ($start, $end); if ($string =~ /<$element>/) { $start = index($string, "<$element>"); if ($start >= 0) { $start = (index($string, ">", $start) + 1); $end = index($string, "<", $start); if ($start >= 0) { return (substr($string, $start, $end-$start)) } } } return (""); }