Пример #1
0
 function launch()
 {
     global $interface;
     global $configArray;
     $results = array();
     $epubFile = new EContentItem();
     $currentPage = isset($_REQUEST['page']) ? $_REQUEST['page'] : 1;
     $recordsPerPage = 25;
     $searchUrl = $configArray['Site']['path'] . '/EContent/Search';
     $searchParams = array();
     foreach ($_REQUEST as $key => $value) {
         if (!in_array($key, array('module', 'action', 'page'))) {
             $searchParams[] = "{$key}={$value}";
         }
     }
     $searchUrl = $searchUrl . '?page=%d&' . implode('&', $searchParams);
     $interface->assign('page', $currentPage);
     $epubFile = new EContentRecord();
     if (isset($_REQUEST['sortOptions'])) {
         $epubFile->orderBy($_REQUEST['sortOptions']);
         $interface->assign('sort', $_REQUEST['sortOptions']);
     }
     $numTotalFiles = $epubFile->count();
     $epubFile->limit(($currentPage - 1) * $recordsPerPage, 20);
     $epubFile->find();
     if ($epubFile->N > 0) {
         while ($epubFile->fetch()) {
             $results[] = clone $epubFile;
         }
     }
     $interface->assign('results', $results);
     $options = array('totalItems' => $numTotalFiles, 'fileName' => $searchUrl, 'perPage' => $recordsPerPage);
     $pager = new VuFindPager($options);
     $interface->assign('pageLinks', $pager->getLinks());
     $interface->setTemplate('search.tpl');
     $interface->display('layout.tpl');
 }
Пример #2
0
 /**
  * Returns information about the titles within a list including:
  * - Title, Author, Bookcover URL, description, record id
  */
 function getListTitles($listId = NULL, Pagination $pagination = NULL)
 {
     global $configArray;
     if (!$listId) {
         if (!isset($_REQUEST['id'])) {
             return array('success' => false, 'message' => 'The id of the list to load must be provided as the id parameter.');
         }
         $listId = $_REQUEST['id'];
     }
     if (isset($_REQUEST['username']) && isset($_REQUEST['password'])) {
         $username = $_REQUEST['username'];
         $password = $_REQUEST['password'];
         global $user;
         $user = UserAccount::validateAccount($username, $password);
     } else {
         global $user;
     }
     if ($user) {
         $userId = $user->id;
     }
     if (is_numeric($listId) || preg_match('/list[-:](.*)/', $listId, $listInfo)) {
         if (isset($listInfo)) {
             $listId = $listInfo[1];
         }
         return $this->_getUserListTitles($listId);
     } elseif (preg_match('/search:(.*)/', $listId, $searchInfo)) {
         if (is_numeric($searchInfo[1])) {
             $titles = $this->getSavedSearchTitles($searchInfo[1]);
             if ($titles && count($titles) > 0) {
                 return array('success' => true, 'listTitle' => $listId, 'listDescription' => "Search Results", 'titles' => $titles, 'cacheLength' => 4);
             } else {
                 return array('success' => false, 'message' => 'The specified search could not be found.');
             }
         } else {
             //Do a default search
             $titles = $this->getSystemListTitles($listId);
             if (count($titles) > 0) {
                 return array('success' => true, 'listTitle' => $listId, 'listDescription' => "System Generated List", 'titles' => $titles, 'cacheLength' => 4);
             } else {
                 return array('success' => false, 'message' => 'The specified list could not be found.');
             }
         }
     } else {
         $systemList = null;
         $systemLists = $this->getSystemLists();
         foreach ($systemLists['lists'] as $curSystemList) {
             if ($curSystemList['id'] == $listId) {
                 $systemList = $curSystemList;
                 break;
             }
         }
         //The list is a system generated list
         if ($listId == 'newEpub' || $listId == 'newebooks') {
             require_once ROOT_DIR . 'sys/eContent/EContentRecord.php';
             $eContentRecord = new EContentRecord();
             $eContentRecord->orderBy('date_added DESC');
             $eContentRecord->limit(0, 30);
             $eContentRecord->find();
             $titles = array();
             while ($eContentRecord->fetch()) {
                 $titles[] = $this->setEcontentRecordInfoForList($eContentRecord);
             }
             return array('success' => true, 'listTitle' => $systemList['title'], 'listDescription' => $systemList['description'], 'titles' => $titles, 'cacheLength' => 1);
         } elseif ($listId == 'freeEbooks') {
             if (!$pagination) {
                 $pagination = new Pagination();
             }
             require_once ROOT_DIR . 'sys/eContent/EContentRecord.php';
             $eContentRecord = new EContentRecord();
             $eContentRecord->orderBy('date_added DESC');
             $eContentRecord->whereAdd('accessType = \'free\'');
             $eContentRecord->limit($pagination->getOffset(), $pagination->getNumItemsPerPage());
             $eContentRecord->find();
             $titles = array();
             while ($eContentRecord->fetch()) {
                 $titles[] = $this->setEcontentRecordInfoForList($eContentRecord);
             }
             return array('success' => true, 'listTitle' => $systemList['title'], 'listDescription' => $systemList['description'], 'titles' => $titles, 'cacheLength' => 1);
         } elseif ($listId == 'highestRated') {
             $query = "SELECT record_id, AVG(rating) FROM `user_rating` inner join resource on resourceid = resource.id GROUP BY resourceId order by AVG(rating) DESC LIMIT 30";
             $result = mysql_query($query);
             $ids = array();
             while ($epubInfo = mysql_fetch_assoc($result)) {
                 $ids[] = $epubInfo['record_id'];
             }
             $titles = $this->loadTitleInformationForIds($ids);
             return array('success' => true, 'listTitle' => $systemList['title'], 'listDescription' => $systemList['description'], 'titles' => $titles, 'cacheLength' => 1);
         } elseif ($listId == 'highestRatedEContent') {
             require_once ROOT_DIR . '/sys/eContent/EContentRating.php';
             $econtentRating = new EContentRating();
             $records = $econtentRating->getRecordsListAvgRating("DESC", 30);
             $titles = array();
             if (!empty($records)) {
                 foreach ($records as $eContentRecord) {
                     $titles[] = $this->setEcontentRecordInfoForList($eContentRecord);
                 }
             }
             return array('success' => true, 'listTitle' => $systemList['title'], 'listDescription' => $systemList['description'], 'titles' => $titles, 'cacheLength' => 1);
         } elseif ($listId == 'recentlyReviewed') {
             $query = "SELECT record_id, MAX(created) FROM `comments` inner join resource on resource_id = resource.id group by resource_id order by max(created) DESC LIMIT 30";
             $result = mysql_query($query);
             $ids = array();
             while ($epubInfo = mysql_fetch_assoc($result)) {
                 $ids[] = $epubInfo['record_id'];
             }
             $titles = $this->loadTitleInformationForIds($ids);
             return array('success' => true, 'listTitle' => $systemList['title'], 'listDescription' => $systemList['description'], 'titles' => $titles, 'cacheLength' => 1);
         } elseif ($listId == 'mostPopular') {
             $query = "SELECT record_id, count(userId) from user_reading_history inner join resource on resourceId = resource.id GROUP BY resourceId order by count(userId) DESC LIMIT 30";
             $result = mysql_query($query);
             $ids = array();
             while ($epubInfo = mysql_fetch_assoc($result)) {
                 $ids[] = $epubInfo['record_id'];
             }
             $titles = $this->loadTitleInformationForIds($ids);
             return array('success' => true, 'listTitle' => $systemList['title'], 'listDescription' => $systemList['description'], 'titles' => $titles, 'cacheLength' => 1);
         } elseif ($listId == 'recommendations') {
             if (!$user) {
                 return array('success' => false, 'message' => 'A valid user must be provided to load recommendations.');
             } else {
                 $userId = $user->id;
                 require_once ROOT_DIR . '/services/MyResearch/lib/Suggestions.php';
                 $suggestions = Suggestions::getSuggestions($userId);
                 $titles = array();
                 foreach ($suggestions as $id => $suggestion) {
                     $imageUrl = $configArray['Site']['coverUrl'] . "/bookcover.php?id=" . $id;
                     if (isset($suggestion['titleInfo']['issn'])) {
                         $imageUrl .= "&issn=" . $suggestion['titleInfo']['issn'];
                     }
                     if (isset($suggestion['titleInfo']['isbn10'])) {
                         $imageUrl .= "&isn=" . $suggestion['titleInfo']['isbn10'];
                     }
                     if (isset($suggestion['titleInfo']['upc'])) {
                         $imageUrl .= "&upc=" . $suggestion['titleInfo']['upc'];
                     }
                     if (isset($suggestion['titleInfo']['format_category'])) {
                         $imageUrl .= "&category=" . $suggestion['titleInfo']['format_category'];
                     }
                     $smallImageUrl = $imageUrl . "&size=small";
                     $imageUrl .= "&size=medium";
                     $titles[] = array('id' => $id, 'image' => $imageUrl, 'small_image' => $smallImageUrl, 'title' => $suggestion['titleInfo']['title'], 'author' => $suggestion['titleInfo']['author']);
                 }
                 return array('success' => true, 'listTitle' => $systemList['title'], 'listDescription' => $systemList['description'], 'titles' => $titles, 'cacheLength' => 0);
             }
         } else {
             return array('success' => false, 'message' => 'The specified list could not be found.');
         }
     }
 }
Пример #3
0
 function loadCollectionDetails($source, $startDate, $endDate, $itemsPerPage, $startRecord)
 {
     $collectionDetails = array();
     $collectionDetails['records'] = array();
     $econtentRecord = new EContentRecord();
     $econtentRecord->source = $source;
     $econtentRecord->status = 'active';
     $econtentRecord->whereAdd("date_added >= {$startDate->getTimestamp()}");
     $econtentRecord->whereAdd("date_added < {$endDate->getTimestamp()}");
     $econtentRecord->orderBy('title');
     $econtentRecordCount = clone $econtentRecord;
     if ($itemsPerPage > 0) {
         $econtentRecord->limit($startRecord, $itemsPerPage);
     }
     $econtentRecord->find();
     while ($econtentRecord->fetch()) {
         $collectionDetails['records'][] = clone $econtentRecord;
     }
     //Get the total number of available results
     $econtentRecordCount->find();
     $numTotalRecords = $econtentRecordCount->N;
     $collectionDetails['resultTotal'] = $numTotalRecords;
     $collectionDetails['perPage'] = $itemsPerPage;
     return $collectionDetails;
 }