Test Failed
Pull Request — master (#2668)
by Devin
07:48
created

Give_DB_Form_Meta   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 95
Duplicated Lines 100 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 0
Metric Value
dl 95
loc 95
rs 10
c 0
b 0
f 0
wmc 4
lcom 1
cbo 1

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 12 12 1
A get_columns() 8 8 1
A create_table() 20 20 1
A is_custom_meta_table_active() 3 3 1

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php
2
/**
3
 * Form Meta DB class
4
 *
5
 * @package     Give
6
 * @subpackage  Classes/DB Form Meta
7
 * @copyright   Copyright (c) 2016, WordImpress
8
 * @license     https://opensource.org/licenses/gpl-license GNU Public License
9
 * @since       2.0
10
 */
11
12
// Exit if accessed directly.
13
if ( ! defined( 'ABSPATH' ) ) {
14
	exit;
15
}
16
17
/**
18
 * Class Give_DB_Form_Meta
19
 *
20
 * This class is for interacting with the form meta database table.
21
 *
22
 * @since 2.0
23
 */
24 View Code Duplication
class Give_DB_Form_Meta extends Give_DB_Meta {
0 ignored issues
show
Duplication introduced by
This class seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
25
	/**
26
	 * Post type
27
	 *
28
	 * @since  2.0
29
	 * @access protected
30
	 * @var bool
31
	 */
32
	protected $post_type = 'give_forms';
33
34
	/**
35
	 * Meta type
36
	 *
37
	 * @since  2.0
38
	 * @access protected
39
	 * @var bool
40
	 */
41
	protected $meta_type = 'form';
42
43
	/**
44
	 * Give_DB_Form_Meta constructor.
45
	 *
46
	 * @access  public
47
	 * @since   2.0
48
	 */
49
	public function __construct() {
50
		/* @var WPDB $wpdb */
51
		global $wpdb;
52
53
		$wpdb->formmeta    = $this->table_name = $wpdb->prefix . 'give_formmeta';
54
		$this->primary_key = 'meta_id';
55
		$this->version     = '1.0';
56
57
		$this->register_table();
58
59
		parent::__construct();
60
	}
61
62
	/**
63
	 * Get table columns and data types.
64
	 *
65
	 * @access  public
66
	 * @since   2.0
67
	 *
68
	 * @return  array  Columns and formats.
69
	 */
70
	public function get_columns() {
71
		return array(
72
			'meta_id'    => '%d',
73
			'form_id'    => '%d',
74
			'meta_key'   => '%s',
0 ignored issues
show
introduced by
Detected usage of meta_key, possible slow query.
Loading history...
75
			'meta_value' => '%s',
0 ignored issues
show
introduced by
Detected usage of meta_value, possible slow query.
Loading history...
76
		);
77
	}
78
79
	/**
80
	 * Create the table
81
	 *
82
	 * @access public
83
	 * @since  2.0
84
	 *
85
	 * @return void
86
	 */
87
	public function create_table() {
88
		global $wpdb;
89
90
		$charset_collate = $wpdb->get_charset_collate();
91
92
		$sql = "CREATE TABLE {$this->table_name} (
93
			meta_id bigint(20) NOT NULL AUTO_INCREMENT,
94
			form_id bigint(20) NOT NULL,
95
			meta_key varchar(255) DEFAULT NULL,
96
			meta_value longtext,
97
			PRIMARY KEY  (meta_id),
98
			KEY form_id (form_id),
99
			KEY meta_key (meta_key)
100
			) {$charset_collate};";
101
102
		require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
103
		dbDelta( $sql );
104
105
		update_option( $this->table_name . '_db_version', $this->version );
106
	}
107
108
	/**
109
	 * check if custom meta table enabled or not.
110
	 *
111
	 * @since  2.0
112
	 * @access protected
113
	 * @return bool
114
	 */
115
	protected function is_custom_meta_table_active() {
116
		return give_has_upgrade_completed( 'v20_move_metadata_into_new_table' );
117
	}
118
}
119