diff -bwircP openbiblio.save/circ/checkout.php openbiblio/circ/checkout.php
*** openbiblio.save/circ/checkout.php 2005-03-06 16:52:05.000000000 +0100
--- openbiblio/circ/checkout.php 2005-03-06 19:04:12.000000000 +0100
***************
*** 32,37 ****
--- 32,39 ----
require_once("../classes/BiblioStatusHist.php");
require_once("../classes/BiblioStatusHistQuery.php");
require_once("../classes/MemberAccountQuery.php");
+ require_once("../classes/Member.php");
+ require_once("../classes/MemberQuery.php");
require_once("../functions/errorFuncs.php");
require_once("../functions/formatFuncs.php");
require_once("../classes/Localize.php");
***************
*** 85,90 ****
--- 87,120 ----
}
#****************************************************************************
+ #* Make sure member does not have expired membership
+ #****************************************************************************
+
+ $mbrQ = new MemberQuery();
+ $mbrQ->connect();
+ if ($mbrQ->errorOccurred()) {
+ $mbrQ->close();
+ displayErrorPage($mbrQ);
+ }
+ if (!$mbrQ->execSelect($mbrid)) {
+ $mbrQ->close();
+ displayErrorPage($mbrQ);
+ }
+ $mbr = $mbrQ->fetchMember();
+ $mbrQ->close();
+
+ if ($mbr->getMembershipEnd()!="0000-00-00") {
+ if (strtotime($mbr->getMembershipEnd())<=strtotime("now")) {
+ $pageErrors["barcodeNmbr"] = $loc->getText("checkoutEndErr");
+ $postVars["barcodeNmbr"] = $barcode;
+ $_SESSION["postVars"] = $postVars;
+ $_SESSION["pageErrors"] = $pageErrors;
+ header("Location: ../circ/mbr_view.php?mbrid=".$mbrid);
+ exit();
+ }
+ }
+
+ #****************************************************************************
#* Edit input
#****************************************************************************
if (!ctypeAlnum(trim($barcode))) {
diff -bwircP openbiblio.save/circ/mbr_edit_form.php openbiblio/circ/mbr_edit_form.php
*** openbiblio.save/circ/mbr_edit_form.php 2005-03-06 16:52:05.000000000 +0100
--- openbiblio/circ/mbr_edit_form.php 2005-03-06 18:00:39.000000000 +0100
***************
*** 76,81 ****
--- 76,82 ----
$postVars["classification"] = $mbr->getClassification();
$postVars["schoolGrade"] = $mbr->getSchoolGrade();
$postVars["schoolTeacher"] = $mbr->getSchoolTeacher();
+ $postVars["membershipEnd"] = $mbr->getMembershipEnd();
$_SESSION["postVars"] = $postVars;
$mbrName = urlencode($mbr->getFirstName()." ".$mbr->getLastName());
diff -bwircP openbiblio.save/circ/mbr_edit.php openbiblio/circ/mbr_edit.php
*** openbiblio.save/circ/mbr_edit.php 2005-03-06 16:52:05.000000000 +0100
--- openbiblio/circ/mbr_edit.php 2005-03-07 10:34:48.000000000 +0100
***************
*** 79,84 ****
--- 79,86 ----
$_POST["schoolGrade"] = $mbr->getSchoolGrade();
$mbr->setSchoolTeacher($_POST["schoolTeacher"]);
$_POST["schoolTeacher"] = $mbr->getSchoolTeacher();
+ $mbr->setMembershipEnd($_POST["membershipEnd"]);
+ $_POST["membershipEnd"] = $mbr->getMembershipEnd();
$validData = $mbr->validateData();
if (!$validData) {
$pageErrors["barcodeNmbr"] = $mbr->getBarcodeNmbrError();
***************
*** 87,92 ****
--- 89,95 ----
$pageErrors["zip"] = $mbr->getZipError();
$pageErrors["zipExt"] = $mbr->getZipExtError();
$pageErrors["schoolGrade"] = $mbr->getSchoolGradeError();
+ $pageErrors["membershipEnd"] = $mbr->getMembershipEndError();
$_SESSION["postVars"] = $_POST;
$_SESSION["pageErrors"] = $pageErrors;
header("Location: ../circ/mbr_edit_form.php");
diff -bwircP openbiblio.save/circ/mbr_fields.php openbiblio/circ/mbr_fields.php
*** openbiblio.save/circ/mbr_fields.php 2005-03-06 16:52:05.000000000 +0100
--- openbiblio/circ/mbr_fields.php 2005-03-06 18:02:33.000000000 +0100
***************
*** 148,153 ****
--- 148,161 ----
+
+ getText("mbrFldsMbrShip"); ?>
+ |
+
+
+ |
+
+
" class="button">
" class="button">
diff -bwircP openbiblio.save/circ/mbr_new.php openbiblio/circ/mbr_new.php
*** openbiblio.save/circ/mbr_new.php 2005-03-06 16:52:05.000000000 +0100
--- openbiblio/circ/mbr_new.php 2005-03-07 10:37:17.000000000 +0100
***************
*** 74,79 ****
--- 74,81 ----
$_POST["schoolGrade"] = $mbr->getSchoolGrade();
$mbr->setSchoolTeacher($_POST["schoolTeacher"]);
$_POST["schoolTeacher"] = $mbr->getSchoolTeacher();
+ $mbr->setMembershipEnd($_POST["membershipEnd"]);
+ $_POST["membershipEnd"] = $mbr->getMembershipEnd();
$validData = $mbr->validateData();
if (!$validData) {
$pageErrors["barcodeNmbr"] = $mbr->getBarcodeNmbrError();
***************
*** 82,87 ****
--- 84,90 ----
$pageErrors["zip"] = $mbr->getZipError();
$pageErrors["zipExt"] = $mbr->getZipExtError();
$pageErrors["schoolGrade"] = $mbr->getSchoolGradeError();
+ $pageErrors["membershipEnd"] = $mbr->getMembershipEndError();
$_SESSION["postVars"] = $_POST;
$_SESSION["pageErrors"] = $pageErrors;
header("Location: ../circ/mbr_new_form.php");
diff -bwircP openbiblio.save/circ/mbr_renew_mbrship.php openbiblio/circ/mbr_renew_mbrship.php
*** openbiblio.save/circ/mbr_renew_mbrship.php 1970-01-01 01:00:00.000000000 +0100
--- openbiblio/circ/mbr_renew_mbrship.php 2005-03-07 10:07:57.000000000 +0100
***************
*** 0 ****
--- 1,97 ----
+ connect();
+ if ($mbrQ->errorOccurred()) {
+ $mbrQ->close();
+ displayErrorPage($mbrQ);
+ }
+ if (!$mbrQ->execSelect($mbrid)) {
+ $mbrQ->close();
+ displayErrorPage($mbrQ);
+ }
+ $mbr = $mbrQ->fetchMember();
+
+ if (($mbr->getMembershipEnd()!="0000-00-00") and (strtotime($mbr->getMembershipEnd())>strtotime("now"))) {
+ $year = substr($mbr->getMembershipEnd(), 0, 4);
+ $month = (int)substr($mbr->getMembershipEnd(), 5, 2);
+ $day = (int)substr($mbr->getMembershipEnd(), 8, 2);
+ $month = $month + $length;
+ $newdate = date("Y-m-d",mktime(0,0,0,$month,$day,$year));
+ $mbr->setMembershipEnd($newdate);
+ } else {
+ $temp=$neu = strtotime("+$length month");
+ $newdate = date("Y-m-d",$temp);
+ $mbr->setMembershipEnd($newdate);
+ }
+
+ if (!$mbrQ->update($mbr)) {
+ $mbrQ->close();
+ displayErrorPage($mbrQ);
+ }
+
+ $mbrQ->close();
+
+ #**************************************************************************
+ #* Destroy form values and errors
+ #**************************************************************************
+ unset($_SESSION["postVars"]);
+ unset($_SESSION["pageErrors"]);
+
+ $msg = $loc->getText("mbrRenewSuccess",array("length"=>$length));
+ $msg = urlencode($msg);
+ header("Location: ../circ/mbr_view.php?mbrid=".$mbr->getMbrid()."&reset=Y&msg=".$msg);
+ exit();
+ }
+ ?>
diff -bwircP openbiblio.save/circ/mbr_view.php openbiblio/circ/mbr_view.php
*** openbiblio.save/circ/mbr_view.php 2005-03-06 16:52:05.000000000 +0100
--- openbiblio/circ/mbr_view.php 2005-03-06 21:42:04.000000000 +0100
***************
*** 116,121 ****
--- 116,130 ----
$mbr = $mbrQ->fetchMember();
$mbrQ->close();
+ #****************************************************************************
+ #* Check for expired membership
+ #****************************************************************************
+
+ if ($mbr->getMembershipEnd()!="0000-00-00") {
+ if (strtotime($mbr->getMembershipEnd())<=strtotime("now"))
+ $expMsg = "".$loc->getText("mbrViewShipEnd")."
";
+ }
+
#**************************************************************************
#* Show member information
#**************************************************************************
***************
*** 123,128 ****
--- 132,138 ----
?>
+
***************
*** 216,221 ****
--- 226,242 ----
getSchoolTeacher();?>
+
+
+ getText("mbrViewMbrShipEnd"); ?>
+ |
+
+ getMembershipEnd()=="0000-00-00") print $loc->getText("mbrViewMbrShipNoEnd");
+ else echo $mbr->getMembershipEnd();
+ ?>
+ |
+
|
***************
*** 291,296 ****
--- 312,326 ----
+ getText("mbrViewRenew1")." 1 6 12 ".$loc->getText("mbrViewRenew2");
+
+ ?>
+
diff -bwircP openbiblio.save/classes/Member.php openbiblio/classes/Member.php
*** openbiblio.save/classes/Member.php 2005-03-06 16:52:05.000000000 +0100
--- openbiblio/classes/Member.php 2005-03-07 10:28:23.000000000 +0100
***************
*** 59,64 ****
--- 59,66 ----
var $_schoolGrade = "";
var $_schoolGradeError = "";
var $_schoolTeacher = "";
+ var $_membershipEnd = "";
+ var $_membershipEndError = "";
function Member () {
$this->_loc = new Localize(OBIB_LOCALE,"classes");
***************
*** 110,115 ****
--- 112,127 ----
$valid = false;
$this->_schoolGradeError = $this->_loc->getText("MemberErr10");
}
+ if ($this->getMembershipEnd()!="0000-00-00") {
+ $year = substr($this->getMembershipEnd(), 0, 4);
+ $month = (int)substr($this->getMembershipEnd(), 5, 2);
+ $day = (int)substr($this->getMembershipEnd(), 8, 2);
+ if (!checkdate($month,$day,$year)) {
+ $valid = false;
+ $this->_membershipEndError = $this->_loc->getText("MemberErr11");
+ }
+ }
return $valid;
}
***************
*** 203,208 ****
--- 215,226 ----
function getSchoolTeacher() {
return $this->_schoolTeacher;
}
+ function getMembershipEnd() {
+ return $this->_membershipEnd;
+ }
+ function getMembershipEndError() {
+ return $this->_membershipEndError;
+ }
/****************************************************************************
* Setter methods for all fields
***************
*** 301,306 ****
--- 319,335 ----
function setSchoolTeacher($value) {
$this->_schoolTeacher = trim($value);
}
+ function setMembershipEnd ($value) {
+ $temp = trim($value);
+ if ($temp == "") {
+ $this->_membershipEnd = "0000-00-00";
+ } else {
+ $this->_membershipEnd = $temp;
+ }
+ }
+ function setMembershipEndError($value) {
+ $this->_membershipEndError = trim($value);
+ }
}
diff -bwircP openbiblio.save/classes/MemberQuery.php openbiblio/classes/MemberQuery.php
*** openbiblio.save/classes/MemberQuery.php 2005-03-06 16:52:05.000000000 +0100
--- openbiblio/classes/MemberQuery.php 2005-03-06 19:11:28.000000000 +0100
***************
*** 154,159 ****
--- 158,164 ----
$mbr->setClassification($array["classification"]);
$mbr->setSchoolGrade($array["school_grade"]);
$mbr->setSchoolTeacher($array["school_teacher"]);
+ $mbr->setMembershipEnd($array["mbrshipend"]);
return $mbr;
}
***************
*** 190,196 ****
function insert($mbr) {
$sql = $this->mkSQL("insert into member "
. "values (null, %Q, sysdate(), sysdate(), %N, %Q, %Q, "
! . " %Q, %Q, %Q, %Q, %N, %N, %Q, %Q, %Q, %Q, %Q, %Q) ",
$mbr->getBarcodeNmbr(), $mbr->getLastChangeUserid(),
$mbr->getLastName(), $mbr->getFirstName(),
$mbr->getAddress1(), $mbr->getAddress2(),
--- 195,201 ----
function insert($mbr) {
$sql = $this->mkSQL("insert into member "
. "values (null, %Q, sysdate(), sysdate(), %N, %Q, %Q, "
! . " %Q, %Q, %Q, %Q, %N, %N, %Q, %Q, %Q, %Q, %Q, %Q, %Q) ",
$mbr->getBarcodeNmbr(), $mbr->getLastChangeUserid(),
$mbr->getLastName(), $mbr->getFirstName(),
$mbr->getAddress1(), $mbr->getAddress2(),
***************
*** 198,202 ****
$mbr->getZip(), $mbr->getZipExt(),
$mbr->getHomePhone(), $mbr->getWorkPhone(),
$mbr->getEmail(), $mbr->getClassification(),
! $mbr->getSchoolGrade(), $mbr->getSchoolTeacher());
--- 203,208 ----
$mbr->getZip(), $mbr->getZipExt(),
$mbr->getHomePhone(), $mbr->getWorkPhone(),
$mbr->getEmail(), $mbr->getClassification(),
! $mbr->getSchoolGrade(), $mbr->getSchoolTeacher(),
! $mbr->getMembershipEnd());
***************
*** 221,227 ****
. " address1=%Q, address2=%Q, city=%Q, state=%Q, "
. " zip=%N, zip_ext=%N, home_phone=%Q, work_phone=%Q, "
. " email=%Q, classification=%Q, school_grade=%Q, "
! . " school_teacher=%Q "
. "where mbrid=%N",
$mbr->getLastChangeUserid(), $mbr->getBarcodeNmbr(),
$mbr->getLastName(), $mbr->getFirstName(),
--- 227,233 ----
. " address1=%Q, address2=%Q, city=%Q, state=%Q, "
. " zip=%N, zip_ext=%N, home_phone=%Q, work_phone=%Q, "
. " email=%Q, classification=%Q, school_grade=%Q, "
! . " school_teacher=%Q, mbrshipend=%Q "
. "where mbrid=%N",
$mbr->getLastChangeUserid(), $mbr->getBarcodeNmbr(),
$mbr->getLastName(), $mbr->getFirstName(),
***************
*** 231,235 ****
$mbr->getHomePhone(), $mbr->getWorkPhone(),
$mbr->getEmail(), $mbr->getClassification(),
$mbr->getSchoolGrade(), $mbr->getSchoolTeacher(),
! $mbr->getMbrid());
--- 237,241 ----
$mbr->getHomePhone(), $mbr->getWorkPhone(),
$mbr->getEmail(), $mbr->getClassification(),
$mbr->getSchoolGrade(), $mbr->getSchoolTeacher(),
! $mbr->getMembershipEnd(), $mbr->getMbrid());
diff -bwircP openbiblio.save/install/sql/member.sql openbiblio/install/sql/member.sql
*** openbiblio.save/install/sql/member.sql 2005-03-06 16:52:05.000000000 +0100
--- openbiblio/install/sql/member.sql 2005-03-06 19:11:28.000000000 +0100
***************
*** 18,22 ****
--- 18,23 ----
,classification char(1) not null
,school_grade tinyint null
,school_teacher varchar(50) null
+ ,mbrshipend date not null
)
;
diff -bwircP openbiblio.save/locale/en/circulation.php openbiblio/locale/en/circulation.php
*** openbiblio.save/locale/en/circulation.php 2005-03-06 16:52:05.000000000 +0100
--- openbiblio/locale/en/circulation.php 2005-03-07 10:12:26.000000000 +0100
***************
*** 89,94 ****
--- 89,95 ----
$trans["mbrFldsClassify"] = "\$text='Classification:';";
$trans["mbrFldsGrade"] = "\$text='School Grade:';";
$trans["mbrFldsTeacher"] = "\$text='School Teacher:';";
+ $trans["mbrFldsMbrShip"] = "\$text='paid until (yyyy-mm-dd):';";
$trans["mbrFldsSubmit"] = "\$text='Submit';";
$trans["mbrFldsCancel"] = "\$text='Cancel';";
$trans["mbrsearchResult"] = "\$text='Result Pages: ';";
***************
*** 109,114 ****
--- 110,116 ----
#* Translation text for page mbr_edit.php
#****************************************************************************
$trans["mbrEditSuccess"] = "\$text='Member has been successfully updated.';";
+ $trans["mbrRenewSuccess"] = "\$text='Membership was sucessfully renewed for %length% month.';";
#****************************************************************************
#* Translation text for page mbr_view.php
***************
*** 124,129 ****
--- 126,133 ----
$trans["mbrViewEmail"] = "\$text='Email Address:';";
$trans["mbrViewGrade"] = "\$text='School Grade:';";
$trans["mbrViewTeacher"] = "\$text='School Teacher:';";
+ $trans["mbrViewMbrShipEnd"] = "\$text='paid until:';";
+ $trans["mbrViewMbrShipNoEnd"] = "\$text='unlimited/not used';";
$trans["mbrViewHead2"] = "\$text='Checkout Stats:';";
$trans["mbrViewStatColHdr1"] = "\$text='Material';";
$trans["mbrViewStatColHdr2"] = "\$text='Count';";
***************
*** 158,170 ****
--- 162,178 ----
$trans["mbrViewHoldHdr8"] = "\$text='Due Back';";
$trans["mbrViewNoHolds"] = "\$text='No bibliographies are currently on hold.';";
$trans["mbrViewBalMsg"] = "\$text='Note: Member has an outstanding account balance of %bal%.';";
+ $trans["mbrViewShipEnd"] = "\$text='Attention: Membership of this member has expired!';"
$trans["mbrPrintCheckouts"] = "\$text='print checkouts';";
$trans["mbrViewDel"] = "\$text='Del';";
+ $trans["mbrViewRenew"] = "\$text='Renew membership for';";
+ $trans["mbrViewRenew2"] = "\$text='month.
Since Today or since Paid-Until-Date, if it's in future.';";
#****************************************************************************
#* Translation text for page checkout.php
#****************************************************************************
$trans["checkoutBalErr"] = "\$text='Member must pay outstanding account balance before checking out.';";
+ $trans["checkoutEndErr"] = "\$text='Member must renew membership before checking out.';";
$trans["checkoutErr1"] = "\$text='Barcode number must be all alphanumeric.';";
$trans["checkoutErr2"] = "\$text='No bibliography was found with that barcode number.';";
$trans["checkoutErr3"] = "\$text='Bibliography with barcode number %barcode% is already checked out.';";
diff -bwircP openbiblio.save/locale/en/classes.php openbiblio/locale/en/classes.php
*** openbiblio.save/locale/en/classes.php 2005-03-06 16:52:05.000000000 +0100
--- openbiblio/locale/en/classes.php 2005-03-07 10:26:07.000000000 +0100
***************
*** 243,248 ****
--- 243,249 ----
$trans["MemberErr8"] = "\$text = 'Zip code extension must not contain a decimal point.';";
$trans["MemberErr9"] = "\$text = 'School grade must be numeric.';";
$trans["MemberErr10"] = "\$text = 'School grade must not contain a decimal point.';";
+ $trans["MemberErr11"] = "\$text = 'The enddate isn't valid.';";
$trans["MemberQueryErr1"] = "\$text = 'Error counting library member search results.';";
$trans["MemberQueryErr2"] = "\$text = 'Error searching library member information.';";
$trans["MemberQueryErr3"] = "\$text = 'Error accessing library member information.';";
diff -bwircP openbiblio.save/locale/en/sql/member.sql openbiblio/locale/en/sql/member.sql
*** openbiblio.save/locale/en/sql/member.sql 2005-03-06 16:52:05.000000000 +0100
--- openbiblio/locale/en/sql/member.sql 2005-03-06 19:15:05.000000000 +0100
***************
*** 1,3 ****
! insert into %prfx%member values (null,101,sysdate(),sysdate(),1,'Cat','Huckle','101 1st Street',null,'BusyTown','IA',12345,null,'111-222-3333',null,'me@mydomain.name','j',2,'Mrs. Applebee');
! insert into %prfx%member values (null,102,sysdate(),sysdate(),1,'Bilbo','Baggins','Hole 1, 1st Street',null,'The Shire','IA',12345,null,'111-222-3333',null,'me@mydomain.name','a',null,null);
! insert into %prfx%member values (null,103,sysdate(),sysdate(),1,'Frodo','Baggins','Hole 2, 1st Street',null,'The Shire','IA',12345,null,'111-222-3333',null,'me@mydomain.name','a',null,null);
--- 1,3 ----
! insert into %prfx%member values (null,101,sysdate(),sysdate(),1,'Cat','Huckle','101 1st Street',null,'BusyTown','IA',12345,null,'111-222-3333',null,'me@mydomain.name','j',2,'Mrs. Applebee','0000-00-00');
! insert into %prfx%member values (null,102,sysdate(),sysdate(),1,'Bilbo','Baggins','Hole 1, 1st Street',null,'The Shire','IA',12345,null,'111-222-3333',null,'me@mydomain.name','a',null,null,'0000-00-00');
! insert into %prfx%member values (null,103,sysdate(),sysdate(),1,'Frodo','Baggins','Hole 2, 1st Street',null,'The Shire','IA',12345,null,'111-222-3333',null,'me@mydomain.name','a',null,null,'0000-00-00');