KONTOLODON
/
var
/
www
/
old-ojs-3.3.0-11
/
plugins
/
reports
/
subscriptions
/
Nama File / Folder
Size
Action
locale
--
NONE
README
0.235KB
Hapus
Edit
Rename
SubscriptionReportPlugin.inc.php
8.745KB
Hapus
Edit
Rename
index.php
0.496KB
Hapus
Edit
Rename
version.xml
0.513KB
Hapus
Edit
Rename
<=Back
<?php /** * @file plugins/reports/subscriptions/SubscriptionReportPlugin.inc.php * * Copyright (c) 2014-2021 Simon Fraser University * Copyright (c) 2003-2021 John Willinsky * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING. * * @class SubscriptionReportPlugin * @ingroup plugins_reports_subscription * * @brief Subscription report plugin */ import('lib.pkp.classes.plugins.ReportPlugin'); class SubscriptionReportPlugin extends ReportPlugin { /** * @copydoc Plugin::register() */ function register($category, $path, $mainContextId = null) { $success = parent::register($category, $path, $mainContextId); $this->addLocaleData(); return $success; } /** * Get the name of this plugin. The name must be unique within * its category. * @return String name of plugin */ function getName() { return 'SubscriptionReportPlugin'; } /** * Get the display name of this plugin. * @return String display name of plugin */ function getDisplayName() { return __('plugins.reports.subscriptions.displayName'); } /** * Get the description text for this plugin. * @return String description text for this plugin */ function getDescription() { return __('plugins.reports.subscriptions.description'); } /** * @copydoc ReportPlugin::display() */ function display($args, $request) { $journal = $request->getJournal(); $journalId = $journal->getId(); $userDao = DAORegistry::getDAO('UserDAO'); /* @var $userDao UserDAO */ $subscriptionTypeDao = DAORegistry::getDAO('SubscriptionTypeDAO'); /* @var $subscriptionTypeDao SubscriptionTypeDAO */ $individualSubscriptionDao = DAORegistry::getDAO('IndividualSubscriptionDAO'); /* @var $individualSubscriptionDao IndividualSubscriptionDAO */ $institutionalSubscriptionDao = DAORegistry::getDAO('InstitutionalSubscriptionDAO'); /* @var $institutionalSubscriptionDao InstitutionalSubscriptionDAO */ $isoCodes = new \Sokil\IsoCodes\IsoCodesFactory(); $countries = $isoCodes->getCountries(); header('content-type: text/comma-separated-values'); header('content-disposition: attachment; filename=subscriptions-' . date('Ymd') . '.csv'); $fp = fopen('php://output', 'wt'); //Add BOM (byte order mark) to fix UTF-8 in Excel fprintf($fp, chr(0xEF).chr(0xBB).chr(0xBF)); // Columns for individual subscriptions $columns = array(__('subscriptionManager.individualSubscriptions')); fputcsv($fp, array_values($columns)); $columnsCommon = array( 'subscription_id' => __('common.id'), 'status' => __('subscriptions.status'), 'type' => __('common.type'), 'format' => __('subscriptionTypes.format'), 'date_start' => __('manager.subscriptions.dateStart'), 'date_end' => __('manager.subscriptions.dateEnd'), 'membership' => __('manager.subscriptions.membership'), 'reference_number' => __('manager.subscriptions.referenceNumber'), 'notes' => __('common.notes') ); $columnsIndividual = array( 'name' => __('user.name'), 'mailing_address' => __('common.mailingAddress'), 'country' => __('common.country'), 'email' => __('user.email'), 'phone' => __('user.phone'), ); $columns = array_merge($columnsCommon, $columnsIndividual); // Write out individual subscription column headings to file fputcsv($fp, array_values($columns)); // Iterate over individual subscriptions and write out each to file $individualSubscriptions = $individualSubscriptionDao->getByJournalId($journalId); while ($subscription = $individualSubscriptions->next()) { $user = $userDao->getById($subscription->getUserId()); $subscriptionType = $subscriptionTypeDao->getById($subscription->getTypeId()); foreach ($columns as $index => $junk) { switch ($index) { case 'subscription_id': $columns[$index] = $subscription->getId(); break; case 'status': $columns[$index] = $subscription->getStatusString(); break; case 'type': $columns[$index] = $subscription->getSubscriptionTypeSummaryString(); break; case 'format': $columns[$index] = __($subscriptionType->getFormatString()); break; case 'date_start': $columns[$index] = $subscription->getDateStart(); break; case 'date_end': $columns[$index] = $subscription->getDateEnd(); break; case 'membership': $columns[$index] = $subscription->getMembership(); break; case 'reference_number': $columns[$index] = $subscription->getReferenceNumber(); break; case 'notes': $columns[$index] = PKPString::html2text($subscription->getNotes()); break; case 'name': $columns[$index] = $user->getFullName(); break; case 'mailing_address': $columns[$index] = PKPString::html2text($user->getMailingAddress()); break; case 'country': $country = $countries->getByAlpha2($user->getCountry()); $columns[$index] = $country?$country->getLocalName():''; break; case 'email': $columns[$index] = $user->getEmail(); break; case 'phone': $columns[$index] = $user->getPhone(); break; default: $columns[$index] = ''; } } fputcsv($fp, $columns); } // Columns for institutional subscriptions $columns = array(''); fputcsv($fp, array_values($columns)); $columns = array(__('subscriptionManager.institutionalSubscriptions')); fputcsv($fp, array_values($columns)); $columnsInstitution = array( 'institution_name' => __('manager.subscriptions.institutionName'), 'institution_mailing_address' => __('plugins.reports.subscriptions.institutionMailingAddress'), 'domain' => __('manager.subscriptions.domain'), 'ip_ranges' => __('plugins.reports.subscriptions.ipRanges'), 'contact' => __('manager.subscriptions.contact'), 'mailing_address' => __('common.mailingAddress'), 'country' => __('common.country'), 'email' => __('user.email'), 'phone' => __('user.phone'), ); $columns = array_merge($columnsCommon, $columnsInstitution); // Write out institutional subscription column headings to file fputcsv($fp, array_values($columns)); // Iterate over institutional subscriptions and write out each to file $institutionalSubscriptions = $institutionalSubscriptionDao->getByJournalId($journalId); while ($subscription = $institutionalSubscriptions->next()) { $user = $userDao->getById($subscription->getUserId()); $subscriptionType = $subscriptionTypeDao->getById($subscription->getTypeId()); foreach ($columns as $index => $junk) { switch ($index) { case 'subscription_id': $columns[$index] = $subscription->getId(); break; case 'status': $columns[$index] = $subscription->getStatusString(); break; case 'type': $columns[$index] = $subscription->getSubscriptionTypeSummaryString(); break; case 'format': $columns[$index] = __($subscriptionType->getFormatString()); break; case 'date_start': $columns[$index] = $subscription->getDateStart(); break; case 'date_end': $columns[$index] = $subscription->getDateEnd(); break; case 'membership': $columns[$index] = $subscription->getMembership(); break; case 'reference_number': $columns[$index] = $subscription->getReferenceNumber(); break; case 'notes': $columns[$index] = PKPString::html2text($subscription->getNotes()); break; case 'institution_name': $columns[$index] = $subscription->getInstitutionName(); break; case 'institution_mailing_address': $columns[$index] = PKPString::html2text($subscription->getInstitutionMailingAddress()); break; case 'domain': $columns[$index] = $subscription->getDomain(); break; case 'ip_ranges': $columns[$index] = $this->_formatIPRanges($subscription->getIPRanges()); break; case 'contact': $columns[$index] = $user->getFullName(); break; case 'mailing_address': $columns[$index] = PKPString::html2text($user->getMailingAddress()); break; case 'country': $country = $countries->getByAlpha2($user->getCountry()); $columns[$index] = $country?$country->getLocalName():''; break; case 'email': $columns[$index] = $user->getEmail(); break; case 'phone': $columns[$index] = $user->getPhone(); break; default: $columns[$index] = ''; } } fputcsv($fp, $columns); } fclose($fp); } /** * Pretty format IP ranges, one per line via line feeds. * @param $ipRanges array IP ranges * @return String Text of IP ranges formatted with newlines */ function _formatIPRanges($ipRanges) { $numRanges = count($ipRanges); $ipRangesString = ''; for($i=0; $i<$numRanges; $i++) { $ipRangesString .= $ipRanges[$i]; if ( $i+1 < $numRanges) $ipRangesString .= chr(13) . chr(10); } return $ipRangesString; } }
Liking