Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions classes/Tutor.php
Original file line number Diff line number Diff line change
Expand Up @@ -936,7 +936,7 @@ public static function create_database() {
PRIMARY KEY (id),
KEY order_id (order_id),
KEY meta_key (meta_key),
CONSTRAINT fk_tutor_ordermeta_order_id FOREIGN KEY (order_id) REFERENCES {$wpdb->prefix}tutor_orders(id) ON DELETE CASCADE
CONSTRAINT fk_{$wpdb->prefix}tutor_ordermeta_order_id FOREIGN KEY (order_id) REFERENCES {$wpdb->prefix}tutor_orders(id) ON DELETE CASCADE
) $charset_collate;";

$order_items_table = "CREATE TABLE {$wpdb->prefix}tutor_order_items (
Expand All @@ -950,7 +950,7 @@ public static function create_database() {
PRIMARY KEY (id),
KEY order_id (order_id),
KEY item_id (item_id),
CONSTRAINT fk_tutor_order_item_order_id FOREIGN KEY (order_id) REFERENCES {$wpdb->prefix}tutor_orders(id) ON DELETE CASCADE
CONSTRAINT fk_{$wpdb->prefix}tutor_order_item_order_id FOREIGN KEY (order_id) REFERENCES {$wpdb->prefix}tutor_orders(id) ON DELETE CASCADE
) $charset_collate;";

$coupons_table = "CREATE TABLE {$wpdb->prefix}tutor_coupons (
Expand Down Expand Up @@ -984,7 +984,7 @@ public static function create_database() {
reference_id BIGINT(20) UNSIGNED NOT NULL,
KEY coupon_code (coupon_code),
KEY reference_id (reference_id),
CONSTRAINT fk_tutor_coupon_application_coupon_code FOREIGN KEY (coupon_code) REFERENCES {$wpdb->prefix}tutor_coupons(coupon_code) ON DELETE CASCADE
CONSTRAINT fk_{$wpdb->prefix}tutor_coupon_application_coupon_code FOREIGN KEY (coupon_code) REFERENCES {$wpdb->prefix}tutor_coupons(coupon_code) ON DELETE CASCADE
) $charset_collate;";

$coupon_usage_table = "CREATE TABLE {$wpdb->prefix}tutor_coupon_usages (
Expand All @@ -994,8 +994,8 @@ public static function create_database() {
PRIMARY KEY (id),
KEY coupon_code (coupon_code),
KEY user_id (user_id),
CONSTRAINT fk_tutor_coupon_usage_coupon_code FOREIGN KEY (coupon_code) REFERENCES {$wpdb->prefix}tutor_coupons(coupon_code) ON DELETE CASCADE,
CONSTRAINT fk_tutor_coupon_usage_user_id FOREIGN KEY (user_id) REFERENCES {$wpdb->prefix}users(ID) ON DELETE CASCADE
CONSTRAINT fk_{$wpdb->prefix}tutor_coupon_usage_coupon_code FOREIGN KEY (coupon_code) REFERENCES {$wpdb->prefix}tutor_coupons(coupon_code) ON DELETE CASCADE,
CONSTRAINT fk_{$wpdb->prefix}tutor_coupon_usage_user_id FOREIGN KEY (user_id) REFERENCES {$wpdb->users}(ID) ON DELETE CASCADE
) $charset_collate;";

$cart_table = "CREATE TABLE {$wpdb->prefix}tutor_carts (
Expand All @@ -1007,7 +1007,7 @@ public static function create_database() {
PRIMARY KEY (id),
KEY user_id (user_id),
KEY coupon_code (coupon_code),
CONSTRAINT fk_tutor_cart_user_id FOREIGN KEY (user_id) REFERENCES {$wpdb->prefix}users(ID) ON DELETE CASCADE
CONSTRAINT fk_{$wpdb->prefix}tutor_cart_user_id FOREIGN KEY (user_id) REFERENCES {$wpdb->users}(ID) ON DELETE CASCADE
) $charset_collate;";

$cart_items_table = "CREATE TABLE {$wpdb->prefix}tutor_cart_items (
Expand All @@ -1017,8 +1017,8 @@ public static function create_database() {
PRIMARY KEY (id),
KEY cart_id (cart_id),
KEY course_id (course_id),
CONSTRAINT fk_tutor_cart_item_cart_id FOREIGN KEY (cart_id) REFERENCES {$wpdb->prefix}tutor_carts(id) ON DELETE CASCADE,
CONSTRAINT fk_tutor_cart_item_course_id FOREIGN KEY (course_id) REFERENCES {$wpdb->prefix}posts(ID) ON DELETE CASCADE
CONSTRAINT fk_{$wpdb->prefix}tutor_cart_item_cart_id FOREIGN KEY (cart_id) REFERENCES {$wpdb->prefix}tutor_carts(id) ON DELETE CASCADE,
CONSTRAINT fk_{$wpdb->prefix}tutor_cart_item_course_id FOREIGN KEY (course_id) REFERENCES {$wpdb->prefix}posts(ID) ON DELETE CASCADE
) $charset_collate;";

$customer_table = "CREATE TABLE {$wpdb->prefix}tutor_customers (
Expand Down
2 changes: 1 addition & 1 deletion classes/Upgrader.php
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,7 @@ public function upgrade_to_3_8_0() {
PRIMARY KEY (id),
KEY item_id (item_id),
KEY meta_key (meta_key),
CONSTRAINT fk_tutor_itemmeta FOREIGN KEY (item_id) REFERENCES {$wpdb->prefix}tutor_order_items(id) ON DELETE CASCADE
CONSTRAINT fk_{$wpdb->prefix}tutor_itemmeta FOREIGN KEY (item_id) REFERENCES {$wpdb->prefix}tutor_order_items(id) ON DELETE CASCADE
) $charset_collate;";
dbDelta( $item_meta_table );
}
Expand Down
80 changes: 51 additions & 29 deletions helpers/QueryHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -707,22 +707,22 @@ public static function query( $table, $args = array() ) {
// Count only.
if ( $count ) {
$sql_query = "SELECT COUNT(*)
FROM {$table_with_alias}
{$join_clause}
{$where_clause}
{$groupby_clause}
FROM {$table_with_alias}
{$join_clause}
{$where_clause}
{$groupby_clause}
{$having_clause}";

return (int) $wpdb->get_var( $sql_query ); //phpcs:ignore
}

// Single record.
if ( $single ) {
$sql_query = "SELECT {$select_clause}
FROM {$table_with_alias}
{$join_clause}
{$where_clause}
{$groupby_clause}
$sql_query = "SELECT {$select_clause}
FROM {$table_with_alias}
{$join_clause}
{$where_clause}
{$groupby_clause}
{$having_clause}
{$order_by_clause}
LIMIT 1";
Expand All @@ -741,11 +741,11 @@ public static function query( $table, $args = array() ) {

$limit_clause = self::prepare_limit_clause( $limit, $offset );

$sql_query = "SELECT {$calc_found_rows} {$select_clause}
FROM {$table_with_alias}
{$join_clause}
{$where_clause}
{$groupby_clause}
$sql_query = "SELECT {$calc_found_rows} {$select_clause}
FROM {$table_with_alias}
{$join_clause}
{$where_clause}
{$groupby_clause}
{$having_clause}
{$order_by_clause}
{$limit_clause}";
Expand Down Expand Up @@ -913,7 +913,7 @@ public static function prepare_set_clause( array $data ) {
$value = esc_sql( sanitize_text_field( $value ) );
$set .= is_numeric( $value ) ? "$key = $value" : "$key = '" . $value ."'";
}

$set .= ",";
}
return rtrim( $set, ',' );
Expand Down Expand Up @@ -1038,7 +1038,7 @@ public static function get_joined_data(
$order_by_clause = self::prepare_order_clause( $order_by, $order );
$limit_clause = self::prepare_limit_clause( $limit, $offset );

$query = "SELECT SQL_CALC_FOUND_ROWS
$query = "SELECT SQL_CALC_FOUND_ROWS
{$select_clause}
FROM {$from_clause}
{$join_clauses}
Expand All @@ -1051,7 +1051,7 @@ public static function get_joined_data(
}

$results = $wpdb->get_results( $query, $output );
$has_records = is_array( $results ) && count( $results );
$has_records = is_array( $results ) && count( $results );
$total_count = $has_records ? (int) $wpdb->get_var( 'SELECT FOUND_ROWS()' ) : 0;

// Throw exception if error occurred.
Expand Down Expand Up @@ -1119,7 +1119,7 @@ public static function get_count( $table, $where = [], $search = [], $count_colu
*/
public static function get_joined_count(string $primary_table, array $joining_tables, array $where = [], array $search = [], string $count_column = '*'): int {
global $wpdb;

$from_clause = self::prepare_table_name( $primary_table );
$join_clauses = self::prepare_join_clause( $joining_tables );
$where_clause = self::prepare_where_search_clause( $where, $search, 'AND' );
Expand Down Expand Up @@ -1166,33 +1166,33 @@ public static function get_all_with_search( string $table, array $where, array $
$where_clause = self::prepare_where_search_clause( $where, $search, 'AND' );
$order_by_clause = self::prepare_order_clause( $order_by, $order );
$limit_clause = self::prepare_limit_clause( $limit, $offset );

// If error occurred then throw new exception.
if ( $wpdb->last_error ) {
throw new \Exception( $wpdb->last_error );
}

$query = "SELECT SQL_CALC_FOUND_ROWS *
FROM {$table}
{$where_clause}
{$order_by_clause}
{$limit_clause}";

$results = $wpdb->get_results( $query, $output );
$has_records = is_array( $results ) && count( $results );
$total_count = $has_records ? (int) $wpdb->get_var( 'SELECT FOUND_ROWS()' ) : 0;

// If error occurred then throw new exception.
if ( $wpdb->last_error ) {
throw new \Exception( $wpdb->last_error );
}

// Prepare response array.
$response = array(
'results' => $results,
'total_count' => $total_count,
);

return $response;
}

Expand Down Expand Up @@ -1268,11 +1268,33 @@ public static function get_table_prefix() {
* @return string
*/
public static function prepare_table_name( string $table_name ) {
$table_prefix = self::get_table_prefix();
if ( strpos( $table_name,$table_prefix ) !== 0 ) {
$table_name = $table_prefix . $table_name;
global $wpdb;

// Clean up the input and extract the actual table name without its alias (e.g. "wp_users u")
$trimmed_table = trim( $table_name );
$parts = preg_split( '/\s+/', $trimmed_table );
$actual_table = $parts[0] ?? '';

// List of global tables that should never receive the subsite prefix
$global_tables = array(
$wpdb->users,
$wpdb->usermeta,
$wpdb->blogs ?? '',
$wpdb->blogmeta ?? '',
$wpdb->site ?? '',
$wpdb->sitemeta ?? '',
);

// If the targeted table is a global table, return it as-is without modification
if ( in_array( $actual_table, array_filter( $global_tables ), true ) ) {
return $table_name;
}

$table_prefix = self::get_table_prefix();
if ( strpos( $table_name, $table_prefix ) !== 0 ) {
$table_name = $table_prefix . $table_name;
}

return $table_name;
}

Expand Down Expand Up @@ -1318,7 +1340,7 @@ public static function duplicate_row( $table_name, array $where, ?callable $modi
$values = array_values( $row );

$insert_sql = $wpdb->prepare(
"INSERT INTO `$table_name` (`" . implode( '`, `', $columns ) . "`)
"INSERT INTO `$table_name` (`" . implode( '`, `', $columns ) . "`)
VALUES (" . implode( ', ', $placeholders ) . ")",
...$values
);
Expand Down Expand Up @@ -1357,7 +1379,7 @@ public static function get_valid_sort_order( $order ) {
* @return array Returns an array of table columns and their details.
*/
public static function get_table_schema( $table_name) {

global $wpdb;

$result = $wpdb->get_results( "DESCRIBE {$table_name}", ARRAY_A );
Expand Down
26 changes: 13 additions & 13 deletions models/WithdrawModel.php
Original file line number Diff line number Diff line change
Expand Up @@ -160,27 +160,27 @@ public static function get_withdraw_summary( $instructor_id, $args = array() ) {
//phpcs:disable
$data = $wpdb->get_row(
$wpdb->prepare(
"SELECT ID, display_name,
"SELECT ID, display_name,
total_income,
total_withdraw,
(total_income-total_withdraw) current_balance,
total_withdraw,
(total_income-total_withdraw) current_balance,
total_matured,
total_pending,
greatest(0, total_matured - total_withdraw) available_for_withdraw
greatest(0, total_matured - total_withdraw) available_for_withdraw

FROM (
SELECT ID,display_name,
SELECT ID,display_name,
COALESCE((SELECT SUM(instructor_amount) FROM {$wpdb->prefix}tutor_earnings WHERE order_status='%s' {$date_clause} GROUP BY user_id HAVING user_id=u.ID),0) total_income,

COALESCE((
SELECT sum(amount) total_withdraw FROM {$wpdb->prefix}tutor_withdraws
SELECT sum(amount) total_withdraw FROM {$wpdb->prefix}tutor_withdraws
WHERE status='%s' {$date_clause}
GROUP BY user_id
HAVING user_id=u.ID
),0) total_withdraw,

COALESCE((
SELECT sum(amount) total_pending FROM {$wpdb->prefix}tutor_withdraws
SELECT sum(amount) total_pending FROM {$wpdb->prefix}tutor_withdraws
WHERE status='pending' {$date_clause}
GROUP BY user_id
HAVING user_id=u.ID
Expand All @@ -194,9 +194,9 @@ public static function get_withdraw_summary( $instructor_id, $args = array() ) {
GROUP BY user_id
HAVING user_id = u.ID
),0) total_matured
FROM {$wpdb->prefix}users u WHERE u.ID=%d

FROM {$wpdb->users} u WHERE u.ID=%d

) a",
'completed',
self::STATUS_APPROVED,
Expand Down