Open Monograph Press  3.3.0
PKPStatsQueryBuilder.inc.php
1 <?php
2 
18 
19 use Illuminate\Database\Capsule\Manager as Capsule;
20 
22 
24  protected $assocIds = [];
25 
34  protected $assocTypes = [];
35 
37  protected $contextIds = [];
38 
40  protected $dateEnd;
41 
43  protected $dateStart;
44 
46  protected $fileTypes;
47 
49  protected $sectionIds = [];
50 
52  protected $submissionIds = [];
53 
60  public function filterByContexts($contextIds) {
61  $this->contextIds = is_array($contextIds) ? $contextIds : [$contextIds];
62  return $this;
63  }
64 
71  public function filterBySubmissions($submissionIds) {
72  $this->submissionIds = is_array($submissionIds) ? $submissionIds : [$submissionIds];
73  return $this;
74  }
75 
82  public function filterByAssocTypes($assocTypes) {
83  $this->assocTypes = is_array($assocTypes) ? $assocTypes : [$assocTypes];
84  return $this;
85  }
86 
93  public function filterByAssocIds($assocIds) {
94  $this->assocIds = is_array($assocIds) ? $assocIds : [$assocIds];
95  return $this;
96  }
97 
104  public function filterByFileTypes($fileTypes) {
105  $this->fileTypes = is_array($fileTypes) ? $fileTypes : [$fileTypes];
106  return $this;
107  }
108 
116  public function filterBySections($sectionIds) {
117  $this->sectionIds = is_array($sectionIds) ? $sectionIds : [$sectionIds];
118  return $this;
119  }
120 
127  public function before($dateEnd) {
128  $this->dateEnd = str_replace('-', '', $dateEnd);
129  return $this;
130  }
131 
138  public function after($dateStart) {
139  $this->dateStart = str_replace('-', '', $dateStart);
140  return $this;
141  }
142 
148  public function getRecords() {
149  return $this->_getObject()->select('*');
150  }
151 
162  public function getSum($groupBy = []) {
163  $q = $this->_getObject();
164 
165  $q->select(array_merge(
166  [Capsule::raw('SUM(metric) as metric')],
167  $groupBy
168  ));
169 
170  if (!empty($groupBy)) {
171  $q->groupBy($groupBy);
172  }
173 
174  return $q;
175  }
176 
183  public function getTimeline($date) {
184  $q = $this->_getObject();
185  $q->select(Capsule::raw('SUM(metric) as metric'));
186  if (strlen($date) === 10) {
187  $q->where(STATISTICS_DIMENSION_DAY, '=', str_replace('-', '', $date));
188  } else {
189  $q->where(STATISTICS_DIMENSION_MONTH, '=', str_replace('-', '', $date));
190  }
191  return $q;
192  }
193 
200  public function getSubmissionIds() {
201  return $this->_getObject()
202  ->select('submission_id')
203  ->groupBy('submission_id');
204  }
205 
215  protected function _getObject() {
216  $q = Capsule::table('metrics');
217 
218  if (!empty($this->contextIds)) {
219  $q->whereIn(STATISTICS_DIMENSION_CONTEXT_ID, $this->contextIds);
220  }
221 
222  if (!empty($this->submissionIds)) {
223  $q->whereIn(STATISTICS_DIMENSION_SUBMISSION_ID, $this->submissionIds);
224  }
225 
226  if (!empty($this->sectionIds)) {
227  $q->whereIn(STATISTICS_DIMENSION_PKP_SECTION_ID, $this->sectionIds);
228  }
229 
230  if (!empty($this->assocTypes)) {
231  $q->whereIn(STATISTICS_DIMENSION_ASSOC_TYPE, $this->assocTypes);
232 
233  if (!empty($this->assocIds)) {
234  $q->whereIn(STATISTICS_DIMENSION_ASSOC_ID, $this->assocIds);
235  }
236  }
237 
238  if (!empty($this->fileTypes)) {
239  $q->whereIn(STATISTICS_DIMENSION_FILE_TYPE, $this->fileTypes);
240  }
241 
242  $q->whereBetween(STATISTICS_DIMENSION_DAY, [$this->dateStart, $this->dateEnd]);
243 
244  $q->where(STATISTICS_DIMENSION_METRIC_TYPE, '=', METRIC_TYPE_COUNTER);
245 
246  \HookRegistry::call('Stats::queryObject', array($q, $this));
247 
248  return $q;
249  }
250 }
251 
PKP\Services\QueryBuilders\PKPStatsQueryBuilder\$dateStart
$dateStart
Definition: PKPStatsQueryBuilder.inc.php:58
PKP\Services\QueryBuilders\PKPStatsQueryBuilder\filterBySubmissions
filterBySubmissions($submissionIds)
Definition: PKPStatsQueryBuilder.inc.php:95
PKP\Services\QueryBuilders\PKPStatsQueryBuilder\getTimeline
getTimeline($date)
Definition: PKPStatsQueryBuilder.inc.php:207
PKP\Services\QueryBuilders
PKP\Services\QueryBuilders\PKPStatsQueryBuilder\filterBySections
filterBySections($sectionIds)
Definition: PKPStatsQueryBuilder.inc.php:140
PKP\Services\QueryBuilders\PKPStatsQueryBuilder\after
after($dateStart)
Definition: PKPStatsQueryBuilder.inc.php:162
PKP\Services\QueryBuilders\PKPStatsQueryBuilder\$sectionIds
$sectionIds
Definition: PKPStatsQueryBuilder.inc.php:70
PKP\Services\QueryBuilders\PKPStatsQueryBuilder\getRecords
getRecords()
Definition: PKPStatsQueryBuilder.inc.php:172
PKP\Services\QueryBuilders\PKPStatsQueryBuilder\filterByFileTypes
filterByFileTypes($fileTypes)
Definition: PKPStatsQueryBuilder.inc.php:128
PKP\Services\QueryBuilders\PKPStatsQueryBuilder\before
before($dateEnd)
Definition: PKPStatsQueryBuilder.inc.php:151
PKP\Services\QueryBuilders\PKPStatsQueryBuilder
Definition: PKPStatsQueryBuilder.inc.php:21
PKP\Services\QueryBuilders\PKPStatsQueryBuilder\filterByContexts
filterByContexts($contextIds)
Definition: PKPStatsQueryBuilder.inc.php:84
PKP\Services\QueryBuilders\PKPStatsQueryBuilder\filterByAssocTypes
filterByAssocTypes($assocTypes)
Definition: PKPStatsQueryBuilder.inc.php:106
PKP\Services\QueryBuilders\PKPStatsQueryBuilder\_getObject
_getObject()
Definition: PKPStatsQueryBuilder.inc.php:239
PKP\Services\QueryBuilders\PKPStatsQueryBuilder\filterByAssocIds
filterByAssocIds($assocIds)
Definition: PKPStatsQueryBuilder.inc.php:117
PKP\Services\QueryBuilders\PKPStatsQueryBuilder\$dateEnd
$dateEnd
Definition: PKPStatsQueryBuilder.inc.php:52
PKP\Services\QueryBuilders\PKPStatsQueryBuilder\getSubmissionIds
getSubmissionIds()
Definition: PKPStatsQueryBuilder.inc.php:224
PKP\Services\QueryBuilders\PKPStatsQueryBuilder\$assocIds
$assocIds
Definition: PKPStatsQueryBuilder.inc.php:27
PKP\Services\QueryBuilders\PKPStatsQueryBuilder\$fileTypes
$fileTypes
Definition: PKPStatsQueryBuilder.inc.php:64
PKP\Services\QueryBuilders\PKPStatsQueryBuilder\$assocTypes
$assocTypes
Definition: PKPStatsQueryBuilder.inc.php:40
PKP\Services\QueryBuilders\PKPStatsQueryBuilder\$submissionIds
$submissionIds
Definition: PKPStatsQueryBuilder.inc.php:76
PKP\Services\QueryBuilders\PKPStatsQueryBuilder\$contextIds
$contextIds
Definition: PKPStatsQueryBuilder.inc.php:46
PKP\Services\QueryBuilders\PKPStatsQueryBuilder\getSum
getSum($groupBy=[])
Definition: PKPStatsQueryBuilder.inc.php:186
HookRegistry\call
static call($hookName, $args=null)
Definition: HookRegistry.inc.php:86