PluginProbe
Tableberg – Simple Gutenberg Table Block / 0.4.1
Tableberg – Simple Gutenberg Table Block v0.4.1
1.1.5 1.1.4 1.1.3 1.1.2 1.1.1 1.1.0 1.0.5 1.0.4 1.0.3 1.0.2 1.0.1 trunk 0.0.2 0.2.1 0.3.2 0.3.3 0.4.1 0.5.0 0.5.1 0.5.2 0.5.3 0.5.4 0.5.5 0.5.6 0.5.7 All 42 releases
tableberg / includes / Admin / Tableberg_Admin.php

Tableberg_Admin.php in Tableberg – Simple Gutenberg Table Block 0.4.1, at includes/Admin/Tableberg_Admin.php

281 lines 8.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * The admin-specific functionality of the plugin.
5 *
6 * @package tableberg
7 */
8
9 namespace Tableberg\Admin;
10
11 use Tableberg;
12 use Tableberg\Version_Control;
13
14 /**
15 * Manage Tableberg Admin
16 */
17 class Tableberg_Admin
18 {
19 /**
20 * The ID of this plugin.
21 *
22 * @access private
23 * @var string $plugin_name The ID of this plugin.
24 */
25 private $plugin_name;
26
27 /**
28 * The version of this plugin.
29 *
30 * @access private
31 * @var string $version The current version of this plugin.
32 */
33 private $version;
34
35 /**
36 * The PATH of this plugin.
37 *
38 * @access private
39 * @var string $plugin_path The PATH of this plugin.
40 */
41 private $plugin_path;
42
43 /**
44 * The URL of this plugin.
45 *
46 * @access private
47 * @var string $plugin_url The URL of this plugin.
48 */
49 private $plugin_url;
50
51 /**
52 * Initialize the class and set its properties.
53 */
54 public function __construct()
55 {
56
57 $this->plugin_name = 'tableberg';
58 $this->version = TABLEBERG_VERSION;
59 $this->plugin_path = TABLEBERG_DIR_PATH;
60 $this->plugin_url = TABLEBERG_URL;
61 $this->add_tableberg_admin_hook();
62
63 // initialize version sync manager.
64 Tableberg\Version_Sync_Manager::init();
65
66 // initialize version control manager.
67 Version_Control::init();
68
69 add_action('admin_menu', array($this, 'register_admin_menus'));
70 add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_script'));
71 add_action('admin_notices', array($this, 'tableberg_review_notice'));
72 add_action('wp_ajax_TablebergReviewNoticeHide', array($this, 'tableberg_hide_review_notify'));
73 add_filter('tableberg/filter/admin_settings_menu_data', array($this, 'add_settings_menu_data'), 1, 1);
74 }
75
76 /**
77 * Add hook
78 */
79 public function add_tableberg_admin_hook()
80 {
81 add_action('wp_ajax_toggle_control', array($this, 'update_toggle_control'));
82 add_action('wp_ajax_block_properties', array($this, 'update_block_properties'));
83 }
84
85 /**
86 * Block properties control
87 */
88 private function update_block_properties()
89 {
90 check_ajax_referer('block_properties');
91
92 if (isset($_POST['value']) && isset($_POST['property_name'])) {
93 $value = sanitize_text_field(wp_unslash($_POST['value']));
94 $property_name = sanitize_text_field(wp_unslash($_POST['property_name']));
95 $saved_properties = get_option('tableberg_block_properties', false);
96 if ($saved_properties) {
97 foreach ($saved_properties as $key => $property) {
98 if ($property['name'] === $property_name) {
99 $saved_properties[$key]['value'] = (int) $value;
100 }
101 }
102 }
103
104 update_option('tableberg_block_properties', $saved_properties);
105 }
106
107 die();
108 }
109
110 /**
111 * Toggle control
112 */
113 private function update_toggle_control()
114 {
115 check_ajax_referer('toggle_control');
116
117 if (isset($_POST['enable']) && isset($_POST['toggle_name'])) {
118 $enable = sanitize_text_field(wp_unslash($_POST['enable']));
119 $toggle_name = sanitize_text_field(wp_unslash($_POST['toggle_name']));
120 update_option($toggle_name, $enable);
121 }
122 die();
123 }
124
125 /**
126 * Add data for admin settings menu frontend.
127 *
128 * @param array $data frontend data.
129 *
130 * @return array filtered frontend data
131 */
132 public function add_settings_menu_data($data)
133 {
134 $data['assets'] = array(
135 'logo' => trailingslashit($this->plugin_url) . 'includes/Admin/images/logos/menu-icon-colored.svg',
136 );
137
138 $data['individual_control'] = array(
139 'data' => get_option('tableberg_individual_control', false),
140 'ajax' => array(
141 'toggleControl' => array(
142 'url' => admin_url('admin-ajax.php'),
143 'action' => 'toggle_control',
144 'nonce' => wp_create_nonce('toggle_control'),
145 ),
146 ),
147 );
148 $data['global_control'] = array(
149 'data' => get_option('tableberg_global_control', false),
150 'ajax' => array(
151 'toggleControl' => array(
152 'url' => admin_url('admin-ajax.php'),
153 'action' => 'toggle_control',
154 'nonce' => wp_create_nonce('toggle_control'),
155 ),
156 ),
157 );
158 $data['block_properties'] = array(
159 'data' => get_option('tableberg_block_properties', false),
160 'ajax' => array(
161 'blockProperties' => array(
162 'url' => admin_url('admin-ajax.php'),
163 'action' => 'block_properties',
164 'nonce' => wp_create_nonce('block_properties'),
165 ),
166 ),
167 );
168
169 $data = array_merge($data, Tableberg\Utils\Utils::welcome_page());
170 return $data;
171 }
172
173 /**
174 * Enqueue admin scripts.
175 */
176 public function enqueue_admin_script()
177 {
178 $tableberg_assets = new Tableberg\Assets();
179 $tableberg_assets->register_admin_assets();
180 }
181
182 /**
183 * Set template for main setting page
184 *
185 * @return void
186 */
187 public function main_menu_template_cb()
188 {
189 require_once $this->plugin_path . 'includes/Admin/templates/menus/main-menu.php';
190 }
191
192 /**
193 * Register Setting Pages for the admin area.
194 */
195 public function register_admin_menus()
196 {
197
198 // assign global variables.
199 global $menu_page;
200 global $menu_page_slug;
201
202 $menu_page_slug = 'tableberg-settings';
203 $menu_page = add_menu_page(
204 'Tableberg Settings',
205 'Tableberg',
206 'manage_options',
207 $menu_page_slug,
208 array($this, 'main_menu_template_cb'),
209 plugin_dir_url(__FILE__) . 'images/logos/menu-icon.svg'
210 );
211 }
212
213 /**
214 * Generating the review notice.
215 *
216 * @since 2.1.6
217 */
218 public static function tableberg_review_notice()
219 {
220 $install_date = get_option('tableberg_installDate');
221 $display_date = date('Y-m-d h:i:s');
222 $datetime1 = new \DateTime($install_date);
223 $datetime2 = new \DateTime($display_date);
224 $diff_interval = round(($datetime2->format('U') - $datetime1->format('U')) / (60 * 60 * 24));
225 if ($diff_interval >= 21 && get_option('tableberg_review_notify') == 'no') {
226 ?>
227 <div class="tableberg-review-notice notice notice-info">
228 <p style="font-size: 14px;">
229 <?php
230 _e(
231 'Hey,<br> I noticed that you have been using <strong>Tableberg Plugin</strong> for a while now - that’s awesome! Could you please do me a BIG favor and <b>give it a 5-star rating on WordPress</b>? Just to help us spread the word and boost our motivation. <br>~ Imtiaz Rayhan<br>~ Lead Developer, Tableberg.',
232 'tableberg'
233 );
234 ?>
235 </p>
236 <ul>
237 <li>
238 <a style="margin-right: 5px; margin-bottom: 5px;" class="button-primary" href="https://wordpress.org/support/plugin/tableberg/reviews/?filter=5#new-post" target="_blank">Sure, you deserve it.</a>
239 <a style="margin-right: 5px;" class="Tableberg_HideReview_Notice button" href="javascript:void(0);">I already did.</a>
240 <a class="Tableberg_HideReview_Notice button" href="javascript:void(0);">No, not good enough.</a>
241 </li>
242 </ul>
243 </div>
244 <script>
245 jQuery(document).ready(function($) {
246 jQuery('.Tableberg_HideReview_Notice').click(function() {
247 var data = {
248 'action': 'TablebergReviewNoticeHide'
249 };
250 jQuery.ajax({
251 url: "<?php echo admin_url('admin-ajax.php'); ?>",
252 type: "post",
253 data: data,
254 dataType: "json",
255 async: !0,
256 success: function(notice_hide) {
257 if (notice_hide == "success") {
258 jQuery('.tableberg-review-notice').slideUp('fast');
259 }
260 }
261 });
262 });
263 });
264 </script>
265 <?php
266 }
267 }
268
269 /**
270 * Hides the review notice.
271 *
272 * @since 2.1.6
273 */
274 public function tableberg_hide_review_notify()
275 {
276 update_option('tableberg_review_notify', 'yes');
277 echo json_encode(array('success'));
278 exit;
279 }
280 }
281