18 use Illuminate\Database\Capsule\Manager as Capsule;
53 public function orderBy($column, $direction =
'DESC') {
55 import(
'classes.submission.SubmissionDAO');
57 case ORDERBY_SERIES_POSITION:
58 $this->orderColumn =
'po.series_position';
61 return parent::orderBy($column, $direction);
63 $this->orderDirection = $direction;
74 $this->orderByFeaturedSeq =
true;
84 public function appGet($q) {
86 if (!empty($this->seriesIds)) {
87 $q->leftJoin(
'publications as publication_s',
's.current_publication_id',
'=',
'publication_s.publication_id');
88 $q->whereIn(
'publication_s.series_id', $this->seriesIds);
92 if ($this->orderColumn ===
'po.series_position') {
93 $this->columns[] =
'po.series_position';
94 $q->leftJoin(
'publications as po',
's.current_publication_id',
'=',
'po.publication_id');
95 $q->groupBy(
'po.series_position');
98 if (!empty($this->orderByFeaturedSeq)) {
99 if (!empty($this->seriesIds)) {
100 $assocType = ASSOC_TYPE_SERIES;
102 } elseif (!empty($this->categoryIds)) {
103 $assocType = ASSOC_TYPE_CATEGORY;
106 $assocType = ASSOC_TYPE_PRESS;
107 $assocIds = [$this->contextId ? $this->contextId : CONTEXT_ID_NONE];
109 $q->leftJoin(
'features as sf',
function($join) use ($assocType, $assocIds) {
110 $join->on(
's.submission_id',
'=',
'sf.submission_id')
111 ->on(
'sf.assoc_type',
'=', Capsule::raw($assocType));
112 foreach ($assocIds as $assocId) {
113 $join->on(
'sf.assoc_id',
'=', Capsule::raw(intval($assocId)));
119 $q->groupBy(Capsule::raw(
'sf.seq'));
120 $this->columns[] =
'sf.seq';
121 $this->columns[] = Capsule::raw(
'case when sf.seq is null then 1 else 0 end');
124 array(
'type' =>
'raw',
'sql' =>
'case when sf.seq is null then 1 else 0 end'),
125 array(
'column' =>
'sf.seq',
'direction' =>
'ASC')