function getAvailability() { global $configArray; if ($this->availability == null) { $this->availability = array(); require_once ROOT_DIR . '/sys/eContent/EContentAvailability.php'; $eContentAvailability = new EContentAvailability(); $eContentAvailability->recordId = $this->id; $eContentAvailability->find(); while ($eContentAvailability->fetch()) { $this->availability[] = clone $eContentAvailability; } if (strcasecmp($this->source, "OverDrive") == 0) { require_once ROOT_DIR . '/Drivers/OverDriveDriverFactory.php'; $driver = OverDriveDriverFactory::getDriver(); //echo("Loading availability from overdrive, part of " . count($this->availability) . " collections"); foreach ($this->availability as $key => $tmpAvailability) { //echo("\r\n{$tmpAvailability->libraryId}"); //Get updated availability for each library from overdrive $productKey = $configArray['OverDrive']['productsKey']; if ($tmpAvailability->libraryId != -1) { $library = new Library(); $library->libraryId = $tmpAvailability->libraryId; $library->find(true); $productKey = $library->overdriveAdvantageProductsKey; } $realtimeAvailability = $driver->getProductAvailability($this->externalId, $productKey); $tmpAvailability->copiesOwned = $realtimeAvailability->copiesOwned; $tmpAvailability->availableCopies = $realtimeAvailability->copiesAvailable; $tmpAvailability->numberOfHolds = $realtimeAvailability->numberOfHolds; $this->availability[$key] = $tmpAvailability; } } if (count($this->availability) == 0) { //Did not get availability from the Availability table if ($this->itemLevelOwnership) { //Ownership is determined at the item level based on library ids set for the item. Assume unlimited availability $items = $this->getItems(); foreach ($items as $item) { $eContentAvailability = new EContentAvailability(); $eContentAvailability->recordId = $this->id; $eContentAvailability->copiesOwned = 1; $eContentAvailability->availableCopies = 1; $eContentAvailability->numberOfHolds = 0; $eContentAvailability->libraryId = $item->libraryId; $this->availability[] = $eContentAvailability; } } else { //Ownership is shared, based on information at record level $eContentAvailability = new EContentAvailability(); $eContentAvailability->recordId = $this->id; $eContentAvailability->copiesOwned = $this->availableCopies; $checkouts = new EContentCheckout(); $checkouts->status = 'out'; $checkouts->recordId = $this->id; $checkouts->find(); $curCheckouts = $checkouts->N; if ($this->accessType == 'free') { $this->availableCopies = 999999; } $eContentAvailability->availableCopies = $this->availableCopies - $curCheckouts; $eContentAvailability->copiesOwned = $this->availableCopies; $holds = new EContentHold(); $holds->whereAdd("status in ('active', 'suspended', 'available')"); $holds->recordId = $this->id; $holds->find(); $eContentAvailability->numberOfHolds = $holds->N; $eContentAvailability->onOrderCopies = $this->onOrderCopies; $eContentAvailability->libraryId = -1; } } } return $this->availability; }
public function getNumHolds($id) { $holds = new EContentHold(); $holds->recordId = $id; $holds->whereAdd("(status = 'active' or status = 'suspended')"); $holds->find(); return $holds->N; }
public function getAccountSummary() { global $user; $accountSummary = array(); if ($user) { //Get a count of checked out items $eContentCheckout = new EContentCheckout(); $eContentCheckout->status = 'out'; $eContentCheckout->userId = $user->id; $eContentCheckout->find(); $accountSummary['numEContentCheckedOut'] = $eContentCheckout->N; //Get a count of available holds $eContentHolds = new EContentHold(); $eContentHolds->status = 'available'; $eContentHolds->userId = $user->id; $eContentHolds->find(); $accountSummary['numEContentAvailableHolds'] = $eContentHolds->N; //Get a count of unavailable holds $eContentHolds = new EContentHold(); $eContentHolds->whereAdd("status IN ('active', 'suspended')"); $eContentHolds->userId = $user->id; $eContentHolds->find(); $accountSummary['numEContentUnavailableHolds'] = $eContentHolds->N; //Get a count of items on the wishlist $eContentWishList = new EContentWishList(); $eContentWishList->status = 'active'; $eContentWishList->userId = $user->id; $eContentWishList->find(); $accountSummary['numEContentWishList'] = $eContentWishList->N; } return $accountSummary; }
public function cancelHold($itemId) { global $user; if (!$user) { return array('result' => false, 'message' => 'You must be logged in to cancel a hold'); } else { require_once ROOT_DIR . '/sys/eContent/EContentHold.php'; $eContentHold = new EContentHold(); $eContentHold->userId = $user->id; $eContentHold->recordId = $this->getUniqueID(); $eContentHold->itemId = $itemId; $eContentHold->whereAdd("status IN ('active', 'suspended')"); if ($eContentHold->find(true)) { $eContentHold->status = 'cancelled'; $eContentHold->dateUpdated = time(); if ($eContentHold->update()) { return array('result' => true, 'message' => 'Successfully cancelled this hold for you.'); } else { return array('result' => false, 'message' => 'There was an unknown error cancelling your hold on this title.'); } } else { return array('result' => false, 'message' => 'Sorry, this title is not on hold for you.'); } } }