current_row++; $row = mysql_fetch_assoc($this->post_index); $this->current_date = $row["date_published"]; if($this->current_date == "") { return 0; } else { return 1; } } function getPreviousDate() { $this->current_row--; if($this->current_row < 0) { return 0; } else { mysql_data_seek($this->post_index, $this->current_row); $row = mysql_fetch_assoc($this->post_index); $this->current_date = $row["date_published"]; return 1; } } // This function pads a number to a fixed length by // adding leading zeroes. // e.g. "3" padded to length "2" returns "03" function pad($s, $n) { $r = $s; while (strlen($r) < $n) { $r = "0".$r; } return $r; } function getCalendarLink($month, $year) { $Year = $this->pad($year, 4); $Month = $this->pad($month, 2); $s = getenv('SCRIPT_NAME'); // return "$s?Type=calendar&Year=$Year&Month=$Month"; return "/archive/$Year/$Month"; } function getMonthLinkData($month, $year) { $Year = $this->pad($year, 4); $Month = $this->pad($month, 2); $query = "SELECT DISTINCT REPLACE(left(date_published, 10), '-', '') AS date_published FROM posts WHERE date_published BETWEEN \"$Year-$Month-01 00:00:00\" AND \"$Year-$Month-31 23:59:59\" AND published = 1 AND visible = 1 ORDER BY date_published ASC"; $this->post_index = mysql_query_err($query); $row = mysql_fetch_assoc($this->post_index); $this->current_date = $row["date_published"]; } function getDateLink($day, $month, $year) { $Year = $this->pad($year, 4); $Month = $this->pad($month, 2); $Day = $this->pad($day, 2); $date = "$Year$Month$Day"; while($this->current_date < $date && $this->current_date != NULL) { $this->getNextDate(); } if ($this->current_date == $date) { $s = getenv('SCRIPT_NAME'); // return "$s?Type=calendar&Year=$Year&Month=$Month&Day=$Day"; return "/archive/$Year/$Month/$Day"; } else { return ""; } } function printStylesheet($uc = 4) { if ($uc>0 && file_exists("esconfig.php")) { require("esconfig.php"); $config = ereg_replace ("\?", "", $cfg[$uc]); $config = explode ("&",$config); foreach ($config as $values) { $c0 = explode ("=",$values); $$c0[0] = $c0[1]; } } // FONT SIZES AND WEIGHT // These options can be set in the script or overridden by command-line options of // the same named variables. The sizes are in pixels. if (!$fsm) $fsm="18"; // FONT SIZE MONTH if (!$fsd) $fsd="11"; // FONT SIZE DAY NAMES if (!$fsn) $fsn="11"; // FONT SIZE NUMBERS if (!$fwm) $fwm="bold"; else $fwm="normal"; // FONT WEIGHT MONTH if (!$fwd) $fwd="normal"; else $fwd="bold"; // FONT WEIGHT DAY NAMES if (!$fwn) $fwn="normal"; else $fwn="bold"; // FONT WEIGHT NUMBERS // ONLY EDIT THE STYLE SHEET BELOW IF YOU WANT TO CHANGE THE FONT FACE AND/OR COLOR $s .= "\n"; print $s; } function printMonth($yr = 0, $mo = 0, $uc = 0, $direction = 0) { ////////////////////////////////////////// //////////BEGIN CALENDAR CODE //////////// ////////////////////////////////////////// // QUICK REFERENCE // :: uc = Use Configuration File // :: ms = Mark Style // :: ds = Day Start // :: ny = Not Display Year // :: nt = Not Mark Today // :: es = Event Start // :: ee = Event End // :: ot = Offset Time // :: th = Table Height // :: tw = Table Width // :: cs = Cell Spacing // :: cp = Cell Padding // :: al = Cell Alignment // :: nbc = Normal Numbers Background Color // :: tfc = Todays Font Color // :: mbc = Marked Numbers Background Color // :: dtc = Day Names Table Background Color // :: ntc = Blank Numbers Background Color // :: mtc = Month and Year Table Background Color // :: fsm = Font Fize Month // :: fsd = Font Size Dates // :: fsn = Font Size Numbers // :: fwm = Font Weight Month Name // :: fwd = Font Weight Day Names // :: fwn = Font Weight Numbers // LOAD CONFIGURATION FILE // $uc=x :: Use the configuration file set as 'x' // This option can be set here or overridden by the command-line option 'uc=' if (!$uc) $uc = "0"; // SET THIS TO A NUMBER TO USE THE CONFIGURATION FILE if ($uc>0 && file_exists("esconfig.php")) { require("esconfig.php"); $config = ereg_replace ("\?", "", $cfg[$uc]); $config = explode ("&",$config); foreach ($config as $values) { $c0 = explode ("=",$values); $$c0[0] = $c0[1]; } } // CALENDAR MARKING STYLE // $ms=1 :: Mark calendar dates using table background colors [Default] // $ms=2 :: Mark calendar dates using graphics for background colors // NOTE: If using Style 2, all 'stat' graphics should be in the same directory as this script // You can edit the 'stat' graphics to meet your needs if (!$ms) $ms = "1"; // CALENDAR MARKING COLORS // Edit these colors to suit your needs // These options change be changed here or by the command-line options 'nbc', 'mbc', or 'tfc' if (!$nbc) $nbc = "EEEEEE"; // NORMAL BACKGROUND COLOR if (!$mbc) $mbc = "EEBBBB"; // MARKED BACKGROUND COLOR if (!$tfc) $tfc = "CF0000"; // TODAY'S FONT COLOR // DAY NAMES // Edit the calendar day name column headers below $day = array("S", "M", "T", "W", "T", "F", "S"); // MONTH NAMES // Edit the calendar month names below $mth = array("Author Uses Inconsistent Array Addressing", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"); // ON WHAT DAY DOES THE WEEK START? // 0=Sunday; 1=Monday; 2=Tuesday; 3=Wednesday; 4=Thursday; 5=Friday; 6=Saturday // This option can be set here or overridden by the command-line option 'ds=' if (!$ds) $ds=0; // PRINT YEAR? // $ny=1 :: Don't display the year number after the month name // This option can be set here or overridden by the command-line option 'ny=' if (!$ny) $ny=0; // MARK TODAY? // $nt=1 :: Don't mark today's date // This option can be set here or overridden by the command-line option 'nt=' if (!$nt) $nt=0; // HOURS TO OFFSET TIME +/- // To add hours, enter a positive value. To substract hours, enter a "-" negative value // This option can be set here or overridden by the command-line option 'ot=' if (!$ot) $ot = "-0"; // CALENDAR WIDTH AND HEIGHT // Set $tw to the width of the calendar table // Set $th to the height of the calendar table (does not include the month table which is additional) // These options can be set here or overridden by the command-line options 'tw=' and 'ch=' if (!$tw) $tw="175"; // Table Width if (!$th) $th="140"; // Table Height (with 6 rows of dates) // NOTE: Table may be smaller than specified for months with only 5 rows of dates // CALENDAR CELL SPACING AND PADDING // Set $cs to the number of pixels of cell spacing (space between each cell) // Set $cp to the number of pixels of cell padding (space around names and numbers inside cells) // These options can be set here or overridden by the command-line options 'cs=' and 'cp=' if (!$cs) $cs=1; // IMPORTANT! To set cs to 0 from the command-line, you must use -0 if (!$cp) $cp=0; // DATE NUMBER ALIGNMENT // Set $algn to 0 [defult] to align the dates to the middle and center of table cells. // Set $algn to 1 to align the dates to the upper-right corner of table cells. // This option can be set here or overridden by the command-line option 'algn=' if (!$al) $al="0"; //////////////////////////////////////// ///// DO NOT EDIT BELOW THIS POINT ///// //////////////////////////////////////// // DETERMINE AND SET DATE NUMBER CELL ALIGNMENT if ($al==1) $al="align=\"right\" valign=\"top\""; elseif ($al==2) $al="align=\"left\" valign=\"top\""; elseif ($al!=1 && $al!=2) $al="align=\"center\" valign=\"middle\""; // DETERMINE TODAYS DAY NUMBER $ot = $ot*3600; $tmo = date("m", time()+$ot); $tda = date("j", time()+$ot); $tyr = date("Y", time()+$ot); $tnum = (intval((date ("U", mktime(20,0,0,$tmo,$tda,$tyr))/86400))); // TODAY'S DAY NUMBER // CHECK FOR COMMAND LINE DATE VARIABLES if (!$mo) $mo=$tmo; if (!$yr) $yr=$tyr; $daycount = (intval((date ("U", mktime(20,0,0,$mo,1,$yr))/86400)))-$ds; // FIRST OF MONTH DAY NUMBER $daycount=$daycount+$ds; // ADJUST FOR DAY START VARIABLE $mo=intval($mo); $mn = $mth[$mo]; // SET MONTH NAME if ($ny!=1) {$mn = $mn." ".$yr;} // ADD YEAR TO MONTH NAME? // ON WHAT DAY DOES THE FIRST FALL $sd = date ("w", mktime(0,0,0,$mo,1-$ds,$yr)); $cd = 1-$sd; // NUMBER OF DAYS IN MONTH $nd = mktime (0,0,0,$mo+1,0,$yr); $nd = (strftime ("%d",$nd))+1; //////////////////////////////////////// // PROCESS DAY MARKING ///////////////// //////////////////////////////////////// if ($es) { $es = explode ("x",$es); $smc = count ($es); $ee = explode ("x",$ee); $emc = count ($ee); if ($smc==1) { $es[1]="3000-01-01"; $ee[1]="3000-01-01"; } } $i=0; while ($i < $smc) { $es[$i] = ereg_replace('-','/', $es[$i]); $ee[$i] = ereg_replace('-','/', $ee[$i]); $start = intval(strtotime ($es[$i])/86400)+1; $end = intval(strtotime ($ee[$i])/86400)+1; if (!$ee[$i]) $end=$start; // MARK SINGLE DAY WITH ONLY ES VARIABLE if (!$bgc[$start]) { $bgc[$start]=1; } else { $bgc[$start]=4; } $bgc[$end]=3; for ($n = ($start+1); $n < $end; $n++) { $bgc[$n] = 2; } $i++; } //////////////////////////////////////////// // DISPLAY CALENDAR //////////////////////// //////////////////////////////////////////// // Populate from database $this->getMonthLinkData($mo, $yr); // ADJUST TABLE HEIGHT FOR 5 ROW MONTHS $checksize=$fsd+$cs+$cp; $checkrows=$ds+$nd-$cd; if ($checkrows<36) { $th=$th-intval(($th-$checksize)/6); } // Print the month name and optionally the year $o .= "\n"; $o .= " \n"; $o .= " \n"; $o .= " \n"; $o .= "
$mn\n"; $o .= "
\n"; // Print the body of the calendar $o .= "\n"; $total_height = $fsd + $cs + $cp; $o .= " 6) $dayprint=$dayprint-7; $o .= " \n"; } $o .= " \n"; // PRINT CALENDAR USING TABLE BACKGROUND COLORS [CALENDAR STYLE 1] if ($ms==1) { for ($i = 1; $i<7; $i++) { if ($cd>=$nd) break; $o .= " 0 && $cd<$nd) { $o .= " \n"; $daycount++; $cd++; } else { $o .= " 0 && $cd<$nd) { $o .= " bgcolor=\"#"; if ($bgc[$daycount]) { $o .= $mbc; } else { $o .= $nbc; } $o .= "\">"; $link = $this->getDateLink($cd, $mo, $yr); $o .= (($link == "") ? $cd : "$cd"); $daycount++; } else { $o .= ">"; } $cd++; $o .= "\n"; } } $o .= " \n"; } $o .= "
$day[$dayprint]
"; $link = $this->getDateLink($cd, $mo, $yr); $o .= (($link == "") ? "$cd" : "$cd"); $o .= "
\n"; } print $o; } // This last bit commented out for now. /** =$nd) break; ?> CLASS="dates"> 0 && $cd<$nd) {echo " $cd\n";$daycount++;$cd++;} else { ?> 0 && $cd<$nd) {echo " background=\"stat$bgc[$daycount].gif\">$cd";$daycount++;} else {echo ">";} $cd++;?> } **/ } ?>