function getAuthorsAlphabetizedByJournal($journalId = null, $initial = null, $rangeInfo = null, $includeEmail = false)
{
$params = array('affiliation', AppLocale::getPrimaryLocale(), 'affiliation', AppLocale::getLocale());
if (isset($journalId)) {
$params[] = $journalId;
}
if (isset($initial)) {
$params[] = PKPString::strtolower($initial) . '%';
$initialSql = ' AND LOWER(aa.last_name) LIKE LOWER(?)';
} else {
$initialSql = '';
}
$result = $this->retrieveRange('SELECT DISTINCT
CAST(\'\' AS CHAR) AS url,
0 AS author_id,
0 AS submission_id,
' . ($includeEmail ? 'aa.email AS email,' : 'CAST(\'\' AS CHAR) AS email,') . '
0 AS primary_contact,
0 AS seq,
aa.first_name,
aa.middle_name,
aa.last_name,
SUBSTRING(asl.setting_value FROM 1 FOR 255) AS affiliation_l,
asl.locale,
SUBSTRING(aspl.setting_value FROM 1 FOR 255) AS affiliation_pl,
aspl.locale AS primary_locale,
aa.country
FROM authors aa
LEFT JOIN author_settings aspl ON (aa.author_id = aspl.author_id AND aspl.setting_name = ? AND aspl.locale = ?)
LEFT JOIN author_settings asl ON (aa.author_id = asl.author_id AND asl.setting_name = ? AND asl.locale = ?)
JOIN submissions a ON (a.submission_id = aa.submission_id AND a.status = ' . STATUS_PUBLISHED . ')
JOIN journals j ON (a.context_id = j.journal_id)
JOIN published_submissions pa ON (pa.submission_id = a.submission_id)
JOIN issues i ON (pa.issue_id = i.issue_id AND i.published = 1)
WHERE ' . (isset($journalId) ? 'j.journal_id = ?' : 'j.enabled = 1') . '
AND (aa.last_name IS NOT NULL AND aa.last_name <> \'\')' . $initialSql . '
ORDER BY aa.last_name, aa.first_name', $params, $rangeInfo);
return new DAOResultFactory($result, $this, '_returnSimpleAuthorFromRow');
}