示例#1
0
 function loadUsageSummary($selectedDateStart, $selectedDateEnd, $selectedSourceFilter, $selectedAccessTypeFilter, $minFilter, $maxFilter, $interface)
 {
     $usageSummary = array();
     $columns = array('title' => 'Title', 'source' => 'Source', 'readOnline' => 'Read Online', 'download' => 'Downloaded', 'numViews' => 'Total Usage', 'placeHold' => 'Hold Placed', 'checkedOut' => 'Checked Out', 'checkedIn' => 'Returned Early', 'numUsers' => 'Total Users');
     $usageSummary['columns'] = $columns;
     $epubHistory = new EContentHistoryEntry();
     //Setup paging for use in the query
     $currentPage = 1;
     $startRecord = 1;
     $itemsPerPage = isset($_REQUEST['itemsPerPage']) && is_numeric($_REQUEST['itemsPerPage']) ? $_REQUEST['itemsPerPage'] : 50;
     if (isset($_GET['page']) && is_numeric($_GET['page'])) {
         $currentPage = $_GET['page'];
         // 1st record is easy, work out the start of this page
         $startRecord = ($currentPage - 1) * $itemsPerPage + 1;
     }
     $startDateSqlFormatted = date('Y-m-d', strtotime($selectedDateStart));
     $endDateSqlFormatted = date('Y-m-d', strtotime($selectedDateEnd));
     //Create the base query
     $baseQuery = "SELECT econtent_record.id, " . "econtent_record.title, " . "econtent_record.source, " . "COUNT(DISTINCT userId) as numUsers, " . "COUNT(DISTINCT IF (action = 'Checked Out', userid, NULL)) as checkedOut, " . "COUNT(DISTINCT IF (action = 'Checked In', userid, NULL)) as checkedIn, " . "COUNT(DISTINCT IF (action = 'Read Online', userid, NULL)) as readOnline, " . "COUNT(DISTINCT IF (action = 'Place Hold', userid, NULL)) as placeHold, " . "COUNT(DISTINCT IF (action = 'Download', userid, NULL)) as download, " . "COUNT(DISTINCT IF (action = 'Read Online' OR action = 'Download', userid, NULL)) as numViews " . "FROM `econtent_history` " . "INNER join econtent_record on econtent_record.id = econtent_history.recordId ";
     $baseQuery .= "WHERE (DATE_FORMAT(econtent_history.openDate, '%Y-%m-%d')) BETWEEN '" . $startDateSqlFormatted . "' AND '" . $endDateSqlFormatted . "' ";
     if (count($selectedSourceFilter) > 0) {
         $sourceEntries = "";
         foreach ($selectedSourceFilter as $curSource) {
             if (strlen($sourceEntries) > 0) {
                 $sourceEntries .= ', ';
             }
             $sourceEntries .= "'" . mysql_escape_string($curSource) . "'";
         }
         $baseQuery .= "AND econtent_record.source IN (" . $sourceEntries . ") ";
     }
     if (count($selectedAccessTypeFilter) > 0) {
         $accessTypes = join("','", $selectedAccessTypeFilter);
         $accessTypes = "";
         foreach ($selectedAccessTypeFilter as $curAccessType) {
             if (strlen($accessTypes) > 0) {
                 $accessTypes .= ', ';
             }
             $accessTypes .= "'" . mysql_escape_string($curAccessType) . "'";
         }
         $baseQuery .= "AND econtent_record.accessType IN (" . $accessTypes . ") ";
     }
     $baseQuery .= "GROUP BY econtent_record.id " . "ORDER BY title, econtent_record.id ASC ";
     $countQuery = "SELECT COUNT(id) as totalResults FROM (" . $baseQuery . ") baseQuery ";
     $usageQuery = "SELECT * FROM (" . $baseQuery . ") baseQuery ";
     //Add max / min filters as needed since they depend on the base query
     if ($minFilter != "" && $maxFilter != "") {
         $countQuery .= "WHERE numViews >= " . $minFilter . " AND numViews <= " . $maxFilter . " ";
         $usageQuery .= "WHERE numViews >= " . $minFilter . " AND numViews <= " . $maxFilter . " ";
     } elseif ($minFilter != "") {
         $countQuery .= "WHERE numViews >= " . $minFilter . " ";
         $usageQuery .= "WHERE numViews >= " . $minFilter . " ";
     } elseif ($maxFilter != "") {
         $countQuery .= "WHERE numViews <= " . $maxFilter . " ";
         $usageQuery .= "WHERE numViews <= " . $maxFilter . " ";
     }
     if (!isset($_REQUEST['exportToExcel'])) {
         $usageQuery .= "LIMIT " . ($startRecord - 1) . ", " . $itemsPerPage . " ";
     }
     $epubHistory->query($usageQuery);
     $usageSummary['data'] = array();
     while ($epubHistory->fetch()) {
         $resourceInfo = array();
         $resourceInfo['title'] = $epubHistory->title;
         $resourceInfo['source'] = $epubHistory->source;
         $resourceInfo['record_id'] = $epubHistory->recordId;
         $resourceInfo['checkedOut'] = $epubHistory->checkedOut;
         $resourceInfo['checkedIn'] = $epubHistory->checkedIn;
         $resourceInfo['readOnline'] = $epubHistory->readOnline;
         $resourceInfo['placeHold'] = $epubHistory->placeHold;
         $resourceInfo['download'] = $epubHistory->download;
         $resourceInfo['numViews'] = $epubHistory->numViews;
         $resourceInfo['numUsers'] = $epubHistory->numUsers;
         $usageSummary['data'][] = $resourceInfo;
     }
     //Load total number of results
     $epubHistory->query($countQuery);
     if ($epubHistory->fetch()) {
         $totalResultCount = $epubHistory->totalResults;
     } else {
         $totalResultCount = 0;
     }
     //////////Paging Array
     $summary = array('page' => $currentPage, 'perPage' => $itemsPerPage, 'resultTotal' => $totalResultCount, 'startRecord' => $startRecord, 'endRecord' => $startRecord + count($usageSummary['data']) - 1);
     $interface->assign('recordCount', $summary['resultTotal']);
     $interface->assign('recordStart', $summary['startRecord']);
     $interface->assign('recordEnd', $summary['endRecord']);
     // Process Paging using VuFind Pager object
     if (strrpos($_SERVER["REQUEST_URI"], "page=")) {
         //replace the page variable with a new one
         $link = str_replace("page=" . $currentPage, "page=%d", $_SERVER["REQUEST_URI"]);
     } else {
         if (strrpos($_SERVER["REQUEST_URI"], "?")) {
             $link = $_SERVER["REQUEST_URI"] . "&page=%d";
         } else {
             $link = $_SERVER["REQUEST_URI"] . "?page=%d";
         }
     }
     $options = array('totalItems' => $summary['resultTotal'], 'fileName' => $link, 'perPage' => $summary['perPage']);
     $pager = new VuFindPager($options);
     $interface->assign('pageLinks', $pager->getLinks());
     return $usageSummary;
 }