PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 3.5.3
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v3.5.3
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
← All changes | includes/Core/Install.php +125 -193 4.8.23.5.3 View file →
@@ -1,168 +1,157 @@
1 1 <?php
2 +
2 3 namespace WPDeveloper\BetterDocs\Core;
3 4
4 -if ( ! defined( 'ABSPATH' ) ) {
5 - exit;
6 -}
7 -
8 -
9 5 use WPDeveloper\BetterDocs\Utils\Base;
10 6 use WPDeveloper\BetterDocs\Utils\Database;
11 7 use WPDeveloper\BetterDocs\Dependencies\DI\Container;
12 8
13 9 class Install extends Base {
14 - /**
15 - * Container
16 - * @var Container
17 - */
18 - public $container;
19 - /**
20 - * Database
21 - * @var Database
22 - */
23 - public $database;
10 + /**
11 + * Container
12 + * @var Container
13 + */
14 + public $container;
15 + /**
16 + * Database
17 + * @var Database
18 + */
19 + public $database;
24 20
25 - public function __construct( Container $container ) {
26 - $this->container = $container;
27 - $this->database = $this->container->get( Database::class );
21 + public function __construct( Container $container ) {
22 + $this->container = $container;
23 + $this->database = $this->container->get( Database::class );
28 24
29 - register_activation_hook( BETTERDOCS_PLUGIN_FILE, [ $this, 'activate' ] );
30 - register_deactivation_hook( BETTERDOCS_PLUGIN_FILE, [ $this, 'deactivate' ] );
25 + register_activation_hook( BETTERDOCS_PLUGIN_FILE, [$this, 'activate'] );
26 + register_deactivation_hook( BETTERDOCS_PLUGIN_FILE, [$this, 'deactivate'] );
31 27
32 - //Update message for showing notice for new release
33 - add_action( 'in_plugin_update_message-betterdocs/betterdocs.php', [ $this, 'plugin_update_message' ], 10, 2 );
34 - add_action( 'init', [ $this, 'check_db_updates' ], 1 );
35 - add_action( 'init', [ $this, 'check_version' ], 5 );
36 - }
28 + //Update message for showing notice for new release
29 + add_action( 'in_plugin_update_message-betterdocs/betterdocs.php', [$this, 'plugin_update_message'], 10, 2 );
30 + add_action( 'init', [$this, 'check_db_updates'], 1 );
31 + add_action( 'init', [$this, 'check_version'], 5 );
32 + }
37 33
38 - /**
39 - * This is for upgrade message.
40 - *
41 - * @param mixed $plugin_data
42 - * @param mixed $response
43 - * @return void
44 - */
45 - public function plugin_update_message( $plugin_data, $response ) {
46 - if ( isset( $response->upgrade_notice ) ) {
47 - $new_version = $plugin_data['new_version'];
48 - $current_version = betterdocs()->version;
49 - $current_version_minor_part = explode( '.', $current_version )[1];
50 - $new_version_minor_part = explode( '.', $new_version )[1];
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];
51 47
52 - betterdocs()->views->get(
53 - 'admin/notices/upgrade',
54 - [
55 - 'response' => $response,
56 - 'plugin_data' => $plugin_data,
57 - 'major' => ! ( $current_version_minor_part === $new_version_minor_part )
58 - ]
59 - );
60 - }
61 - }
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 + }
62 55
63 - /**
64 - * This method will run when version is updated.
65 - * @return void
66 - */
67 - public function check_version() {
68 - $betterdocs_version = get_option( 'betterdocs_version', '2.3.6' );
69 - $betterdocs_code_version = betterdocs()->version;
70 - $requires_update = version_compare( $betterdocs_version, $betterdocs_code_version, '<' );
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, '<' );
71 64
72 - if ( $requires_update ) {
73 - /**
74 - * This block of codes will execute
75 - * if this plugin is activated via PRO PLUGIN.
76 - */
77 - if ( $this->database->get_transient( 'maybe_betterdocs_installed_by_pro' ) ) {
78 - $this->activate();
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();
79 72
80 - $this->database->delete_transient( 'maybe_betterdocs_installed_by_pro' );
81 - }
73 + $this->database->delete_transient( 'maybe_betterdocs_installed_by_pro' );
74 + }
82 75
83 - // Re-check if any setup needed.
84 - $this->check_db_updates();
76 + // Re-check if any setup needed.
77 + $this->check_db_updates();
85 78
86 - if ( get_option( 'betterdocs_version' ) && str_replace( '.', '', $betterdocs_code_version ) >= 370 ) {
87 - $this->migrate_customizer();
88 - }
79 + // Re-check if any migration is needed.
80 + $this->container->get( Migration::class )->init( str_replace( '.', '', $betterdocs_code_version ) );
89 81
90 - // Re-check if any migration is needed.
91 - $this->container->get( Migration::class )->init( str_replace( '.', '', $betterdocs_code_version ) );
82 + // Updated current version number of plugin.
83 + $this->update_version();
84 + }
85 + }
92 86
93 - // Updated current version number of plugin.
94 - $this->update_version();
95 - }
96 - }
87 + /**
88 + * Update BetterDocs version to current.
89 + */
90 + private function update_version() {
91 + update_option( 'betterdocs_version', betterdocs()->version );
92 + }
97 93
98 - /**
99 - * Update BetterDocs version to current.
100 - */
101 - private function update_version() {
102 - update_option( 'betterdocs_version', betterdocs()->version );
103 - }
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->check_db_updates();
104 101
105 - /**
106 - * This method will run when activation hit
107 - * @return void
108 - */
109 - public function activate() {
110 - // Create DB Tables if not created.
111 - $this->check_db_updates();
102 + // Set admin roles
103 + $this->container->get( Roles::class )->setup();
112 104
113 - // Set admin roles
114 - $this->container->get( Roles::class )->setup();
105 + // Save default settings.
106 + // $this->container->get( Settings::class )->save_default_settings();
115 107
116 - // Save default settings.
117 - // $this->container->get( Settings::class )->save_default_settings();
108 + // Set redirect transient
109 + if ( current_user_can( 'delete_users' ) ) {
110 + $this->database->set_transient( 'betterdocs_maybe_redirect', true );
111 + }
118 112
119 - // Set redirect transient
120 - if ( current_user_can( 'delete_users' ) ) {
121 - $this->database->set_transient( 'betterdocs_maybe_redirect', true );
122 - }
113 + $this->database->set_transient( 'betterdocs_flush_rewrite_rules', true );
114 + }
123 115
124 - $this->database->set_transient( 'betterdocs_flush_rewrite_rules', true );
125 - }
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();
126 123
127 - /**
128 - * This method will run when deactivation hit.
129 - * @return void
130 - */
131 - public function deactivate() {
132 - // Flush all the existing rewrite rules
133 - flush_rewrite_rules();
124 + // Reset admin roles
125 + $this->container->get( Roles::class )->setup( true );
126 + }
134 127
135 - // Reset admin roles
136 - $this->container->get( Roles::class )->setup( true );
137 - }
128 + /**
129 + * This method responsible for setup db tables for the plugin
130 + * @return void
131 + */
132 + public function check_db_updates() {
133 + $_db_version = get_option( 'betterdocs_db_version', '1.0' );
134 + $_db_code_version = betterdocs()->db_version;
135 + $requires_update = version_compare( $_db_version, $_db_code_version, '<' );
138 136
139 - /**
140 - * This method responsible for setup db tables for the plugin
141 - * @return void
142 - */
143 - public function check_db_updates() {
144 - $_db_version = get_option( 'betterdocs_db_version', '1.0' );
145 - $_db_code_version = betterdocs()->db_version;
146 - $requires_update = version_compare( $_db_version, $_db_code_version, '<' );
137 + if ( ! $requires_update ) {
138 + return;
139 + }
147 140
148 - if ( ! $requires_update ) {
149 - return;
150 - }
141 + global $wpdb;
151 142
152 - global $wpdb;
143 + $charset_collate = $wpdb->get_charset_collate();
153 144
154 - $charset_collate = $wpdb->get_charset_collate();
155 -
156 - $search_keyword_table = $wpdb->prefix . 'betterdocs_search_keyword';
157 - $search_keyword = "CREATE TABLE $search_keyword_table (
145 + $search_keyword_table = $wpdb->prefix . 'betterdocs_search_keyword';
146 + $search_keyword = "CREATE TABLE $search_keyword_table (
158 147 id bigint NOT NULL AUTO_INCREMENT,
159 148 keyword text NOT NULL,
160 149 PRIMARY KEY (id)
161 150 ) {$charset_collate};";
162 151
163 - $search_log_table = $wpdb->prefix . 'betterdocs_search_log';
164 - $search_log = "CREATE TABLE $search_log_table (
152 + $search_log_table = $wpdb->prefix . 'betterdocs_search_log';
153 + $search_log = "CREATE TABLE $search_log_table (
165 154 id bigint NOT NULL AUTO_INCREMENT,
166 155 keyword_id bigint NOT NULL,
167 156 count mediumint(9) NULL,
168 157 not_found_count mediumint(9) NULL,
@@ -168,14 +157,13 @@
168 157 not_found_count mediumint(9) NULL,
169 158 created_at date DEFAULT '0000-00-00' NOT NULL,
170 159 PRIMARY KEY (id),
171 160 KEY keyword_id (keyword_id),
172 - KEY created_at (created_at),
173 - KEY keyword_created (keyword_id, created_at)
161 + KEY created_at (created_at)
174 162 ) {$charset_collate};";
175 163
176 - $_analytics_table = $wpdb->prefix . 'betterdocs_analytics';
177 - $analytics_table = "CREATE TABLE $_analytics_table (
164 + $_analytics_table = $wpdb->prefix . 'betterdocs_analytics';
165 + $analytics_table = "CREATE TABLE $_analytics_table (
178 166 id bigint NOT NULL AUTO_INCREMENT,
179 167 post_id bigint DEFAULT 0 NOT NULL,
180 168 impressions bigint DEFAULT 0 NOT NULL,
181 169 unique_visit bigint DEFAULT 0 NOT NULL,
@@ -189,70 +177,14 @@
189 177 KEY unique_visit (unique_visit),
190 178 KEY happy (happy),
191 179 KEY sad (sad),
192 180 KEY normal (normal),
193 - KEY created_at (created_at),
194 - UNIQUE KEY post_created (post_id, created_at)
181 + KEY created_at (created_at)
195 182 ) {$charset_collate};";
196 183
197 - // The betterdocs_api_specs table moved to Pro (API Documentation is a
198 - // Pro-only feature; Pro's Install creates it).
184 + require_once ABSPATH . 'wp-admin/includes/upgrade.php';
185 + dbDelta( $search_keyword . $search_log . $analytics_table );
199 186
200 - require_once ABSPATH . 'wp-admin/includes/upgrade.php';
201 - dbDelta( $search_keyword . $search_log . $analytics_table );
202 -
203 - // Update DB Version
204 - update_option( 'betterdocs_db_version', $_db_code_version );
205 - }
206 -
207 - public function migrate_customizer() {
208 - $search_layout = get_theme_mod( 'betterdocs_search_layout_select' );
209 - if ( empty( $search_layout ) ) {
210 - set_theme_mod( 'betterdocs_search_layout_select', 'layout-1' );
211 - }
212 -
213 - $search_heading = get_theme_mod( 'betterdocs_live_search_heading_switch' );
214 - if ( empty( $search_heading ) ) {
215 - set_theme_mod( 'betterdocs_live_search_heading_switch', false );
216 - }
217 -
218 - $docs_layout = get_theme_mod( 'betterdocs_docs_layout_select' );
219 - if ( empty( $docs_layout ) ) {
220 - set_theme_mod( 'betterdocs_docs_layout_select', 'layout-1' );
221 - }
222 -
223 - $single_layout = get_theme_mod( 'betterdocs_single_layout_select' );
224 - if ( empty( $single_layout ) ) {
225 - set_theme_mod( 'betterdocs_single_layout_select', 'layout-1' );
226 - }
227 -
228 - $category_archive_layout = get_theme_mod( 'betterdocs_archive_layout_select' );
229 - if ( empty( $category_archive_layout ) ) {
230 - set_theme_mod( 'betterdocs_archive_layout_select', 'layout-1' );
231 - }
232 -
233 - $search_layout_select = get_theme_mod( 'betterdocs_search_layout_select' );
234 - if ( empty( $search_layout_select ) ) {
235 - set_theme_mod( 'betterdocs_search_layout_select', 'layout-1' );
236 - }
237 -
238 - $docs_faq = get_theme_mod( 'betterdocs_select_faq_template' );
239 - if ( empty( $docs_faq ) ) {
240 - set_theme_mod( 'betterdocs_select_faq_template', 'layout-1' );
241 - }
242 -
243 - if ( get_option( 'betterdocs_settings' ) && betterdocs()->settings->get( 'enable_estimated_reading_time' ) == false ) {
244 - betterdocs()->settings->save( 'enable_estimated_reading_time', false );
245 - }
246 -
247 - if ( function_exists( 'betterdocs_pro' ) ) {
248 - $mkb_layout = get_theme_mod( 'betterdocs_multikb_layout_select' );
249 - if ( empty( $mkb_layout ) ) {
250 - set_theme_mod( 'betterdocs_multikb_layout_select', 'layout-1' );
251 - }
252 - $mkb_faq = get_theme_mod( 'betterdocs_select_faq_template_mkb' );
253 - if ( empty( $mkb_faq ) ) {
254 - set_theme_mod( 'betterdocs_select_faq_template_mkb', 'layout-1' );
255 - }
256 - }
257 - }
187 + // Update DB Version
188 + update_option( 'betterdocs_db_version', $_db_code_version );
189 + }
258 190 }