SubmissionAggregateFactory.php
2.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?php
namespace NinjaForms\Includes\Factories;
use NinjaForms\Includes\Handlers\SubmissionAggregate;
use NinjaForms\Includes\Handlers\SubmissionAggregateCsvExportAdapter;
use NinjaForms\Includes\Database\CalderaSubmissionDataSource as CalderaSubmissionDataSource;
use NinjaForms\Includes\Database\CptSubmissionDataSource as CptSubmissionDataSource;
class SubmissionAggregateFactory
{
/**
* Construct SubmissionAggregate class with data sources
*
* @return SubmissionAggregate
*/
public function submissionAggregate( ): SubmissionAggregate
{
$submissionAggregate = new SubmissionAggregate();
if($this->cfTablesExist()){
$submissionAggregate->addDataSource($this->makeCalderaDataSource());
}
$submissionAggregate->addDataSource($this->makeCptSubmissionDataSource());
return $submissionAggregate;
}
/**
* Constructs SubmissionAggregateCsvExportAdapter with SubmissionAggregate
*
* @return SubmissionAggregateCsvExportAdapter
*/
public function SubmissionAggregateCsvExportAdapter( ): SubmissionAggregateCsvExportAdapter
{
$submissionAggregate = $this->submissionAggregate();
$submissionAggregateCsvExportAdapter = new SubmissionAggregateCsvExportAdapter($submissionAggregate);
return $submissionAggregateCsvExportAdapter;
}
/**
* Construct a Caldera submissions data source
*
* @return CalderaSubmissionDataSource
*/
public function makeCalderaDataSource(): CalderaSubmissionDataSource
{
return new CalderaSubmissionDataSource();
}
/**
* Construct a Ninja Forms CPT data source
*
* @return CptSubmissionDataSource
*/
public function makeCptSubmissionDataSource(): CptSubmissionDataSource
{
return new CptSubmissionDataSource();
}
/**
* Check that both CF entry and values tables exist
*
* @return boolean
*/
protected function cfTablesExist( ): bool
{
global $wpdb;
$return = false;
$entriesTable = $wpdb->prefix . 'cf_form_entries';
$valuesTable = $wpdb->prefix . 'cf_form_entry_values';
$entriesQuery = $wpdb->prepare( 'SHOW TABLES LIKE %s', $wpdb->esc_like( $entriesTable ) );
$valuesQuery = $wpdb->prepare( 'SHOW TABLES LIKE %s', $wpdb->esc_like( $valuesTable ) );
if ( $wpdb->get_var( $entriesQuery ) == $entriesTable && $wpdb->get_var( $valuesQuery ) == $valuesTable ) {
$return = true;
}
return $return;
}
}