function cite($args, $request)
{
$router = $request->getRouter();
$this->setupTemplate($request);
$articleId = isset($args[0]) ? $args[0] : 0;
$citeType = isset($args[1]) ? $args[1] : null;
$returnFormat = isset($args[2]) ? $args[2] : null;
$citationPlugins = PluginRegistry::loadCategory('citationFormats');
import('lib.pkp.classes.core.JSONMessage');
if (empty($citeType) || !isset($citationPlugins[$citeType])) {
AppLocale::requireComponents(LOCALE_COMPONENT_APP_SUBMISSION);
$errorMessage = __('submission.citationFormat.notFound');
if ($returnFormat == 'json') {
return new JSONMessage(false, $errorMessage);
} else {
echo $errorMessage;
}
return;
}
$article = $this->article;
$issue = $this->issue;
$journal = $request->getContext();
// Initiate a file download and exit
if ($citationPlugins[$citeType]->isDownloadable()) {
$citationPlugins[$citeType]->downloadCitation($article, $issue, $journal);
return;
}
$citation = $citationPlugins[$citeType]->fetchCitation($article, $issue, $journal);
// Return a JSON formatted string
if ($returnFormat == 'json') {
return new JSONMessage(true, $citation);
// Display it straight to the browser
} else {
echo $citation;
return;
}
}