Completed
Push — issues/2912 ( d8ec76...72f6bd )
by Ravinder
1197:19 queued 1189:23
created

Give_DB_Sequential_Ordering::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 0
dl 0
loc 13
rs 9.8333
c 0
b 0
f 0
1
<?php
2
/**
3
 * Sequential Donation DB
4
 *
5
 * @package     Give
6
 * @subpackage  Classes/Give_DB_Sequential_Ordering
7
 * @copyright   Copyright (c) 2018, WordImpress
8
 * @license     https://opensource.org/licenses/gpl-license GNU Public License
9
 * @since       2.1.0
10
 */
11
12
// Exit if accessed directly.
13
if ( ! defined( 'ABSPATH' ) ) {
14
	exit;
15
}
16
17
/**
18
 * Give_DB_Sequential_Ordering Class
19
 *
20
 * This class is for interacting with the sequential donation database table.
21
 *
22
 * @since 2.1.0
23
 */
24
class Give_DB_Sequential_Ordering extends Give_DB {
25
26
	/**
27
	 * Give_DB_Sequential_Ordering constructor.
28
	 *
29
	 * Set up the Give DB Donor class.
30
	 *
31
	 * @since  2.1.0
32
	 * @access public
33
	 */
34
	public function __construct() {
35
		/* @var WPDB $wpdb */
36
		global $wpdb;
37
38
		$this->table_name  = $wpdb->prefix . 'give_sequential_ordering';
39
		$this->primary_key = 'id';
40
		$this->version     = '1.0';
41
42
		// Install table.
43
		$this->register_table();
44
45
		parent::__construct();
46
	}
47
48
	/**
49
	 * Get columns and formats
50
	 *
51
	 * @since  2.1.0
52
	 * @access public
53
	 *
54
	 * @return array  Columns and formats.
55
	 */
56
	public function get_columns() {
57
		return array(
58
			'id'         => '%d',
59
			'payment_id' => '%s',
60
		);
61
	}
62
63
	/**
64
	 * Get default column values
65
	 *
66
	 * @since  2.1.0
67
	 * @access public
68
	 *
69
	 * @return array  Default column values.
70
	 */
71
	public function get_column_defaults() {
72
		return array(
73
			'id'         => 0,
74
			'payment_id' => '',
75
		);
76
	}
77
78
79
	/**
80
	 * Create the table
81
	 *
82
	 * @since  2.1.0
83
	 * @access public
84
	 *
85
	 * @return void
86
	 */
87
	public function create_table() {
88
		global $wpdb;
89
		$charset_collate = $wpdb->get_charset_collate();
90
91
		// Calculate auto increment number.
92
		$payment_ID = $wpdb->get_var(
0 ignored issues
show
introduced by
Usage of a direct database call is discouraged.
Loading history...
introduced by
Usage of a direct database call without caching is prohibited. Use wp_cache_get / wp_cache_set.
Loading history...
93
			$wpdb->prepare(
94
				"
95
				SELECT ID
96
				FROM $wpdb->posts
97
				WHERE post_type=%s
98
				ORDER By ID desc
99
				LIMIT 1
100
				",
101
				'give_payment'
102
			)
103
		);
104
105
		$sql = "CREATE TABLE {$this->table_name} (
106
        id bigint(20) NOT NULL AUTO_INCREMENT,
107
        payment_id bigint(20) NOT NULL,
108
        PRIMARY KEY  (id)
109
        ) {$charset_collate};";
110
111
		require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
112
		dbDelta( $sql );
113
114
		if ( ! empty( $payment_ID ) ) {
115
			$auto_increment = $payment_ID + 1;
116
			$wpdb->query( "ALTER TABLE {$this->table_name} AUTO_INCREMENT={$auto_increment};" );
0 ignored issues
show
introduced by
Usage of a direct database call is discouraged.
Loading history...
introduced by
Usage of a direct database call without caching is prohibited. Use wp_cache_get / wp_cache_set.
Loading history...
introduced by
Attempting a database schema change is highly discouraged.
Loading history...
117
			give_update_option( 'sequential-ordering_number', $auto_increment );
118
		} else {
119
			give_update_option( 'sequential-ordering_number', 1 );
120
		}
121
122
		update_option( $this->table_name . '_db_version', $this->version );
123
	}
124
}
125