PluginProbe
WP Coder – Insert & Manage Code Snippets / 2.3.1
WP Coder – Insert & Manage Code Snippets v2.3.1
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.3.1, at admin/class-admin.php

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