--- a/common.inc.php
+++ b/common.inc.php
@@ -2,202 +2,216 @@
include_once("config.inc.php");
include("php-calendar.lib.php");
+
function include_header($title) {
- ?>
- <!doctype html>
-<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]-->
-<!--[if IE 7]> <html class="no-js ie7 oldie" lang="en"> <![endif]-->
-<!--[if IE 8]> <html class="no-js ie8 oldie" lang="en"> <![endif]-->
-<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
-<head>
- <meta charset="utf-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-
- <title></title>
- <meta name="description" content="">
- <meta name="author" content="">
-
- <meta name="viewport" content="width=device-width,initial-scale=1">
-
- <!-- CSS concatenated and minified via ant build script-->
- <link rel="stylesheet" href="css/style.css">
- <!-- end CSS-->
-
- <script src="js/libs/modernizr-2.0.6.min.js"></script>
-</head>
-
-<body>
-
- <div id="container">
- <header>
-
- </header>
- <div id="main" role="main">
- <?php
-}
-function include_footer() {
- ?>
- </div>
- <footer>
-
- </footer>
- </div> <!--! end of #container -->
- <!-- Grab Google CDN's jQuery, with a protocol relative URL; fall back to local if necessary -->
- <script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js"></script>
- <script>window.jQuery || document.write('<script src="js/libs/jquery-1.5.1.min.js">\x3C/script>')</script>
- <script type="text/javascript" src="js/jquery.imagefit.js"></script>
-<script>
-$(window).load(function(){
- $('.col1').imagefit();
-});
-</script>
-</body>
-</html>
- <?php
+ ?>
+ <!doctype html>
+ <!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]-->
+ <!--[if IE 7]> <html class="no-js ie7 oldie" lang="en"> <![endif]-->
+ <!--[if IE 8]> <html class="no-js ie8 oldie" lang="en"> <![endif]-->
+ <!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+
+ <title></title>
+ <meta name="description" content="">
+ <meta name="author" content="">
+
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+
+ <!-- CSS concatenated and minified via ant build script-->
+ <link rel="stylesheet" href="css/style.css">
+ <!-- end CSS-->
+
+ <script src="js/libs/modernizr-2.0.6.min.js"></script>
+ </head>
+
+ <body>
+
+ <div id="container">
+ <header>
+
+ </header>
+ <div id="main" role="main">
+ <?php
+ }
+
+ function include_footer() {
+ ?>
+ </div>
+ <footer>
+
+ </footer>
+ </div> <!--! end of #container -->
+ <!-- Grab Google CDN's jQuery, with a protocol relative URL; fall back to local if necessary -->
+ <script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js"></script>
+ <script>window.jQuery || document.write('<script src="js/libs/jquery-1.5.1.min.js">\x3C/script>')</script>
+ <script type="text/javascript" src="js/jquery.imagefit.js"></script>
+ <script>
+ $(window).load(function(){
+ $('.col1').imagefit();
+ });
+ </script>
+ </body>
+ </html>
+ <?php
}
function include_sidebar() {
- ?>
+ ?>
<a href="upload.php">Upload a new day</a><br>
<a href="help.php">Help/Instructions</a><br>
<hr>
-<?php
-foreach (getCalendarMonths() as $month) {
- echo generate_calendar($month['year'], $month['month'], getCalendarDays($month['year'], $month['month']), 3);
-}
+ <?php
+ foreach (getCalendarMonths() as $month) {
+ echo generate_calendar($month['year'], $month['month'], getCalendarDays($month['year'], $month['month']), 3);
+ }
}
function getNextAvailableDate() {
- if ($previousDate = getPreviousDate()) {
- $nextDayTime = strtotime("+1 day",strtotime($previousDate));
- if (date("m",$nextDayTime) == "08" and date("d",$nextDayTime) == "24") {
- // skip the 24th of August
- $nextDayTime = strtotime("+1 day",$nextDayTime);
- }
- return date("Y-m-d",$nextDayTime);
- } else {
- return START_DATE;
- }
+ if ($previousDate = getPreviousDate()) {
+ $nextDayTime = strtotime("+1 day", strtotime($previousDate));
+ if (date("m", $nextDayTime) == "08" and date("d", $nextDayTime) == "24") {
+ // skip the 24th of August
+ $nextDayTime = strtotime("+1 day", $nextDayTime);
+ }
+ return date("Y-m-d", $nextDayTime);
+ } else {
+ return START_DATE;
+ }
+}
+function getDateFromFilename($filename) {
+ $fnameParts = explode(".",$filename);
+ return $fnameParts[0];
+}
+function getFilenameForDate($date,$fileext = "") {
+ $results = glob(DATA_DIR."/".$date."*".$fileext);
+ if (sizeof($results) > 0) {
+ return $results[0];
+ } else return false;
}
function getPreviousDate() {
- $datedFiles = scandir(DATA_DIR); // sorted descendingly by default
- if (sizeof($datedFiles) > 2) {// always at least 2 even for an empty folder because of ./ and ../
- return removeImageFileExtensions($datedFiles[sizeof($datedFiles)-1]);
-} else {
- return false;
-}
-}
+ $datedFiles = scandir(DATA_DIR); // sorted descendingly by default
+ if (sizeof($datedFiles) > 2) {// always at least 2 even for an empty folder because of ./ and ../
+ return getDateFromFilename($datedFiles[sizeof($datedFiles) - 1]);
+ } else {
+ return false;
+ }
+}
+
function getPhoto($displayDate) {
- $cacheFile = CACHE_DIR.$displayDate.".png";
- if (file_exists($cacheFile)) {
- return $cacheFile;
- } else {
- if (file_exists(DATA_DIR.$displayDate.".jpg")) {
- $source_gd_image = imagecreatefromjpeg( DATA_DIR.$displayDate.".jpg");
-
- } else if (file_exists(DATA_DIR.$displayDate.".png")) {
- $source_gd_image = imagecreatefrompng( DATA_DIR.$displayDate.".png" );
- } else {
- return false;
- }
-
- if ( $source_gd_image === false )
- {
- return false;
- }
-$source_image_width = imagesx($source_gd_image);
- $source_image_height = imagesy($source_gd_image);
-
- $header_gd_image = imagecreatefrompng( "img/header.png" );
-$header_image_width = imagesx($header_gd_image);
- $header_image_height = imagesy($header_gd_image);
-
- $white = imagecolorallocate($source_gd_image, 255, 255, 255);
- $black = imagecolorallocate($source_gd_image, 0, 0, 0);
- function calculateTextBox($text,$fontFile,$fontSize) {
- /************
- simple function that calculates the *exact* bounding box (single pixel precision).
- The function returns an associative array with these keys:
- left, top: coordinates you will pass to imagettftext
- width, height: dimension of the image you have to create
- *************/
- $rect = imagettfbbox($fontSize,0,$fontFile,$text);
- $minX = min(array($rect[0],$rect[2],$rect[4],$rect[6]));
- $maxX = max(array($rect[0],$rect[2],$rect[4],$rect[6]));
- $minY = min(array($rect[1],$rect[3],$rect[5],$rect[7]));
- $maxY = max(array($rect[1],$rect[3],$rect[5],$rect[7]));
-
- return array(
- "left" => abs($minX) - 1,
- "top" => abs($minY) - 1,
- "width" => $maxX - $minX,
- "height" => $maxY - $minY,
- "box" => $rect
- );
-}
-$date = strtotime($displayDate);
+ $cacheFile = CACHE_DIR . $displayDate . ".png";
+ if (file_exists($cacheFile)) {
+ return $cacheFile;
+ } else {
+ if ($fname = getFilenameForDate($displayDate,".jpg")) {
+ $source_gd_image = imagecreatefromjpeg($fname);
+ } else if ($fname = getFilenameForDate($displayDate,".png")) {
+ $source_gd_image = imagecreatefrompng($fname);
+ } else {
+ return false;
+ }
+
+ if ($source_gd_image === false) {
+ return false;
+ }
+ $source_image_width = imagesx($source_gd_image);
+ $source_image_height = imagesy($source_gd_image);
+
+ $header_gd_image = imagecreatefrompng("img/header.png");
+ $header_image_width = imagesx($header_gd_image);
+ $header_image_height = imagesy($header_gd_image);
+
+ $white = imagecolorallocate($source_gd_image, 255, 255, 255);
+ $black = imagecolorallocate($source_gd_image, 0, 0, 0);
+
+ function calculateTextBox($text, $fontFile, $fontSize) {
+ /* * **********
+ simple function that calculates the *exact* bounding box (single pixel precision).
+ The function returns an associative array with these keys:
+ left, top: coordinates you will pass to imagettftext
+ width, height: dimension of the image you have to create
+ * *********** */
+ $rect = imagettfbbox($fontSize, 0, $fontFile, $text);
+ $minX = min(array($rect[0], $rect[2], $rect[4], $rect[6]));
+ $maxX = max(array($rect[0], $rect[2], $rect[4], $rect[6]));
+ $minY = min(array($rect[1], $rect[3], $rect[5], $rect[7]));
+ $maxY = max(array($rect[1], $rect[3], $rect[5], $rect[7]));
+
+ return array(
+ "left" => abs($minX) - 1,
+ "top" => abs($minY) - 1,
+ "width" => $maxX - $minX,
+ "height" => $maxY - $minY,
+ "box" => $rect
+ );
+ }
+
+ $date = strtotime($displayDate);
// First we create our bounding box for the first text
-$textDayName = date("l",$date);
-$sizeDayName = 18;
-$fontDayName = "./img/mplus-1p-medium.ttf";
-$bboxDayName = calculateTextBox($textDayName,$fontDayName,$sizeDayName);
-
-$textDate = date("jS F Y",$date);
-$sizeDate = 14;
-$fontDate = "./img/mplus-1p-regular.ttf";
-$bboxDate = calculateTextBox($textDate,$fontDate,$sizeDate);
-
-$margin = 15;
-$maxX = $header_image_width + $margin*2 + max($bboxDayName['width'],$bboxDate['width']) + $margin*2;
-$maxY = max($header_image_height + $margin*2 , ($bboxDayName['height']+$margin+$bboxDate['height']));
+ $textDayName = date("l", $date);
+ $sizeDayName = 18;
+ $fontDayName = "./img/mplus-1p-medium.ttf";
+ $bboxDayName = calculateTextBox($textDayName, $fontDayName, $sizeDayName);
+
+ $textDate = date("jS F Y", $date);
+ $sizeDate = 14;
+ $fontDate = "./img/mplus-1p-regular.ttf";
+ $bboxDate = calculateTextBox($textDate, $fontDate, $sizeDate);
+
+ $margin = 15;
+ $maxX = $header_image_width + $margin * 2 + max($bboxDayName['width'], $bboxDate['width']) + $margin * 2;
+ $maxY = max($header_image_height + $margin * 2, ($bboxDayName['height'] + $margin + $bboxDate['height']));
// Draw a white rectangle
-imagefilledrectangle($source_gd_image, 0, 0, $maxX, $maxY, $white);
-
-imagecopy($source_gd_image, $header_gd_image,$margin,$margin,0,0,$header_image_width,$header_image_height);
+ imagefilledrectangle($source_gd_image, 0, 0, $maxX, $maxY, $white);
+
+ imagecopy($source_gd_image, $header_gd_image, $margin, $margin, 0, 0, $header_image_width, $header_image_height);
// Write it
-imagettftext($source_gd_image, $sizeDayName, 0, $header_image_width+$margin*2+$bboxDayName['left'], $margin+$bboxDayName['top'], $black, $fontDayName, $textDayName);
-imagettftext($source_gd_image, $sizeDate, 0, $header_image_width+$margin*2+$bboxDate['left'], $margin+$bboxDayName['height']+$margin+$bboxDate['top'], $black, $fontDate, $textDate);
-
- imagepng( $source_gd_image, $cacheFile, 9 );
- imagedestroy( $source_gd_image );
- return $cacheFile;
- }
-}
-function getCalendarDays($year,$month) {
- $result = Array();
- if ($handle = opendir(DATA_DIR)) {
- while (false !== ($file = readdir($handle))) {
- if ($file != "." && $file != ".." && startsWith($file,"$year-$month")) {
- $parts = explode("-",$file);
- $day = removeImageFileExtensions($parts[2]);
- $result[$day]=Array("index.php?date=$year-$month-$day",'linked-day');
- }
- }
- }
- ksort($result);
- return $result;
-}
+ imagettftext($source_gd_image, $sizeDayName, 0, $header_image_width + $margin * 2 + $bboxDayName['left'], $margin + $bboxDayName['top'], $black, $fontDayName, $textDayName);
+ imagettftext($source_gd_image, $sizeDate, 0, $header_image_width + $margin * 2 + $bboxDate['left'], $margin + $bboxDayName['height'] + $margin + $bboxDate['top'], $black, $fontDate, $textDate);
+
+ imagepng($source_gd_image, $cacheFile, 9);
+ imagedestroy($source_gd_image);
+ return $cacheFile;
+ }
+}
+
+function getCalendarDays($year, $month) {
+ $result = Array();
+ if ($handle = opendir(DATA_DIR)) {
+ while (false !== ($file = readdir($handle))) {
+ if ($file != "." && $file != ".." && startsWith($file, "$year-$month")) {
+ $parts = explode("-", $file);
+ $day = getDateFromFilename($parts[2]);
+ $result[$day] = Array("index.php?date=$year-$month-$day", 'linked-day');
+ }
+ }
+ }
+ ksort($result);
+ return $result;
+}
+
function getCalendarMonths() {
- $months = Array();
- if ($handle = opendir(DATA_DIR)) {
- while (false !== ($file = readdir($handle))) {
- if ($file != "." && $file != "..") {
- $parts = explode("-",$file);
- $months[$parts[0].$parts[1]]=Array("month"=>$parts[1],"year"=>$parts[0]);
- }
- }
- }
- return $months;
-}
-function startsWith($haystack, $needle)
-{
- // source: http://stackoverflow.com/questions/834303/php-startswith-and-endswith-functions
+ $months = Array();
+ if ($handle = opendir(DATA_DIR)) {
+ while (false !== ($file = readdir($handle))) {
+ if ($file != "." && $file != "..") {
+ $parts = explode("-", $file);
+ $months[$parts[0] . $parts[1]] = Array("month" => $parts[1], "year" => $parts[0]);
+ }
+ }
+ }
+ return $months;
+}
+
+function startsWith($haystack, $needle) {
+ // source: http://stackoverflow.com/questions/834303/php-startswith-and-endswith-functions
$length = strlen($needle);
return (substr($haystack, 0, $length) === $needle);
}
-function removeImageFileExtensions($filename) {
- return str_replace(Array(".png",".jpg"),"",$filename);
-}
+
+
?>