Let the statisticsForms model return the total signups instead of the form model
- added unit test for getTotalSignups() method
This commit is contained in:
@ -39,11 +39,6 @@ class Form extends Model {
|
|||||||
return parent::save();
|
return parent::save();
|
||||||
}
|
}
|
||||||
|
|
||||||
function withSignups() {
|
|
||||||
$this->signups = StatisticsForms::where('form_id', $this->id)->count();
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
static function search($orm, $search = '') {
|
static function search($orm, $search = '') {
|
||||||
return $orm->whereLike('name', '%'.$search.'%');
|
return $orm->whereLike('name', '%'.$search.'%');
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,10 @@ if(!defined('ABSPATH')) exit;
|
|||||||
class StatisticsForms extends Model {
|
class StatisticsForms extends Model {
|
||||||
public static $_table = MP_STATISTICS_FORMS_TABLE;
|
public static $_table = MP_STATISTICS_FORMS_TABLE;
|
||||||
|
|
||||||
|
public static function getTotalSignups($form_id = false) {
|
||||||
|
return self::where('form_id', $form_id)->count();
|
||||||
|
}
|
||||||
|
|
||||||
public static function record($form_id, $subscriber_id) {
|
public static function record($form_id, $subscriber_id) {
|
||||||
if($form_id > 0 && $subscriber_id > 0) {
|
if($form_id > 0 && $subscriber_id > 0) {
|
||||||
// check if we already have a record for today
|
// check if we already have a record for today
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace MailPoet\Router;
|
namespace MailPoet\Router;
|
||||||
use \MailPoet\Models\Form;
|
use \MailPoet\Models\Form;
|
||||||
|
use \MailPoet\Models\StatisticsForms;
|
||||||
use \MailPoet\Form\Renderer as FormRenderer;
|
use \MailPoet\Form\Renderer as FormRenderer;
|
||||||
use \MailPoet\Listing;
|
use \MailPoet\Listing;
|
||||||
use \MailPoet\Form\Util;
|
use \MailPoet\Form\Util;
|
||||||
@ -29,9 +30,9 @@ class Forms {
|
|||||||
|
|
||||||
// fetch segments relations for each returned item
|
// fetch segments relations for each returned item
|
||||||
foreach($listing_data['items'] as $key => $form) {
|
foreach($listing_data['items'] as $key => $form) {
|
||||||
$form = $form
|
$form = $form->asArray();
|
||||||
->withSignups()
|
|
||||||
->asArray();
|
$form['signups'] = StatisticsForms::getTotalSignups($form['id']);
|
||||||
|
|
||||||
$form['segments'] = (
|
$form['segments'] = (
|
||||||
!empty($form['settings']['segments'])
|
!empty($form['settings']['segments'])
|
||||||
|
@ -36,6 +36,20 @@ class StatisticsFormsTest extends MailPoetTest {
|
|||||||
expect($record)->false();
|
expect($record)->false();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function testItCanReturnTheTotalSignupsOfAForm() {
|
||||||
|
// simulate 2 signups for form #1
|
||||||
|
StatisticsForms::record($form_id = 1, $subscriber_id = 2);
|
||||||
|
StatisticsForms::record($form_id = 1, $subscriber_id = 1);
|
||||||
|
// simulate 1 signup for form #2
|
||||||
|
StatisticsForms::record($form_id = 2, $subscriber_id = 2);
|
||||||
|
|
||||||
|
$form_1_signups = StatisticsForms::getTotalSignups($form_id = 1);
|
||||||
|
expect($form_1_signups)->equals(2);
|
||||||
|
|
||||||
|
$form_2_signups = StatisticsForms::getTotalSignups($form_id = 2);
|
||||||
|
expect($form_2_signups)->equals(1);
|
||||||
|
}
|
||||||
|
|
||||||
function _after() {
|
function _after() {
|
||||||
StatisticsForms::deleteMany();
|
StatisticsForms::deleteMany();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user