public function endReport() { $headers = array(); $this->putHeaders($headers); String::fputcsv($this->fpointer, array_values($headers)); for ($i = 0; $i < count($this->data); $i++) { String::fputcsv($this->fpointer, array_values($this->data[$i])); } fclose($this->fpointer); }
function _CSVReport($proposals, $criterias) { $institutionDao =& DAORegistry::getDAO('InstitutionDAO'); $countryDao =& DAORegistry::getDAO('CountryDAO'); $extraFieldDao =& DAORegistry::getDAO('ExtraFieldDAO'); $proposalDetailsDao =& DAORegistry::getDAO('ProposalDetailsDAO'); $journal =& Request::getJournal(); header('content-type: text/comma-separated-values'); header('content-disposition: attachment; filename=' . $journal->getLocalizedInitials() . '-' . date('YMd') . '-' . Locale::translate('editor.report') . '.csv'); $fp = fopen('php://output', 'wt'); $columns = $this->_getColumnsOfCSV(); //Write into the csv String::fputcsv($fp, array_values($columns)); foreach ($proposals as $proposal) { $decisions = $proposal->getDecisions(); $investigators = $proposal->getAuthors(); $abstract = $proposal->getLocalizedAbstract(); $proposalDetails = $proposal->getProposalDetails(); $studentResearch = $proposalDetails->getStudentResearchInfo(); $sources = $proposal->getSources(); $riskAssessment = $proposal->getRiskAssessment(); // Set up the for loops in case of multi entries for one proposal if (array_key_exists('committee', $columns)) { $decisionsCount = count($decisions); } else { $decisionsCount = 1; } if (Request::getUserVar('checkAllInvestigators')) { $investigatorsCount = count($investigators); } else { $investigatorsCount = 1; } if (array_key_exists('countries', $columns)) { $countries = $proposalDetails->getCountries(); if ($countries) { $countriesArray = explode(",", $countries); $countriesCount = count($countriesArray); } else { $countriesCount = 1; } } else { $countriesCount = 1; } if (array_key_exists('nationwide', $columns)) { $geoAreas = $proposalDetails->getCountries(); if ($geoAreas) { $geoAreasArray = explode(",", $geoAreas); $geoAreasCount = count($geoAreasArray); } else { $geoAreasCount = 1; } } else { $geoAreasCount = 1; } if (array_key_exists('researchDomain', $columns)) { $researchDomainsArray = $proposalDetails->getResearchDomainsArray(); if ($researchDomainsArray) { $researchDomainsCount = count($researchDomainsArray); } else { $researchDomainsCount = 1; } } else { $researchDomainsCount = 1; } if (array_key_exists('researchField', $columns)) { $researchFields = $proposalDetails->getResearchFields(); if ($researchFields) { $researchFieldsArray = explode("+", $researchFields); $researchFieldsCount = count($researchFieldsArray); } else { $researchFieldsCount = 1; } } else { $researchFieldsCount = 1; } if (array_key_exists('proposalType', $columns)) { $proposalTypes = $proposalDetails->getProposalTypes(); if ($proposalTypes) { $proposalTypesArray = explode("+", $proposalTypes); $proposalTypesCount = count($proposalTypesArray); } else { $proposalTypesCount = 1; } } else { $proposalTypesCount = 1; } if (array_key_exists('sourceInstitution', $columns)) { $sourcesCount = count($sources); } else { $sourcesCount = 1; } // Loop through all the possible mutli entries and write the data for ($dI = 0; $dI < $decisionsCount; $dI++) { for ($iI = 0; $iI < $investigatorsCount; $iI++) { for ($cI = 0; $cI < $countriesCount; $cI++) { for ($aI = 0; $aI < $geoAreasCount; $aI++) { for ($rdI = 0; $rdI < $researchDomainsCount; $rdI++) { for ($fI = 0; $fI < $researchFieldsCount; $fI++) { for ($tI = 0; $tI < $proposalTypesCount; $tI++) { for ($sI = 0; $sI < $sourcesCount; $sI++) { foreach ($columns as $index => $junk) { // General if ($index == 'proposalId') { $columns[$index] = $proposal->getProposalId(); } elseif ($index == 'committee') { $columns[$index] = $decisions[$dI]->getSectionAcronym(); } elseif ($index == 'decisionType') { $columns[$index] = Locale::translate($decisions[$dI]->getReviewTypeKey()); } elseif ($index == 'decisionStatus') { $columns[$index] = Locale::translate($decisions[$dI]->getReviewStatusKey()); } elseif ($index == 'decisionDate') { $columns[$index] = date("d-M-Y", strtotime($decisions[$dI]->getDateDecided())); } elseif ($index == 'submitDate') { $columns[$index] = date("d-M-Y", strtotime($proposal->getDateSubmitted())); } elseif ($index == 'investigator') { $columns[$index] = $this->_removeCommaForCSV($investigators[$iI]->getFullName(true)); } elseif ($index == 'investigatorAffiliation') { $columns[$index] = $this->_removeCommaForCSV($investigators[$iI]->getAffiliation()); } elseif ($index == 'investigatorEmail') { $columns[$index] = $investigators[$iI]->getEmail(); } elseif ($index == 'scientificTitle') { $columns[$index] = $this->_replaceQuoteCSV($abstract->getCleanScientificTitle()); } elseif ($index == 'publicTitle') { $columns[$index] = $this->_replaceQuoteCSV($abstract->getCleanPublicTitle()); } elseif ($index == 'background') { $columns[$index] = $this->_replaceQuoteCSV($abstract->getBackground()); } elseif ($index == 'objectives') { $columns[$index] = $this->_replaceQuoteCSV($abstract->getObjectives()); } elseif ($index == 'studyMethods') { $columns[$index] = $this->_replaceQuoteCSV($abstract->getStudyMethods()); } elseif ($index == 'expectedOutcomes') { $columns[$index] = $this->_replaceQuoteCSV($abstract->getExpectedOutcomes()); } elseif ($index == 'studentInstitution') { if ($proposalDetails->getStudentResearch() == PROPOSAL_DETAIL_YES) { $columns[$index] = $studentResearch->getInstitution(); } else { $columns[$index] = Locale::translate('editor.reports.notApplicable'); } } elseif ($index == 'studentAcademicDegree') { if ($proposalDetails->getStudentResearch() == PROPOSAL_DETAIL_YES) { $columns[$index] = Locale::translate($studentResearch->getDegreeKey()); } else { $columns[$index] = Locale::translate('editor.reports.notApplicable'); } } elseif ($index == 'startDate') { $columns[$index] = $proposalDetails->getStartDate(); } elseif ($index == 'endDate') { $columns[$index] = $proposalDetails->getEndDate(); } elseif ($index == 'kii') { $institution = $institutionDao->getInstitutionById($proposalDetails->getKeyImplInstitution()); $columns[$index] = $institution->getInstitutionName(); } elseif ($index == 'countries') { if ($proposalDetails->getMultiCountryResearch() == PROPOSAL_DETAIL_YES) { $columns[$index] = $countryDao->getCountry($countriesArray[$cI]); } else { $columns[$index] = Locale::translate('editor.reports.notApplicable'); } } elseif ($index == 'nationwide') { if ($proposalDetails->getMultiCountryResearch() != PROPOSAL_DETAIL_YES) { $extraField =& $extraFieldDao->getExtraField($geoAreasArray[$aI]); $columns[$index] = isset($extraField) ? $extraField->getLocalizedExtraFieldName() : null; unset($extraField); } else { $columns[$index] = Locale::translate('editor.reports.nationwide'); } } elseif ($index == 'researchDomain') { if ($researchDomainsArray) { $extraField =& $extraFieldDao->getExtraField($researchDomainsArray[$rdI]); $columns[$index] = isset($extraField) ? $extraField->getLocalizedExtraFieldName() : null; unset($extraField); } else { $columns[$index] = Locale::translate('common.dataNotProvided'); } } elseif ($index == 'researchField') { if ($researchFieldsArray) { $extraField =& $extraFieldDao->getExtraField($researchFieldsArray[$fI]); $columns[$index] = isset($extraField) ? $extraField->getLocalizedExtraFieldName() : null; unset($extraField); } else { $columns[$index] = Locale::translate('editor.reports.notApplicable'); } } elseif ($index == 'proposalType') { if ($proposalDetails->getHumanSubjects() != PROPOSAL_DETAIL_YES) { $extraField =& $extraFieldDao->getExtraField($proposalTypesArray[$tI]); $columns[$index] = isset($extraField) ? $extraField->getLocalizedExtraFieldName() : null; unset($extraField); } else { $columns[$index] = Locale::translate('editor.reports.notApplicable'); } } elseif ($index == 'dataCollection') { $columns[$index] = Locale::translate($proposalDetails->getDataCollectionKey()); } elseif ($index == 'totalBudget') { $columns[$index] = $proposal->getTotalBudget(); } elseif ($index == 'sourceInstitution') { $institution = $institutionDao->getInstitutionById($sources[$sI]->getInstitutionId()); $columns[$index] = $institution->getInstitutionName(); } elseif ($index == 'sourceAmount') { $columns[$index] = $sources[$sI]->getSourceAmount(); } elseif ($index == 'identityRevealed') { $columns[$index] = Locale::translate($riskAssessment->getYesNoKey($riskAssessment->getIdentityRevealed())); } elseif ($index == 'unableToConsent') { $columns[$index] = Locale::translate($riskAssessment->getYesNoKey($riskAssessment->getUnableToConsent())); } elseif ($index == 'under18') { $columns[$index] = Locale::translate($riskAssessment->getYesNoKey($riskAssessment->getUnder18())); } elseif ($index == 'dependentRelationship') { $columns[$index] = Locale::translate($riskAssessment->getYesNoKey($riskAssessment->getDependentRelationship())); } elseif ($index == 'ethnicMinority') { $columns[$index] = Locale::translate($riskAssessment->getYesNoKey($riskAssessment->getEthnicMinority())); } elseif ($index == 'impairment') { $columns[$index] = Locale::translate($riskAssessment->getYesNoKey($riskAssessment->getImpairment())); } elseif ($index == 'pregnant') { $columns[$index] = Locale::translate($riskAssessment->getYesNoKey($riskAssessment->getPregnant())); } elseif ($index == 'newTreatment') { $columns[$index] = Locale::translate($riskAssessment->getYesNoKey($riskAssessment->getNewTreatment())); } elseif ($index == 'bioSamples') { $columns[$index] = Locale::translate($riskAssessment->getYesNoKey($riskAssessment->getBioSamples())); } elseif ($index == 'exportHumanTissue') { if ($riskAssessment->getBioSamples() == RISK_ASSESSMENT_YES) { $columns[$index] = Locale::translate($riskAssessment->getYesNoKey($riskAssessment->getExportHumanTissue())); } else { $columns[$index] = Locale::translate('editor.reports.notApplicable'); } } elseif ($index == 'exportReason') { if ($riskAssessment->getBioSamples() == RISK_ASSESSMENT_YES && $riskAssessment->getExportHumanTissue() == RISK_ASSESSMENT_YES) { $columns[$index] = Locale::translate($riskAssessment->getExportReasonKey()); } else { $columns[$index] = Locale::translate('editor.reports.notApplicable'); } } elseif ($index == 'radiation') { $columns[$index] = Locale::translate($riskAssessment->getYesNoKey($riskAssessment->getRadiation())); } elseif ($index == 'distress') { $columns[$index] = Locale::translate($riskAssessment->getYesNoKey($riskAssessment->getDistress())); } elseif ($index == 'inducements') { $columns[$index] = Locale::translate($riskAssessment->getYesNoKey($riskAssessment->getInducements())); } elseif ($index == 'sensitiveInfo') { $columns[$index] = Locale::translate($riskAssessment->getYesNoKey($riskAssessment->getSensitiveInfo())); } elseif ($index == 'reproTechnology') { $columns[$index] = Locale::translate($riskAssessment->getYesNoKey($riskAssessment->getReproTechnology())); } elseif ($index == 'genetic') { $columns[$index] = Locale::translate($riskAssessment->getYesNoKey($riskAssessment->getGenetic())); } elseif ($index == 'stemCell') { $columns[$index] = Locale::translate($riskAssessment->getYesNoKey($riskAssessment->getStemCell())); } elseif ($index == 'biosafety') { $columns[$index] = Locale::translate($riskAssessment->getYesNoKey($riskAssessment->getBiosafety())); } } String::fputcsv($fp, $columns); } } } } } } } } } // Display or not the search criterias on the bottom of the CSV file if (Request::getUserVar('checkShowCriterias')) { String::fputcsv($fp, array('')); String::fputcsv($fp, array('')); if (!empty($criterias)) { $i = 0; foreach ($criterias as $criteria) { if ($i != 0) { $criteria = Locale::translate('common.and') . ' ' . $criteria; String::fputcsv($fp, array('', $criteria)); } else { String::fputcsv($fp, array(Locale::translate('editor.reports.criterias'), $criteria)); } $i++; } } } fclose($fp); }
/** * Generate a report file. * @param $request PKPRequest * @param $year string */ function _report(&$request, $year, $useLegacyStats) { $journal =& $request->getJournal(); list($begin, $end) = $this->_getLimitDates($year); header('content-type: text/comma-separated-values'); header('content-disposition: attachment; filename=counter-' . date('Ymd') . '.csv'); $fp = fopen('php://output', 'wt'); String::fputcsv($fp, array(__('plugins.reports.counter.1a.title1'))); String::fputcsv($fp, array(__('plugins.reports.counter.1a.title2', array('year' => $year)))); String::fputcsv($fp, array()); // FIXME: Criteria should be here? String::fputcsv($fp, array(__('plugins.reports.counter.1a.dateRun'))); String::fputcsv($fp, array(strftime("%Y-%m-%d"))); $cols = array('', __('plugins.reports.counter.1a.publisher'), __('plugins.reports.counter.1a.platform'), __('plugins.reports.counter.1a.printIssn'), __('plugins.reports.counter.1a.onlineIssn')); for ($i = 1; $i <= 12; $i++) { $time = strtotime($year . '-' . $i . '-01'); strftime('%b', $time); $cols[] = strftime('%b-%Y', $time); } $cols[] = __('plugins.reports.counter.1a.ytdTotal'); $cols[] = __('plugins.reports.counter.1a.ytdHtml'); $cols[] = __('plugins.reports.counter.1a.ytdPdf'); fputcsv($fp, $cols); // Display the totals first $totals = $this->_getMonthlyTotalRange($begin, $end, $useLegacyStats); $cols = array(__('plugins.reports.counter.1a.totalForAllJournals'), '-', '', '-', '-'); $this->_formColumns($cols, $totals); fputcsv($fp, $cols); // Get statistics from the log. $journalDao =& DAORegistry::getDAO('JournalDAO'); $journalIds = $this->_getJournalIds($useLegacyStats); foreach ($journalIds as $journalId) { $journal =& $journalDao->getById($journalId); if (!$journal) { continue; } $entries = $this->_getMonthlyLogRange($journalId, $begin, $end, $useLegacyStats); $cols = array($journal->getLocalizedTitle(), $journal->getSetting('publisherInstitution'), 'Open Journal Systems', $journal->getSetting('printIssn'), $journal->getSetting('onlineIssn')); $this->_formColumns($cols, $entries); fputcsv($fp, $cols); unset($journal, $entry); } fclose($fp); }
function display(&$args) { $journal =& Request::getJournal(); header('content-type: text/comma-separated-values'); header('content-disposition: attachment; filename=articles-' . date('Ymd') . '.csv'); $articleReportDao =& DAORegistry::getDAO('ArticleReportDAO'); list($articlesIterator, $authorsIterator, $decisionsIteratorsArray) = $articleReportDao->getArticleReport($journal->getId()); $maxAuthors = $this->getMaxAuthorCount($authorsIterator); $decisions = array(); foreach ($decisionsIteratorsArray as $decisionsIterator) { while ($row =& $decisionsIterator->next()) { $decisions[$row['article_id']] = $row['decision']; } } Locale::requireComponents(array(LOCALE_COMPONENT_OJS_EDITOR, LOCALE_COMPONENT_PKP_SUBMISSION)); import('classes.article.Article'); $decisionMessages = array(SUBMISSION_EDITOR_DECISION_ACCEPT => Locale::translate('editor.article.decision.accept'), SUBMISSION_EDITOR_DECISION_PENDING_REVISIONS => Locale::translate('editor.article.decision.pendingRevisions'), SUBMISSION_EDITOR_DECISION_RESUBMIT => Locale::translate('editor.article.decision.resubmit'), SUBMISSION_EDITOR_DECISION_DECLINE => Locale::translate('editor.article.decision.decline'), null => Locale::translate('plugins.reports.articles.nodecision')); $columns = array('article_id' => Locale::translate('article.submissionId'), 'title' => Locale::translate('article.title'), 'abstract' => Locale::translate('article.abstract')); for ($a = 1; $a <= $maxAuthors; $a++) { $columns = array_merge($columns, array('fname' . $a => Locale::translate('user.firstName') . " (" . Locale::translate('user.role.author') . " {$a})", 'mname' . $a => Locale::translate('user.middleName') . " (" . Locale::translate('user.role.author') . " {$a})", 'lname' . $a => Locale::translate('user.lastName') . " (" . Locale::translate('user.role.author') . " {$a})", 'country' . $a => Locale::translate('common.country') . " (" . Locale::translate('user.role.author') . " {$a})", 'affiliation' . $a => Locale::translate('user.affiliation') . " (" . Locale::translate('user.role.author') . " {$a})", 'email' . $a => Locale::translate('user.email') . " (" . Locale::translate('user.role.author') . " {$a})", 'url' . $a => Locale::translate('user.url') . " (" . Locale::translate('user.role.author') . " {$a})", 'biography' . $a => Locale::translate('user.biography') . " (" . Locale::translate('user.role.author') . " {$a})")); } $columns = array_merge($columns, array('section_title' => Locale::translate('section.title'), 'language' => Locale::translate('common.language'), 'editor_decision' => Locale::translate('submission.editorDecision'), 'status' => Locale::translate('common.status'))); $fp = fopen('php://output', 'wt'); String::fputcsv($fp, array_values($columns)); import('classes.article.Article'); // Bring in getStatusMap function $statusMap =& Article::getStatusMap(); $authorIndex = 0; while ($row =& $articlesIterator->next()) { $authors = $this->mergeAuthors($authorsIterator[$row['article_id']]->toArray()); foreach ($columns as $index => $junk) { if ($index == 'editor_decision') { if (isset($decisions[$row['article_id']])) { $columns[$index] = $decisionMessages[$decisions[$row['article_id']]]; } else { $columns[$index] = $decisionMessages[null]; } } elseif ($index == 'status') { $columns[$index] = Locale::translate($statusMap[$row[$index]]); } elseif ($index == 'abstract') { $columns[$index] = html_entity_decode(strip_tags($row[$index])); } elseif (strstr($index, 'biography') !== false) { // "Convert" HTML to text for export $columns[$index] = isset($authors[$index]) ? html_entity_decode(strip_tags($authors[$index])) : ''; } else { if (isset($row[$index])) { $columns[$index] = $row[$index]; } else { if (isset($authors[$index])) { $columns[$index] = $authors[$index]; } else { $columns[$index] = ''; } } } } String::fputcsv($fp, $columns); unset($row); $authorIndex++; } fclose($fp); }
function generateCustomizedCSV($args) { parent::validate(); $this->setupTemplate(); $query = Request::getUserVar('query'); $region = Request::getUserVar('region'); $statusFilter = Request::getUserVar('statusFilter'); $fromDate = Request::getUserVar('dateFrom'); //if ($fromDate != null) $fromDate = date('Y-m-d H:i:s', $fromDate); $toDate = Request::getUserVar('dateTo'); //if ($toDate != null) $toDate = date('Y-m-d H:i:s', $toDate); $columns = array(); $investigatorName = false; if (Request::getUserVar('investigatorName')) { $columns = $columns + array('investigator' => Locale::translate('search.investigator')); $investigatorName = true; } $investigatorAffiliation = false; if (Request::getUserVar('investigatorAffiliation')) { $columns = $columns + array('investigator_affiliation' => Locale::translate('search.investigatorAffiliation')); $investigatorAffiliation = true; } $investigatorEmail = false; if (Request::getUserVar('investigatorEmail')) { $columns = $columns + array('investigator_email' => Locale::translate('search.investigatorEmail')); $investigatorEmail = true; } if (Request::getUserVar('scientificTitle')) { $columns = $columns + array('title' => Locale::translate('article.scientificTitle')); } $researchDomain = false; if (Request::getUserVar('researchDomain')) { $columns = $columns + array('research_domain' => Locale::translate('proposal.researchDomains')); $researchDomain = true; } $researchField = false; if (Request::getUserVar('researchField')) { $columns = $columns + array('research_field' => Locale::translate('search.researchField')); $researchField = true; } $proposalType = false; if (Request::getUserVar('proposalType')) { $columns = $columns + array('proposal_type' => Locale::translate('article.proposalType')); $proposalType = true; } $duration = false; if (Request::getUserVar('duration')) { $columns = $columns + array('duration' => Locale::translate('search.duration')); $duration = true; } $area = false; if (Request::getUserVar('area')) { $columns = $columns + array('area' => Locale::translate('common.area')); $area = true; } $dataCollection = false; if (Request::getUserVar('dataCollection')) { $columns = $columns + array('data_collection' => Locale::translate('search.dataCollection')); $dataCollection = true; } $status = false; if (Request::getUserVar('status')) { $columns = $columns + array('status' => Locale::translate('search.status')); $status = true; } $studentResearch = false; if (Request::getUserVar('studentResearch')) { $columns = $columns + array('student_institution' => Locale::translate('article.studentInstitution')); $columns = $columns + array('academic_degree' => Locale::translate('article.academicDegree')); $studentResearch = true; } $kii = false; if (Request::getUserVar('kii')) { $columns = $columns + array('kii' => Locale::translate('proposal.keyImplInstitution')); $kii = true; } $dateSubmitted = false; if (Request::getUserVar('dateSubmitted')) { $columns = $columns + array('date_submitted' => Locale::translate('search.dateSubmitted')); $dateSubmitted = true; } header('content-type: text/comma-separated-values'); header('content-disposition: attachment; filename=searchResults-' . date('Ymd') . '.csv'); $fp = fopen('php://output', 'wt'); String::fputcsv($fp, array_values($columns)); $articleDao =& DAORegistry::getDAO('ArticleDAO'); $results = $articleDao->searchCustomizedProposalsPublic($query, $region, $statusFilter, $fromDate, $toDate, $investigatorName, $investigatorAffiliation, $investigatorEmail, $researchDomain, $researchField, $proposalType, $duration, $area, $dataCollection, $status, $studentResearch, $kii, $dateSubmitted); foreach ($results as $result) { $abstract = $result->getLocalizedAbstract(); $proposalDetails = $result->getProposalDetails(); $studentInfo = $proposalDetails->getStudentResearchInfo(); foreach ($columns as $index => $junk) { if ($index == 'investigator') { $columns[$index] = $result->getPrimaryAuthor(); } elseif ($index == 'investigator_affiliation') { $columns[$index] = $result->getInvestigatorAffiliation(); } elseif ($index == 'investigator_email') { $columns[$index] = $result->getAuthorEmail(); } elseif ($index == 'title') { $columns[$index] = $abstract->getScientificTitle(); } elseif ($index == 'research_domain') { $columns[$index] = $proposalDetails->getLocalizedResearchDomainsText(); } elseif ($index == 'research_field') { $columns[$index] = $proposalDetails->getLocalizedResearchFieldText(); } elseif ($index == 'proposal_type') { $columns[$index] = $proposalDetails->getLocalizedProposalTypeText(); } elseif ($index == "duration") { $columns[$index] = $proposalDetails->getStartDate() . " to " . $proposalDetails->getEndDate(); } elseif ($index == 'area') { if ($proposalDetails->getMultiCountryResearch() == PROPOSAL_DETAIL_YES) { $columns[$index] = "Multi-country Research"; } elseif ($proposalDetails->getNationwide() == PROPOSAL_DETAIL_YES) { $columns[$index] = "Nationwide Research"; } else { $columns[$index] = $proposalDetails->getLocalizedGeoAreasText(); } } elseif ($index == 'data_collection') { $columns[$index] = Locale::translate($proposalDetails->getDataCollectionKey()); } elseif ($index == 'status') { if ($result->getStatus() == '11') { $columns[$index] = 'Complete'; } else { $columns[$index] = 'Ongoing'; } } elseif ($index == 'student_institution') { if ($proposalDetails->getStudentResearch() == PROPOSAL_DETAIL_YES) { $columns[$index] = $studentInfo->getInstitution(); } else { $columns[$index] = "Non Student Research"; } } elseif ($index == 'academic_degree') { if ($proposalDetails->getStudentResearch() == PROPOSAL_DETAIL_YES) { $columns[$index] = Locale::translate($studentInfo->getDegreeKey()); } else { $columns[$index] = "Non Student Research"; } } elseif ($index == 'kii') { $columns[$index] = $proposalDetails->getKeyImplInstitutionName(); } elseif ($index == 'date_submitted') { $columns[$index] = $result->getDateSubmitted(); } } String::fputcsv($fp, $columns); } fclose($fp); unset($columns); }
function display(&$args) { $journal =& Request::getJournal(); header('content-type: text/comma-separated-values'); header('content-disposition: attachment; filename=report.csv'); Locale::requireComponents(array(LOCALE_COMPONENT_PKP_SUBMISSION)); $reviewReportDao =& DAORegistry::getDAO('ReviewReportDAO'); list($commentsIterator, $reviewsIterator) = $reviewReportDao->getReviewReport($journal->getId()); $comments = array(); while ($row =& $commentsIterator->next()) { if (isset($comments[$row['article_id']][$row['author_id']])) { $comments[$row['article_id']][$row['author_id']] .= "; " . $row['comments']; } else { $comments[$row['article_id']][$row['author_id']] = $row['comments']; } } $yesnoMessages = array(0 => Locale::translate('common.no'), 1 => Locale::translate('common.yes')); import('submission.reviewAssignment.ReviewAssignment'); $recommendations = ReviewAssignment::getReviewerRecommendationOptions(); $columns = array('round' => Locale::translate('plugins.reports.reviews.round'), 'article' => Locale::translate('article.articles'), 'articleid' => Locale::translate('article.submissionId'), 'reviewerid' => Locale::translate('plugins.reports.reviews.reviewerId'), 'reviewer' => Locale::translate('plugins.reports.reviews.reviewer'), 'firstname' => Locale::translate('user.firstName'), 'middlename' => Locale::translate('user.middleName'), 'lastname' => Locale::translate('user.lastName'), 'dateassigned' => Locale::translate('plugins.reports.reviews.dateAssigned'), 'datenotified' => Locale::translate('plugins.reports.reviews.dateNotified'), 'dateconfirmed' => Locale::translate('plugins.reports.reviews.dateConfirmed'), 'datecompleted' => Locale::translate('plugins.reports.reviews.dateCompleted'), 'datereminded' => Locale::translate('plugins.reports.reviews.dateReminded'), 'declined' => Locale::translate('submissions.declined'), 'cancelled' => Locale::translate('common.cancelled'), 'recommendation' => Locale::translate('reviewer.article.recommendation'), 'comments' => Locale::translate('comments.commentsOnArticle')); $yesNoArray = array('declined', 'cancelled'); $fp = fopen('php://output', 'wt'); String::fputcsv($fp, array_values($columns)); while ($row =& $reviewsIterator->next()) { foreach ($columns as $index => $junk) { if (in_array($index, $yesNoArray)) { $columns[$index] = $yesnoMessages[$row[$index]]; } elseif ($index == "recommendation") { $columns[$index] = !isset($row[$index]) ? Locale::translate('common.none') : Locale::translate($recommendations[$row[$index]]); } elseif ($index == "comments") { if (isset($comments[$row['articleid']][$row['reviewerid']])) { $columns[$index] = $comments[$row['articleid']][$row['reviewerid']]; } else { $columns[$index] = ""; } } else { $columns[$index] = $row[$index]; } } String::fputcsv($fp, $columns); unset($row); } fclose($fp); }
function display(&$args) { $conference =& Request::getConference(); $schedConf =& Request::getSchedConf(); AppLocale::requireComponents(array(LOCALE_COMPONENT_APPLICATION_COMMON, LOCALE_COMPONENT_PKP_SUBMISSION, LOCALE_COMPONENT_PKP_USER, LOCALE_COMPONENT_OCS_MANAGER)); header('content-type: text/comma-separated-values; charset=utf-8'); header('content-disposition: attachment; filename=report.csv'); $paperReportDao =& DAORegistry::getDAO('PaperReportDAO'); list($papersIterator, $authorsIterator, $decisionsIteratorsArray) = $paperReportDao->getPaperReport($conference->getId(), $schedConf->getId()); $maxAuthors = $this->getMaxAuthorCount($authorsIterator); $decisions = array(); foreach ($decisionsIteratorsArray as $decisionsIterator) { while ($row =& $decisionsIterator->next()) { $decisions[$row['paper_id']] = $row['decision']; } } AppLocale::requireComponents(array(LOCALE_COMPONENT_OCS_DIRECTOR)); import('classes.paper.Paper'); $decisionMessages = array(SUBMISSION_DIRECTOR_DECISION_INVITE => __('director.paper.decision.invitePresentation'), SUBMISSION_DIRECTOR_DECISION_ACCEPT => __('director.paper.decision.accept'), SUBMISSION_DIRECTOR_DECISION_PENDING_REVISIONS => __('director.paper.decision.pendingRevisions'), SUBMISSION_DIRECTOR_DECISION_DECLINE => __('director.paper.decision.decline'), null => __('plugins.reports.papers.nodecision')); $columns = array('paper_id' => __('paper.submissionId'), 'title' => __('paper.title'), 'abstract' => __('paper.abstract')); for ($a = 1; $a <= $maxAuthors; $a++) { $columns = array_merge($columns, array('fname' . $a => __('user.firstName') . " (" . __('user.role.author') . " {$a})", 'mname' . $a => __('user.middleName') . " (" . __('user.role.author') . " {$a})", 'lname' . $a => __('user.lastName') . " (" . __('user.role.author') . " {$a})", 'country' . $a => __('common.country') . " (" . __('user.role.author') . " {$a})", 'affiliation' . $a => __('user.affiliation') . " (" . __('user.role.author') . " {$a})", 'email' . $a => __('user.email') . " (" . __('user.role.author') . " {$a})", 'url' . $a => __('user.url') . " (" . __('user.role.author') . " {$a})", 'biography' . $a => __('user.biography') . " (" . __('user.role.author') . " {$a})")); } $columns = array_merge($columns, array('track_title' => __('track.title'), 'language' => __('common.language'), 'director_decision' => __('submission.directorDecision'), 'start_time' => __('manager.scheduler.startTime'), 'end_time' => __('manager.scheduler.endTime'), 'building' => __('manager.scheduler.building'), 'room' => __('manager.scheduler.room'), 'status' => __('common.status'))); $fp = fopen('php://output', 'wt'); String::fputcsv($fp, array_values($columns)); import('paper.Paper'); // Bring in getStatusMap function $statusMap =& Paper::getStatusMap(); $controlledVocabDao =& DAORegistry::getDAO('ControlledVocabDAO'); $sessionTypes = $controlledVocabDao->enumerateBySymbolic('paperType', ASSOC_TYPE_SCHED_CONF, $schedConf->getId()); // Load building and room data $buildingDao =& DAORegistry::getDAO('BuildingDAO'); $roomDao =& DAORegistry::getDAO('RoomDAO'); $buildings = $rooms = array(); $buildingsIterator =& $buildingDao->getBuildingsBySchedConfId($schedConf->getId()); while ($building =& $buildingsIterator->next()) { $buildingId = $building->getId(); $buildings[$buildingId] =& $building; $roomsIterator =& $roomDao->getRoomsByBuildingId($buildingId); while ($room =& $roomsIterator->next()) { $roomId = $room->getId(); $rooms[$roomId] =& $room; unset($room); } unset($building); unset($roomsIterator); } unset($buildingsIterator); $authorIndex = 0; while ($row =& $papersIterator->next()) { if (isset($authorsIterator[$row['paper_id']])) { $authorIterator =& $authorsIterator[$row['paper_id']]; $authors = $this->mergeAuthors($authorIterator->toArray()); } else { // No authors for a submission. $authors = array(); } unset($authorIterator); foreach ($columns as $index => $junk) { if ($index == 'director_decision') { if (isset($decisions[$row['paper_id']])) { $columns[$index] = $decisionMessages[$decisions[$row['paper_id']]]; } else { $columns[$index] = $decisionMessages[null]; } } elseif ($index == 'status') { $columns[$index] = __($statusMap[$row[$index]]); } elseif ($index == 'abstract' || $index == 'title' || $index == 'affiliation') { $columns[$index] = html_entity_decode(strip_tags($row[$index]), ENT_QUOTES, 'UTF-8'); } elseif ($index == 'start_time' || $index == 'end_time') { $columns[$index] = $row[$index]; } elseif ($index == 'building') { $columns['building'] = ''; $room =& $rooms[$row['room_id']]; if ($room) { $building =& $buildings[$room->getBuildingId()]; if ($building) { $columns[$index] = $building->getBuildingName(); } } unset($room, $building); } elseif ($index == 'room') { $columns['room'] = ''; $room =& $rooms[$row['room_id']]; if ($room) { $columns[$index] = $room->getRoomName(); } unset($room); } elseif (strstr($index, 'biography') !== false) { // "Convert" HTML to text for export $columns[$index] = isset($authors[$index]) ? html_entity_decode(strip_tags($authors[$index]), ENT_QUOTES, 'UTF-8') : ''; } else { if (isset($row[$index])) { $columns[$index] = $row[$index]; } else { if (isset($authors[$index])) { $columns[$index] = $authors[$index]; } else { $columns[$index] = ''; } } } } String::fputcsv($fp, $columns); $authorIndex++; unset($row); } fclose($fp); }
function generateCustomizedCSV($args) { parent::validate(); $this->setupTemplate(); $query = Request::getUserVar('query'); $region = Request::getUserVar('region'); $statusFilter = Request::getUserVar('statusFilter'); $fromDate = Request::getUserVar('dateFrom'); //if ($fromDate != null) $fromDate = date('Y-m-d H:i:s', $fromDate); $toDate = Request::getUserVar('dateTo'); //if ($toDate != null) $toDate = date('Y-m-d H:i:s', $toDate); $columns = array(); $proposalId = false; if (Request::getUserVar('proposalId')) { $columns = $columns + array('proposalId' => Locale::translate('article.submissionId')); $proposalId = true; } $scientificTitle = false; if (Request::getUserVar('scientificTitle')) { $columns = $columns + array('scientificTitle' => Locale::translate('article.scientificTitle')); $scientificTitle = true; } $publicTitle = false; if (Request::getUserVar('publicTitle')) { $columns = $columns + array('publicTitle' => Locale::translate('article.publicTitle')); $publicTitle = true; } $recruitmentStatus = false; if (Request::getUserVar('recruitmentStatus')) { $columns = $columns + array('recruitmentStatus' => Locale::translate('proposal.recruitment') . ' ' . Locale::translate('proposal.recruitment.status')); $recruitmentStatus = true; } $therapeuticArea = false; if (Request::getUserVar('therapeuticArea')) { $columns = $columns + array('therapeuticArea' => Locale::translate('proposal.therapeuticArea')); $therapeuticArea = true; } $minAge = false; if (Request::getUserVar('minAge')) { $columns = $columns + array('minAge' => Locale::translate('proposal.age.minimum')); $minAge = true; } $maxAge = false; if (Request::getUserVar('maxAge')) { $columns = $columns + array('maxAge' => Locale::translate('proposal.age.maximum')); $maxAge = true; } $sex = false; if (Request::getUserVar('sex')) { $columns = $columns + array('sex' => Locale::translate('proposal.sex')); $sex = true; } $healthy = false; if (Request::getUserVar('healthy')) { $columns = $columns + array('healthy' => Locale::translate('proposal.healthy')); $healthy = true; } $pSponsor = false; if (Request::getUserVar('pSponsor')) { $columns = $columns + array('pSponsor' => Locale::translate('proposal.primarySponsor')); $pSponsor = true; } $enrolment = false; if (Request::getUserVar('enrolment')) { $columns = $columns + array('enrolment' => Locale::translate('proposal.expectedDate')); $enrolment = true; } header('content-type: text/comma-separated-values'); header('content-disposition: attachment; filename=searchResults-' . date('Ymd') . '.csv'); $fp = fopen('php://output', 'wt'); String::fputcsv($fp, array_values($columns)); $articleDao =& DAORegistry::getDAO('ArticleDAO'); $results = $articleDao->searchCustomizedProposalsPublic($query, $region, $fromDate, $toDate, $statusFilter, $proposalId, $scientificTitle, $publicTitle, $recruitmentStatus, $therapeuticArea, $minAge, $maxAge, $sex, $healthy, $pSponsor, $enrolment); foreach ($results as $result) { foreach ($columns as $index => $junk) { if ($index == 'status') { if ($result->getStatus() == '11') { $columns[$index] = 'Complete'; } else { $columns[$index] = 'Ongoing'; } } elseif ($index == 'date_submitted') { $columns[$index] = $result->getDateSubmitted(); } } String::fputcsv($fp, $columns); } fclose($fp); unset($columns); }
/** * Generate the subscription report and write CSV contents to file * @param $args array Request arguments */ function display(&$args) { $journal =& Request::getJournal(); $journalId = $journal->getId(); $userDao =& DAORegistry::getDAO('UserDAO'); $countryDao =& DAORegistry::getDAO('CountryDAO'); $subscriptionTypeDao =& DAORegistry::getDAO('SubscriptionTypeDAO'); $individualSubscriptionDao =& DAORegistry::getDAO('IndividualSubscriptionDAO'); $institutionalSubscriptionDao =& DAORegistry::getDAO('InstitutionalSubscriptionDAO'); header('content-type: text/comma-separated-values'); header('content-disposition: attachment; filename=subscriptions-' . date('Ymd') . '.csv'); $fp = fopen('php://output', 'wt'); // Columns for individual subscriptions $columns = array(__('subscriptionManager.individualSubscriptions')); String::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'), 'fax' => __('user.fax')); $columns = array_merge($columnsCommon, $columnsIndividual); // Write out individual subscription column headings to file String::fputcsv($fp, array_values($columns)); // Iterate over individual subscriptions and write out each to file $individualSubscriptions =& $individualSubscriptionDao->getSubscriptionsByJournalId($journalId); while ($subscription =& $individualSubscriptions->next()) { $user =& $userDao->getUser($subscription->getUserId()); $subscriptionType =& $subscriptionTypeDao->getSubscriptionType($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] = $this->_html2text($subscription->getNotes()); break; case 'name': $columns[$index] = $user->getFullName(); break; case 'mailing_address': $columns[$index] = $this->_html2text($user->getMailingAddress()); break; case 'country': $columns[$index] = $countryDao->getCountry($user->getCountry()); break; case 'email': $columns[$index] = $user->getEmail(); break; case 'phone': $columns[$index] = $user->getPhone(); break; case 'fax': $columns[$index] = $user->getFax(); break; default: $columns[$index] = ''; } } String::fputcsv($fp, $columns); } // Columns for institutional subscriptions $columns = array(''); String::fputcsv($fp, array_values($columns)); $columns = array(__('subscriptionManager.institutionalSubscriptions')); String::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'), 'fax' => __('user.fax')); $columns = array_merge($columnsCommon, $columnsInstitution); // Write out institutional subscription column headings to file String::fputcsv($fp, array_values($columns)); // Iterate over institutional subscriptions and write out each to file $institutionalSubscriptions =& $institutionalSubscriptionDao->getSubscriptionsByJournalId($journalId); while ($subscription =& $institutionalSubscriptions->next()) { $user =& $userDao->getUser($subscription->getUserId()); $subscriptionType =& $subscriptionTypeDao->getSubscriptionType($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] = $this->_html2text($subscription->getNotes()); break; case 'institution_name': $columns[$index] = $subscription->getInstitutionName(); break; case 'institution_mailing_address': $columns[$index] = $this->_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] = $this->_html2text($user->getMailingAddress()); break; case 'country': $columns[$index] = $countryDao->getCountry($user->getCountry()); break; case 'email': $columns[$index] = $user->getEmail(); break; case 'phone': $columns[$index] = $user->getPhone(); break; case 'fax': $columns[$index] = $user->getFax(); break; default: $columns[$index] = ''; } } String::fputcsv($fp, $columns); } fclose($fp); }
function display(&$args) { $journal =& Request::getJournal(); header('content-type: text/comma-separated-values'); header('content-disposition: attachment; filename=report.csv'); $articleReportDao =& DAORegistry::getDAO('ArticleReportDAO'); list($articlesIterator, $decisionsIteratorsArray) = $articleReportDao->getArticleReport($journal->getJournalId()); $decisions = array(); foreach ($decisionsIteratorsArray as $decisionsIterator) { while ($row =& $decisionsIterator->next()) { $decisions[$row['article_id']] = $row['decision']; } } import('classes.article.Article'); $decisionMessages = array(SUBMISSION_EDITOR_DECISION_ACCEPT => Locale::translate('editor.article.decision.accept'), SUBMISSION_EDITOR_DECISION_PENDING_REVISIONS => Locale::translate('editor.article.decision.pendingRevisions'), SUBMISSION_EDITOR_DECISION_RESUBMIT => Locale::translate('editor.article.decision.resubmit'), SUBMISSION_EDITOR_DECISION_DECLINE => Locale::translate('editor.article.decision.decline'), null => Locale::translate('plugins.reports.articles.nodecision')); $columns = array('article_id' => Locale::translate('article.submissionId'), 'title' => Locale::translate('article.title'), 'abstract' => Locale::translate('article.abstract'), 'fname' => Locale::translate('user.firstName'), 'mname' => Locale::translate('user.middleName'), 'lname' => Locale::translate('user.lastName'), 'phone' => Locale::translate('user.phone'), 'fax' => Locale::translate('user.fax'), 'address' => Locale::translate('common.mailingAddress'), 'country' => Locale::translate('common.country'), 'affiliation' => Locale::translate('user.affiliation'), 'email' => Locale::translate('user.email'), 'url' => Locale::translate('user.url'), 'biography' => Locale::translate('user.biography'), 'section_title' => Locale::translate('section.title'), 'language' => Locale::translate('common.language'), 'status' => Locale::translate('common.status')); $fp = fopen('php://output', 'wt'); String::fputcsv($fp, array_values($columns)); while ($row =& $articlesIterator->next()) { foreach ($columns as $index => $junk) { if ($index == "article_id") { $columns[$index] = $row[$index]; if (isset($decisions[$row[$index]])) { $columns['status'] = $decisionMessages[$decisions[$row[$index]]]; } else { $columns['status'] = $decisionMessages[NULL]; } } else { if ($index == "status") { continue; } else { $columns[$index] = $row[$index]; } } } String::fputcsv($fp, $columns); unset($row); } fclose($fp); }
/** * Counter report as CSV */ function report() { $this->validate(); $plugin =& $this->plugin; $this->setupTemplate(true); $journal =& Request::getJournal(); $year = Request::getUserVar('year'); $begin = "{$year}-01-01"; $end = "{$year}-12-01"; $counterReportDao =& DAORegistry::getDAO('CounterReportDAO'); header('content-type: text/comma-separated-values'); header('content-disposition: attachment; filename=counter-' . date('Ymd') . '.csv'); $fp = fopen('php://output', 'wt'); String::fputcsv($fp, array(Locale::translate('plugins.generic.counter.1a.title1'))); String::fputcsv($fp, array(Locale::translate('plugins.generic.counter.1a.title2', array('year' => $year)))); String::fputcsv($fp, array()); // FIXME: Criteria should be here? String::fputcsv($fp, array(Locale::translate('plugins.generic.counter.1a.dateRun'))); String::fputcsv($fp, array(strftime("%Y-%m-%d"))); $cols = array('', Locale::translate('plugins.generic.counter.1a.publisher'), Locale::translate('plugins.generic.counter.1a.platform'), Locale::translate('plugins.generic.counter.1a.printIssn'), Locale::translate('plugins.generic.counter.1a.onlineIssn')); for ($i = 1; $i <= 12; $i++) { $time = strtotime($year . '-' . $i . '-01'); strftime('%b', $time); $cols[] = strftime('%b-%Y', $time); } $cols[] = Locale::translate('plugins.generic.counter.1a.ytdTotal'); $cols[] = Locale::translate('plugins.generic.counter.1a.ytdHtml'); $cols[] = Locale::translate('plugins.generic.counter.1a.ytdPdf'); fputcsv($fp, $cols); // Display the totals first $totals = $counterReportDao->getMonthlyTotalRange($begin, $end); $cols = array(Locale::translate('plugins.generic.counter.1a.totalForAllJournals'), '-', '', '-', '-'); CounterHandler::_formColumns($cols, $totals); fputcsv($fp, $cols); // Get statistics from the log. $journalDao =& DAORegistry::getDAO('JournalDAO'); $journalIds = $counterReportDao->getJournalIds(); foreach ($journalIds as $journalId) { $journal =& $journalDao->getJournal($journalId); if (!$journal) { continue; } $entries = $counterReportDao->getMonthlyLogRange($journalId, $begin, $end); $cols = array($journal->getLocalizedTitle(), $journal->getSetting('publisherInstitution'), 'Open Journal Systems', $journal->getSetting('printIssn'), $journal->getSetting('onlineIssn')); CounterHandler::_formColumns($cols, $entries); fputcsv($fp, $cols); unset($journal, $entry); } fclose($fp); }
function display(&$args) { $conference =& Request::getConference(); $schedConf =& Request::getSchedConf(); Locale::requireComponents(array(LOCALE_COMPONENT_APPLICATION_COMMON, LOCALE_COMPONENT_PKP_USER, LOCALE_COMPONENT_PKP_SUBMISSION, LOCALE_COMPONENT_OCS_MANAGER)); header('content-type: text/comma-separated-values'); header('content-disposition: attachment; filename=reviews-' . date('Ymd') . '.csv'); $reviewReportDao =& DAORegistry::getDAO('ReviewReportDAO'); list($commentsIterator, $reviewsIterator) = $reviewReportDao->getReviewReport($schedConf->getId()); $comments = array(); while ($row =& $commentsIterator->next()) { if (isset($comments[$row['paper_id']][$row['author_id']])) { $comments[$row['paper_id']][$row['author_id']] .= "; " . $row['comments']; } else { $comments[$row['paper_id']][$row['author_id']] = $row['comments']; } } $yesnoMessages = array(0 => Locale::translate('common.no'), 1 => Locale::translate('common.yes')); import('classes.schedConf.SchedConf'); $reviewTypes = array(REVIEW_MODE_ABSTRACTS_ALONE => Locale::translate('manager.schedConfSetup.submissions.abstractsAlone'), REVIEW_MODE_BOTH_SEQUENTIAL => Locale::translate('manager.schedConfSetup.submissions.bothSequential'), REVIEW_MODE_PRESENTATIONS_ALONE => Locale::translate('manager.schedConfSetup.submissions.presentationsAlone'), REVIEW_MODE_BOTH_SIMULTANEOUS => Locale::translate('manager.schedConfSetup.submissions.bothTogether')); import('classes.submission.reviewAssignment.ReviewAssignment'); $recommendations = ReviewAssignment::getReviewerRecommendationOptions(); $columns = array('reviewRound' => Locale::translate('submissions.reviewType'), 'paper' => Locale::translate('paper.papers'), 'paperid' => Locale::translate('paper.submissionId'), 'reviewerid' => Locale::translate('plugins.reports.reviews.reviewerId'), 'reviewer' => Locale::translate('plugins.reports.reviews.reviewer'), 'firstname' => Locale::translate('user.firstName'), 'middlename' => Locale::translate('user.middleName'), 'lastname' => Locale::translate('user.lastName'), 'dateassigned' => Locale::translate('plugins.reports.reviews.dateAssigned'), 'datenotified' => Locale::translate('plugins.reports.reviews.dateNotified'), 'dateconfirmed' => Locale::translate('plugins.reports.reviews.dateConfirmed'), 'datecompleted' => Locale::translate('plugins.reports.reviews.dateCompleted'), 'datereminded' => Locale::translate('plugins.reports.reviews.dateReminded'), 'declined' => Locale::translate('submissions.declined'), 'cancelled' => Locale::translate('common.cancelled'), 'recommendation' => Locale::translate('reviewer.paper.recommendation'), 'comments' => Locale::translate('comments.commentsOnPaper')); $yesNoArray = array('declined', 'cancelled'); $fp = fopen('php://output', 'wt'); String::fputcsv($fp, array_values($columns)); while ($row =& $reviewsIterator->next()) { foreach ($columns as $index => $junk) { if (in_array($index, array('declined', 'cancelled'))) { $yesNoIndex = $row[$index]; if (is_string($yesNoIndex)) { // Accomodate Postgres boolean casting $yesNoIndex = $yesNoIndex == "f" ? 0 : 1; } $columns[$index] = $yesnoMessages[$yesNoIndex]; } elseif ($index == 'reviewRound') { $columns[$index] = $reviewTypes[$row[$index]]; } elseif ($index == "recommendation") { $columns[$index] = !isset($row[$index]) ? Locale::translate('common.none') : Locale::translate($recommendations[$row[$index]]); } elseif ($index == "comments") { if (isset($comments[$row['paperid']][$row['reviewerid']])) { $columns[$index] = html_entity_decode(strip_tags($comments[$row['paperid']][$row['reviewerid']])); } else { $columns[$index] = ""; } } else { $columns[$index] = $row[$index]; } } String::fputcsv($fp, $columns); unset($row); } fclose($fp); }
function donwloadMinutesTemplate($args) { $meetingId = isset($args[0]) ? (int) $args[0] : 0; $this->validate($meetingId); $meetingDao =& DAORegistry::getDAO('MeetingDAO'); $meetingAttendanceDao =& DAORegistry::getDAO("MeetingAttendanceDAO"); $ercDao =& DAORegistry::getDAO("SectionDAO"); $sectionDecisionDao =& DAORegistry::getDAO("SectionDecisionDAO"); $sectionEditorSubmissionDao =& DAORegistry::getDAO("SectionEditorSubmissionDAO"); $meeting = $meetingDao->getMeetingById($meetingId); header('content-type: text/comma-separated-values'); header('content-disposition: attachment; filename=' . $meeting->getPublicId() . '-' . date('dMY') . '-minutesTemplate.csv'); Locale::requireComponents(array(LOCALE_COMPONENT_PKP_SUBMISSION, LOCALE_COMPONENT_OJS_EDITOR, LOCALE_COMPONENT_APPLICATION_COMMON)); $fp = fopen('php://output', 'wt'); $erc =& $ercDao->getSection($meeting->getUploader()); String::fputcsv($fp, array($erc->getLocalizedTitle())); String::fputcsv($fp, array('')); String::fputcsv($fp, array(Locale::translate('editor.minutes.meetingMinutes'), Locale::translate('editor.meeting.id') . ': ' . $meeting->getPublicId())); String::fputcsv($fp, array('', Locale::translate('editor.meeting.dateAndTime') . ': ' . date('D, d M Y H:i', strtotime($meeting->getDate())))); String::fputcsv($fp, array('', Locale::translate('editor.meeting.length') . ': ' . $meeting->getLength() . ' ' . Locale::translate('common.time.minutes'))); String::fputcsv($fp, array('', Locale::translate('editor.meeting.location') . ': ' . $meeting->getLocation())); $meetingAttendances =& $meetingAttendanceDao->getMeetingAttendancesByMeetingId($meeting->getId()); $presentMembers = (string) ''; $absentMembers = (string) ''; foreach ($meetingAttendances as $meetingAttendance) { if ($meetingAttendance->getIsAttending() == MEETING_REPLY_ATTENDING) { $member =& $meetingAttendance->getUser(); if ($presentMembers == '') { $presentMembers = $member->getFullName(); } else { $presentMembers = $presentMembers . ', ' . $member->getFullName(); } } elseif ($meetingAttendance->getIsAttending() == MEETING_REPLY_NOT_ATTENDING) { $member =& $meetingAttendance->getUser(); if ($absentMembers == '') { $absentMembers = $member->getFullName(); } else { $absentMembers = $absentMembers . ', ' . $member->getFullName(); } } } String::fputcsv($fp, array(Locale::translate('editor.meeting.attendees'), $presentMembers)); String::fputcsv($fp, array(Locale::translate('editor.meeting.absent'), $absentMembers)); String::fputcsv($fp, array(Locale::translate('editor.minutes.welcome'))); String::fputcsv($fp, array(Locale::translate('editor.minutes.apologies'))); String::fputcsv($fp, array(Locale::translate('editor.meeting.minutesPrevious'))); $initialReviews = array(); $progressReports = array(); $amendments = array(); $seriousAdverseEvents = array(); $finalReports = array(); $meetingSectionDecisions =& $meeting->getMeetingSectionDecisions(); foreach ($meetingSectionDecisions as $meetingSectionDecision) { $sDecision =& $sectionDecisionDao->getSectionDecision($meetingSectionDecision->getSectionDecisionId()); $reviewAssignments =& $sDecision->getReviewAssignments(); $reviewAssignmentsString = (string) ''; foreach ($reviewAssignments as $reviewAssignment) { if ($reviewAssignmentsString == '') { $reviewAssignmentsString = $reviewAssignment->getReviewerFullName(); } else { $reviewAssignmentsString = $reviewAssignmentsString . ', ' . $reviewAssignment->getReviewerFullName(); } } switch ($sDecision->getReviewType()) { case REVIEW_TYPE_INITIAL: array_push($initialReviews, array('decision' => $sDecision, 'proposal' => $sectionEditorSubmissionDao->getSectionEditorSubmission($sDecision->getArticleId()), 'reviewAssignments' => $reviewAssignmentsString)); break; case REVIEW_TYPE_PR: array_push($progressReports, array('decision' => $sDecision, 'proposal' => $sectionEditorSubmissionDao->getSectionEditorSubmission($sDecision->getArticleId()), 'reviewAssignments' => $reviewAssignmentsString)); break; case REVIEW_TYPE_AMENDMENT: array_push($amendments, array('decision' => $sDecision, 'proposal' => $sectionEditorSubmissionDao->getSectionEditorSubmission($sDecision->getArticleId()), 'reviewAssignments' => $reviewAssignmentsString)); break; case REVIEW_TYPE_SAE: array_push($seriousAdverseEvents, array('decision' => $sDecision, 'proposal' => $sectionEditorSubmissionDao->getSectionEditorSubmission($sDecision->getArticleId()), 'reviewAssignments' => $reviewAssignmentsString)); break; case REVIEW_TYPE_FR: array_push($finalReports, array('decision' => $sDecision, 'proposal' => $sectionEditorSubmissionDao->getSectionEditorSubmission($sDecision->getArticleId()), 'reviewAssignments' => $reviewAssignmentsString)); break; } } $proposalCategories = array(); array_push($proposalCategories, array('title' => 'submission.initialReview', 'category' => $initialReviews)); array_push($proposalCategories, array('title' => 'submission.progressReport', 'category' => $progressReports)); array_push($proposalCategories, array('title' => 'submission.protocolAmendment', 'category' => $amendments)); array_push($proposalCategories, array('title' => 'submission.seriousAdverseEvents', 'category' => $seriousAdverseEvents)); array_push($proposalCategories, array('title' => 'submission.finalReport', 'category' => $finalReports)); foreach ($proposalCategories as $proposalCategory) { if (!empty($proposalCategory['category'])) { String::fputcsv($fp, array('')); String::fputcsv($fp, array(Locale::translate($proposalCategory['title']))); String::fputcsv($fp, array(Locale::translate('submissions.reviewRound'), Locale::translate('article.scientificTitle'), Locale::translate('editor.minutes.generalDiscussion'), Locale::translate('submissions.editorDecision'), Locale::translate('editor.minutes.primaryReviewer'), Locale::translate('editor.minutes.timeFrame'))); foreach ($proposalCategory['category'] as $selection) { String::fputcsv($fp, array($selection['decision']->getRound(), $selection['proposal']->getScientificTitle(), '', '', $selection['reviewAssignments'], '')); } } } fclose($fp); }
function _CSVReport($proposals, $criterias) { $institutionDao =& DAORegistry::getDAO('InstitutionDAO'); $countryDao =& DAORegistry::getDAO('CountryDAO'); $extraFieldDao =& DAORegistry::getDAO('ExtraFieldDAO'); $journal =& Request::getJournal(); header('content-type: text/comma-separated-values'); header('content-disposition: attachment; filename=' . $journal->getLocalizedInitials() . '-' . date('YMd') . '-' . Locale::translate('editor.report') . '.csv'); $fp = fopen('php://output', 'wt'); $columns = $this->_getColumnsOfCSV(); //Write into the csv String::fputcsv($fp, array_values($columns)); foreach ($proposals as $proposal) { $decisions = $proposal->getDecisions(); $investigators = $proposal->getAuthors(); // Set up the for loops in case of multi entries for one proposal if (array_key_exists('committee', $columns)) { $decisionsCount = count($decisions); } else { $decisionsCount = 1; } if (Request::getUserVar('checkAllInvestigators')) { $investigatorsCount = count($investigators); } else { $investigatorsCount = 1; } if (array_key_exists('sourceInstitution', $columns)) { $sourcesCount = count($sources); } else { $sourcesCount = 1; } // Loop through all the possible mutli entries and write the data for ($dI = 0; $dI < $decisionsCount; $dI++) { for ($iI = 0; $iI < $investigatorsCount; $iI++) { foreach ($columns as $index => $junk) { // General if ($index == 'proposalId') { $columns[$index] = $proposal->getProposalId(); } elseif ($index == 'committee') { $columns[$index] = $decisions[$dI]->getSectionAcronym(); } elseif ($index == 'decisionType') { $columns[$index] = Locale::translate($decisions[$dI]->getReviewTypeKey()); } elseif ($index == 'decisionStatus') { $columns[$index] = Locale::translate($decisions[$dI]->getReviewStatusKey()); } elseif ($index == 'decisionDate') { $columns[$index] = date("d-M-Y", strtotime($decisions[$dI]->getDateDecided())); } elseif ($index == 'submitDate') { $columns[$index] = date("d-M-Y", strtotime($proposal->getDateSubmitted())); } elseif ($index == 'investigator') { $columns[$index] = $this->_removeCommaForCSV($investigators[$iI]->getFullName(true)); } elseif ($index == 'investigatorAffiliation') { $columns[$index] = $this->_removeCommaForCSV($investigators[$iI]->getAffiliation()); } elseif ($index == 'investigatorEmail') { $columns[$index] = $investigators[$iI]->getEmail(); } } String::fputcsv($fp, $columns); } } } // Display or not the search criterias on the bottom of the CSV file if (Request::getUserVar('checkShowCriterias')) { String::fputcsv($fp, array('')); String::fputcsv($fp, array('')); if (!empty($criterias)) { $i = 0; foreach ($criterias as $criteria) { if ($i != 0) { $criteria = Locale::translate('common.and') . ' ' . $criteria; String::fputcsv($fp, array('', $criteria)); } else { String::fputcsv($fp, array(Locale::translate('editor.reports.criterias'), $criteria)); } $i++; } } } fclose($fp); }
function display(&$args) { $conference =& Request::getConference(); $schedConf =& Request::getSchedConf(); Locale::requireComponents(array(LOCALE_COMPONENT_APPLICATION_COMMON, LOCALE_COMPONENT_PKP_USER, LOCALE_COMPONENT_OCS_MANAGER)); header('content-type: text/comma-separated-values'); header('content-disposition: attachment; filename=registrants-' . date('Ymd') . '.csv'); $registrationDao =& DAORegistry::getDAO('RegistrationDAO'); $registrationOptionDao =& DAORegistry::getDAO('RegistrationOptionDAO'); $registrationTypeDao =& DAORegistry::getDAO('RegistrationTypeDAO'); $userDao =& DAORegistry::getDAO('UserDAO'); $columns = array(Locale::translate('plugins.reports.registrants.registrationid'), Locale::translate('plugins.reports.registrants.userid'), Locale::translate('user.username'), Locale::translate('user.firstName'), Locale::translate('user.middleName'), Locale::translate('user.lastName'), Locale::translate('user.affiliation'), Locale::translate('user.url'), Locale::translate('user.email'), Locale::translate('user.phone'), Locale::translate('user.fax'), Locale::translate('common.mailingAddress'), Locale::translate('common.billingAddress'), Locale::translate('common.country'), Locale::translate('manager.registration.registrationType')); $registrationOptions =& $registrationOptionDao->getRegistrationOptionsBySchedConfId($schedConf->getId()); // 'option' + optionId => name of the registration option $registrationOptionIds = array(); while ($registrationOption =& $registrationOptions->next()) { $registrationOptionIds[] = $registrationOption->getOptionId(); $columns = array_merge($columns, array('option' . $registrationOption->getOptionId() => $registrationOption->getRegistrationOptionName())); unset($registrationOption); } $columns = array_merge($columns, array(Locale::translate('manager.registration.dateRegistered'), Locale::translate('manager.registration.datePaid'), Locale::translate('schedConf.registration.specialRequests'), Locale::translate('plugins.reports.registrants.total'))); $fp = fopen('php://output', 'wt'); String::fputcsv($fp, array_values($columns)); $registrationOptionCosts = $registrationTypes = array(); $registrations =& $registrationDao->getRegistrationsBySchedConfId($schedConf->getId()); while ($registration =& $registrations->next()) { $registrationId = $registration->getId(); $registrationTypeId = $registration->getTypeId(); // Get registration option costs, caching as we go. if (!isset($registrationOptionCosts[$registrationTypeId])) { $registrationOptionCosts[$registrationTypeId] = $registrationTypeDao->getRegistrationOptionCosts($registrationTypeId); } // Get the registration type, caching as we go. if (!isset($registrationTypes[$registrationTypeId])) { $registrationTypes[$registrationTypeId] =& $registrationTypeDao->getRegistrationType($registrationTypeId); } $registrationType =& $registrationTypes[$registrationTypeId]; // Get registrant user object $user =& $userDao->getUser($registration->getUserId()); $columns = array($registrationId, $user->getId(), $user->getUsername(), $user->getFirstName(), $user->getMiddleName(), $user->getLastName(), $user->getLocalizedAffiliation(), $user->getUrl(), $user->getEmail(), $user->getPhone(), $user->getFax(), $user->getMailingAddress(), $user->getBillingAddress(), $user->getCountry(), $registrationType->getRegistrationTypeName()); // Get selected registration options; calculate costs $totalCost = $registrationType->getCost(); $selectedOptionIds = $registrationOptionDao->getRegistrationOptions($registrationId); foreach ($registrationOptionIds as $optionId) { if (in_array($optionId, $selectedOptionIds)) { $columns[] = Locale::translate('common.yes'); if (isset($registrationOptionCosts[$registrationTypeId][$optionId])) { $totalCost += $registrationOptionCosts[$registrationTypeId][$optionId]; } } else { $columns[] = Locale::translate('common.no'); } } $columns[] = $registration->getDateRegistered(); $columns[] = $registration->getDatePaid(); $columns[] = $registration->getSpecialRequests(); $columns[] = sprintf('%.2f', $totalCost); String::fputcsv($fp, $columns); unset($registration, $registrationType, $user); } fclose($fp); }
function display(&$args) { $conference =& Request::getConference(); $schedConf =& Request::getSchedConf(); Locale::requireComponents(array(LOCALE_COMPONENT_APPLICATION_COMMON, LOCALE_COMPONENT_PKP_USER, LOCALE_COMPONENT_OCS_MANAGER)); header('content-type: text/comma-separated-values'); header('content-disposition: attachment; filename=report.csv'); $registrantReportDao =& DAORegistry::getDAO('RegistrantReportDAO'); list($registrants, $registrantOptions) = $registrantReportDao->getRegistrantReport($conference->getId(), $schedConf->getId()); $columns = array('userid' => Locale::translate('plugins.reports.registrants.userid'), 'uname' => Locale::translate('user.username'), 'fname' => Locale::translate('user.firstName'), 'mname' => Locale::translate('user.middleName'), 'lname' => Locale::translate('user.lastName'), 'affiliation' => Locale::translate('user.affiliation'), 'url' => Locale::translate('user.url'), 'email' => Locale::translate('user.email'), 'phone' => Locale::translate('user.phone'), 'fax' => Locale::translate('user.fax'), 'address' => Locale::translate('common.mailingAddress'), 'country' => Locale::translate('common.country'), 'type' => Locale::translate('manager.registration.registrationType')); $registrationOptionDAO =& DAORegistry::getDAO('RegistrationOptionDAO'); $registrationOptions =& $registrationOptionDAO->getRegistrationOptionsBySchedConfId($schedConf->getId()); // column name = 'option' + optionId => column value = name of the registration option while ($registrationOption =& $registrationOptions->next()) { $registrationOptionIds[] = $registrationOption->getOptionId(); $columns = array_merge($columns, array('option' . $registrationOption->getOptionId() => $registrationOption->getRegistrationOptionName())); unset($registrationOption); } $columns = array_merge($columns, array('regdate' => Locale::translate('manager.registration.dateRegistered'), 'paiddate' => Locale::translate('manager.registration.datePaid'), 'specialreq' => Locale::translate('schedConf.registration.specialRequests'))); $fp = fopen('php://output', 'wt'); String::fputcsv($fp, array_values($columns)); while ($row =& $registrants->next()) { if (isset($registrantOptions[$row['registration_id']])) { $options = $this->mergeRegistrantOptions($registrationOptionIds, $registrantOptions[$row['registration_id']]); } else { $options = $this->mergeRegistrantOptions($registrationOptionIds); } foreach ($columns as $index => $junk) { if (isset($row[$index])) { $columns[$index] = $row[$index]; } else { if (isset($options[$index])) { $columns[$index] = $options[$index]; } else { $columns[$index] = ''; } } } String::fputcsv($fp, $columns); unset($row); } fclose($fp); }