PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 7.0.19
Admin Columns v7.0.19
7.0.19 2.3.5 2.4 2.4.1 2.4.10 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.6.1 2.5.6.2 2.5.6.3 2.5.6.4 3.0 3.0.1 3.0.2 3.0.3 3.0.5 3.0.7 3.1 3.1.1 3.1.10 3.1.2 3.1.3 3.1.5 3.2.3 3.2.7 3.3.1 3.4.1 3.4.6 3.4.8 4.0.1 4.0.3 4.1.6 4.2.2 4.2.5 4.3 4.3.2 4.4.1 4.4.4 4.4.5 4.5.5 4.6.1 4.7.18 4.7.19 4.7.20 4.7.7 7.0.13 7.0.14 7.0.16 trunk 1.0 1.1 1.1.3 1.2 1.2.1 1.3 1.3.1 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.5.1 1.4.6 1.4.6.1 1.4.6.2 1.4.6.3 1.4.6.4 1.4.7 1.4.8 1.4.9 2.0.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.2 2.2.1 2.2.1.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.5.1 2.2.6 2.2.6.1 2.2.6.2 2.2.6.3 2.2.6.4 2.2.7 2.2.8 2.2.8.1 2.2.9 2.3.1 2.3.2 2.3.3
codepress-admin-columns / classes / Storage / Transaction.php
codepress-admin-columns / classes / Storage Last commit date
Encoder 1 month ago EncoderFactory 1 month ago Repository 1 month ago Table 1 month ago Encoder.php 1 month ago EncoderFactory.php 1 month ago KeyValue.php 1 month ago Option.php 1 month ago OptionData.php 1 month ago OptionDataFactory.php 1 month ago OptionFactory.php 1 month ago SiteOption.php 1 month ago SiteOptionFactory.php 1 month ago Table.php 1 month ago Timestamp.php 1 month ago Transaction.php 1 month ago UserData.php 1 month ago UserMeta.php 1 month ago UserOption.php 1 month ago
Transaction.php
86 lines
1 <?php
2
3 namespace AC\Storage;
4
5 use LogicException;
6 use wpdb;
7
8 final class Transaction
9 {
10
11 public const START = 1;
12 public const COMMIT = 2;
13 public const ROLLBACK = 3;
14
15 private bool $started = false;
16
17 /**
18 * @param bool $start Will start a transaction on creation if true
19 */
20 public function __construct(bool $start = true)
21 {
22 if ($start === true) {
23 $this->start();
24 }
25 }
26
27 private function statement(int $type): void
28 {
29 global $wpdb;
30
31 if ( ! $wpdb instanceof wpdb) {
32 throw new LogicException('The WordPress database is not yet initialized.');
33 }
34
35 switch ($type) {
36 case self::START:
37 $sql = 'START TRANSACTION';
38
39 break;
40 case self::COMMIT:
41 $sql = 'COMMIT';
42
43 break;
44 case self::ROLLBACK:
45 $sql = 'ROLLBACK';
46
47 break;
48 default:
49 throw new LogicException(sprintf('Found invalid transaction statement: %s.', $type));
50 }
51
52 $wpdb->hide_errors();
53 $wpdb->query($sql);
54 }
55
56 /**
57 * Start a MySQL transaction
58 */
59 public function start(): void
60 {
61 if ($this->started) {
62 throw new LogicException('Transaction has started already.');
63 }
64
65 $this->started = true;
66
67 $this->statement(self::START);
68 }
69
70 /**
71 * Commit a MySQL transaction
72 */
73 public function commit(): void
74 {
75 $this->statement(self::COMMIT);
76 }
77
78 /**
79 * Rollback a MySQL transaction
80 */
81 public function rollback(): void
82 {
83 $this->statement(self::ROLLBACK);
84 }
85
86 }