PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 7.0.13
Admin Columns v7.0.13
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 3 months ago EncoderFactory 3 months ago Repository 3 months ago Table 3 months ago Encoder.php 3 months ago EncoderFactory.php 3 months ago KeyValue.php 3 months ago Option.php 3 months ago OptionData.php 3 months ago OptionDataFactory.php 3 months ago OptionFactory.php 3 months ago SiteOption.php 3 months ago SiteOptionFactory.php 3 months ago Table.php 3 months ago Timestamp.php 3 months ago Transaction.php 3 months ago UserData.php 3 months ago UserMeta.php 3 months ago UserOption.php 3 months 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 }