/** * Load information from the review provider and update the interface with the data. * * @return array Returns array with review data, otherwise a * PEAR_Error. */ static function loadReviews($id, $isbn, $includeEditorial = false) { global $interface; global $configArray; /** @var Memcache $memCache */ global $memCache; $reviews = $memCache->get("reviews_{$isbn}"); if (!$reviews || isset($_REQUEST['reload'])) { // Fetch from provider if (isset($configArray['Content']['reviews'])) { $providers = explode(',', $configArray['Content']['reviews']); foreach ($providers as $provider) { $provider = explode(':', trim($provider)); $func = strtolower($provider[0]); $key = $provider[1]; $reviews[$func] = Record_Reviews::$func($isbn, $key); // If the current provider had no valid reviews, store nothing: if (empty($reviews[$func]) || PEAR_Singleton::isError($reviews[$func])) { unset($reviews[$func]); } else { if (is_array($reviews[$func])) { foreach ($reviews[$func] as $key => $reviewData) { $reviews[$func][$key] = Record_Reviews::cleanupReview($reviews[$func][$key]); } } else { $reviews[$func] = Record_Reviews::cleanupReview($reviews[$func]); } } } } $memCache->set("reviews_{$isbn}", $reviews, 0, $configArray['Caching']['purchased_reviews']); } //Load Editorial Reviews if ($includeEditorial) { if (isset($id)) { $recordId = $id; $editorialReview = new EditorialReview(); $editorialReviewResults = array(); $editorialReview->whereAdd("recordId = '{$recordId}'"); $editorialReview->find(); if ($editorialReview->N > 0) { while ($editorialReview->fetch()) { $editorialReviewResults[] = clone $editorialReview; } } //$reviews["editorialReviews"] = array(); if (count($editorialReviewResults) > 0) { foreach ($editorialReviewResults as $key => $result) { $reviews["editorialReviews"][$key]["Content"] = $result->review; $reviews["editorialReviews"][$key]["Copyright"] = $result->source; $reviews["editorialReviews"][$key]["Source"] = $result->source; $reviews["editorialReviews"][$key]["ISBN"] = null; $reviews["editorialReviews"][$key]["username"] = null; $reviews["editorialReviews"][$key] = Record_Reviews::cleanupReview($reviews["editorialReviews"][$key]); if ($result->teaser) { $reviews["editorialReviews"][$key]["Teaser"] = $result->teaser; } } } } } //Load Reviews from Good Reads if ($isbn) { require_once ROOT_DIR . '/sys/NovelistFactory.php'; $novelist = NovelistFactory::getNovelist(); $enrichment = $novelist->loadEnrichment($isbn); if (isset($enrichment['goodReads'])) { $reviews['goodReads'] = $enrichment['goodReads']; } } if ($reviews) { if (!PEAR_Singleton::isError($reviews)) { $interface->assign('reviews', $reviews); } else { echo $reviews; } } return $reviews; }