function getBySetting($settingName, $settingValue, $journalId = null, $rangeInfo = null)
{
$params = $this->getFetchParameters();
$params[] = $settingName;
$sql = 'SELECT s.*, ps.date_published,
' . $this->getFetchColumns() . '
FROM submissions s
LEFT JOIN published_submissions ps ON (s.submission_id = ps.submission_id)
' . $this->getFetchJoins() . ' ';
if (is_null($settingValue)) {
$sql .= 'LEFT JOIN submission_settings sst ON a.submission_id = sst.submission_id AND sst.setting_name = ?
WHERE (sst.setting_value IS NULL OR sst.setting_value = \'\')';
} else {
$params[] = $settingValue;
$sql .= 'INNER JOIN submission_settings sst ON s.submission_id = sst.submission_id
WHERE sst.setting_name = ? AND sst.setting_value = ?';
}
if ($journalId) {
$params[] = (int) $journalId;
$sql .= ' AND s.context_id = ?';
}
$sql .= ' ORDER BY s.context_id, s.submission_id';
$result = $this->retrieveRange($sql, $params, $rangeInfo);
return new DAOResultFactory($result, $this, '_fromRow');
}