function GetListTitles() { global $memCache; global $configArray; global $timer; $listId = $_REQUEST['listId']; $_REQUEST['id'] = 'list:' . $listId; $listName = strip_tags(isset($_GET['scrollerName']) ? $_GET['scrollerName'] : 'List' . $listId); $scrollerName = isset($_GET['scrollerName']) ? strip_tags($_GET['scrollerName']) : $listName; //Determine the caching parameters require_once ROOT_DIR . '/services/API/ListAPI.php'; $listAPI = new ListAPI(); $cacheInfo = $listAPI->getCacheInfoForList(); $listData = $memCache->get($cacheInfo['cacheName']); if (!$listData || isset($_REQUEST['reload']) || isset($listData['titles']) && count($listData['titles'] == 0)) { global $interface; $titles = $listAPI->getListTitles(); $timer->logTime("getListTitles"); $addStrandsTracking = false; if ($titles['success'] == true) { if (isset($titles['strands'])) { $addStrandsTracking = true; $strandsInfo = $titles['strands']; } $titles = $titles['titles']; if (is_array($titles)) { foreach ($titles as $key => $rawData) { $interface->assign('description', $rawData['description']); $interface->assign('length', $rawData['length']); $interface->assign('publisher', $rawData['publisher']); $descriptionInfo = $interface->fetch('Record/ajax-description-popup.tpl'); $formattedTitle = "<div id=\"scrollerTitle{$scrollerName}{$key}\" class=\"scrollerTitle\">"; $shortId = $rawData['id']; if (preg_match('/econtentRecord\\d+/i', $rawData['id'])) { $recordId = substr($rawData['id'], 14); $formattedTitle .= '<a href="' . $configArray['Site']['path'] . "/EcontentRecord/" . $recordId . ($addStrandsTracking ? "?strandsReqId={$strandsInfo['reqId']}&strandsTpl={$strandsInfo['tpl']}" : '') . '" id="descriptionTrigger' . $rawData['id'] . '">'; } else { $shortId = str_replace('.b', 'b', $shortId); $formattedTitle .= '<a href="' . $configArray['Site']['path'] . "/Record/" . $rawData['id'] . ($addStrandsTracking ? "?strandsReqId={$strandsInfo['reqId']}&strandsTpl={$strandsInfo['tpl']}" : '') . '" id="descriptionTrigger' . $shortId . '">'; } $formattedTitle .= "<img src=\"{$rawData['image']}\" class=\"scrollerTitleCover\" alt=\"{$rawData['title']} Cover\"/>" . "</a></div>" . "<div id='descriptionPlaceholder{$shortId}' style='display:none' class='loaded'>" . $descriptionInfo . "</div>"; $rawData['formattedTitle'] = $formattedTitle; $titles[$key] = $rawData; } } $currentIndex = count($titles) > 5 ? floor(count($titles) / 2) : 0; $return = array('titles' => $titles, 'currentIndex' => $currentIndex); $listData = json_encode($return); } else { $return = array('titles' => array(), 'currentIndex' => 0); $listData = json_encode($return); } $memCache->set($cacheInfo['cacheName'], $listData, 0, $cacheInfo['cacheLength']); } return $listData; }
/** * @return string JSON encoded data representing the list information */ function GetListTitles() { /** @var Memcache $memCache */ global $memCache; global $configArray; global $timer; $listName = strip_tags(isset($_GET['scrollerName']) ? $_GET['scrollerName'] : 'List' . $_GET['id']); //Determine the caching parameters require_once ROOT_DIR . '/services/API/ListAPI.php'; $listAPI = new ListAPI(); $cacheInfo = $listAPI->getCacheInfoForList(); $cacheName = $cacheInfo['cacheName']; if (isset($_REQUEST['coverSize']) && $_REQUEST['coverSize'] == 'medium') { $cacheName .= '_medium'; } $listData = $memCache->get($cacheName); if (!$listData || isset($_REQUEST['reload']) || isset($listData['titles']) && count($listData['titles']) == 0) { global $interface; $interface->assign('listName', $listName); $showRatings = isset($_REQUEST['showRatings']) && $_REQUEST['showRatings']; $interface->assign('showRatings', $showRatings); // overwrite values that come from library settings $titles = $listAPI->getListTitles(); $timer->logTime("getListTitles"); if ($titles['success'] == true) { $titles = $titles['titles']; if (is_array($titles)) { foreach ($titles as $key => $rawData) { $interface->assign('key', $key); // 20131206 James Staub: bookTitle is in the list API and it removes the final frontslash, but I didn't get $rawData['bookTitle'] to load $titleShort = preg_replace(array('/\\:.*?$/', '/\\s*\\/$\\s*/'), '', $rawData['title']); // $titleShort = preg_replace('/\:.*?$/','', $rawData['title']); // $titleShort = preg_replace('/\s*\/$\s*/','', $titleShort); $interface->assign('title', $titleShort); $interface->assign('description', isset($rawData['description']) ? $rawData['description'] : null); $interface->assign('length', isset($rawData['length']) ? $rawData['length'] : null); $interface->assign('publisher', isset($rawData['publisher']) ? $rawData['publisher'] : null); $interface->assign('shortId', $rawData['shortId']); $interface->assign('id', $rawData['id']); $rawData['titleURL'] = $configArray['Site']['path'] . '/GroupedWork/' . $rawData['id']; // assumes all are grouped works $interface->assign('titleURL', $rawData['titleURL']); $imageUrl = $rawData['small_image']; if (isset($_REQUEST['coverSize']) && $_REQUEST['coverSize'] == 'medium') { $imageUrl = $rawData['image']; } $interface->assign('imageUrl', $imageUrl); if ($showRatings) { $interface->assign('ratingData', $rawData['ratingData']); $interface->assign('showNotInterested', false); } $rawData['formattedTitle'] = $interface->fetch('ListWidget/formattedTitle.tpl'); $titles[$key] = $rawData; } } $currentIndex = count($titles) > 5 ? floor(count($titles) / 2) : 0; $listData = array('titles' => $titles, 'currentIndex' => $currentIndex); $memCache->set($cacheInfo['cacheName'], $listData, 0, $cacheInfo['cacheLength']); } else { $listData = array('titles' => array(), 'currentIndex' => 0); if ($titles['message']) { $listData['error'] = $titles['message']; } // send error message to widget javascript } } return $listData; }