prepare("SELECT punches.id as punchid, users.id as user, punches.intime as intime, punches.outtime as outtime, punches.notes as notes FROM punches INNER JOIN users ON punches.userid = users.id WHERE users.id = $userid ORDER BY punches.id DESC LIMIT 1"); $result->execute(); $last = $result->fetchObject(); // Let's build the page - this is the header with current status IF allowed if ($yaptc_allowadvancedpunch == 'yes'): echo "

Advanced Punch

"; if(!isset($last->user)) { echo "

You do not appear to have any punches on record.

"; $status = "Out"; } else { if (!empty($last->outtime)) { $status = "Out"; $statustime = $last->outtime; } else { $status = "In"; $statustime = $last->intime; $punchid = $last->punchid; $notes = $last->notes; } echo "

You have been Punched $status since " . date('g:i a \o\n M jS, Y', strtotime($statustime)) . ".

"; } echo "

Use this form to enter a specific time on your punch. NOTE: changing the time from the current time will cause a flag on your log for the administrator to review, so we suggest you enter a reason why in the notes field (i.e. forgot punch, working from home, system down, etc).

"; echo "
"; echo "
"; echo ""; echo ""; echo ""; if (isset($notes)) { echo ""; } else { echo ""; } echo "
"; if ($status=="In") { echo ""; echo ""; } else { echo ""; echo ""; } echo "
"; // If the posted variables are not empty, we must be trying to insert a new punch. Use the form values to insert new record if (!empty($_POST)) { // Is the notes field set? If so, use, otherwise set to null if (isset($_POST['notes'])) { if (!empty($_POST['notes'])) { $p_notes = $_POST['notes']; } else { $p_notes = NULL; } } else { $p_notes = NULL; } // Is the punch time field set? If so, use, otherwise set to now if (isset($_POST['punchtime'])) { if (!empty($_POST['punchtime'])) { $p_punchtime = $_POST['punchtime'] . ':00'; $p_modified = "1"; } else { $p_punchtime = $timenow . ':00'; $p_modified = "0"; } } else { $p_punchtime = $timenow . ':00'; $p_modified = "0"; } // Is the user currently punched in? If so, insert the punch out record, otherwise, insert a new punch in if ($status=="In") { $query = "UPDATE punches SET outtime = :p_punchtime, notes = :p_notes, modified = :p_modified WHERE id = :p_punchid"; $stmt = $yaptc_db->prepare($query); $stmt->execute(array( ':p_punchid' => $punchid, ':p_notes' => $p_notes, ':p_punchtime' => $p_punchtime, ':p_modified' => $p_modified, )); } else { $query = "INSERT INTO punches (userid, notes, intime, modified) VALUES (:p_userid, :p_notes, :p_punchtime, :p_modified)"; $stmt = $yaptc_db->prepare($query); $stmt->execute(array( ':p_userid' => $_SESSION['user_id'], ':p_notes' => $p_notes, ':p_punchtime' => $p_punchtime, ':p_modified' => $p_modified, )); } // And then send user back to this page to see the updates header('Location: '.$_SERVER['PHP_SELF']); } // Close out the form... echo "
"; echo "
"; endif; echo "

Punch History

"; echo "

Below is your full punch history, sorted newest to oldest.

"; $result = $yaptc_db->prepare("SELECT punches.id as punchid, users.id as user, punches.intime as intime, punches.outtime as outtime, punches.notes as notes, punches.modified as modified FROM punches INNER JOIN users ON punches.userid = users.id WHERE users.id = $userid ORDER BY punches.id DESC"); $result->execute(); echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; while ($row = $result->fetch(PDO::FETCH_ASSOC)) { $intime = $row['intime']; $outtime = $row['outtime']; $date1 = new DateTime($intime); $date2 = new DateTime($outtime); $seconds = abs($date1->getTimestamp()-$date2->getTimestamp()); $flag = $row['modified']; if ($flag == "1") {$flg="YES";} else {$flg="";} $notes = $row['notes']; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; } echo ''; echo '
Time InTime OutHoursFlagNotes
$intime$outtime" . number_format((float)(($seconds/60)/60), 2, '.', '') . "$flg$notes
'; ?>