PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 7.1.4
Admin Columns v7.1.4
7.1.4 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 day ago EncoderFactory 1 day ago Repository 1 day ago Table 1 day ago Encoder.php 1 day ago EncoderFactory.php 1 day ago KeyValue.php 1 day ago Option.php 1 day ago OptionData.php 1 day ago OptionDataFactory.php 1 day ago OptionFactory.php 1 day ago SiteOption.php 1 day ago SiteOptionFactory.php 1 day ago Table.php 1 day ago Timestamp.php 1 day ago Transaction.php 1 day ago UserData.php 1 day ago UserMeta.php 1 day ago UserOption.php 1 day ago
Transaction.php
88 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace AC\Storage;
6
7 use LogicException;
8 use wpdb;
9
10 final class Transaction
11 {
12 public const START = 1;
13 public const COMMIT = 2;
14 public const ROLLBACK = 3;
15
16 private bool $started = false;
17
18 /**
19 * @param bool $start Will start a transaction on creation if true
20 */
21 public function __construct(bool $start = true)
22 {
23 if ($start === true) {
24 $this->start();
25 }
26 }
27
28 private function statement(int $type): void
29 {
30 global $wpdb;
31
32 if (! $wpdb instanceof wpdb) {
33 throw new LogicException('The WordPress database is not yet initialized.');
34 }
35
36 switch ($type) {
37 case self::START:
38 $sql = 'START TRANSACTION';
39
40 break;
41 case self::COMMIT:
42 $sql = 'COMMIT';
43
44 break;
45 case self::ROLLBACK:
46 $sql = 'ROLLBACK';
47
48 break;
49 default:
50 throw new LogicException(sprintf('Found invalid transaction statement: %s.', $type));
51 }
52
53 $wpdb->hide_errors();
54 $wpdb->query($sql);
55 }
56
57 /**
58 * Start a MySQL transaction
59 */
60 public function start(): void
61 {
62 if ($this->started) {
63 throw new LogicException('Transaction has started already.');
64 }
65
66 $this->started = true;
67
68 $this->statement(self::START);
69 }
70
71 /**
72 * Commit a MySQL transaction
73 */
74 public function commit(): void
75 {
76 $this->statement(self::COMMIT);
77 }
78
79 /**
80 * Rollback a MySQL transaction
81 */
82 public function rollback(): void
83 {
84 $this->statement(self::ROLLBACK);
85 }
86
87 }
88