00001 <?php
00002
00015
00016
00017
00018 class StatisticsHandler extends ManagerHandler {
00024 function statistics() {
00025 parent::validate();
00026 parent::setupTemplate(true);
00027
00028 $journal = &Request::getJournal();
00029 $templateMgr = &TemplateManager::getManager();
00030
00031 $statisticsYear = Request::getUserVar('statisticsYear');
00032 if (empty($statisticsYear)) $statisticsYear = date('Y');
00033 $templateMgr->assign('statisticsYear', $statisticsYear);
00034
00035 $sectionIds = $journal->getSetting('statisticsSectionIds');
00036 if (!is_array($sectionIds)) $sectionIds = array();
00037 $templateMgr->assign('sectionIds', $sectionIds);
00038
00039 foreach (StatisticsHandler::getPublicStatisticsNames() as $name) {
00040 $templateMgr->assign($name, $journal->getSetting($name));
00041 }
00042 $templateMgr->assign('statViews', $journal->getSetting('statViews'));
00043
00044 $fromDate = mktime(0, 0, 0, 1, 1, $statisticsYear);
00045 $toDate = mktime(23, 59, 59, 12, 31, $statisticsYear);
00046
00047 $journalStatisticsDao =& DAORegistry::getDAO('JournalStatisticsDAO');
00048 $articleStatistics = $journalStatisticsDao->getArticleStatistics($journal->getJournalId(), null, $fromDate, $toDate);
00049 $templateMgr->assign('articleStatistics', $articleStatistics);
00050
00051 $limitedArticleStatistics = $journalStatisticsDao->getArticleStatistics($journal->getJournalId(), $sectionIds, $fromDate, $toDate);
00052 $templateMgr->assign('limitedArticleStatistics', $limitedArticleStatistics);
00053
00054 $sectionDao =& DAORegistry::getDAO('SectionDAO');
00055 $sections =& $sectionDao->getJournalSections($journal->getJournalId());
00056 $templateMgr->assign('sections', $sections->toArray());
00057
00058 $issueStatistics = $journalStatisticsDao->getIssueStatistics($journal->getJournalId(), $fromDate, $toDate);
00059 $templateMgr->assign('issueStatistics', $issueStatistics);
00060
00061 $reviewerStatistics = $journalStatisticsDao->getReviewerStatistics($journal->getJournalId(), $sectionIds, $fromDate, $toDate);
00062 $templateMgr->assign('reviewerStatistics', $reviewerStatistics);
00063
00064 $allUserStatistics = $journalStatisticsDao->getUserStatistics($journal->getJournalId(), null, $toDate);
00065 $templateMgr->assign('allUserStatistics', $allUserStatistics);
00066
00067 $userStatistics = $journalStatisticsDao->getUserStatistics($journal->getJournalId(), $fromDate, $toDate);
00068 $templateMgr->assign('userStatistics', $userStatistics);
00069
00070 $enableSubscriptions = $journal->getSetting('enableSubscriptions');
00071 if ($enableSubscriptions) {
00072 $templateMgr->assign('enableSubscriptions', true);
00073 $allSubscriptionStatistics = $journalStatisticsDao->getSubscriptionStatistics($journal->getJournalId(), null, $toDate);
00074 $templateMgr->assign('allSubscriptionStatistics', $allSubscriptionStatistics);
00075
00076 $subscriptionStatistics = $journalStatisticsDao->getSubscriptionStatistics($journal->getJournalId(), $fromDate, $toDate);
00077 $templateMgr->assign('subscriptionStatistics', $subscriptionStatistics);
00078 }
00079
00080 $notificationStatusDao =& DAORegistry::getDAO('NotificationStatusDAO');
00081 $notifiableUsers = $notificationStatusDao->getNotifiableUsersCount($journal->getJournalId());
00082 $templateMgr->assign('notifiableUsers', $notifiableUsers);
00083
00084 $reportPlugins =& PluginRegistry::loadCategory('reports');
00085 $templateMgr->assign_by_ref('reportPlugins', $reportPlugins);
00086
00087 $templateMgr->assign('helpTopicId', 'journal.managementPages.statsAndReports');
00088
00089 $templateMgr->display('manager/statistics/index.tpl');
00090 }
00091
00092 function saveStatisticsSections() {
00093
00094
00095
00096 parent::validate();
00097
00098 $journal = &Request::getJournal();
00099
00100 $sectionIds = Request::getUserVar('sectionIds');
00101 if (!is_array($sectionIds)) {
00102 if (empty($sectionIds)) $sectionIds = array();
00103 else $sectionIds = array($sectionIds);
00104 }
00105
00106 $journal->updateSetting('statisticsSectionIds', $sectionIds);
00107 Request::redirect(null, null, 'statistics', null, array('statisticsYear' => Request::getUserVar('statisticsYear')));
00108 }
00109
00110 function getPublicStatisticsNames() {
00111 return array(
00112 'statNumPublishedIssues',
00113 'statItemsPublished',
00114 'statNumSubmissions',
00115 'statPeerReviewed',
00116 'statCountAccept',
00117 'statCountDecline',
00118 'statCountRevise',
00119 'statDaysPerReview',
00120 'statDaysToPublication',
00121 'statRegisteredUsers',
00122 'statRegisteredReaders',
00123 'statSubscriptions',
00124 );
00125 }
00126
00127 function savePublicStatisticsList() {
00128 parent::validate();
00129
00130 $journal =& Request::getJournal();
00131 foreach (StatisticsHandler::getPublicStatisticsNames() as $name) {
00132 $journal->updateSetting($name, Request::getUserVar($name)?true:false);
00133 }
00134 $journal->updateSetting('statViews', Request::getUserVar('statViews')?true:false);
00135 Request::redirect(null, null, 'statistics', null, array('statisticsYear' => Request::getUserVar('statisticsYear')));
00136 }
00137
00138 function report($args) {
00139 parent::validate();
00140
00141 $journal =& Request::getJournal();
00142
00143 $pluginName = array_shift($args);
00144 $reportPlugins =& PluginRegistry::loadCategory('reports');
00145
00146 if ($pluginName == '' || !isset($reportPlugins[$pluginName])) {
00147 Request::redirect(null, null, 'statistics');
00148 }
00149
00150 $plugin =& $reportPlugins[$pluginName];
00151 $plugin->display($args);
00152 }
00153 }
00154
00155 ?>