PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 1.2.4
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v1.2.4
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 / class-betterdocs.php

class-betterdocs.php in BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot 1.2.4, at includes/class-betterdocs.php

304 lines 8.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * The file that defines the core plugin class
5 *
6 * A class definition that includes attributes and functions used across both the
7 * public-facing side of the site and the admin area.
8 *
9 * @link https://wpdeveloper.net
10 * @since 1.0.0
11 *
12 * @package BetterDocs
13 * @subpackage BetterDocs/includes
14 */
15
16 /**
17 * The core plugin class.
18 *
19 * This is used to define internationalization, admin-specific hooks, and
20 * public-facing site hooks.
21 *
22 * Also maintains the unique identifier of this plugin as well as the current
23 * version of the plugin.
24 *
25 * @since 1.0.0
26 * @package BetterDocs
27 * @subpackage BetterDocs/includes
28 * @author WPDeveloper <support@wpdeveloper.net>
29 */
30 class BetterDocs {
31
32 /**
33 * The loader that's responsible for maintaining and registering all hooks that power
34 * the plugin.
35 *
36 * @since 1.0.0
37 * @access protected
38 * @var BetterDocs_Loader $loader Maintains and registers all hooks for the plugin.
39 */
40 protected $loader;
41
42 /**
43 * The unique identifier of this plugin.
44 *
45 * @since 1.0.0
46 * @access protected
47 * @var string $plugin_name The string used to uniquely identify this plugin.
48 */
49 protected $plugin_name;
50
51 /**
52 * The current version of the plugin.
53 *
54 * @since 1.0.0
55 * @access protected
56 * @var string $version The current version of the plugin.
57 */
58 protected $version;
59
60 /**
61 * Define the core functionality of the plugin.
62 *
63 * Set the plugin name and the plugin version that can be used throughout the plugin.
64 * Load the dependencies, define the locale, and set the hooks for the admin area and
65 * the public-facing side of the site.
66 *
67 * @since 1.0.0
68 */
69 public function __construct() {
70 if ( defined( 'BETTER_DOCUMENTATION_VERSION' ) ) {
71 $this->version = BETTER_DOCUMENTATION_VERSION;
72 } else {
73 $this->version = '1.0.0';
74 }
75 $this->plugin_name = 'betterdocs';
76
77 $this->load_dependencies();
78 $this->set_locale();
79 $this->start_plugin_tracking();
80 $this->define_admin_hooks();
81 $this->define_public_hooks();
82 add_action( 'admin_init', array( $this, 'redirect' ) );
83 }
84
85 /**
86 * Load the required dependencies for this plugin.
87 *
88 * Include the following files that make up the plugin:
89 *
90 * - BetterDocs_Loader. Orchestrates the hooks of the plugin.
91 * - BetterDocs_i18n. Defines internationalization functionality.
92 * - BetterDocs_Admin. Defines all hooks for the admin area.
93 * - BetterDocs_Public. Defines all hooks for the public side of the site.
94 *
95 * Create an instance of the loader which will be used to register the hooks
96 * with WordPress.
97 *
98 * @since 1.0.0
99 * @access private
100 */
101 private function load_dependencies() {
102 /**
103 * Quick Setup Wizard
104 */
105 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/setup-wizard/betterdocs-setup-wizard-config.php';
106 /**
107 * The class responsible for orchestrating the actions and filters of the
108 * core plugin.
109 */
110 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-betterdocs-loader.php';
111
112 /**
113 * The class responsible for defining internationalization functionality
114 * of the plugin.
115 */
116 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-betterdocs-i18n.php';
117 require_once BETTERDOCS_DIR_PATH . 'includes/class-betterdocs-usage-tracker.php';
118 /**
119 * The class responsible for defining all actions that occur in the admin area.
120 */
121 require_once BETTERDOCS_ADMIN_DIR_PATH . 'class-betterdocs-admin.php';
122 require_once BETTERDOCS_ADMIN_DIR_PATH . 'includes/class-betterdocs-db.php';
123 require_once BETTERDOCS_ADMIN_DIR_PATH . 'includes/class-betterdocs-metabox.php';
124 require_once BETTERDOCS_ADMIN_DIR_PATH . 'includes/class-betterdocs-settings.php';
125
126 /**
127 * Notice Messages
128 */
129 require_once BETTERDOCS_ADMIN_DIR_PATH . 'includes/class-betterdocs-notice.php';
130
131 /**
132 * The class responsible for defining all actions that occur in the public-facing
133 * side of the site.
134 */
135 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-betterdocs-public.php';
136
137 /**
138 * The functions responsible for betterdocs helpers
139 */
140 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-betterdocs-helpers.php';
141
142 /**
143 * The class responsible for registering docs post type and it's category and tags taxonomy
144 */
145 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-betterdocs-docs-post-type.php';
146
147 /**
148 * The functions responsible for betterdocs shortcodes
149 */
150 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/betterdocs-shortcodes.php';
151
152 /**
153 * The functions responsible for betterdocs breadcrumbs
154 */
155 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/betterdocs-breadcrumbs.php';
156
157 /**
158 * The functions responsible for betterdocs customizer
159 */
160 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/customizer/customizer.php';
161 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/customizer/defaults.php';
162
163 $this->loader = new BetterDocs_Loader();
164 }
165
166 /**
167 * Optional usage tracker
168 *
169 * @since v1.0.0
170 */
171 public function start_plugin_tracking() {
172 new BetterDocs_Plugin_Usage_Tracker(
173 BETTERDOCS_FILE,
174 'http://app.wpdeveloper.net',
175 array(),
176 true,
177 true,
178 1
179 );
180 }
181
182 /**
183 * Define the locale for this plugin for internationalization.
184 *
185 * Uses the BetterDocs_i18n class in order to set the domain and to register the hook
186 * with WordPress.
187 *
188 * @since 1.0.0
189 * @access private
190 */
191 private function set_locale() {
192
193 $plugin_i18n = new BetterDocs_i18n();
194
195 $this->loader->add_action( 'plugins_loaded', $plugin_i18n, 'load_plugin_textdomain' );
196
197 }
198
199 /**
200 * Register all of the hooks related to the admin area functionality
201 * of the plugin.
202 *
203 * @since 1.0.0
204 * @access private
205 */
206 private function define_admin_hooks() {
207
208 $plugin_admin = new BetterDocs_Admin( $this->get_plugin_name(), $this->get_version() );
209
210 // $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_styles' );
211 // $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts' );
212
213 add_action( 'admin_menu', array( $plugin_admin, 'menu_page') );
214
215 add_action( 'admin_enqueue_scripts', array( $plugin_admin, 'enqueue_styles') );
216 add_action( 'admin_enqueue_scripts', array( $plugin_admin, 'enqueue_scripts') );
217 add_filter( 'parent_file', array( &$plugin_admin, 'highlight_admin_menu'), 10, 2 );
218 global $pagenow;
219 if ( $pagenow == 'edit-tags.php' ) {
220 add_filter( 'submenu_file', array( &$plugin_admin, 'highlight_admin_submenu'), 10, 2);
221 }
222 add_action( 'admin_bar_menu', array( $plugin_admin, 'toolbar_menu'), 32 );
223
224 BetterDocs_Settings::init();
225 }
226
227 /**
228 * Register all of the hooks related to the public-facing functionality
229 * of the plugin.
230 *
231 * @since 1.0.0
232 * @access private
233 */
234 private function define_public_hooks() {
235
236 $plugin_public = new BetterDocs_Public( $this->get_plugin_name(), $this->get_version() );
237
238 $this->loader->add_action( 'wp_enqueue_scripts', $plugin_public, 'enqueue_styles' );
239 $this->loader->add_action( 'wp_enqueue_scripts', $plugin_public, 'enqueue_scripts' );
240
241 }
242
243 /**
244 * Run the loader to execute all of the hooks with WordPress.
245 *
246 * @since 1.0.0
247 */
248 public function run() {
249 $this->loader->run();
250 }
251
252 /**
253 * The name of the plugin used to uniquely identify it within the context of
254 * WordPress and to define internationalization functionality.
255 *
256 * @since 1.0.0
257 * @return string The name of the plugin.
258 */
259 public function get_plugin_name() {
260 return $this->plugin_name;
261 }
262
263 /**
264 * The reference to the class that orchestrates the hooks with the plugin.
265 *
266 * @since 1.0.0
267 * @return BetterDocs_Loader Orchestrates the hooks of the plugin.
268 */
269 public function get_loader() {
270 return $this->loader;
271 }
272
273 /**
274 * Retrieve the version number of the plugin.
275 *
276 * @since 1.0.0
277 * @return string The version number of the plugin.
278 */
279 public function get_version() {
280 return $this->version;
281 }
282
283 public function is_pro_active(){
284 return defined( 'BETTERDOCS_PRO_VERSION' );
285 }
286
287 public function redirect() {
288 // Bail if no activation transient is set.
289 if ( ! get_transient( '_betterdocs_meta_activation_notice' ) ) {
290 return;
291 }
292 // Delete the activation transient.
293 delete_transient( '_betterdocs_meta_activation_notice' );
294
295 if ( ! is_multisite() ) {
296 // Redirect to the welcome page.
297 wp_safe_redirect( add_query_arg( array(
298 'page' => 'betterdocs-setup'
299 ), admin_url( ! $this->is_pro_active() ? 'edit.php?post_type=docs' : 'admin.php?page=betterdocs-setup' ) ) );
300 }
301 }
302
303 }
304