PluginProbe
WP Coder – Insert & Manage Code Snippets / 2.5.6
WP Coder – Insert & Manage Code Snippets v2.5.6
4.5.1 1.1 2.3.1 2.3.2 2.4.1 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 3.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1 3.1.1 3.2 3.2.1 3.3 3.4 3.5 3.5.1 All 39 releases
wp-coder / admin / class-admin.php

class-admin.php in WP Coder – Insert & Manage Code Snippets 2.5.6, at admin/class-admin.php

250 lines 11.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Admin Class
4 *
5 * @package Wow_Plugin
6 * @subpackage
7 * @copyright Copyright (c) 2018, Dmytro Lobov
8 * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
9 * @since 1.0
10 */
11
12 namespace wpcoder;
13
14 if ( ! defined( 'ABSPATH' ) ) {
15 exit;
16 }
17
18 class Wow_Admin_Class {
19
20 private $arg;
21
22 public function __construct( $arg ) {
23 $this->plugin_name = $arg['plugin_name'];
24 $this->plugin_menu = $arg['plugin_menu'];
25 $this->plugin_home_url = $arg['plugin_home_url'];
26 $this->plugin_version = $arg['plugin_version'];
27 $this->plugin_file = $arg['plugin_file'];
28 $this->plugin_slug = $arg['plugin_slug'];
29 $this->plugin_dir = $arg['plugin_dir'];
30 $this->plugin_url = $arg['plugin_url'];
31 $this->plugin_pref = $arg['plugin_pref'];
32 $this->author_url = $arg['author_url'];
33 $this->pro_url = $arg['pro_url'];
34 $this->shortcode = $arg['shortcode'];
35
36
37 add_filter( 'plugin_action_links', array( $this, 'action_links' ), 10, 2 );
38 add_action( 'admin_menu', array( $this, 'add_admin_page' ) );
39 add_filter( 'admin_footer_text', array( $this, 'rate_us' ) );
40 add_action( 'plugins_loaded', array( $this, 'plugin_check' ) );
41 add_action( 'wp_ajax_wp_coder_message', array( $this, 'wow_message_callback' ) );
42
43
44 }
45
46 public function add_admin_page() {
47 $icon =
48 'data:image/svg+xml;base64, PHN2ZyB3aWR0aD0iNTEycHgiIGhlaWdodD0iNTEycHgiIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPHRpdGxlPldPVyBMT0dPPC90aXRsZT4KICAgIDxkZWZzPgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iNTAlIiB5MT0iMCUiIHgyPSI1MCUiIHkyPSIxMDAlIiBpZD0ibGluZWFyR3JhZGllbnQtMSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiNGN0NDNUYiIG9mZnNldD0iMCUiPjwvc3RvcD4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iI0U4NkUyQyIgb2Zmc2V0PSIxMDAlIj48L3N0b3A+CiAgICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgICA8bGluZWFyR3JhZGllbnQgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSIgaWQ9ImxpbmVhckdyYWRpZW50LTIiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjRjdDQzVGIiBvZmZzZXQ9IjAlIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiNFODZFMkMiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8L2RlZnM+CiAgICA8ZyBpZD0iV09XLUxPR08iIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+CiAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMTIuMDAwMDAwLCAxMDcuNTI2NTIxKSIgc3Ryb2tlPSJ1cmwoI2xpbmVhckdyYWRpZW50LTEpIiBzdHJva2Utd2lkdGg9IjM4Ij4KICAgICAgICAgICAgPHBhdGggZD0iTTAuNDMzMDEyNzAyLDg2LjkyNjkxNTggTDEwMC40MzMwMTMsMjYwLjEzMTk5NyBNMTAwLjQzMzAxMyw4Ni45MjY5MTU4IEwyMDAuNDMzMDEzLDI2MC4xMzE5OTcgTTM1MS41ODU3OTEsNS45OTUyMDQzM2UtMTUgTDIwMi4yNTU3MDcsMjYwLjE5MzI0NyIgaWQ9IkNvbWJpbmVkLVNoYXBlIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgICAgIDxwYXRoIGQ9Ik0yNTYsNDU2IEMzNjYuNDU2OTUsNDU2IDQ1NiwzNjYuNDU2OTUgNDU2LDI1NiBDNDU2LDE0NS41NDMwNSAzNjYuNDU2OTUsNTYgMjU2LDU2IEMxNDUuNTQzMDUsNTYgNTYsMTQ1LjU0MzA1IDU2LDI1NiBDNTYsMzY2LjQ1Njk1IDE0NS41NDMwNSw0NTYgMjU2LDQ1NiBaIiBpZD0iT3ZhbCIgc3Ryb2tlPSJ1cmwoI2xpbmVhckdyYWRpZW50LTIpIiBzdHJva2Utd2lkdGg9IjI4IiBzdHJva2UtZGFzaGFycmF5PSIxMTU1LjUyLDk5OTk5IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNTYuMDAwMDAwLCAyNTYuMDAwMDAwKSByb3RhdGUoLTEzMi4wMDAwMDApIHRyYW5zbGF0ZSgtMjU2LjAwMDAwMCwgLTI1Ni4wMDAwMDApICI+PC9wYXRoPgogICAgPC9nPgo8L3N2Zz4=';
49
50 if ( ! class_exists( 'Wow_Company' ) ) {
51 add_menu_page( 'Wow Plugins', 'Wow Plugins', 'manage_options', 'wow-company', array(
52 $this,
53 'admin_main_page'
54 ), $icon );
55 add_submenu_page( 'wow-company', 'About Wow Plugins', 'About', 'manage_options', 'wow-company' );
56 add_submenu_page( 'wow-company', $this->plugin_name . ' version ' . $this->plugin_version, $this->plugin_menu, 'manage_options', $this->plugin_slug, array(
57 $this,
58 'plugin_page'
59 ) );
60 } else {
61 add_submenu_page( 'wow-company', $this->plugin_name . ' version ' . $this->plugin_version, $this->plugin_menu, 'manage_options', $this->plugin_slug, array(
62 $this,
63 'plugin_page'
64 ) );
65 }
66
67 }
68
69 public function admin_main_page() {
70 require_once plugin_dir_path( __FILE__ ) . 'general/main.php';
71 wp_enqueue_style( 'wow-page', plugin_dir_url(__FILE__) .'general/style.css');
72 }
73
74 public function plugin_page() {
75 global $typenow;
76 $typenow = $this->plugin_slug;
77 require_once plugin_dir_path( __FILE__ ) . 'partials/main.php';
78 self:: admin_style_script();
79 }
80
81 public function admin_style_script() {
82 wp_enqueue_style( $this->plugin_slug . '-admin', $this->plugin_url . 'assets/css/admin.css', false, $this->plugin_version );
83 wp_enqueue_style( $this->plugin_slug . '-style', $this->plugin_url . 'assets/css/style.css', false, $this->plugin_version );
84
85 wp_enqueue_script( 'jquery-ui-tooltip' );
86 wp_enqueue_media();
87 wp_enqueue_script( 'code-editor' );
88 wp_enqueue_style( 'code-editor' );
89 wp_enqueue_script( 'htmlhint' );
90 wp_enqueue_script( 'csslint' );
91 wp_enqueue_script( 'jshint' );
92
93 wp_enqueue_script( $this->plugin_slug . '-script', $this->plugin_url . 'assets/js/script.js', array( 'jquery' ), $this->plugin_version );
94 wp_enqueue_script( $this->plugin_slug . '-codemirror', $this->plugin_url . 'assets/js/script-codemirror.js', array( 'code-editor' ), $this->plugin_version );
95 wp_enqueue_script( $this->plugin_slug . '-admin', $this->plugin_url . 'assets/js/admin.js', array( 'jquery' ), $this->plugin_version );
96
97 }
98
99 public function action_links( $actions, $plugin_file ) {
100 if ( false === strpos( $plugin_file, $this->plugin_file ) ) {
101 return $actions;
102 }
103 $settings_link = '<a href="admin.php?page=' . $this->plugin_slug . '">' . __( 'Settings', $this->plugin_pref ) . '</a>';
104 array_unshift( $actions, $settings_link );
105
106 return $actions;
107 }
108
109 public function rate_us( $footer_text ) {
110 global $typenow;
111 if ( $typenow == $this->plugin_slug ) {
112 $rate_text = sprintf( __( 'Thank you for using <a href="%1$s" target="_blank">' . $this->plugin_name . '</a>! Please <a href="%2$s" target="_blank">rate us on WordPress</a>', $this->plugin_pref ),
113 $this->plugin_home_url,
114 $this->plugin_home_url . 'reviews/?rate=5#new-post'
115 );
116
117 return str_replace( '</span>', '', $footer_text ) . ' | ' . $rate_text . '</span>';
118 } else {
119 return $footer_text;
120 }
121 }
122
123 static function tooltip( $arg ) {
124 $tooltip = '';
125 foreach ( $arg as $key => $value ) {
126 if ( $key == 'title' ) {
127 $tooltip .= $value . '<p/>';
128 } elseif ( $key == 'ul' ) {
129 $tooltip .= '<ul>';
130 $arr = $value;
131 foreach ( $arr as $val ) {
132 $tooltip .= '<li>' . $val . '</li>';
133 }
134 $tooltip .= '</ul>';
135 } else {
136 $tooltip .= $value;
137 }
138 }
139 $tooltip = "<span class='wow-help dashicons dashicons-editor-help' title='" . $tooltip . "'></span>";
140
141 return $tooltip;
142 }
143
144 static function option( $arg ) {
145 $id = isset( $arg['id'] ) ? $arg['id'] : null;
146 $name = isset( $arg['name'] ) ? $arg['name'] : '';
147 $type = isset( $arg['type'] ) ? $arg['type'] : '';
148 $func = ! empty( $arg['func'] ) ? ' onchange="' . $arg['func'] . '();"' : '';
149 $options = isset( $arg['option'] ) ? $arg['option'] : '';
150 $val = $arg['val'];
151 $separator = isset( $arg['sep'] ) ? $arg['sep'] : '';
152 // create radio fields
153 if ( $type == 'radio' ) {
154 $option = '';
155 foreach ( $options as $key => $value ) {
156 $select = ( $key == $val ) ? 'checked="checked"' : '';
157 $option .= '<input name="param[' . $name . ']" type="radio" value="' . $key . '" id="wow_' . $id . '_' . $key . '" ' . $select . $func . '><label for="wow_' . $id . '_' . $key . '"> ' . $value . '</label>' . $separator;
158 }
159 $field = $option;
160 } // create checkbox field
161 elseif ( $type == 'checkbox' ) {
162 $select = ! empty( $val ) ? 'checked="checked"' : '';
163 $field = '<input type="checkbox" ' . $select . $func . ' id="wow_' . $id . '">' . $separator;
164 $field .= '<input type="hidden" name="param[' . $name . ']" value="">';
165 } // create text field
166 elseif ( $type == 'text' ) {
167 $option = '';
168 if ( is_array( $options ) ) {
169 foreach ( $options as $key => $value ) {
170 $option .= ' ' . $key . '="' . $value . '"';
171 }
172 }
173 $field = '<input name="param[' . $name . ']" type="text" value="' . $val . '" id="wow_' . $id . '"' . $func . $option . '>' . $separator;
174 } // create number field
175 elseif ( $type == 'number' ) {
176 $option = '';
177 if ( is_array( $options ) ) {
178 foreach ( $options as $key => $value ) {
179 $option .= ' ' . $key . '="' . $value . '"';
180 }
181 }
182 $field = '<input name="param[' . $name . ']" type="number" value="' . $val . '" id="wow_' . $id . '"' . $func . $option . '>' . $separator;
183 } // create color field
184 elseif ( $type == 'color' ) {
185 $field = '<input name="param[' . $name . ']" type="text" value="' . $val . '" class="wp-color-picker-field" data-alpha="true" id="wow_' . $id . '">' . $separator;
186 } // create select field
187 elseif ( $type == 'select' ) {
188 $option = '';
189 foreach ( $options as $key => $value ) {
190 $select = ( $key == $val ) ? 'selected="selected"' : '';
191 $option .= '<option value="' . $key . '" ' . $select . '>' . $value . '</option>';
192 }
193 $field = '<select name="param[' . $name . ']"' . $func . ' id="wow_' . $id . '">';
194 $field .= $option;
195 $field .= '</select>' . $separator;
196 } // create editor field
197 elseif ( $type == 'editor' ) {
198 $settings = array(
199 'wpautop' => 0,
200 'textarea_name' => 'param[' . $name . ']',
201 'textarea_rows' => 15,
202 );
203 $field = wp_editor( $val, $id, $settings );
204 } // create textarea field
205 elseif ( $type == 'textarea' ) {
206 $field = '<textarea name="param[' . $name . ']" id="wow_' . $id . '">' . esc_html( $val ) . '</textarea>' . $separator;
207
208 }
209
210 return $field;
211 }
212
213 public function plugin_check() {
214 if ( isset( $_POST[ $this->plugin_slug . '_nonce' ] ) ) {
215 if ( ! empty( $_POST ) && wp_verify_nonce( $_POST[ $this->plugin_slug . '_nonce' ], $this->plugin_slug . '_action' ) && current_user_can( 'manage_options' ) ) {
216 self:: save_data();
217 }
218 }
219 }
220
221 public function save_data() {
222 global $wpdb;
223 $save_class = __NAMESPACE__ . '\\Wow_DB_Update';
224 $objItem = new $save_class( $this->plugin_dir, $this->plugin_slug );
225 $add = ( isset( $_REQUEST['add'] ) ) ? absint( $_REQUEST['add'] ) : '';
226 $data = ( isset( $_REQUEST['data'] ) ) ? sanitize_text_field( $_REQUEST['data'] ) : '';
227 $page = sanitize_text_field( $_REQUEST['page'] );
228 $tool_id = absint( $_POST['tool_id'] );
229 $info = array();
230 $info['id'] = $tool_id;
231 $info['title'] = sanitize_text_field( $_POST['title'] );
232 $info['param'] = $_POST['param'];
233 if ( isset( $_POST['submit'] ) ) {
234 if ( absint( $_POST['add'] ) == '1' ) {
235 $objItem->addNewItem( $data, $info );
236 header( 'Location:admin.php?page=' . $page . '&tab=add_new&act=update&id=' . $tool_id . '&info=saved' );
237 exit;
238 } elseif ( absint( $_POST['add'] ) == '2' ) {
239 $objItem->updItem( $data, $info );
240 header( 'Location:admin.php?page=' . $page . '&tab=add_new&act=update&id=' . $tool_id . '&info=update' );
241 exit;
242 }
243 }
244 }
245
246 public function wow_message_callback() {
247 update_option( 'wp_coder_message', 'read' );
248 wp_die();
249 }
250 }