PluginProbe
Tableberg – Simple Gutenberg Table Block / 1.2.0
Tableberg – Simple Gutenberg Table Block v1.2.0
1.2.0 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 All 43 releases
tableberg / includes / Admin / Tableberg_Admin.php

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

233 lines 9.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Tableberg\Admin;
4
5 // Needed so the qualified name `Tableberg\Assets` below resolves to the root
6 // namespace instead of `Tableberg\Admin\Tableberg\Assets`.
7 use Tableberg;
8
9 class Tableberg_Admin {
10 private $plugin_name;
11 private $plugin_url;
12
13 public function __construct() {
14
15 $this->plugin_name = 'tableberg';
16 $this->plugin_url = TABLEBERG_URL;
17
18 add_action('wp_ajax_tableberg_toggle_control', [$this, 'update_toggle_control']);
19 add_action('wp_ajax_tableberg_block_properties', [$this, 'update_block_properties']);
20
21 add_action('admin_menu', [$this, 'register_admin_menus']);
22 add_action('admin_enqueue_scripts', [$this, 'enqueue_admin_script']);
23 add_action('admin_notices', [$this, 'tableberg_review_notice']);
24 add_action('wp_ajax_TablebergReviewNoticeHide', [$this, 'tableberg_hide_review_notify']);
25 add_filter('tableberg/filter/admin_settings_menu_data', [$this, 'add_settings_menu_data'], 1, 1);
26 }
27
28 private function update_block_properties() {
29 if (
30 check_ajax_referer('block_properties') &&
31 isset($_POST['value']) &&
32 isset($_POST['property_name']) &&
33 current_user_can('manage_options')
34 ) {
35 $value = sanitize_text_field(wp_unslash($_POST['value']));
36 $property_name = sanitize_text_field(wp_unslash($_POST['property_name']));
37 $saved_properties = get_option('tableberg_block_properties', false);
38 if ($saved_properties) {
39 foreach ($saved_properties as $key => $property) {
40 if ($property['name'] === $property_name) {
41 $saved_properties[$key]['value'] = (int) $value;
42 }
43 }
44 }
45
46 update_option('tableberg_block_properties', $saved_properties);
47 }
48
49 die();
50 }
51
52 private function update_toggle_control() {
53
54 if (
55 check_ajax_referer('toggle_control') &&
56 isset($_POST['enable']) &&
57 isset($_POST['toggle_name']) &&
58 current_user_can('manage_options')
59 ) {
60 $enable = sanitize_text_field(wp_unslash($_POST['enable']));
61 $toggle_name = sanitize_text_field(wp_unslash($_POST['toggle_name']));
62 update_option($toggle_name, $enable);
63 }
64 die();
65 }
66
67 public function add_settings_menu_data($data) {
68 $data['assets'] = [
69 'logo' => trailingslashit($this->plugin_url) . 'includes/Admin/images/logos/menu-icon-colored.svg',
70 'logoTransparent' => trailingslashit($this->plugin_url) . 'includes/Admin/images/logos/menu-icon-colored-transparent.svg',
71 ];
72
73 $data['individual_control'] = [
74 'data' => get_option('tableberg_individual_control', false),
75 'ajax' => [
76 'toggleControl' => [
77 'url' => admin_url('admin-ajax.php'),
78 'action' => 'tableberg_toggle_control',
79 'nonce' => wp_create_nonce('toggle_control'),
80 ],
81 ],
82 ];
83 $data['global_control'] = [
84 'data' => get_option('tableberg_global_control', false),
85 'ajax' => [
86 'toggleControl' => [
87 'url' => admin_url('admin-ajax.php'),
88 'action' => 'tableberg_toggle_control',
89 'nonce' => wp_create_nonce('toggle_control'),
90 ],
91 ],
92 ];
93 $data['block_properties'] = [
94 'data' => get_option('tableberg_block_properties', false),
95 'ajax' => [
96 'blockProperties' => [
97 'url' => admin_url('admin-ajax.php'),
98 'action' => 'tableberg_block_properties',
99 'nonce' => wp_create_nonce('block_properties'),
100 ],
101 ],
102 ];
103
104 $has_pro_addon = defined('TABLEBERG_PRO_VERSION');
105 global $tp_fs;
106 if (isset($tp_fs)) {
107 $data['misc'] = [
108 'pro_status' => $has_pro_addon
109 || ($tp_fs->is__premium_only()
110 && $tp_fs->can_use_premium_code()),
111 ];
112 } else {
113 $data['misc'] = [
114 'pro_status' => $has_pro_addon,
115 ];
116 }
117
118 $data = array_merge($data, $this->welcome_page());
119 return $data;
120 }
121
122 public function enqueue_admin_script() {
123 $tableberg_assets = new Tableberg\Assets();
124 $tableberg_assets->register_admin_assets();
125 }
126
127 public static function welcome_page() {
128 return [
129 'welcome' => [
130 'title' => 'Welcome to Tableberg!',
131 'content' => 'Elevate Your Content with Seamless Tables - The Ultimate WordPress Block Editor Plugin for Effortless Table Creation!',
132 ],
133 'documentation' => [
134 'title' => 'Documentation',
135 'content' => 'Elevate your space with Tableberg: a sleek, modern table block for style and functionality. Crafted for timeless elegance and versatility.',
136 ],
137 'support' => [
138 'title' => 'Support',
139 'content' => "Visit our Tableberg Support Page for quick solutions and assistance. We're here to ensure your Tableberg experience is seamless and satisfying.",
140 ],
141 'community' => [
142 'title' => 'Join Community',
143 'content' => 'Join the vibrant Tableberg community. Connect, share, and discover endless possibilities together. Elevate your experience with like-minded enthusiasts now!',
144 ],
145 'upgrade' => [
146 'title' => 'Upgrade to Tableberg PRO!',
147 'content' => 'Elevate Your Content with Seamless Tables - The Ultimate WordPress Block Editor Plugin for Effortless Table Creation!',
148 ],
149 ];
150 }
151
152 public function main_menu_template_cb() {
153 ?>
154 <div id="tableberg-admin-menu"></div>
155 <?php
156 }
157
158 public function register_admin_menus() {
159 global $menu_page;
160 global $menu_page_slug;
161
162 $menu_page_slug = 'tableberg-settings';
163 $menu_page = add_menu_page(
164 __('Tableberg Settings', 'tableberg'),
165 __('Tableberg', 'tableberg'),
166 'manage_options',
167 $menu_page_slug,
168 [$this, 'main_menu_template_cb'],
169 plugin_dir_url(__FILE__) . 'images/logos/menu-icon.svg'
170 );
171 }
172
173 public static function tableberg_review_notice() {
174 $install_date = get_option('tableberg_installDate');
175 $display_date = date('Y-m-d h:i:s');
176 $datetime1 = new \DateTime($install_date);
177 $datetime2 = new \DateTime($display_date);
178 $diff_interval = round(($datetime2->format('U') - $datetime1->format('U')) / (60 * 60 * 24));
179
180 if ($diff_interval >= 21 && get_option('tableberg_review_notify') == 'no') {
181 ?>
182 <div class="tableberg-review-notice notice notice-info" style="position: relative; padding:0.5rem 1.5rem">
183 <button type="button" class="notice-dismiss Tableberg_HideReview_Notice" style="position: absolute; top: 2px; right: 2px;">
184 <span class="screen-reader-text"><?php esc_html_e('Dismiss this notice.', 'tableberg'); ?></span>
185 </button>
186 <p style="font-size: 14px; line-height: 2;padding-right:2rem">
187 <?php
188 echo wp_kses_post(__(
189 'Hello! Seems like you\'ve been using <strong>Tableberg</strong> for a while on your website. That\'s awesome!<br>If you can spare a few moments to rate it on wordpress.org, it would help us a lot (and boost my motivation).<br>Imtiaz Rayhan, developer of Tableberg',
190 'tableberg'
191 ));
192 ?>
193 </p>
194 <ul style="list-style-type: none; padding: 0;">
195 <li>
196 <a style="margin-right: 5px; margin-bottom: 5px;" class="button-primary" href="https://wordpress.org/support/plugin/tableberg/reviews/" target="_blank"><?php esc_html_e('Ok, I will gladly help!', 'tableberg'); ?></a>
197 <a class="Tableberg_HideReview_Notice button" href="javascript:void(0);"><?php esc_html_e('No, thanks', 'tableberg'); ?></a>
198 </li>
199 </ul>
200 </div>
201 <script>
202 jQuery(document).ready(function($) {
203 $('.Tableberg_HideReview_Notice').click(function() {
204 var data = {
205 'action': 'TablebergReviewNoticeHide'
206 };
207 $.ajax({
208 url: "<?php echo esc_url(admin_url('admin-ajax.php')); ?>",
209 type: "post",
210 data: data,
211 dataType: "json",
212 async: true,
213 success: function(notice_hide) {
214 if (notice_hide == "success") {
215 $('.tableberg-review-notice').slideUp('fast');
216 }
217 }
218 });
219 });
220 });
221 </script>
222 <?php
223 }
224 }
225
226
227 public function tableberg_hide_review_notify() {
228 update_option('tableberg_review_notify', 'yes');
229 echo wp_json_encode(['success']);
230 exit;
231 }
232 }
233