17 use Illuminate\Database\Capsule\Manager as Capsule;
103 ->select(
'a.author_id')
111 public function getIds() {
114 ->select(
'a.author_id')
115 ->pluck(
'a.author_id')
123 $this->columns = [
'*',
'p.locale AS submission_locale'];
124 $q = Capsule::table(
'authors as a');
125 $q->leftJoin(
'publications as p',
'a.publication_id',
'=',
'p.publication_id');
127 if (!empty($this->contextIds)) {
128 $q->leftJoin(
'submissions as s',
'p.submission_id',
'=',
's.submission_id')
129 ->whereIn(
's.context_id', $this->contextIds);
132 if (!empty($this->familyName) || !empty($this->givenName)) {
135 $q->leftJoin(
'author_settings as fn',
'a.author_id',
'=',
'fn.author_id')
137 $q->where(
'fn.setting_name',
'=',
'familyName');
140 $q->leftJoin(
'author_settings as gn',
'a.author_id',
'=',
'gn.author_id')
142 $q->where(
'gn.setting_name',
'=',
'givenName');
143 $q->where(
'gn.setting_value',
'=',
$givenName);
147 if (!empty($this->publicationIds)) {
148 $q->whereIn(
'a.publication_id', $this->publicationIds);
151 if (!empty($this->country)) {
153 $q->join(
'author_settings as cs',
'a.author_id',
'=',
'cs.author_id')
154 ->where(
function($q) use (
$country) {
155 $q->where(
'cs.setting_name',
'=',
'country');
156 $q->where(
'cs.setting_value',
'=',
$country);
160 if (!empty($this->affiliation)) {
162 $q->join(
'author_settings as afs',
'a.author_id',
'=',
'afs.author_id')
164 $q->where(
'afs.setting_name',
'=',
'affiliation');
169 $q->orderBy(
'a.seq',
'ASC');
174 $q->select($this->columns);