PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 2.5.1
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v2.5.1
4.9.1 4.9.0 4.8.2 4.8.1 4.8.0 4.7.0 4.6.2 4.6.1 4.6.0 4.5.6 4.5.5 4.5.4 4.5.3 4.5.2 4.5.1 4.5.0 4.4.1 4.4.0 3.3.4 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.5.2 All 199 releases
betterdocs / includes / Core / Install.php

Install.php in BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot 2.5.1, at includes/Core/Install.php

169 lines 5.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace WPDeveloper\BetterDocs\Core;
4
5 use WPDeveloper\BetterDocs\Utils\Base;
6 use WPDeveloper\BetterDocs\Utils\Database;
7 use WPDeveloper\BetterDocs\Dependencies\DI\Container;
8
9 class Install extends Base {
10 /**
11 * Container
12 * @var Container
13 */
14 public $container;
15 /**
16 * Database
17 * @var Database
18 */
19 public $database;
20
21 public function __construct( Container $container ) {
22 $this->container = $container;
23
24 $this->database = $this->container->get( Database::class );
25
26 register_activation_hook( BETTERDOCS_PLUGIN_FILE, [$this, 'activate'] );
27 register_deactivation_hook( BETTERDOCS_PLUGIN_FILE, [$this, 'deactivate'] );
28
29 //Update message for showing notice for new release
30 add_action( 'in_plugin_update_message-betterdocs/betterdocs.php', [$this, 'plugin_update_message'], 10, 2 );
31 add_action( 'init', [$this, 'check_version'], 5 );
32 }
33
34 /**
35 * This is for upgrade message.
36 *
37 * @param mixed $plugin_data
38 * @param mixed $response
39 * @return void
40 */
41 public function plugin_update_message( $plugin_data, $response ) {
42 if ( isset( $response->upgrade_notice ) ) {
43 $new_version = $plugin_data['new_version'];
44 $current_version = betterdocs()->version;
45 $current_version_minor_part = explode( '.', $current_version )[1];
46 $new_version_minor_part = explode( '.', $new_version )[1];
47
48 betterdocs()->views->get( 'admin/notices/upgrade', [
49 'response' => $response,
50 'plugin_data' => $plugin_data,
51 'major' => ! ( $current_version_minor_part === $new_version_minor_part )
52 ] );
53 }
54 }
55
56 /**
57 * This method will run when version is updated.
58 * @return void
59 */
60 public function check_version() {
61 $betterdocs_version = get_option( 'betterdocs_version', '2.3.6' );
62 $betterdocs_code_version = betterdocs()->version;
63 $requires_update = version_compare( $betterdocs_version, $betterdocs_code_version, '<' );
64
65 if ( $requires_update ) {
66 /**
67 * This block of codes will execute
68 * if this plugin is activated via PRO PLUGIN.
69 */
70 if ( $this->database->get_transient( 'maybe_betterdocs_installed_by_pro' ) ) {
71 $this->activate();
72
73 $this->database->delete_transient( 'maybe_betterdocs_installed_by_pro' );
74 }
75
76 // Re-check if any setup needed.
77 $this->setup_db_tables();
78
79 // Re-check if any migration is needed.
80 $this->container->get( Migration::class )->init( str_replace( '.', '', $betterdocs_code_version ) );
81
82 // Updated current version number of plugin.
83 $this->update_version();
84 }
85 }
86
87 /**
88 * Update BetterDocs version to current.
89 */
90 private function update_version() {
91 update_option( 'betterdocs_version', betterdocs()->version );
92 }
93
94 /**
95 * This method will run when activation hit
96 * @return void
97 */
98 public function activate() {
99 // Create DB Tables if not created.
100 $this->setup_db_tables();
101
102 // Set admin roles
103 $this->container->get( Roles::class )->setup();
104
105 // Save default settings.
106 $this->container->get( Settings::class )->save_default_settings();
107
108 // Set redirect transient
109 if ( current_user_can( 'delete_users' ) ) {
110 $this->database->set_transient( 'betterdocs_maybe_redirect', true );
111 }
112
113 $this->database->set_transient( 'betterdocs_flush_rewrite_rules', true );
114 }
115
116 /**
117 * This method will run when deactivation hit.
118 * @return void
119 */
120 public function deactivate() {
121 // Flush all the existing rewrite rules
122 flush_rewrite_rules();
123
124 // Reset admin roles
125 $this->container->get( Roles::class )->setup( true );
126 }
127
128 /**
129 * This method responsible for setup db tables for the plugin
130 * @return void
131 */
132 public function setup_db_tables() {
133 global $wpdb;
134
135 $betterdocs_db_version = get_option( 'betterdocs_db_version', '1.0' );
136 $betterdocs_db_code_version = betterdocs()->db_version;
137 $requires_update = version_compare( $betterdocs_db_version, $betterdocs_db_code_version, '<' );
138
139 if ( $requires_update ) {
140 $charset_collate = $wpdb->get_charset_collate();
141
142 $search_keyword_table = $wpdb->prefix . 'betterdocs_search_keyword';
143 $search_keyword = "CREATE TABLE $search_keyword_table (
144 id bigint NOT NULL AUTO_INCREMENT,
145 keyword text NOT NULL,
146 PRIMARY KEY (id)
147 ) {$charset_collate};";
148
149 $search_log_table = $wpdb->prefix . 'betterdocs_search_log';
150 $search_log = "CREATE TABLE $search_log_table (
151 id bigint NOT NULL AUTO_INCREMENT,
152 keyword_id bigint NOT NULL,
153 count mediumint(9) NULL,
154 not_found_count mediumint(9) NULL,
155 created_at date DEFAULT '0000-00-00' NOT NULL,
156 PRIMARY KEY (id),
157 KEY keyword_id (keyword_id),
158 KEY created_at (created_at)
159 ) {$charset_collate};";
160
161 require_once ABSPATH . 'wp-admin/includes/upgrade.php';
162 dbDelta( $search_keyword . $search_log );
163
164 // Update DB Version
165 update_option( 'betterdocs_db_version', $betterdocs_db_code_version );
166 }
167 }
168 }
169