class-connect-helper.php
1 year ago
class-core.php
10 months ago
class-database.php
10 months ago
class-google-api-new.php
1 year ago
class-google-api-old.php
11 months ago
class-google-connect.php
11 months ago
class-google-dao.php
10 months ago
class-google-utils.php
1 year ago
class-database.php
97 lines
| 1 | <?php |
| 2 | |
| 3 | namespace WP_Rplg_Google_Reviews\Includes\Core; |
| 4 | |
| 5 | class Database { |
| 6 | |
| 7 | const BUSINESS_TABLE = 'grp_google_place'; |
| 8 | |
| 9 | const REVIEW_TABLE = 'grp_google_review'; |
| 10 | |
| 11 | const STATS_TABLE = 'grp_google_stats'; |
| 12 | |
| 13 | public function create() { |
| 14 | global $wpdb; |
| 15 | |
| 16 | $charset_collate = $wpdb->get_charset_collate(); |
| 17 | |
| 18 | if (!function_exists('dbDelta')) { |
| 19 | require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); |
| 20 | } |
| 21 | |
| 22 | $sql = "CREATE TABLE IF NOT EXISTS " . $wpdb->prefix . self::BUSINESS_TABLE . " (". |
| 23 | "id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,". |
| 24 | "place_id VARCHAR(80) NOT NULL,". |
| 25 | "name VARCHAR(255) NOT NULL,". |
| 26 | "photo VARCHAR(255),". |
| 27 | "icon VARCHAR(255),". |
| 28 | "address VARCHAR(255),". |
| 29 | "rating DOUBLE PRECISION,". |
| 30 | "url VARCHAR(255),". |
| 31 | "map_url VARCHAR(512),". |
| 32 | "website VARCHAR(255),". |
| 33 | "review_count INTEGER,". |
| 34 | "updated BIGINT(20),". |
| 35 | "PRIMARY KEY (`id`),". |
| 36 | "UNIQUE INDEX grp_place_id (`place_id`)". |
| 37 | ") " . $charset_collate . ";"; |
| 38 | |
| 39 | $this->execsql($sql); |
| 40 | |
| 41 | $sql = "CREATE TABLE IF NOT EXISTS " . $wpdb->prefix . self::REVIEW_TABLE . " (". |
| 42 | "id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,". |
| 43 | "google_place_id BIGINT(20) UNSIGNED NOT NULL,". |
| 44 | "rating INTEGER NOT NULL,". |
| 45 | "text VARCHAR(10000),". |
| 46 | "time INTEGER NOT NULL,". |
| 47 | "url VARCHAR(255),". |
| 48 | "language VARCHAR(10),". |
| 49 | "author_name VARCHAR(255),". |
| 50 | "author_url VARCHAR(127),". |
| 51 | "profile_photo_url VARCHAR(255),". |
| 52 | "provider VARCHAR(32),". |
| 53 | "images TEXT,". |
| 54 | "reply TEXT,". |
| 55 | "reply_time INTEGER,". |
| 56 | "hide VARCHAR(1) DEFAULT '' NOT NULL,". |
| 57 | "PRIMARY KEY (`id`),". |
| 58 | "UNIQUE INDEX grp_author_url_lang (`google_place_id`, `author_url`, `language`),". |
| 59 | "INDEX grp_google_place_id (`google_place_id`)". |
| 60 | ") " . $charset_collate . ";"; |
| 61 | |
| 62 | $this->execsql($sql); |
| 63 | |
| 64 | $sql = "CREATE TABLE IF NOT EXISTS " . $wpdb->prefix . self::STATS_TABLE . " (". |
| 65 | "id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,". |
| 66 | "google_place_id BIGINT(20) UNSIGNED NOT NULL,". |
| 67 | "time INTEGER NOT NULL,". |
| 68 | "rating DOUBLE PRECISION,". |
| 69 | "review_count INTEGER,". |
| 70 | "PRIMARY KEY (`id`),". |
| 71 | "INDEX grp_google_place_id (`google_place_id`)". |
| 72 | ") " . $charset_collate . ";"; |
| 73 | |
| 74 | $this->execsql($sql); |
| 75 | } |
| 76 | |
| 77 | private function execsql($sql) { |
| 78 | global $wpdb; |
| 79 | |
| 80 | dbDelta($sql); |
| 81 | $last_error = $wpdb->last_error; |
| 82 | if (isset($last_error) && strlen($last_error) > 0) { |
| 83 | $now = floor(microtime(true) * 1000); |
| 84 | update_option('grw_last_error', $now . ': ' . $last_error); |
| 85 | } |
| 86 | } |
| 87 | |
| 88 | public function drop() { |
| 89 | global $wpdb; |
| 90 | |
| 91 | $wpdb->query("DROP TABLE " . $wpdb->prefix . self::BUSINESS_TABLE . ";"); |
| 92 | $wpdb->query("DROP TABLE " . $wpdb->prefix . self::REVIEW_TABLE . ";"); |
| 93 | $wpdb->query("DROP TABLE " . $wpdb->prefix . self::STATS_TABLE . ";"); |
| 94 | } |
| 95 | |
| 96 | } |
| 97 |