Campaign_Landing_Pages.php
5 months ago
Campaign_UTM_Campaigns.php
5 months ago
Campaign_UTM_Mediums.php
5 months ago
Campaign_UTM_Sources.php
5 months ago
Campaigns.php
5 months ago
Cities.php
5 months ago
Countries.php
5 months ago
Device_Browsers.php
5 months ago
Device_OSS.php
5 months ago
Device_Types.php
5 months ago
Filter.php
5 months ago
Forms.php
5 months ago
Journeys.php
5 months ago
Link_Patterns.php
5 months ago
Links.php
5 months ago
Pages.php
5 months ago
Referrer_Types.php
5 months ago
Referrers.php
5 months ago
Rows.php
5 months ago
Forms.php
37 lines
| 1 | <?php |
| 2 | |
| 3 | namespace IAWP\Rows; |
| 4 | |
| 5 | use IAWP\Illuminate_Builder; |
| 6 | use IAWP\Models\Form; |
| 7 | use IAWPSCOPED\Illuminate\Database\Query\Builder; |
| 8 | /** @internal */ |
| 9 | class Forms extends \IAWP\Rows\Rows |
| 10 | { |
| 11 | public function attach_filters(Builder $query) : void |
| 12 | { |
| 13 | // There are no filters to attach as this is used for the email report and not a dashboard |
| 14 | } |
| 15 | protected function fetch_rows() : array |
| 16 | { |
| 17 | $rows = $this->query()->get()->all(); |
| 18 | return \array_map(function ($row) { |
| 19 | return new Form($row); |
| 20 | }, $rows); |
| 21 | } |
| 22 | protected function sort_tie_breaker_column() : string |
| 23 | { |
| 24 | return 'form_title'; |
| 25 | } |
| 26 | protected function query(?bool $skip_pagination = \false) : Builder |
| 27 | { |
| 28 | if ($skip_pagination) { |
| 29 | $this->number_of_rows = null; |
| 30 | } |
| 31 | $query = Illuminate_Builder::new()->select(['forms.form_id', 'forms.cached_form_title AS form_title'])->selectRaw('COUNT(DISTINCT form_submissions.form_submission_id) AS submissions')->from($this->tables::forms(), 'forms')->leftJoin($this->tables::form_submissions() . ' AS form_submissions', 'form_submissions.form_id', '=', 'forms.form_id')->whereBetween('form_submissions.created_at', $this->get_current_period_iso_range())->when(\is_int($this->number_of_rows), function (Builder $query) { |
| 32 | $query->limit($this->number_of_rows); |
| 33 | })->orderBy($this->sort_configuration->column(), $this->sort_configuration->direction())->orderBy($this->sort_tie_breaker_column())->groupBy('forms.form_id'); |
| 34 | return $query; |
| 35 | } |
| 36 | } |
| 37 |