PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 1.5.3
Visualizer – Tables & Charts Manager with Built-in AI Generator v1.5.3
4.0.8 4.0.7 4.0.6 4.0.5 4.0.4 4.0.3 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.10.0 3.10.1 3.10.10 3.10.11 3.10.12 3.10.13 3.10.14 3.10.15 3.10.2 3.10.3 All 149 releases
← All changes | classes/Visualizer/Module/Setup.php +77 -261 3.1.31.5.3 View file →
@@ -1,261 +1,77 @@
1 -<?php
2 -
3 -// +----------------------------------------------------------------------+
4 -// | Copyright 2013 Madpixels (email : visualizer@madpixels.net) |
5 -// +----------------------------------------------------------------------+
6 -// | This program is free software; you can redistribute it and/or modify |
7 -// | it under the terms of the GNU General Public License, version 2, as |
8 -// | published by the Free Software Foundation. |
9 -// | |
10 -// | This program is distributed in the hope that it will be useful, |
11 -// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 -// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 -// | GNU General Public License for more details. |
14 -// | |
15 -// | You should have received a copy of the GNU General Public License |
16 -// | along with this program; if not, write to the Free Software |
17 -// | Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, |
18 -// | MA 02110-1301 USA |
19 -// +----------------------------------------------------------------------+
20 -// | Author: Eugene Manuilov <eugene@manuilov.org> |
21 -// +----------------------------------------------------------------------+
22 -/**
23 - * General module what setups all required environment.
24 - *
25 - * @category Visualizer
26 - * @package Module
27 - *
28 - * @since 1.0.0
29 - */
30 -class Visualizer_Module_Setup extends Visualizer_Module {
31 -
32 - const NAME = __CLASS__;
33 -
34 - /**
35 - * Constructor.
36 - *
37 - * @since 1.0.0
38 - *
39 - * @access public
40 - * @param Visualizer_Plugin $plugin The instance of the plugin.
41 - */
42 - public function __construct( Visualizer_Plugin $plugin ) {
43 - parent::__construct( $plugin );
44 -
45 - register_activation_hook( VISUALIZER_BASEFILE, array( $this, 'activate' ) );
46 - register_deactivation_hook( VISUALIZER_BASEFILE, array( $this, 'deactivate' ) );
47 - $this->_addAction( 'visualizer_schedule_refresh_db', 'refreshDbChart' );
48 - $this->_addFilter( 'visualizer_schedule_refresh_chart', 'refresh_db_for_chart', 10, 3 );
49 -
50 - $this->_addAction( 'activated_plugin', 'onActivation' );
51 - $this->_addAction( 'init', 'setupCustomPostTypes' );
52 - $this->_addAction( 'plugins_loaded', 'loadTextDomain' );
53 - $this->_addFilter( 'visualizer_logger_data', 'getLoggerData' );
54 - $this->_addFilter( 'visualizer_get_chart_counts', 'getChartCountsByTypeAndMeta' );
55 -
56 - }
57 - /**
58 - * Fetches the SDK logger data.
59 - *
60 - * @param array $data The default data that needs to be sent.
61 - *
62 - * @access public
63 - */
64 - public function getLoggerData( $data ) {
65 - return $this->getChartCountsByTypeAndMeta();
66 - }
67 -
68 - /**
69 - * Fetches the types of charts created and their counts.
70 - *
71 - * @param array $meta_keys An array of name vs. meta keys - to return how many charts have these keys.
72 - * @access private
73 - */
74 - public function getChartCountsByTypeAndMeta( $meta_keys = array() ) {
75 - $charts = array();
76 - $charts['chart_types'] = array();
77 - // the initial query arguments to fetch charts
78 - $query_args = array(
79 - 'post_type' => Visualizer_Plugin::CPT_VISUALIZER,
80 - 'posts_per_page' => 300,
81 - 'fields' => 'ids',
82 - 'no_rows_found' => false,
83 - 'update_post_meta_cache' => false,
84 - 'update_post_term_cache' => false,
85 -
86 - );
87 -
88 - $query = new WP_Query( $query_args );
89 - while ( $query->have_posts() ) {
90 - $chart_id = $query->next_post();
91 - $type = get_post_meta( $chart_id, Visualizer_Plugin::CF_CHART_TYPE, true );
92 - $charts['chart_types'][ $type ] = isset( $charts['chart_types'][ $type ] ) ? $charts['chart_types'][ $type ] + 1 : 1;
93 - if ( ! empty( $meta_keys ) ) {
94 - foreach ( $meta_keys as $name => $key ) {
95 - $data = get_post_meta( $chart_id, $key, true );
96 - if ( ! empty( $data ) ) {
97 - $charts[ $name ] = isset( $charts[ $name ] ) ? $charts[ $name ] + 1 : 1;
98 - } else {
99 - $charts[ $name ] = 0;
100 - }
101 - }
102 - }
103 - }
104 - return $charts;
105 - }
106 -
107 - /**
108 - * Registers custom post type for charts.
109 - *
110 - * @since 1.0.0
111 - * @uses register_post_type() To register custom post type for charts.
112 - *
113 - * @access public
114 - */
115 - public function setupCustomPostTypes() {
116 - register_post_type(
117 - Visualizer_Plugin::CPT_VISUALIZER,
118 - array(
119 - 'label' => 'Visualizer Charts',
120 - 'public' => false,
121 - 'supports' => array( 'revisions' ),
122 - 'show_in_rest' => true,
123 - 'rest_base' => 'visualizer',
124 - 'rest_controller_class' => 'WP_REST_Posts_Controller',
125 - )
126 - );
127 - }
128 -
129 - /**
130 - * Loads plugin text domain translations.
131 - *
132 - * @since 1.0.0
133 - * @uses load_plugin_textdomain() To load translations for the plugin.
134 - *
135 - * @access public
136 - */
137 - public function loadTextDomain() {
138 - load_plugin_textdomain( Visualizer_Plugin::NAME, false, dirname( plugin_basename( VISUALIZER_BASEFILE ) ) . '/languages/' );
139 - }
140 -
141 - /**
142 - * Activate the plugin
143 - */
144 - public function activate() {
145 - wp_clear_scheduled_hook( 'visualizer_schedule_refresh_db' );
146 - wp_schedule_event( strtotime( 'midnight' ) - get_option( 'gmt_offset' ) * HOUR_IN_SECONDS, 'hourly', 'visualizer_schedule_refresh_db' );
147 - }
148 -
149 - /**
150 - * On activation of the plugin
151 - */
152 - public function onActivation( $plugin ) {
153 - if ( defined( 'TI_UNIT_TESTING' ) ) {
154 - return;
155 - }
156 -
157 - if ( $plugin == VISUALIZER_BASENAME ) {
158 - wp_redirect( admin_url( 'upload.php?page=' . Visualizer_Plugin::NAME ) );
159 - exit();
160 - }
161 - }
162 -
163 -
164 - /**
165 - * Deactivate the plugin
166 - */
167 - public function deactivate() {
168 - wp_clear_scheduled_hook( 'visualizer_schedule_refresh_db' );
169 - }
170 -
171 - /**
172 - * Refresh the specific chart from the db.
173 - *
174 - * @param WP_Post $chart The chart object.
175 - * @param int $chart_id The chart id.
176 - * @param bool $force If this is true, then the chart data will be force refreshed. If false, data will be refreshed only if the chart requests live data.
177 - *
178 - * @access public
179 - */
180 - public function refresh_db_for_chart( $chart, $chart_id, $force = false ) {
181 - if ( ! $chart_id ) {
182 - return $chart;
183 - }
184 -
185 - if ( ! $chart ) {
186 - $chart = get_post( $chart_id );
187 - }
188 -
189 - if ( ! $chart ) {
190 - return $chart;
191 - }
192 -
193 - // check if the source is correct.
194 - $source = get_post_meta( $chart_id, Visualizer_Plugin::CF_SOURCE, true );
195 - if ( $source !== 'Visualizer_Source_Query' ) {
196 - return $chart;
197 - }
198 -
199 - // check if its a live-data chart or a cached-data chart.
200 - if ( ! $force ) {
201 - $hours = get_post_meta( $chart_id, Visualizer_Plugin::CF_DB_SCHEDULE, true );
202 - if ( ! empty( $hours ) ) {
203 - // cached, bail!
204 - return $chart;
205 - }
206 - }
207 -
208 - $params = get_post_meta( $chart_id, Visualizer_Plugin::CF_DB_QUERY, true );
209 - $source = new Visualizer_Source_Query( $params );
210 - $source->fetch( false );
211 -
212 - $error = $source->get_error();
213 - if ( empty( $error ) ) {
214 - update_post_meta( $chart_id, Visualizer_Plugin::CF_SERIES, $source->getSeries() );
215 -
216 - wp_update_post(
217 - array(
218 - 'ID' => $chart_id,
219 - 'post_content' => $source->getData(),
220 - )
221 - );
222 -
223 - $chart = get_post( $chart_id );
224 - }
225 -
226 - return $chart;
227 - }
228 -
229 - /**
230 - * Refresh the db chart.
231 - *
232 - * @access public
233 - */
234 - public function refreshDbChart() {
235 - $schedules = get_option( Visualizer_Plugin::CF_DB_SCHEDULE, array() );
236 - if ( ! $schedules ) {
237 - return;
238 - }
239 - if ( ! defined( 'VISUALIZER_DO_NOT_DIE' ) ) {
240 - // define this so that the ajax call does not die
241 - // this means that if the new version of pro and the old version of free are installed, only the first chart will be updated
242 - define( 'VISUALIZER_DO_NOT_DIE', true );
243 - }
244 -
245 - $new_schedules = array();
246 - $now = time();
247 - foreach ( $schedules as $chart_id => $time ) {
248 - $new_schedules[ $chart_id ] = $time;
249 - if ( $time > $now ) {
250 - continue;
251 - }
252 -
253 - // if the time is nigh, we force an update.
254 - $this->refresh_db_for_chart( null, $chart_id, true );
255 - $hours = get_post_meta( $chart_id, Visualizer_Plugin::CF_DB_SCHEDULE, true );
256 - $new_schedules[ $chart_id ] = time() + $hours * HOUR_IN_SECONDS;
257 - }
258 - update_option( Visualizer_Plugin::CF_DB_SCHEDULE, $new_schedules );
259 - }
260 -
261 -}
1 +<?php
2 +
3 +// +----------------------------------------------------------------------+
4 +// | Copyright 2013 Madpixels (email : visualizer@madpixels.net) |
5 +// +----------------------------------------------------------------------+
6 +// | This program is free software; you can redistribute it and/or modify |
7 +// | it under the terms of the GNU General Public License, version 2, as |
8 +// | published by the Free Software Foundation. |
9 +// | |
10 +// | This program is distributed in the hope that it will be useful, |
11 +// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 +// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 +// | GNU General Public License for more details. |
14 +// | |
15 +// | You should have received a copy of the GNU General Public License |
16 +// | along with this program; if not, write to the Free Software |
17 +// | Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, |
18 +// | MA 02110-1301 USA |
19 +// +----------------------------------------------------------------------+
20 +// | Author: Eugene Manuilov <eugene@manuilov.org> |
21 +// +----------------------------------------------------------------------+
22 +
23 +/**
24 + * General module what setups all required environment.
25 + *
26 + * @category Visualizer
27 + * @package Module
28 + *
29 + * @since 1.0.0
30 + */
31 +class Visualizer_Module_Setup extends Visualizer_Module {
32 +
33 + const NAME = __CLASS__;
34 +
35 + /**
36 + * Constructor.
37 + *
38 + * @since 1.0.0
39 + *
40 + * @access public
41 + * @param Visualizer_Plugin $plugin The instance of the plugin.
42 + */
43 + public function __construct( Visualizer_Plugin $plugin ) {
44 + parent::__construct( $plugin );
45 +
46 + $this->_addAction( 'init', 'setupCustomPostTypes' );
47 + $this->_addAction( 'plugins_loaded', 'loadTextDomain' );
48 + }
49 +
50 + /**
51 + * Registers custom post type for charts.
52 + *
53 + * @since 1.0.0
54 + * @uses register_post_type() To register custom post type for charts.
55 + *
56 + * @access public
57 + */
58 + public function setupCustomPostTypes() {
59 + register_post_type( Visualizer_Plugin::CPT_VISUALIZER, array(
60 + 'label' => 'Visualizer Charts',
61 + 'public' => false,
62 + ) );
63 + }
64 +
65 + /**
66 + * Loads plugin text domain translations.
67 + *
68 + * @since 1.0.0
69 + * @uses load_plugin_textdomain() To load translations for the plugin.
70 + *
71 + * @access public
72 + */
73 + public function loadTextDomain() {
74 + load_plugin_textdomain( Visualizer_Plugin::NAME, false, dirname( plugin_basename( VISUALIZER_BASEFILE ) ) . '/languages/' );
75 + }
76 +
77 +}