From 37eab1fba019805d3333aed05c90c7c8ff4fdb37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Bakkeli?= Date: Wed, 14 Sep 2011 15:34:33 +0200 Subject: [PATCH] Standarized how expiry and stamp periods are used --- inside/Page.php | 8 ++--- inside/User.php | 74 +++++++++++++++++++------------------- inside/functions.php | 32 +++++++++++++++-- inside/setcardproduced.php | 2 +- 4 files changed, 72 insertions(+), 44 deletions(-) diff --git a/inside/Page.php b/inside/Page.php index 2215810..2e3d66c 100644 --- a/inside/Page.php +++ b/inside/Page.php @@ -3465,12 +3465,12 @@ Om dere lager en facebook side til arrangementet, ikke glem å putte inn le print "produser kort"; } elseif (!$user->getCardDelivered()) { print ""; - print "getNewStickerDate() . "\" />"; - print "getNewStickerDate() . ")\" />"; + print "expiry) . "\" />"; + print "expiry) . ")\" />"; } elseif (!$user->hasCardSticker()) { print ""; - print "getNewStickerDate() . "\" />"; - print "getNewStickerDate() . ")\" />"; + print "expiry) . "\" />"; + print "expiry) . ")\" />"; } else { print "-"; } diff --git a/inside/User.php b/inside/User.php index 8b76683..cd83bdb 100644 --- a/inside/User.php +++ b/inside/User.php @@ -550,7 +550,7 @@ class User { $this->cardno = $cardno; } - $expires = $this->getExpiryDate(); + $expires = getNextMembershipExpiryDate(); $sql = "UPDATE din_user SET cardno=" . $this->cardno . ", expires = '$expires' WHERE id=" . $this->id; $result = $this->conn->query($sql); @@ -572,7 +572,7 @@ class User { notify("Du har allerede gyldig medlemskap for dette året."); return false; } - $expires = $this->getExpiryDate(); + $expires = getNextMembershipExpiryDate(); $this->conn->autoCommit(false); if ($this->_registerUsedCardno($cardno) == true) { $sql = "UPDATE din_user SET " . " expires = '$expires' " . "WHERE " . " id = $this->id"; @@ -599,7 +599,7 @@ class User { notify("Du har allerede gyldig medlemskap for dette året."); return false; } - $expires = $this->getExpiryDate(); + $expires = getNextMembershipExpiryDate(); $this->conn->autoCommit(false); $sql = "UPDATE din_user SET " . " expires = '$expires' " . "WHERE " . " id = $this->id"; $result = $this->conn->query($sql); @@ -623,7 +623,7 @@ class User { // har allerede gyldig medlemskap return false; } - $expires = $this->getExpiryDate(); + $expires = getNextMembershipExpiryDate(); $this->conn->autoCommit(false); $sql = "UPDATE din_user SET " . " expires = '$expires' " . "WHERE " . " id = $this->id"; $result = $this->conn->query($sql); @@ -646,7 +646,7 @@ class User { notify($this->id . ", " . $this->getName() . " er livsvarig medlem. Medlemskapet vil ikke bli oppdater."); return false; } else { - $expires = $this->getExpiryDate(); + $expires = getNextMembershipExpiryDate(); if ($expires <= $this->expires) { $newexpires = date("Y-m-d", strtotime("+1 year", strtotime($expires))); notify($this->id . ", " . $this->getName() . " har allerede gyldig medlemskap for dette året. Har utløpsdato " . $this->expires . ", men ny ble prøvd satt til " . $expires . ". Personen vil få satt ny utløpsdate på medlemskapet til " . $newexpires); @@ -710,19 +710,21 @@ class User { error($result->toString()); } } - + + /* + * $newDate = YYYY-MM-DD or null (lifetime membership) + * Requires a full date for expiry, has to end on 1. of august or we get an exception. + */ public function updateExpiry($newDate) { - if(preg_match('#^\d{4}/\d{2}$#', $newDate)) - { - $newDate = substr($newDate,0,2) . substr($newDate,5,2); - } + if($newDate !== null && !preg_match("#^\d{4}-\d{2}-\d{2}$#", $newDate)) + throw new Exception("Invalid date: $newDate"); - if ($newDate == 'lifetime') { + if ($newDate === null) { $sql = "UPDATE din_user SET expires = NULL WHERE id = $this->id LIMIT 1"; } else { - $expires = $this->getExpiryDate($newDate); - $sql = "UPDATE din_user SET expires = '$expires' WHERE id = $this->id LIMIT 1"; + $sql = "UPDATE din_user SET expires = '$newDate' WHERE id = $this->id LIMIT 1"; } + $conn = db_connect(); $result = $this->conn->query($sql); if (DB :: isError($result) != true) { @@ -732,8 +734,13 @@ class User { error($result->toString()); } } - + /* + * $newDate = YYYY | YYYY/YY + */ public function updateLastSticker($newDate) { + if(!preg_match('#^\d{4}(/\d{2})?$#', $newDate)) + throw new Exception("Invalid date format: $newDate"); + $sql = "UPDATE din_user SET lastSticker = '$newDate' WHERE id = $this->id LIMIT 1"; $result = $this->conn->query($sql); if (DB :: isError($result) != true) { @@ -918,31 +925,21 @@ class User { } public function hasCardSticker() { - if ($this->getLastSticker() >= date("Y", strtotime($this->expires))) { + return $this->getLastSticker() != getStickerPeriod($this->expires); + /* if ( $this->getLastSticker() != getStickerPeriod($this->expires) ) { return true; } + return false;*/ } - public function getNewStickerDate() + /*public function getNewStickerDate() { $year = substr($this->getExpiryDate(),0,4); return (substr($year,0,4) - 1) . '/' . substr($year,2,2); } - +*/ public function getExpiryDate($year = null) { - if($year) - { - return $year . '-08-01'; - } - - if (date("m-d") > "08-01" ) - { - return date("Y", strtotime("+1 year")) . '-08-01'; - } - else - { - return date("Y") . '-08-01'; - } + return getExpiryDate($year); } public function _registerUsedCardno($cardno) { @@ -1068,6 +1065,9 @@ class User { } public function setExpires($value) { + + $this->updateExpiry($value); + /* $sql = "UPDATE din_user SET expires = '$value' " . "WHERE id = $this->id"; $result = $this->conn->query($sql); @@ -1075,7 +1075,7 @@ class User { if (DB :: isError($result) != true) { $this->_registerUpdate("Utløpsdato endret til $value"); notify("Utløpsdato for $this->firstname $this->lastname er endret til $value"); - } + }*/ } public function updateDivisionRequest($value) { @@ -1243,11 +1243,11 @@ class User { print "\n"; print "\n"; print "\n"; @@ -1271,7 +1271,7 @@ class User { print "\n"; print "\n"; print "\n"; - print ""; + print ""; print ""; print ""; print ""; diff --git a/inside/functions.php b/inside/functions.php index 1623ce5..7c2d567 100644 --- a/inside/functions.php +++ b/inside/functions.php @@ -1571,8 +1571,36 @@ function strip_nl($string) { function getStickerPeriod($time) { - $start = date('Y', strtotime($time)); - return $start . '/' . (substr($start,2,2) + 1); + $time = is_numeric($time)?$time:strtotime($time); + + if($time < strtotime('2011-08-01')) + return date('Y', $time); //gammelt klistremerke + + $year = date('Y', $time); + return ($year - 1) . '/' . substr($year, 2); +} + +function getNextMembershipExpiryDate() +{ + return getExpiryDate(); +} + +/* + * Returns the next expiry date for a given time. + */ +function getExpiryDate($time = null) +{ + if($time == null) $time = time(); + $time = is_numeric($time)?$time:strtotime($time); + + if (date("m-d", $time) > "08-01" ) + { + return date("Y", strtotime("+1 year", $time)) . '-08-01'; + } + else + { + return date("Y", $time) . '-08-01'; + } } // Migration (nikolark) diff --git a/inside/setcardproduced.php b/inside/setcardproduced.php index f71b895..2fabe4e 100644 --- a/inside/setcardproduced.php +++ b/inside/setcardproduced.php @@ -8,7 +8,7 @@ $userid = $_GET["userid"]; $user = new User($userid); $user->setCardProduced(1); -$user->updateLastSticker(date("Y", strtotime($user->getExpiryDate($user->cardno)))); +$user->updateLastSticker($user->getExpiryDate()); $user->sendCardProducedNotifyMail(); ?>