PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 1.0.0
Visualizer – Tables & Charts Manager with Built-in AI Generator v1.0.0
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
visualizer / classes / Visualizer / Module / Admin.php

Admin.php in Visualizer – Tables & Charts Manager with Built-in AI Generator 1.0.0, at classes/Visualizer/Module/Admin.php

355 lines 11.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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 * The module for all admin stuff.
25 *
26 * @category Visualizer
27 * @package Module
28 *
29 * @since 1.0.0
30 */
31 class Visualizer_Module_Admin extends Visualizer_Module {
32
33 const NAME = __CLASS__;
34
35 /**
36 * Library page suffix.
37 *
38 * @since 1.0.0
39 *
40 * @access private
41 * @var string
42 */
43 private $_libraryPage;
44
45 /**
46 * Constructor.
47 *
48 * @since 1.0.0
49 *
50 * @access public
51 * @param Visualizer_Plugin $plugin The instance of the plugin.
52 */
53 public function __construct( Visualizer_Plugin $plugin ) {
54 parent::__construct( $plugin );
55
56 $this->_addAction( 'load-post.php', 'enqueueMediaScripts' );
57 $this->_addAction( 'load-post-new.php', 'enqueueMediaScripts' );
58 $this->_addAction( 'admin_footer', 'renderTempaltes' );
59 $this->_addAction( 'admin_enqueue_scripts', 'enqueueLibraryScripts' );
60 $this->_addAction( 'admin_menu', 'registerAdminMenu' );
61
62 $this->_addFilter( 'media_view_strings', 'setupMediaViewStrings' );
63 $this->_addFilter( 'plugin_action_links', 'getPluginActionLinks', 10, 2 );
64 $this->_addFilter( 'plugin_row_meta', 'getPluginMetaLinks', 10, 2 );
65 }
66
67 /**
68 * Returns associated array of chart types and localized names.
69 *
70 * @since 1.0.0
71 *
72 * @static
73 * @access private
74 * @return array The associated array of chart types with localized names.
75 */
76 private static function _getChartTypesLocalized() {
77 return array(
78 'all' => esc_html__( 'All', Visualizer_Plugin::NAME ),
79 'pie' => esc_html__( 'Pie', Visualizer_Plugin::NAME ),
80 'line' => esc_html__( 'Line', Visualizer_Plugin::NAME ),
81 'area' => esc_html__( 'Area', Visualizer_Plugin::NAME ),
82 'geo' => esc_html__( 'Geo', Visualizer_Plugin::NAME ),
83 'bar' => esc_html__( 'Bar', Visualizer_Plugin::NAME ),
84 'column' => esc_html__( 'Column', Visualizer_Plugin::NAME ),
85 'gauge' => esc_html__( 'Gauge', Visualizer_Plugin::NAME ),
86 'scatter' => esc_html__( 'Scatter', Visualizer_Plugin::NAME ),
87 'candlestick' => esc_html__( 'Candelstick', Visualizer_Plugin::NAME ),
88 );
89 }
90
91 /**
92 * Enqueues media scripts and styles.
93 *
94 * @since 1.0.0
95 * @uses wp_enqueue_style To enqueue style file.
96 * @uses wp_enqueue_script To enqueue script file.
97 *
98 * @access public
99 */
100 public function enqueueMediaScripts() {
101 wp_enqueue_style( 'visualizer-media', VISUALIZER_ABSURL . 'css/media.css', array( 'media-views' ), Visualizer_Plugin::VERSION );
102
103 wp_enqueue_script( 'google-jsapi', '//www.google.com/jsapi', array( 'media-editor' ), null );
104 wp_enqueue_script( 'visualizer-media-model', VISUALIZER_ABSURL . 'js/media/model.js', array( 'google-jsapi' ), Visualizer_Plugin::VERSION );
105 wp_enqueue_script( 'visualizer-media-collection', VISUALIZER_ABSURL . 'js/media/collection.js', array( 'visualizer-media-model' ), Visualizer_Plugin::VERSION );
106 wp_enqueue_script( 'visualizer-media-controller', VISUALIZER_ABSURL . 'js/media/controller.js', array( 'visualizer-media-collection' ), Visualizer_Plugin::VERSION );
107 wp_enqueue_script( 'visualizer-media-view', VISUALIZER_ABSURL . 'js/media/view.js', array( 'visualizer-media-controller' ), Visualizer_Plugin::VERSION );
108 wp_enqueue_script( 'visualizer-media-toolbar', VISUALIZER_ABSURL . 'js/media/toolbar.js', array( 'visualizer-media-view' ), Visualizer_Plugin::VERSION );
109 wp_enqueue_script( 'visualizer-media', VISUALIZER_ABSURL . 'js/media.js', array( 'visualizer-media-toolbar' ), Visualizer_Plugin::VERSION );
110 }
111
112 /**
113 * Extends media view strings with visualizer strings.
114 *
115 * @since 1.0.0
116 *
117 * @access public
118 * @param array $strings The array of media view strings.
119 * @return array The extended array of media view strings.
120 */
121 public function setupMediaViewStrings( $strings ) {
122 $strings['visualizer'] = array(
123 'actions' => array(
124 'get_charts' => Visualizer_Plugin::ACTION_GET_CHARTS,
125 'delete_chart' => Visualizer_Plugin::ACTION_DELETE_CHART,
126 ),
127 'controller' => array(
128 'title' => esc_html__( 'Visualizations', Visualizer_Plugin::NAME ),
129 ),
130 'routers' => array(
131 'library' => esc_html__( 'From Library', Visualizer_Plugin::NAME ),
132 'create' => esc_html__( 'Create New', Visualizer_Plugin::NAME ),
133 ),
134 'library' => array(
135 'filters' => self::_getChartTypesLocalized(),
136 ),
137 'nonce' => Visualizer_Security::createNonce(),
138 'buildurl' => add_query_arg( 'action', Visualizer_Plugin::ACTION_CREATE_CHART, admin_url( 'admin-ajax.php' ) ),
139 );
140
141 return $strings;
142 }
143
144 /**
145 * Renders templates to use in media popup.
146 *
147 * @since 1.0.0
148 * @global string $pagenow The name of the current page.
149 *
150 * @access public
151 */
152 public function renderTempaltes() {
153 global $pagenow;
154
155 if ( 'post.php' != $pagenow && 'post-new.php' != $pagenow ) {
156 return;
157 }
158
159 $render = new Visualizer_Render_Templates();
160 $render->render();
161 }
162
163 /**
164 * Enqueues library scripts and styles.
165 *
166 * @since 1.0.0
167 * @uses wp_enqueue_style() To enqueue library stylesheet.
168 * @uses wp_enqueue_script() To enqueue javascript file.
169 * @uses wp_enqueue_media() To enqueue media stuff.
170 *
171 * @access public
172 * @param string $suffix The current page suffix.
173 */
174 public function enqueueLibraryScripts( $suffix ) {
175 if ( $suffix == $this->_libraryPage ) {
176 wp_enqueue_style( 'visualizer-library', VISUALIZER_ABSURL . 'css/library.css', array(), Visualizer_Plugin::VERSION );
177
178 $this->_addFilter( 'media_upload_tabs', 'setupVisualizerTab' );
179
180 wp_enqueue_media();
181 wp_enqueue_script( 'visualizer-library', VISUALIZER_ABSURL . 'js/library.js', array( 'jquery', 'media-views' ), Visualizer_Plugin::VERSION, true );
182 wp_enqueue_script( 'google-jsapi', '//www.google.com/jsapi', array(), null, true );
183 wp_enqueue_script( 'visualizer-render', VISUALIZER_ABSURL . 'js/render.js', array( 'google-jsapi', 'visualizer-library' ), Visualizer_Plugin::VERSION, true );
184 }
185 }
186
187 /**
188 * Adds visualizer tab for media upload tabs array.
189 *
190 * @since 1.0.0
191 *
192 * @access public
193 * @param array $tabs The array of media upload tabs.
194 * @return array Extended array of media upload tabs.
195 */
196 public function setupVisualizerTab( $tabs ) {
197 $tabs['visualizer'] = 'Visualizer';
198 return $tabs;
199 }
200
201 /**
202 * Registers admin menu for visualizer library.
203 *
204 * @since 1.0.0
205 *
206 * @access public
207 */
208 public function registerAdminMenu() {
209 $title = esc_html__( 'Visualizer Library', Visualizer_Plugin::NAME );
210 $callback = array( $this, 'renderLibraryPage' );
211 $this->_libraryPage = add_submenu_page( 'upload.php', $title, $title, 'edit_posts', Visualizer_Plugin::NAME, $callback );
212 }
213
214 /**
215 * Renders visualizer library page.
216 *
217 * @since 1.0.0
218 *
219 * @access public
220 */
221 public function renderLibraryPage() {
222 // get current page
223 $page = filter_input( INPUT_GET, 'vpage', FILTER_VALIDATE_INT, array(
224 'options' => array(
225 'min_range' => 1,
226 'default' => 1,
227 )
228 ) );
229
230 // the initial query arguments to fetch charts
231 $query_args = array(
232 'post_type' => Visualizer_Plugin::CPT_VISUALIZER,
233 'posts_per_page' => 6,
234 'paged' => $page,
235 );
236
237 // add chart type filter to the query arguments
238 $type = filter_input( INPUT_GET, 'type' );
239 if ( $type && in_array( $type, Visualizer_Plugin::getChartTypes() ) ) {
240 $query_args['meta_query'] = array(
241 array(
242 'key' => Visualizer_Plugin::CF_CHART_TYPE,
243 'value' => $type,
244 'compare' => '=',
245 ),
246 );
247 } else {
248 $type = 'all';
249 }
250
251 // fetch charts
252 $charts = array();
253 $query = new WP_Query( $query_args );
254 while( $query->have_posts() ) {
255 $chart = $query->next_post();
256
257 // faetch and update settings
258 $settings = get_post_meta( $chart->ID, Visualizer_Plugin::CF_SETTINGS, true );
259 unset( $settings['height'], $settings['width'] );
260
261 // add chart to the array
262 $charts['visualizer-' . $chart->ID] = array(
263 'id' => $chart->ID,
264 'type' => get_post_meta( $chart->ID, Visualizer_Plugin::CF_CHART_TYPE, true ),
265 'series' => get_post_meta( $chart->ID, Visualizer_Plugin::CF_SERIES, true ),
266 'settings' => $settings,
267 'data' => unserialize( $chart->post_content ),
268 );
269 }
270
271 // enqueue charts array
272 $ajaxurl = admin_url( 'admin-ajax.php' );
273 wp_localize_script( 'visualizer-library', 'visualizer', array(
274 'charts' => $charts,
275 'urls' => array(
276 'base' => add_query_arg( 'vpage', false ),
277 'create' => add_query_arg( array( 'action' => Visualizer_Plugin::ACTION_CREATE_CHART, 'library' => 'yes' ), $ajaxurl ),
278 'edit' => add_query_arg( array( 'action' => Visualizer_Plugin::ACTION_EDIT_CHART, 'library' => 'yes' ), $ajaxurl ),
279 ),
280 ) );
281
282 // render library page
283 $render = new Visualizer_Render_Library();
284
285 $render->charts = $charts;
286 $render->type = $type;
287 $render->types = self::_getChartTypesLocalized();
288 $render->pagination = paginate_links( array(
289 'base' => add_query_arg( 'vpage', '%#%' ),
290 'format' => '',
291 'current' => $page,
292 'total' => $query->max_num_pages,
293 'type' => 'array',
294 ) );
295
296 $render->render();
297 }
298
299 /**
300 * Updates the plugin's action links, which will be rendered at the plugins table.
301 *
302 * @since 1.0.0
303 *
304 * @access public
305 * @param array $links The array of original action links.
306 * @param string $file The plugin basename.
307 * @return array Updated array of action links.
308 */
309 public function getPluginActionLinks( $links, $file ) {
310 if ( $file == plugin_basename( VISUALIZER_BASEFILE ) ) {
311 array_unshift(
312 $links,
313 sprintf(
314 '<a href="%s">%s</a>',
315 admin_url( 'upload.php?page=' . Visualizer_Plugin::NAME ),
316 esc_html__( 'Library', Visualizer_Plugin::NAME )
317 )
318 );
319 }
320
321 return $links;
322 }
323
324 /**
325 * Updates the plugin's meta links, which will be rendered at the plugins table.
326 *
327 * @since 1.0.0
328 *
329 * @access public
330 * @param array $plugin_meta The array of a plugin meta links.
331 * @param string $plugin_file The plugin's basename.
332 * @return array Updated array of plugin meta links.
333 */
334 public function getPluginMetaLinks( $plugin_meta, $plugin_file ) {
335 if ( $plugin_file == plugin_basename( VISUALIZER_BASEFILE ) ) {
336 // knowledge base link
337 $plugin_meta[] = sprintf(
338 '<a href="http://visualizer.madpixels.net/knowledgebase/">%s</a>',
339 esc_html__( 'Knowledge Base' )
340 );
341
342 // community link
343 $plugin_meta[] = sprintf(
344 '<a href="http://visualizer.madpixels.net/forums/">%s</a>',
345 esc_html__( 'Community', Visualizer_Plugin::NAME )
346 );
347
348 // github link
349 $plugin_meta[] = '<a href="https://github.com/madpixelslabs/visualizer">GitHub Repository</a>';
350 }
351
352 return $plugin_meta;
353 }
354
355 }