PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.9.3
GiveWP – Donation Plugin and Fundraising Platform v2.9.3
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Framework / Database / DB.php
give / src / Framework / Database Last commit date
Exceptions 5 years ago DB.php 5 years ago
DB.php
114 lines
1 <?php
2
3 namespace Give\Framework\Database;
4
5 use Give\Framework\Database\Exceptions\DatabaseQueryException;
6 use WP_Error;
7
8 class DB {
9 /**
10 * Runs the dbDelta function and returns a WP_Error with any errors that occurred during the process
11 *
12 * @see dbDelta() for parameter and return details
13 *
14 * @since 2.9.2
15 *
16 * @param $delta
17 *
18 * @return array
19 * @throws DatabaseQueryException
20 */
21 public static function delta( $delta ) {
22 return self::runQueryWithErrorChecking(
23 function () use ( $delta ) {
24 return dbDelta( $delta );
25 }
26 );
27 }
28
29 /**
30 * Runs the $wpdb::delete method with SQL error checking
31 *
32 * @see wpdb::delete() for parameter and return details
33 *
34 * @since 2.9.2
35 *
36 * @param string $tableName
37 * @param array $data
38 * @param array $formats
39 *
40 * @return int|false
41 * @throws DatabaseQueryException
42 */
43 public static function delete( $tableName, $data, $formats ) {
44 return self::runQueryWithErrorChecking(
45 function () use ( $tableName, $data, $formats ) {
46 global $wpdb;
47
48 return $wpdb->delete( $tableName, $data, $formats = null );
49 }
50 );
51 }
52
53 /**
54 * Runs a query callable and checks to see if any unique SQL errors occurred when it was run
55 *
56 * @since 2.9.2
57 *
58 * @param Callable $queryCaller
59 *
60 * @return mixed
61 * @throws DatabaseQueryException
62 */
63 private static function runQueryWithErrorChecking( $queryCaller ) {
64 global $wpdb, $EZSQL_ERROR;
65 require_once ABSPATH . 'wp-admin/includes/upgrade.php';
66
67 $errorCount = is_array( $EZSQL_ERROR ) ? count( $EZSQL_ERROR ) : 0;
68 $hasShowErrors = $wpdb->hide_errors();
69
70 $output = $queryCaller();
71
72 if ( $hasShowErrors ) {
73 $wpdb->show_errors();
74 }
75
76 $errors = self::getQueryErrors( $errorCount );
77
78 if ( $errors->has_errors() ) {
79 throw DatabaseQueryException::create( $errors->get_error_messages() );
80 }
81
82 return $output;
83 }
84
85 /**
86 * Retrieves the SQL errors stored by WordPress
87 *
88 * @since 2.9.2
89 *
90 * @param int $initialCount
91 *
92 * @return WP_Error
93 */
94 private static function getQueryErrors( $initialCount = 0 ) {
95 global $EZSQL_ERROR;
96
97 $wpError = new WP_Error();
98
99 if ( is_array( $EZSQL_ERROR ) ) {
100 for ( $index = $initialCount, $indexMax = count( $EZSQL_ERROR ); $index < $indexMax; $index ++ ) {
101 $error = $EZSQL_ERROR[ $index ];
102
103 if ( empty( $error['error_str'] ) || empty( $error['query'] ) || 0 === strpos( $error['query'], 'DESCRIBE ' ) ) {
104 continue;
105 }
106
107 $wpError->add( 'db_delta_error', $error['error_str'] );
108 }
109 }
110
111 return $wpError;
112 }
113 }
114