ArticleDAO::getBySetting PHP Method

getBySetting() public method

Find articles by querying article settings.
public getBySetting ( $settingName, $settingValue, $journalId = null, $rangeInfo = null ) : array
$settingName string
$settingValue mixed
$journalId int optional
$rangeInfo DBResultRange optional
return array The articles identified by setting. WARNING: This query is selectively indexed for PostgreSQL. Ensure that the settings you wish to query are specified in dbscripts/xml/indexes.xml to avoid a potentially costly query.
    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');
    }