PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / trunk
Booking for Appointments and Events Calendar – Amelia vtrunk
2.4.3 2.4.2 2.4.1 2.4 trunk 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.28 1.2.29 1.2.3 1.2.30 1.2.31 1.2.32 1.2.33 1.2.34 1.2.35 1.2.36 1.2.37 1.2.38 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.3
ameliabooking / src / Infrastructure / WP / InstallActions / DB / Notification / NotificationsSMSHistoryTable.php
ameliabooking / src / Infrastructure / WP / InstallActions / DB / Notification Last commit date
NotificationsLogTable.php 1 month ago NotificationsSMSHistoryTable.php 2 months ago NotificationsTable.php 2 months ago NotificationsTableInsertRows.php 6 months ago NotificationsToEntitiesTable.php 2 months ago
NotificationsSMSHistoryTable.php
72 lines
1 <?php
2
3 namespace AmeliaBooking\Infrastructure\WP\InstallActions\DB\Notification;
4
5 use AmeliaBooking\Domain\Common\Exceptions\InvalidArgumentException;
6 use AmeliaBooking\Domain\ValueObjects\String\Phone;
7 use AmeliaBooking\Infrastructure\WP\InstallActions\DB\AbstractDatabaseTable;
8
9 /**
10 * Class NotificationsSMSHistoryTable
11 *
12 * @package AmeliaBooking\Infrastructure\WP\InstallActions\DB\Notification
13 *
14 * @codingStandardsIgnoreFile
15 */
16 class NotificationsSMSHistoryTable extends AbstractDatabaseTable
17 {
18
19 public const TABLE = 'notifications_sms_history';
20
21 /**
22 * @return string
23 * @throws InvalidArgumentException
24 */
25 public static function buildTable()
26 {
27 global $wpdb;
28
29 $table = self::getTableName();
30
31 $charsetCollate = self::getCharsetCollate();
32
33 $phone = Phone::MAX_LENGTH;
34
35 if ($wpdb->get_var("SHOW TABLES LIKE '{$table}'") === $table) {
36 if ($wpdb->query("SHOW KEYS FROM {$table} WHERE Key_name = 'notificationId'")) {
37 $wpdb->query("ALTER TABLE {$table} DROP FOREIGN KEY {$table}_ibfk_1");
38 $wpdb->query("ALTER TABLE {$table} DROP INDEX notificationId");
39 }
40
41 if ($wpdb->query("SHOW KEYS FROM {$table} WHERE Key_name = 'userId'")) {
42 $wpdb->query("ALTER TABLE {$table} DROP FOREIGN KEY {$table}_ibfk_2");
43 $wpdb->query("ALTER TABLE {$table} DROP INDEX userId");
44 }
45
46 if ($wpdb->query("SHOW KEYS FROM {$table} WHERE Key_name = 'appointmentId'")) {
47 $wpdb->query("ALTER TABLE {$table} DROP FOREIGN KEY {$table}_ibfk_3");
48 $wpdb->query("ALTER TABLE {$table} DROP INDEX appointmentId");
49 }
50 }
51
52 return "CREATE TABLE {$table} (
53 `id` INT(11) NOT NULL AUTO_INCREMENT,
54 `notificationId` INT(11) NOT NULL,
55 `userId` INT(11) NULL,
56 `appointmentId` INT(11) NULL,
57 `eventId` INT(11) NULL,
58 `packageCustomerId` INT(11) NULL,
59 `logId` INT(11) NULL,
60 `dateTime` DATETIME NULL,
61 `text` VARCHAR(1600) NOT NULL,
62 `phone` VARCHAR({$phone}) NOT NULL,
63 `alphaSenderId` VARCHAR(11) NOT NULL,
64 `status` ENUM('prepared', 'accepted', 'queued', 'sent', 'failed', 'delivered', 'undelivered') NOT NULL DEFAULT 'prepared',
65 `price` DOUBLE NULL,
66 `segments` TINYINT(2) NULL,
67 PRIMARY KEY (`id`),
68 UNIQUE KEY `id` (`id`)
69 ) {$charsetCollate};";
70 }
71 }
72