Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93
/home/sportsfe.../httpdocs/wp-conte.../plugins/wpforms-.../src/Db/Payments
File: Meta.php
<?php
[0] Fix | Delete
[1] Fix | Delete
namespace WPForms\Db\Payments;
[2] Fix | Delete
[3] Fix | Delete
use WPForms_DB;
[4] Fix | Delete
[5] Fix | Delete
/**
[6] Fix | Delete
* Class for the Payment Meta database table.
[7] Fix | Delete
*
[8] Fix | Delete
* @since 1.8.2
[9] Fix | Delete
*/
[10] Fix | Delete
class Meta extends WPForms_DB {
[11] Fix | Delete
[12] Fix | Delete
/**
[13] Fix | Delete
* Primary class constructor.
[14] Fix | Delete
*
[15] Fix | Delete
* @since 1.8.2
[16] Fix | Delete
*/
[17] Fix | Delete
public function __construct() {
[18] Fix | Delete
[19] Fix | Delete
$this->table_name = self::get_table_name();
[20] Fix | Delete
$this->primary_key = 'id';
[21] Fix | Delete
$this->type = 'payment_meta';
[22] Fix | Delete
}
[23] Fix | Delete
[24] Fix | Delete
/**
[25] Fix | Delete
* Get the table name.
[26] Fix | Delete
*
[27] Fix | Delete
* @since 1.8.2
[28] Fix | Delete
*
[29] Fix | Delete
* @return string
[30] Fix | Delete
*/
[31] Fix | Delete
public static function get_table_name() {
[32] Fix | Delete
[33] Fix | Delete
global $wpdb;
[34] Fix | Delete
[35] Fix | Delete
return $wpdb->prefix . 'wpforms_payment_meta';
[36] Fix | Delete
}
[37] Fix | Delete
[38] Fix | Delete
/**
[39] Fix | Delete
* Get table columns.
[40] Fix | Delete
*
[41] Fix | Delete
* @since 1.8.2
[42] Fix | Delete
*
[43] Fix | Delete
* @return array
[44] Fix | Delete
*/
[45] Fix | Delete
public function get_columns() {
[46] Fix | Delete
[47] Fix | Delete
return [
[48] Fix | Delete
'id' => '%d',
[49] Fix | Delete
'payment_id' => '%d',
[50] Fix | Delete
'meta_key' => '%s', // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
[51] Fix | Delete
'meta_value' => '%s', // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_value
[52] Fix | Delete
];
[53] Fix | Delete
}
[54] Fix | Delete
[55] Fix | Delete
/**
[56] Fix | Delete
* Default column values.
[57] Fix | Delete
*
[58] Fix | Delete
* @since 1.8.2
[59] Fix | Delete
*
[60] Fix | Delete
* @return array
[61] Fix | Delete
*/
[62] Fix | Delete
public function get_column_defaults() {
[63] Fix | Delete
[64] Fix | Delete
return [
[65] Fix | Delete
'payment_id' => 0,
[66] Fix | Delete
'meta_key' => '', // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
[67] Fix | Delete
'meta_value' => '', // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_value
[68] Fix | Delete
];
[69] Fix | Delete
}
[70] Fix | Delete
[71] Fix | Delete
/**
[72] Fix | Delete
* Create the table.
[73] Fix | Delete
*
[74] Fix | Delete
* @since 1.8.2
[75] Fix | Delete
*/
[76] Fix | Delete
public function create_table() {
[77] Fix | Delete
[78] Fix | Delete
global $wpdb;
[79] Fix | Delete
[80] Fix | Delete
$charset_collate = $wpdb->get_charset_collate();
[81] Fix | Delete
$max_index_length = self::MAX_INDEX_LENGTH;
[82] Fix | Delete
[83] Fix | Delete
/**
[84] Fix | Delete
* Note: there must be two spaces between the words PRIMARY KEY and the definition of primary key.
[85] Fix | Delete
*
[86] Fix | Delete
* @link https://codex.wordpress.org/Creating_Tables_with_Plugins#Creating_or_Updating_the_Table
[87] Fix | Delete
*/
[88] Fix | Delete
$query = "CREATE TABLE $this->table_name (
[89] Fix | Delete
id bigint(20) NOT NULL AUTO_INCREMENT,
[90] Fix | Delete
payment_id bigint(20) NOT NULL,
[91] Fix | Delete
meta_key varchar(255),
[92] Fix | Delete
meta_value longtext,
[93] Fix | Delete
PRIMARY KEY (id),
[94] Fix | Delete
KEY payment_id (payment_id),
[95] Fix | Delete
KEY meta_key (meta_key($max_index_length)),
[96] Fix | Delete
KEY meta_value (meta_value($max_index_length))
[97] Fix | Delete
) $charset_collate;";
[98] Fix | Delete
[99] Fix | Delete
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
[100] Fix | Delete
dbDelta( $query );
[101] Fix | Delete
}
[102] Fix | Delete
[103] Fix | Delete
/**
[104] Fix | Delete
* Insert payment meta's.
[105] Fix | Delete
*
[106] Fix | Delete
* @since 1.8.2
[107] Fix | Delete
*
[108] Fix | Delete
* @param int $payment_id Payment ID.
[109] Fix | Delete
* @param array $meta Payment meta to be inserted.
[110] Fix | Delete
*/
[111] Fix | Delete
public function bulk_add( $payment_id, $meta ) {
[112] Fix | Delete
[113] Fix | Delete
global $wpdb;
[114] Fix | Delete
[115] Fix | Delete
$values = [];
[116] Fix | Delete
[117] Fix | Delete
foreach ( $meta as $meta_key => $meta_value ) {
[118] Fix | Delete
[119] Fix | Delete
// Empty strings are skipped.
[120] Fix | Delete
if ( $meta_value === '' ) {
[121] Fix | Delete
continue;
[122] Fix | Delete
}
[123] Fix | Delete
[124] Fix | Delete
$values[] = $wpdb->prepare(
[125] Fix | Delete
'( %d, %s, %s )',
[126] Fix | Delete
$payment_id,
[127] Fix | Delete
$meta_key,
[128] Fix | Delete
maybe_serialize( $meta_value )
[129] Fix | Delete
);
[130] Fix | Delete
}
[131] Fix | Delete
[132] Fix | Delete
if ( ! $values ) {
[133] Fix | Delete
return;
[134] Fix | Delete
}
[135] Fix | Delete
[136] Fix | Delete
$values = implode( ', ', $values );
[137] Fix | Delete
[138] Fix | Delete
// phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.NoCaching
[139] Fix | Delete
$wpdb->query(
[140] Fix | Delete
"INSERT INTO $this->table_name
[141] Fix | Delete
( payment_id, meta_key, meta_value )
[142] Fix | Delete
VALUES $values"
[143] Fix | Delete
);
[144] Fix | Delete
// phpcs:enable WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.NoCaching
[145] Fix | Delete
}
[146] Fix | Delete
[147] Fix | Delete
/**
[148] Fix | Delete
* Update or add payment meta.
[149] Fix | Delete
*
[150] Fix | Delete
* If the meta key already exists for given payment id, update the meta value. Otherwise, add the meta key and value.
[151] Fix | Delete
*
[152] Fix | Delete
* @since 1.8.4
[153] Fix | Delete
*
[154] Fix | Delete
* @param int $payment_id Payment ID.
[155] Fix | Delete
* @param string $meta_key Payment meta key.
[156] Fix | Delete
* @param mixed $meta_value Payment meta value.
[157] Fix | Delete
*
[158] Fix | Delete
* @return bool
[159] Fix | Delete
*/
[160] Fix | Delete
public function update_or_add( $payment_id, $meta_key, $meta_value ) {
[161] Fix | Delete
[162] Fix | Delete
// phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.SlowDBQuery.slow_db_query_meta_key, WordPress.DB.SlowDBQuery.slow_db_query_meta_value
[163] Fix | Delete
$row = $this->get_last_by( $meta_key, $payment_id );
[164] Fix | Delete
[165] Fix | Delete
if ( $row ) {
[166] Fix | Delete
return $this->update( $row->id, [ 'meta_value' => maybe_serialize( $meta_value ) ], '', $this->type );
[167] Fix | Delete
}
[168] Fix | Delete
[169] Fix | Delete
return (bool) $this->add(
[170] Fix | Delete
[
[171] Fix | Delete
'payment_id' => $payment_id,
[172] Fix | Delete
'meta_key' => $meta_key,
[173] Fix | Delete
'meta_value' => maybe_serialize( $meta_value ),
[174] Fix | Delete
],
[175] Fix | Delete
$this->type
[176] Fix | Delete
);
[177] Fix | Delete
// phpcs:enable WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.SlowDBQuery.slow_db_query_meta_key, WordPress.DB.SlowDBQuery.slow_db_query_meta_value
[178] Fix | Delete
}
[179] Fix | Delete
[180] Fix | Delete
/**
[181] Fix | Delete
* Add payment log.
[182] Fix | Delete
*
[183] Fix | Delete
* @since 1.8.4
[184] Fix | Delete
*
[185] Fix | Delete
* @param int $payment_id Payment ID.
[186] Fix | Delete
* @param string $content Log content.
[187] Fix | Delete
*
[188] Fix | Delete
* @return bool
[189] Fix | Delete
*/
[190] Fix | Delete
public function add_log( $payment_id, $content ) {
[191] Fix | Delete
[192] Fix | Delete
return (bool) $this->add(
[193] Fix | Delete
[
[194] Fix | Delete
'payment_id' => $payment_id,
[195] Fix | Delete
'meta_key' => 'log', // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
[196] Fix | Delete
'meta_value' => wp_json_encode( // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_value
[197] Fix | Delete
[
[198] Fix | Delete
'value' => wp_kses_post( $content ),
[199] Fix | Delete
'date' => gmdate( 'Y-m-d H:i:s' ),
[200] Fix | Delete
]
[201] Fix | Delete
),
[202] Fix | Delete
],
[203] Fix | Delete
$this->type
[204] Fix | Delete
);
[205] Fix | Delete
}
[206] Fix | Delete
[207] Fix | Delete
/**
[208] Fix | Delete
* Get single payment meta.
[209] Fix | Delete
*
[210] Fix | Delete
* @since 1.8.2
[211] Fix | Delete
*
[212] Fix | Delete
* @param int $payment_id Payment ID.
[213] Fix | Delete
* @param string|null $meta_key Payment meta to be retrieved.
[214] Fix | Delete
*
[215] Fix | Delete
* @return mixed Meta value.
[216] Fix | Delete
*/
[217] Fix | Delete
public function get_single( $payment_id, $meta_key ) {
[218] Fix | Delete
[219] Fix | Delete
global $wpdb;
[220] Fix | Delete
[221] Fix | Delete
// phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.NoCaching
[222] Fix | Delete
$meta_value = $wpdb->get_var(
[223] Fix | Delete
$wpdb->prepare(
[224] Fix | Delete
"SELECT meta_value FROM $this->table_name
[225] Fix | Delete
WHERE payment_id = %d AND meta_key = %s ORDER BY id DESC LIMIT 1",
[226] Fix | Delete
$payment_id,
[227] Fix | Delete
$meta_key
[228] Fix | Delete
)
[229] Fix | Delete
);
[230] Fix | Delete
// phpcs:enable WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.NoCaching
[231] Fix | Delete
[232] Fix | Delete
return maybe_unserialize( $meta_value );
[233] Fix | Delete
}
[234] Fix | Delete
[235] Fix | Delete
/**
[236] Fix | Delete
* Get all payment meta.
[237] Fix | Delete
*
[238] Fix | Delete
* @since 1.8.2
[239] Fix | Delete
*
[240] Fix | Delete
* @param int $payment_id Payment ID.
[241] Fix | Delete
*
[242] Fix | Delete
* @return array|null
[243] Fix | Delete
*/
[244] Fix | Delete
public function get_all( $payment_id ) {
[245] Fix | Delete
[246] Fix | Delete
global $wpdb;
[247] Fix | Delete
[248] Fix | Delete
// phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.NoCaching
[249] Fix | Delete
return $wpdb->get_results(
[250] Fix | Delete
$wpdb->prepare(
[251] Fix | Delete
"SELECT meta_key, meta_value as value FROM $this->table_name
[252] Fix | Delete
WHERE payment_id = %d ORDER BY id DESC",
[253] Fix | Delete
$payment_id
[254] Fix | Delete
),
[255] Fix | Delete
OBJECT_K
[256] Fix | Delete
);
[257] Fix | Delete
// phpcs:enable WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.NoCaching
[258] Fix | Delete
}
[259] Fix | Delete
[260] Fix | Delete
/**
[261] Fix | Delete
* Retrieve all rows based on meta_key value.
[262] Fix | Delete
*
[263] Fix | Delete
* @since 1.8.2
[264] Fix | Delete
*
[265] Fix | Delete
* @param string $meta_key Meta key value.
[266] Fix | Delete
* @param int $payment_id Payment ID.
[267] Fix | Delete
*
[268] Fix | Delete
* @return object|null
[269] Fix | Delete
*/
[270] Fix | Delete
public function get_all_by( $meta_key, $payment_id ) {
[271] Fix | Delete
[272] Fix | Delete
global $wpdb;
[273] Fix | Delete
[274] Fix | Delete
if ( empty( $meta_key ) ) {
[275] Fix | Delete
return null;
[276] Fix | Delete
}
[277] Fix | Delete
[278] Fix | Delete
// phpcs:ignore WordPress.DB.DirectDatabaseQuery.NoCaching
[279] Fix | Delete
return $wpdb->get_results(
[280] Fix | Delete
$wpdb->prepare(
[281] Fix | Delete
"SELECT meta_value as value FROM $this->table_name WHERE payment_id = %d AND meta_key = %s ORDER BY id DESC", // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared
[282] Fix | Delete
$payment_id,
[283] Fix | Delete
$meta_key
[284] Fix | Delete
),
[285] Fix | Delete
ARRAY_A
[286] Fix | Delete
);
[287] Fix | Delete
}
[288] Fix | Delete
[289] Fix | Delete
/**
[290] Fix | Delete
* Check if there are valid entries with a specific meta key.
[291] Fix | Delete
*
[292] Fix | Delete
* @since 1.8.4
[293] Fix | Delete
*
[294] Fix | Delete
* @param string $meta_key The meta key to check.
[295] Fix | Delete
*
[296] Fix | Delete
* @return bool
[297] Fix | Delete
*/
[298] Fix | Delete
public function is_valid_meta_by_meta_key( $meta_key ) {
[299] Fix | Delete
[300] Fix | Delete
// Check if the meta key is empty and return false.
[301] Fix | Delete
if ( empty( $meta_key ) ) {
[302] Fix | Delete
return false;
[303] Fix | Delete
}
[304] Fix | Delete
[305] Fix | Delete
// Retrieve the global database instance.
[306] Fix | Delete
global $wpdb;
[307] Fix | Delete
[308] Fix | Delete
$payment_handler = wpforms()->get( 'payment' );
[309] Fix | Delete
$payment_table_name = $payment_handler->table_name;
[310] Fix | Delete
$secondary_where_clause = $payment_handler->add_secondary_where_conditions();
[311] Fix | Delete
[312] Fix | Delete
// Prepare and execute the SQL query to check if there are valid entries with the given meta key.
[313] Fix | Delete
// phpcs:disable WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.InterpolatedNotPrepared
[314] Fix | Delete
return (bool) $wpdb->get_var(
[315] Fix | Delete
$wpdb->prepare(
[316] Fix | Delete
"SELECT 1 FROM {$this->table_name} AS pm
[317] Fix | Delete
WHERE meta_key = %s AND meta_value IS NOT NULL
[318] Fix | Delete
AND EXISTS (SELECT 1 FROM {$payment_table_name} AS p WHERE p.id = pm.payment_id {$secondary_where_clause})
[319] Fix | Delete
LIMIT 1",
[320] Fix | Delete
$meta_key
[321] Fix | Delete
)
[322] Fix | Delete
);
[323] Fix | Delete
}
[324] Fix | Delete
[325] Fix | Delete
/**
[326] Fix | Delete
* Check if the given meta key and value exist in the payment meta table.
[327] Fix | Delete
*
[328] Fix | Delete
* @since 1.8.4
[329] Fix | Delete
*
[330] Fix | Delete
* @param string $meta_key Meta key value.
[331] Fix | Delete
* @param string $meta_value Meta value.
[332] Fix | Delete
*
[333] Fix | Delete
* @return bool
[334] Fix | Delete
*/
[335] Fix | Delete
public function is_valid_meta( $meta_key, $meta_value ) {
[336] Fix | Delete
[337] Fix | Delete
// Check if the meta key or value is empty and return false.
[338] Fix | Delete
if ( empty( $meta_key ) || empty( $meta_value ) ) {
[339] Fix | Delete
return false;
[340] Fix | Delete
}
[341] Fix | Delete
[342] Fix | Delete
// Retrieve the global database instance.
[343] Fix | Delete
global $wpdb;
[344] Fix | Delete
[345] Fix | Delete
// Prepare and execute the SQL query to check if the given meta key and value exist in the payment meta table.
[346] Fix | Delete
// phpcs:disable WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.InterpolatedNotPrepared
[347] Fix | Delete
return (bool) $wpdb->get_var(
[348] Fix | Delete
$wpdb->prepare(
[349] Fix | Delete
"SELECT EXISTS( SELECT 1 FROM {$this->table_name} WHERE meta_key = %s AND meta_value = %s )",
[350] Fix | Delete
$meta_key,
[351] Fix | Delete
$meta_value
[352] Fix | Delete
)
[353] Fix | Delete
);
[354] Fix | Delete
}
[355] Fix | Delete
[356] Fix | Delete
/**
[357] Fix | Delete
* Retrieve payment meta data by given meta key and value.
[358] Fix | Delete
*
[359] Fix | Delete
* @since 1.8.4
[360] Fix | Delete
*
[361] Fix | Delete
* @param string $meta_key Meta key value.
[362] Fix | Delete
* @param string $meta_value Meta value.
[363] Fix | Delete
*
[364] Fix | Delete
* @return array
[365] Fix | Delete
*/
[366] Fix | Delete
public function get_all_by_meta( $meta_key, $meta_value ) {
[367] Fix | Delete
[368] Fix | Delete
// Check if the meta key or value is empty and return null.
[369] Fix | Delete
if ( empty( $meta_key ) || empty( $meta_value ) ) {
[370] Fix | Delete
return [];
[371] Fix | Delete
}
[372] Fix | Delete
[373] Fix | Delete
// Retrieve the global database instance.
[374] Fix | Delete
global $wpdb;
[375] Fix | Delete
[376] Fix | Delete
// Prepare and execute the SQL query to retrieve payment meta data based on the given meta key and value.
[377] Fix | Delete
// phpcs:disable WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.InterpolatedNotPrepared
[378] Fix | Delete
return $wpdb->get_results(
[379] Fix | Delete
$wpdb->prepare(
[380] Fix | Delete
"SELECT meta_key, meta_value AS value FROM {$this->table_name}
[381] Fix | Delete
WHERE payment_id = ( SELECT payment_id FROM {$this->table_name}
[382] Fix | Delete
WHERE meta_key = %s AND meta_value = %s LIMIT 1 )",
[383] Fix | Delete
$meta_key,
[384] Fix | Delete
$meta_value
[385] Fix | Delete
),
[386] Fix | Delete
OBJECT_K
[387] Fix | Delete
);
[388] Fix | Delete
}
[389] Fix | Delete
[390] Fix | Delete
/**
[391] Fix | Delete
* Get row from the payment meta table for given payment id and meta key.
[392] Fix | Delete
*
[393] Fix | Delete
* @since 1.8.4
[394] Fix | Delete
*
[395] Fix | Delete
* @param string $meta_key Meta key value.
[396] Fix | Delete
* @param int $payment_id Payment ID.
[397] Fix | Delete
*
[398] Fix | Delete
* @return object|null
[399] Fix | Delete
*/
[400] Fix | Delete
public function get_last_by( $meta_key, $payment_id ) {
[401] Fix | Delete
[402] Fix | Delete
global $wpdb;
[403] Fix | Delete
[404] Fix | Delete
// phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.SlowDBQuery.slow_db_query_meta_key
[405] Fix | Delete
return $wpdb->get_row(
[406] Fix | Delete
$wpdb->prepare(
[407] Fix | Delete
"SELECT * FROM $this->table_name
[408] Fix | Delete
WHERE payment_id = %d AND meta_key = %s
[409] Fix | Delete
ORDER BY id DESC LIMIT 1",
[410] Fix | Delete
$payment_id,
[411] Fix | Delete
$meta_key
[412] Fix | Delete
)
[413] Fix | Delete
);
[414] Fix | Delete
// phpcs:enable WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.SlowDBQuery.slow_db_query_meta_key
[415] Fix | Delete
}
[416] Fix | Delete
}
[417] Fix | Delete
[418] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function