'; echo '
'; echo round_table('up', 1) . '
'; echo spacer(1, 10); for ($i = 0; $i < 5; $i++) { $month_cap = date('F', mktime(1, 1, 1, substr($month_val, 0, 2))) . ', ' . substr($month_val, 2, 4); echo round_table( '', 1); echo spacer(1, 10); $month_val = get_next_month($month_val); } echo '
'; echo round_table('up', 1) . '
'; ################### # Show year total # ################### $year_total = 0.0; for ($i = 1; $i < 13; $i++) { $tips = get_tips($i, $_SESSION['year'], $userID); for ($j = 0; $j < 31; $j++) $year_total += $tips[$j]; $checks = get_checks($i, $_SESSION['year'], $userID); $year_total += $checks['amount1']; $year_total += $checks['amount2']; } $reportLink = sprintf('
%s report', $MY_SERVER, $_SESSION['year'], $_SESSION['year'] ); echo spacer(1,20); echo '
' . round_table($_SESSION['year'] . ' total: $' . $year_total . $reportLink, 1) . '
'; echo spacer(1, 30); echo '
' . round_table('Logout', 1) . '
'; echo ''; } /* Returns calendar HTML */ function calendar($month, $year, $tipVals, $showStats) { $day_captions = array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'); $dateStamp = mktime(0, 0, 0, $month, 1, $year); $dow = date('w', $dateStamp); /* 0-6 */ $ret = '

' . '' . '' . '' . '' . '' . ''; for ($i = 0; $i < 7; $i++) $ret .= ''; $ret .= ''; for($i = 0; $i < $dow; $i++) $ret .= ''; /* pad beginning of month */ $col = $dow; $dim = date('t', $dateStamp); for ($i = 0; $i < $dim; $i++) { if ($tipVals[$i] == 0) $tipVals[$i] = ''; $io = $i + 1; if ($col == 0) $ret .= ''; $ret .= <<< EOE EOE; $col++; if ($col == 7) { $ret .= "\n"; $col = 0; } } if ($col > 0) { for (; $col < 7; $col++) $ret .= ''; $ret .= ''; } $ret .= '
' . $day_captions[$i] . '
 
$io
 

 
'; return $ret; } /* Returns statistics HTML */ function stats($month, $year, $tipVals) { $MAX_HEIGHT = 100; $day_captions = array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'); $dayCounts = array(); $tipTotals = array(); for ($i = 0; $i < 7; $i++) { $dayCounts[] = 0; $tipTotals[] = 0.0; } $dateStamp = mktime(0, 0, 0, $month, 1, $year); $dow = date('w', $dateStamp); /* 0-6 */ for ($i = 0; $i < 31; $i++) { if (isset($tipVals[$i])) { $dayCounts[$dow]++; $tipTotals[$dow] += $tipVals[$i]; } $dow = ($dow + 1) % 7; } $tipAverages = array(); for ($i = 0; $i < 7; $i++) $tipAverages[$i] = $tipTotals[$i] / $dayCounts[$dow]; $max = $tipAverages[0]; if ($max == 0) $max = 1; for ($i = 0; $i < 7; $i++) if ($tipAverages[$i] > $max) $max = $tipAverages[$i]; $ret = ''; $ret .= ''; for ($i = 0; $i < 7; $i++) $ret .= ''; $ret .= ''; for ($i = 0; $i < 7; $i++) $ret .= ''; $ret .= '
$' . ((int) $max) . ' - bar
$' . ((int)($max / 2)) . ' -
$0 - ' . $day_captions[$i] . '
'; return $ret; } /* Initialization */ if (!isset($_SESSION['year'])) $_SESSION['year'] = date('Y'); if (!isset($_SESSION['month'])) $_SESSION['month'] = date('m'); $userID = get_userID($_SESSION['user']); /* Handle POST form input */ if ($_POST['action'] == 'change_month') { if (preg_match('/^\d{6}$/', $_POST['new_month'])) { $_SESSION['month'] = substr($_POST['new_month'], 0, 2); $_SESSION['year'] = substr($_POST['new_month'], 2, 4); } } elseif ($_POST['action'] == 'save_tips') { $dbc = connect_db(); for ($i = 0; $i < 31; $i++) { if (isset($_POST['tip' . $i])) { $val = $_POST['tip' . $i]; if (preg_match('/^\d*\.?\d{0,2}$/', $val)) { $day = $i + 1; if (strlen($day) < 2) $day = "0$day"; do_query("DELETE FROM `tips` WHERE `date` = '$_SESSION[year]-$_SESSION[month]-$day' AND `user` = '$userID'", $dbc); if ($val != 0) do_query("INSERT INTO `tips` VALUES('', $userID, '$_SESSION[year]-$_SESSION[month]-$day', '$val')", $dbc); } } } mysql_close($dbc); } elseif ($_POST['action'] == 'save_checks') { $dbc = connect_db(); $pattern = '/^\d*\.?\d{0,2}$/'; $h = $_POST['hours1']; $a = $_POST['amount1']; if (preg_match($pattern, $h) && preg_match($pattern, $a)) { do_query("DELETE FROM `checks` WHERE `date` = '$_SESSION[year]-$_SESSION[month]-15' AND `user` = '$userID'", $dbc); if ( ($h != 0) || ($a != 0) ) do_query("INSERT INTO `checks` VALUES('', '$userID', '$_SESSION[year]-$_SESSION[month]-15', '$h', '$a')", $dbc); } $h = $_POST['hours2']; $a = $_POST['amount2']; if (preg_match($pattern, $h) && preg_match($pattern, $a)) { $dim = date('t', mktime(1, 1, 1, $_SESSION['month'], 1, $_SESSION['year'])); do_query("DELETE FROM `checks` WHERE `date` = '$_SESSION[year]-$_SESSION[month]-$dim' AND `user` = '$userID'", $dbc); if ( ($h != 0) || ($a != 0) ) do_query("INSERT INTO `checks` VALUES('', '$userID', '$_SESSION[year]-$_SESSION[month]-$dim', '$h', '$a')", $dbc); } mysql_close($dbc); } /* Set us up some variables for user later on */ $thisMonth = date('F', mktime(0, 0, 0, $_SESSION['month'])); $thisYear = date('Y', mktime(0, 0, 0, 1, 1, $_SESSION['year'])); $nextMonth = sprintf('%02d', (($_SESSION['month'] % 12) + 1)) . (($_SESSION['month'] == 12) ? $thisYear + 1 : $thisYear); $prevMonth = sprintf('%02d', ((($_SESSION['month'] + 10) % 12) + 1)) . (($_SESSION['month'] == 1) ? $thisYear - 1 : $thisYear); $showTips = ( isset($_POST['show_tips']) && ($_POST['show_tips'] == 1) ) ? 1 : 0; $showStats = ( isset($_POST['show_stats']) && ($_POST['show_stats'] == 1) ) ? 1 : 0; $navMonth = $_POST['nav_month']; $navMonth = ( isset($navMonth) && $navMonth >= 0 && $navMonth < 5 ) ? $navMonth : 3; ?> <?php echo $APP_TITLE; ?>
$thisMonth, $thisYear
EOE ); ?>
Edit Tips >>>
<<< Hide Tips
EOE . calendar($_SESSION['month'], $_SESSION['year'], $tips, $showStats) . <<< EOE

Show Stats >>>
<<< Hide Stats
EOE . stats($_SESSION['month'], $_SESSION['year'], $tips) . <<< EOE

EOE . '
' . '' . '' . $thisMonth . ' 1 - 15
' . '
Hours: ' . '' . '   Check Amount: ' . '' . '   Tips: $' . $tip1_total . '

' . $thisMonth . ' 16 - ' . date('t', mktime(1, 1, 1, $_SESSION['month'], 1, $_SESSION['year'])) . '
' . '
Hours: ' . '' . '   Check Amount: ' . '' . '   Tips: $' . $tip2_total . '

  ' . '' . '' . '' . '
' . '
' . '
' . "$thisMonth Total: $" . ($tip1_total + $tip2_total + $checks['amount1'] + $checks['amount2']) . '  
' , 0); echo '
'; echo footer(); ?>