Пример #1
0
 function report()
 {
     list($plugin) = CounterHandler::validate();
     CounterHandler::setupTemplate(true);
     $journal =& Request::getJournal();
     $year = Request::getUserVar('year');
     $logEntryDao =& DAORegistry::getDAO('LogEntryDAO');
     $log =& $logEntryDao->parse(null, $year);
     header('content-type: text/comma-separated-values');
     header('content-disposition: attachment; filename=report.csv');
     echo CounterHandler::csvEscape(Locale::translate('plugins.generic.counter.1a.title1')) . "\n";
     echo CounterHandler::csvEscape(Locale::translate('plugins.generic.counter.1a.title2', array('year' => $year))) . "\n";
     echo "\n";
     // FIXME: Criteria should be here?
     echo CounterHandler::csvEscape(Locale::translate('plugins.generic.counter.1a.dateRun')) . "\n";
     echo CounterHandler::csvEscape(strftime("%Y-%m-%d")) . "\n";
     echo CounterHandler::csvEscape('') . "\t";
     echo CounterHandler::csvEscape(Locale::translate('plugins.generic.counter.1a.publisher')) . "\t";
     echo CounterHandler::csvEscape(Locale::translate('plugins.generic.counter.1a.platform')) . "\t";
     echo CounterHandler::csvEscape(Locale::translate('plugins.generic.counter.1a.printIssn')) . "\t";
     echo CounterHandler::csvEscape(Locale::translate('plugins.generic.counter.1a.onlineIssn')) . "\t";
     for ($i = 1; $i <= 12; $i++) {
         $time = strtotime($year . '-' . $i . '-01');
         strftime('%b', $time);
         echo CounterHandler::csvEscape(strftime('%b-%Y', $time)) . "\t";
     }
     echo CounterHandler::csvEscape(Locale::translate('plugins.generic.counter.1a.ytdTotal')) . "\t";
     echo CounterHandler::csvEscape(Locale::translate('plugins.generic.counter.1a.ytdHtml')) . "\t";
     echo CounterHandler::csvEscape(Locale::translate('plugins.generic.counter.1a.ytdPdf')) . "\n";
     // Get statistics from the log.
     $journals = array();
     foreach ($log as $entry) {
         if ($entry->getType() != LOG_ENTRY_TYPE_SEARCH) {
             $journalUrl = $entry->getJournalUrl();
             if (!isset($journals[$journalUrl])) {
                 $journals[$journalUrl] = array('journal' => $entry->getJournal(), 'publisher' => $entry->getPublisher(), 'printIssn' => $entry->getPrintIssn(), 'onlineIssn' => $entry->getOnlineIssn(), 'months' => array_fill(1, 12, 0), 'ytdTotal' => 0, 'ytdHtml' => 0, 'ytdPdf' => 0);
             }
             $month = (int) strftime('%m', strtotime($entry->getStamp()));
             $journals[$journalUrl]['ytdTotal']++;
             $journals[$journalUrl]['months'][$month]++;
             switch ($entry->getType()) {
                 case LOG_ENTRY_TYPE_HTML_ARTICLE:
                     $journals[$journalUrl]['ytdHtml']++;
                     break;
                 case LOG_ENTRY_TYPE_PDF_ARTICLE:
                     $journals[$journalUrl]['ytdPdf']++;
                     break;
                 case LOG_ENTRY_TYPE_OTHER_ARTICLE:
                 default:
                     break;
             }
         }
     }
     // Display the totals.
     echo CounterHandler::csvEscape(Locale::translate('plugins.generic.counter.1a.totalForAllJournals')) . "\t";
     echo CounterHandler::csvEscape('') . "\t";
     echo CounterHandler::csvEscape(Locale::translate('common.openJournalSystems')) . "\t";
     echo CounterHandler::csvEscape('') . "\t";
     echo CounterHandler::csvEscape('') . "\t";
     $months = array_fill(1, 12, 0);
     $ytdTotal = $ytdHtml = $ytdPdf = 0;
     foreach ($journals as $journalEntry) {
         foreach ($journalEntry['months'] as $key => $value) {
             $months[$key] += $value;
         }
         $ytdTotal += $journalEntry['ytdTotal'];
         $ytdHtml += $journalEntry['ytdHtml'];
         $ytdPdf += $journalEntry['ytdPdf'];
     }
     foreach ($months as $month) {
         echo CounterHandler::csvEscape($month) . "\t";
     }
     echo CounterHandler::csvEscape($ytdTotal) . "\t";
     echo CounterHandler::csvEscape($ytdHtml) . "\t";
     echo CounterHandler::csvEscape($ytdPdf) . "\n";
     // Display entries for each journal.
     foreach ($journals as $journalEntry) {
         echo CounterHandler::csvEscape($journalEntry['journal']) . "\t";
         echo CounterHandler::csvEscape($journalEntry['publisher']) . "\t";
         echo CounterHandler::csvEscape(Locale::translate('common.openJournalSystems')) . "\t";
         echo CounterHandler::csvEscape($journalEntry['printIssn']) . "\t";
         echo CounterHandler::csvEscape($journalEntry['onlineIssn']) . "\t";
         foreach ($journalEntry['months'] as $month) {
             echo CounterHandler::csvEscape($month) . "\t";
         }
         echo CounterHandler::csvEscape($journalEntry['ytdTotal']) . "\t";
         echo CounterHandler::csvEscape($journalEntry['ytdHtml']) . "\t";
         echo CounterHandler::csvEscape($journalEntry['ytdPdf']) . "\n";
     }
 }