-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathLocal.php
More file actions
136 lines (113 loc) · 2.84 KB
/
Local.php
File metadata and controls
136 lines (113 loc) · 2.84 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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
<?php
namespace Svbk\WP\Helpers\Affiliate;
use \Svbk\WP\Helpers;
/**
* Local Affiliate Management class
*
* @package wp-themehelper
* @subpackage Affiliate
* @author Brando Meniconi <b.meniconi@silverbackstudio.it>
* @since 3.1.15*
*/
class Local implements AffiliateInterface {
const DB_VERSION = '1.0';
const TABLE_NAME = 'svbk_affiliates';
/**
* Class constructor
*
* @access public
* @since 3.1.15*
*
* @return void
*/
public function __construct() {
if ( get_site_option( 'svbk_affiliates_db_version' ) != self::DB_VERSION ) {
self::database_setup();
}
}
/**
* Install or update the database
*
* @access public
*
* @return void
*/
public static function database_setup() {
global $wpdb;
$table_name = $wpdb->prefix . self::TABLE_NAME;
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
time datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
email tinytext NOT NULL,
affiliate_id int(11) NOT NULL,
url varchar(55) DEFAULT '' NOT NULL,
PRIMARY KEY (id)
UNIQUE KEY (email)
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
add_option( 'svbk_affiliates_db_version', self::DB_VERSION );
}
/**
* Tracks a sale.
*
* @access public
*
* @param float $amount Sale amount in the reference currency.
* @param string $order_num Reference order number.
* @param array $user_data {
* An array containing required user data.
*
* @type string $first_name
* @type string $last_name
* @type string $email
* @type string $ip_address
* @type int $id_affiliate
* }
* @param string $product_name The product name.
*
* @return WP_Error|array The response or WP_Error on failure.
*/
public function sale( $amount, $user_data = array(), $order_num = null, $product_name = null ) {
}
/**
* Tracks a lead.
*
* @access public
*
* @param float $amount Lead amount in the reference currency.
* @param string $order_num Reference order number.
* @param array $user_data {
* An array containing required user data.
*
* @param array $user_data {
* An array containing required user data.
*
* @type string $email The email address that has made the lead.
* @type int $id_affiliate The affiliate user ID to refer the lead.
* }
*
* @return (int|false) The number of rows inserted, or false on error.
*/
public function lead( $amount = null, $user_data = array() ) {
global $wpdb;
$insert_data = filter_var_array(
$user_data,
array(
'email' => FILTER_SANITIZE_EMAIL,
'affiliate_id' => FILTER_SANITIZE_NUMBER_INT,
'url' => FILTER_SANITIZE_URL,
)
);
return $wpdb->insert(
$wpdb->prefix . self::TABLE_NAME,
$insert_data,
array(
'%s',
'%d',
'%s',
)
);
}
}