PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 1.4
Visualizer – Tables & Charts Manager with Built-in AI Generator v1.4
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 3.10.4 All 148 releases
← All changes | classes/Visualizer/Module/Setup.php +5 -169 3.1.11.4 View file →
@@ -18,8 +18,9 @@
18 18 // | MA 02110-1301 USA |
19 19 // +----------------------------------------------------------------------+
20 20 // | Author: Eugene Manuilov <eugene@manuilov.org> |
21 21 // +----------------------------------------------------------------------+
22 +
22 23 /**
23 24 * General module what setups all required environment.
24 25 *
25 26 * @category Visualizer
@@ -41,70 +42,13 @@
41 42 */
42 43 public function __construct( Visualizer_Plugin $plugin ) {
43 44 parent::__construct( $plugin );
44 45
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', null, 10, 3 );
49 -
50 46 $this->_addAction( 'init', 'setupCustomPostTypes' );
51 47 $this->_addAction( 'plugins_loaded', 'loadTextDomain' );
52 - $this->_addFilter( 'visualizer_logger_data', 'getLoggerData' );
53 - $this->_addFilter( 'visualizer_get_chart_counts', 'getChartCountsByTypeAndMeta' );
54 -
55 48 }
56 - /**
57 - * Fetches the SDK logger data.
58 - *
59 - * @param array $data The default data that needs to be sent.
60 - *
61 - * @access public
62 - */
63 - public function getLoggerData( $data ) {
64 - return $this->getChartCountsByTypeAndMeta();
65 - }
66 49
67 50 /**
68 - * Fetches the types of charts created and their counts.
69 - *
70 - * @param array $meta_keys An array of name vs. meta keys - to return how many charts have these keys.
71 - * @access private
72 - */
73 - public function getChartCountsByTypeAndMeta( $meta_keys = array() ) {
74 - $charts = array();
75 - $charts['chart_types'] = array();
76 - // the initial query arguments to fetch charts
77 - $query_args = array(
78 - 'post_type' => Visualizer_Plugin::CPT_VISUALIZER,
79 - 'posts_per_page' => 300,
80 - 'fields' => 'ids',
81 - 'no_rows_found' => false,
82 - 'update_post_meta_cache' => false,
83 - 'update_post_term_cache' => false,
84 -
85 - );
86 -
87 - $query = new WP_Query( $query_args );
88 - while ( $query->have_posts() ) {
89 - $chart_id = $query->next_post();
90 - $type = get_post_meta( $chart_id, Visualizer_Plugin::CF_CHART_TYPE, true );
91 - $charts['chart_types'][ $type ] = isset( $charts['chart_types'][ $type ] ) ? $charts['chart_types'][ $type ] + 1 : 1;
92 - if ( ! empty( $meta_keys ) ) {
93 - foreach ( $meta_keys as $name => $key ) {
94 - $data = get_post_meta( $chart_id, $key, true );
95 - if ( ! empty( $data ) ) {
96 - $charts[ $name ] = isset( $charts[ $name ] ) ? $charts[ $name ] + 1 : 1;
97 - } else {
98 - $charts[ $name ] = 0;
99 - }
100 - }
101 - }
102 - }
103 - return $charts;
104 - }
105 -
106 - /**
107 51 * Registers custom post type for charts.
108 52 *
109 53 * @since 1.0.0
110 54 * @uses register_post_type() To register custom post type for charts.
@@ -111,19 +55,11 @@
111 55 *
112 56 * @access public
113 57 */
114 58 public function setupCustomPostTypes() {
115 - register_post_type(
116 - Visualizer_Plugin::CPT_VISUALIZER,
117 - array(
118 - 'label' => 'Visualizer Charts',
119 - 'public' => false,
120 - 'supports' => array( 'revisions' ),
121 - 'show_in_rest' => true,
122 - 'rest_base' => 'visualizer',
123 - 'rest_controller_class' => 'WP_REST_Posts_Controller',
124 - )
125 - );
59 + register_post_type( Visualizer_Plugin::CPT_VISUALIZER, array(
60 + 'public' => false,
61 + ) );
126 62 }
127 63
128 64 /**
129 65 * Loads plugin text domain translations.
@@ -136,105 +72,5 @@
136 72 public function loadTextDomain() {
137 73 load_plugin_textdomain( Visualizer_Plugin::NAME, false, dirname( plugin_basename( VISUALIZER_BASEFILE ) ) . '/languages/' );
138 74 }
139 75
140 - /**
141 - * Activate the plugin
142 - */
143 - public function activate() {
144 - wp_clear_scheduled_hook( 'visualizer_schedule_refresh_db' );
145 - wp_schedule_event( strtotime( 'midnight' ) - get_option( 'gmt_offset' ) * HOUR_IN_SECONDS, 'hourly', 'visualizer_schedule_refresh_db' );
146 - }
147 -
148 - /**
149 - * Deactivate the plugin
150 - */
151 - public function deactivate() {
152 - wp_clear_scheduled_hook( 'visualizer_schedule_refresh_db' );
153 - }
154 -
155 - /**
156 - * Refresh the specific chart from the db. This is mostly for charts that have 0 refresh time i.e. live data.
157 - *
158 - * @param WP_Post $chart The chart object.
159 - * @param int $chart_id The chart id.
160 - * @param bool $force If this is true, then the chart data will be refreshed no matter if the chart requests live data or cached data.
161 - * If false, data will be refreshed only if the chart requests live data.
162 - *
163 - * @access public
164 - */
165 - public function refresh_db_for_chart( $chart, $chart_id, $force = false ) {
166 - if ( ! $chart_id ) {
167 - return $chart;
168 - }
169 -
170 - if ( ! $chart ) {
171 - $chart = get_post( $chart_id );
172 - }
173 -
174 - // check if its a live-data chart or a cached-data chart.
175 - if ( ! $force ) {
176 - $hours = get_post_meta( $chart_id, Visualizer_Plugin::CF_DB_SCHEDULE, true );
177 - if ( ! empty( $hours ) ) {
178 - // cached, bail!
179 - return $chart;
180 - }
181 - }
182 -
183 - // check if the source is correct.
184 - $source = get_post_meta( $chart_id, Visualizer_Plugin::CF_SOURCE, true );
185 - if ( $source !== 'Visualizer_Source_Query_Params' ) {
186 - return $chart;
187 - }
188 -
189 - $params = get_post_meta( $chart_id, Visualizer_Plugin::CF_DB_QUERY, true );
190 - $source = new Visualizer_Source_Query( $params );
191 - $source->fetch( false );
192 - $error = $source->get_error();
193 - if ( empty( $error ) ) {
194 - update_post_meta( $chart_id, Visualizer_Plugin::CF_SERIES, $source->getSeries() );
195 -
196 - wp_update_post(
197 - array(
198 - 'ID' => $chart_id,
199 - 'post_content' => $source->getData(),
200 - )
201 - );
202 -
203 - $chart = get_post( $chart_id );
204 - }
205 -
206 - return $chart;
207 - }
208 -
209 - /**
210 - * Refresh the db chart.
211 - *
212 - * @access public
213 - */
214 - public function refreshDbChart() {
215 - $schedules = get_option( Visualizer_Plugin::CF_DB_SCHEDULE, array() );
216 - if ( ! $schedules ) {
217 - return;
218 - }
219 - if ( ! defined( 'VISUALIZER_DO_NOT_DIE' ) ) {
220 - // define this so that the ajax call does not die
221 - // this means that if the new version of pro and the old version of free are installed, only the first chart will be updated
222 - define( 'VISUALIZER_DO_NOT_DIE', true );
223 - }
224 -
225 - $new_schedules = array();
226 - $now = time();
227 - foreach ( $schedules as $chart_id => $time ) {
228 - $new_schedules[ $chart_id ] = $time;
229 - if ( $time > $now ) {
230 - continue;
231 - }
232 -
233 - $this->refresh_db_for_chart( null, $chart_id, false );
234 - $hours = get_post_meta( $chart_id, Visualizer_Plugin::CF_DB_SCHEDULE, true );
235 - $new_schedules[ $chart_id ] = time() + $hours * HOUR_IN_SECONDS;
236 - }
237 - update_option( Visualizer_Plugin::CF_DB_SCHEDULE, $new_schedules );
238 - }
239 -
240 -}
76 +}