PluginProbe
Chartify – WordPress Chart Plugin / 3.4.8
Chartify – WordPress Chart Plugin v3.4.8
3.8.0 3.7.9 3.7.8 3.7.7 3.7.6 3.7.5 trunk 1.0.0 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 All 83 releases
chart-builder / includes / class-chart-builder.php

class-chart-builder.php in Chartify – WordPress Chart Plugin 3.4.8, at includes/class-chart-builder.php

365 lines 16.1 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://ays-pro.com/
10 * @since 1.0.0
11 *
12 * @package Chart_Builder
13 * @subpackage Chart_Builder/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 Chart_Builder
27 * @subpackage Chart_Builder/includes
28 * @author Chart Builder Team <info@ays-pro.com>
29 */
30 class Chart_Builder {
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 Chart_Builder_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( 'CHART_BUILDER_VERSION' ) ) {
71 $this->version = CHART_BUILDER_VERSION;
72 } else {
73 $this->version = '1.0.0';
74 }
75 $this->plugin_name = "chart-builder";
76
77 $this->load_dependencies();
78 $this->set_locale();
79 $this->define_admin_hooks();
80 $this->define_public_hooks();
81 $this->define_integrations_hooks();
82 $this->define_custom_post_type_hooks();
83
84 }
85
86 /**
87 * Load the required dependencies for this plugin.
88 *
89 * Include the following files that make up the plugin:
90 *
91 * - Chart_Builder_Loader. Orchestrates the hooks of the plugin.
92 * - Chart_Builder_i18n. Defines internationalization functionality.
93 * - Chart_Builder_Admin. Defines all hooks for the admin area.
94 * - Chart_Builder_Public. Defines all hooks for the public side of the site.
95 *
96 * Create an instance of the loader which will be used to register the hooks
97 * with WordPress.
98 *
99 * @since 1.0.0
100 * @access private
101 */
102 private function load_dependencies() {
103
104 if ( ! class_exists( 'WP_List_Table' ) ) {
105 require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
106 }
107
108 /**
109 * The classes responsible for defining all actions including db that occur in the plugin area.
110 */
111 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-chart-builder-functions.php';
112 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-chart-builder-settings-db-actions.php';
113 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-chart-builder-db-actions.php';
114 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-chart-builder-actions.php';
115
116 /**
117 * The class responsible for defining all functions for getting all form integrations
118 */
119 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-chart-builder-integrations.php';
120
121 /**
122 * The class responsible for orchestrating the actions and filters of the
123 * core plugin.
124 */
125 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-chart-builder-loader.php';
126
127 /**
128 * The class responsible for defining internationalization functionality
129 * of the plugin.
130 */
131 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-chart-builder-i18n.php';
132
133 /**
134 * The class responsible for defining all actions that occur in the admin area.
135 */
136 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-chart-builder-admin.php';
137
138 /**
139 * The class responsible for defining all actions that occur in the public-facing
140 * side of the site.
141 */
142 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-chart-builder-public.php';
143
144 /**
145 * The class responsible for defining all functions for getting all custom post type functions
146 */
147 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-chart-builder-custom-post-type.php';
148
149
150 $this->loader = new Chart_Builder_Loader();
151
152 }
153
154 /**
155 * Define the locale for this plugin for internationalization.
156 *
157 * Uses the Chart_Builder_i18n class in order to set the domain and to register the hook
158 * with WordPress.
159 *
160 * @since 1.0.0
161 * @access private
162 */
163 private function set_locale() {
164
165 $plugin_i18n = new Chart_Builder_i18n();
166
167 $this->loader->add_action( 'plugins_loaded', $plugin_i18n, 'load_plugin_textdomain' );
168
169 }
170
171 /**
172 * Register all of the hooks related to the admin area functionality
173 * of the plugin.
174 *
175 * @since 1.0.0
176 * @access private
177 */
178 private function define_admin_hooks() {
179
180 $plugin_admin = new Chart_Builder_Admin( $this->get_plugin_name(), $this->get_version() );
181
182 $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_styles' );
183 $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts' );
184 $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'disable_scripts', 100 );
185
186 $this->loader->add_action( 'admin_menu', $plugin_admin, 'add_plugin_admin_menu' );
187
188 $this->loader->add_action( 'admin_menu', $plugin_admin, 'add_plugin_charts_submenu', 115 );
189 $this->loader->add_action( 'admin_menu', $plugin_admin, 'add_plugin_add_new_submenu', 120 );
190 $this->loader->add_action( 'admin_menu', $plugin_admin, 'add_plugin_general_settings_submenu', 125 );
191 $this->loader->add_action( 'admin_menu', $plugin_admin, 'add_plugin_dashboard_submenu', 130 );
192 $this->loader->add_action( 'admin_menu', $plugin_admin, 'add_plugin_featured_plugins_submenu', 135 );
193 $this->loader->add_action( 'admin_menu', $plugin_admin, 'add_plugin_chart_features_submenu', 145 );
194
195
196 // Add Chart page sources contents
197 $this->loader->add_action( 'ays_cb_chart_page_sources_contents', $plugin_admin, 'ays_chart_page_source_contents', 10, 3 );
198 $this->loader->add_filter( 'ays_cb_chart_page_sources_contents_settings', $plugin_admin, 'source_contents_import_from_csv_settings', 40, 2 );
199 // $this->loader->add_filter( 'ays_cb_chart_page_sources_contents_settings', $plugin_admin, 'source_contents_import_from_wordpress_settings', 50, 2 );
200 $this->loader->add_filter( 'ays_cb_chart_page_sources_contents_settings', $plugin_admin, 'source_contents_import_from_db_settings', 60, 2 );
201 $this->loader->add_filter( 'ays_cb_chart_page_sources_contents_settings', $plugin_admin, 'source_contents_import_from_external_db_settings', 65, 2 );
202 $this->loader->add_filter( 'ays_cb_chart_page_sources_contents_settings', $plugin_admin, 'source_contents_quiz_maker_integration_settings', 70, 2 );
203 $this->loader->add_filter( 'ays_cb_chart_page_sources_contents_settings', $plugin_admin, 'source_contents_woocommerce_integration_settings', 80, 2 );
204 $this->loader->add_filter( 'ays_cb_chart_page_sources_contents_settings', $plugin_admin, 'source_contents_manual_settings', 90, 2 );
205 $this->loader->add_filter( 'ays_cb_chart_page_sources_contents_settings_chartjs', $plugin_admin, 'source_contents_manual_settings_chartjs', 90, 2 );
206
207 // Add Chart page settings contents
208 $this->loader->add_action( 'ays_cb_chart_page_settings_contents', $plugin_admin, 'ays_chart_page_settings_contents', 10, 3 );
209 $this->loader->add_filter( 'ays_cb_chart_page_settings_contents_settings', $plugin_admin, 'settings_contents_general_settings', 50, 2 );
210 $this->loader->add_filter( 'ays_cb_chart_page_settings_contents_settings', $plugin_admin, 'settings_contents_tooltip_settings', 70, 2 );
211 $this->loader->add_filter( 'ays_cb_chart_page_settings_contents_settings', $plugin_admin, 'settings_contents_legend_settings', 80, 2 );
212 $this->loader->add_filter( 'ays_cb_chart_page_settings_contents_settings', $plugin_admin, 'settings_contents_horizontal_axis_settings', 90, 2 );
213 $this->loader->add_filter( 'ays_cb_chart_page_settings_contents_settings', $plugin_admin, 'settings_contents_vertical_axis_settings', 100, 2 );
214 $this->loader->add_filter( 'ays_cb_chart_page_settings_contents_settings', $plugin_admin, 'settings_contents_animation_settings', 110, 2 );
215 $this->loader->add_filter( 'ays_cb_chart_page_settings_contents_settings', $plugin_admin, 'settings_contents_live_chart_settings', 115, 2 );
216 $this->loader->add_filter( 'ays_cb_chart_page_settings_contents_settings', $plugin_admin, 'settings_contents_export_options', 120, 2 );
217 $this->loader->add_filter( 'ays_cb_chart_page_settings_contents_settings_chartjs', $plugin_admin, 'settings_contents_general_settings_chartjs', 50, 2 );
218 $this->loader->add_filter( 'ays_cb_chart_page_settings_contents_settings_chartjs', $plugin_admin, 'settings_contents_legend_settings_chartjs', 50, 2 );
219
220 // Add Chart page styles contents
221 $this->loader->add_action( 'ays_cb_chart_page_styles_contents', $plugin_admin, 'ays_chart_page_styles_contents', 10, 3 );
222 $this->loader->add_filter( 'ays_cb_chart_page_styles_contents_settings', $plugin_admin, 'settings_contents_chart_styles_settings', 50, 2 );
223 $this->loader->add_filter( 'ays_cb_chart_page_styles_contents_settings', $plugin_admin, 'settings_contents_chart_area_styles_settings', 60, 2 );
224 $this->loader->add_filter( 'ays_cb_chart_page_styles_contents_settings', $plugin_admin, 'settings_contents_title_styles_settings', 70, 2 );
225 $this->loader->add_filter( 'ays_cb_chart_page_styles_contents_settings', $plugin_admin, 'settings_contents_description_styles_settings', 80, 2 );
226 $this->loader->add_filter( 'ays_cb_chart_page_styles_contents_settings_chartjs', $plugin_admin, 'settings_contents_chart_styles_settings_chartjs', 50, 2 );
227 $this->loader->add_filter( 'ays_cb_chart_page_styles_contents_settings_chartjs', $plugin_admin, 'settings_contents_title_styles_settings_chartjs', 70, 2 );
228 $this->loader->add_filter( 'ays_cb_chart_page_styles_contents_settings_chartjs', $plugin_admin, 'settings_contents_description_styles_settings_chartjs', 80, 2 );
229
230 // Add Chart page advanced settings contents
231 $this->loader->add_action( 'ays_cb_chart_page_advanced_settings_contents', $plugin_admin, 'ays_chart_page_advanced_settings_contents', 10, 3 );
232 $this->loader->add_filter( 'ays_cb_chart_page_advanced_settings_contents_settings', $plugin_admin, 'settings_contents_advanced_settings', 50, 2 );
233 $this->loader->add_filter( 'ays_cb_chart_page_advanced_settings_contents_settings', $plugin_admin, 'settings_contents_slices_settings', 60, 2 );
234 $this->loader->add_filter( 'ays_cb_chart_page_advanced_settings_contents_settings', $plugin_admin, 'settings_contents_series_settings', 70, 2 );
235 $this->loader->add_filter( 'ays_cb_chart_page_advanced_settings_contents_settings', $plugin_admin, 'settings_contents_row_settings', 80, 2 );
236 $this->loader->add_filter( 'ays_cb_chart_page_advanced_settings_contents_settings_chartjs', $plugin_admin, 'settings_contents_advanced_settings_chartjs', 50, 2 );
237 $this->loader->add_filter( 'ays_cb_chart_page_advanced_settings_contents_settings_chartjs', $plugin_admin, 'settings_contents_slices_settings_chartjs', 50, 2 );
238
239 // Add Settings link to the plugin
240 $plugin_basename = plugin_basename( plugin_dir_path( __DIR__ ) . $this->plugin_name . '.php' );
241 $this->loader->add_filter( 'plugin_action_links_' . $plugin_basename, $plugin_admin, 'add_action_links' );
242
243
244 // Admin AJAX action
245 $this->loader->add_action( 'wp_ajax_ays_chart_admin_ajax', $plugin_admin, 'ays_admin_ajax' );
246 $this->loader->add_action( 'wp_ajax_nopriv_ays_chart_admin_ajax', $plugin_admin, 'ays_admin_ajax' );
247 $this->loader->add_action( 'wp_ajax_deactivate_plugin_option_cb', $plugin_admin, 'deactivate_plugin_option');
248 $this->loader->add_action( 'wp_ajax_nopriv_deactivate_plugin_option_cb', $plugin_admin, 'deactivate_plugin_option');
249
250 $this->loader->add_action( 'wp_ajax_ays_chart_install_plugin', $plugin_admin, 'ays_chart_install_plugin' );
251 $this->loader->add_action( 'wp_ajax_nopriv_ays_chart_install_plugin', $plugin_admin, 'ays_chart_install_plugin' );
252
253 $this->loader->add_action( 'wp_ajax_ays_chart_activate_plugin', $plugin_admin, 'ays_chart_activate_plugin' );
254 $this->loader->add_action( 'wp_ajax_nopriv_ays_chart_activate_plugin', $plugin_admin, 'ays_chart_activate_plugin' );
255
256 $this->loader->add_action( 'elementor/widgets/widgets_registered', $plugin_admin, 'chart_builder_el_widgets_registered' );
257
258 $this->loader->add_action( 'in_admin_footer', $plugin_admin, 'chart_builder_admin_footer', 1 );
259
260 // Sale Banner
261 $this->loader->add_action( 'admin_notices', $plugin_admin, 'ays_chart_sale_banner', 1 );
262 $this->loader->add_action( 'wp_ajax_ays_chart_dismiss_button', $plugin_admin, 'ays_chart_dismiss_button' );
263 $this->loader->add_action( 'wp_ajax_nopriv_ays_chart_dismiss_button', $plugin_admin, 'ays_chart_dismiss_button' );
264 }
265
266 /**
267 * Register all of the hooks related to the public-facing functionality
268 * of the plugin.
269 *
270 * @since 1.0.0
271 * @access private
272 */
273 private function define_public_hooks() {
274
275 $plugin_public = new Chart_Builder_Public( $this->get_plugin_name(), $this->get_version() );
276 $this->loader->add_action( 'wp_head', $plugin_public, 'add_custom_chart_styles' );
277 // $this->loader->add_action( 'wp_enqueue_scripts', $plugin_public, 'enqueue_styles' );
278 // $this->loader->add_action( 'wp_enqueue_scripts', $plugin_public, 'enqueue_scripts' );
279
280 }
281
282 /**
283 * Register all of the hooks related to the integrations functionality
284 * of the plugin.
285 *
286 * @since 1.0.0
287 * @access private
288 */
289 private function define_integrations_hooks() {
290
291 $plugin_integrations = new Chart_Builder_Integrations( $this->get_plugin_name(), $this->get_version() );
292
293 // Form Maker Integrations / form page
294 $this->loader->add_action( 'ays_cb_chart_page_integrations', $plugin_integrations, 'ays_chart_page_integrations_content' );
295
296 // Form Maker Integrations / settings page
297 $this->loader->add_action( 'ays_cb_settings_page_integrations', $plugin_integrations, 'ays_settings_page_integrations_content' );
298
299
300 // ===== Google integration =====
301
302 // Google integration / settings page
303 $this->loader->add_filter( 'ays_cb_settings_page_integrations_contents', $plugin_integrations, 'ays_settings_page_google_sheet_content', 50, 2 );
304 $this->loader->add_filter( 'ays_cb_chart_page_sources_contents_settings', $plugin_integrations, 'source_contents_import_from_google_sheet_settings', 50, 2 );
305
306 // ===== Google integration =====
307
308 // ===== Database integration =====
309 $this->loader->add_filter( 'ays_cb_settings_page_integrations_contents', $plugin_integrations, 'ays_settings_page_database_content', 50, 3 );
310
311 // ===== Database integration =====
312 }
313
314 /**
315 * Run the loader to execute all of the hooks with WordPress.
316 *
317 * @since 1.0.0
318 */
319 private function define_custom_post_type_hooks(){
320 $plugin_custom_post_type = new Chart_Builder_Custom_Post_Type( $this->get_plugin_name(), $this->get_version() );
321 }
322
323
324 /**
325 * Run the loader to execute all of the hooks with WordPress.
326 *
327 * @since 1.0.0
328 */
329 public function run() {
330 $this->loader->run();
331 }
332
333 /**
334 * The name of the plugin used to uniquely identify it within the context of
335 * WordPress and to define internationalization functionality.
336 *
337 * @since 1.0.0
338 * @return string The name of the plugin.
339 */
340 public function get_plugin_name() {
341 return $this->plugin_name;
342 }
343
344 /**
345 * The reference to the class that orchestrates the hooks with the plugin.
346 *
347 * @since 1.0.0
348 * @return Chart_Builder_Loader Orchestrates the hooks of the plugin.
349 */
350 public function get_loader() {
351 return $this->loader;
352 }
353
354 /**
355 * Retrieve the version number of the plugin.
356 *
357 * @since 1.0.0
358 * @return string The version number of the plugin.
359 */
360 public function get_version() {
361 return $this->version;
362 }
363
364 }
365