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

249 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 self:: admin_style_script();
69 }
70
71 public function admin_style_script() {
72 wp_enqueue_style( $this->plugin_slug . '-admin', $this->plugin_url . 'assets/css/admin.css', false, $this->plugin_version );
73 wp_enqueue_style( $this->plugin_slug . '-style', $this->plugin_url . 'assets/css/style.css', false, $this->plugin_version );
74
75 wp_enqueue_script( 'jquery-ui-tooltip' );
76 wp_enqueue_media ();
77 wp_enqueue_script( 'code-editor' );
78 wp_enqueue_style( 'code-editor' );
79 wp_enqueue_script( 'htmlhint' );
80 wp_enqueue_script( 'csslint' );
81 wp_enqueue_script( 'jshint' );
82
83
84 wp_enqueue_script( $this->plugin_slug . '-script', $this->plugin_url . 'assets/js/script.js', array('jquery'), $this->plugin_version );
85 wp_enqueue_script( $this->plugin_slug . '-codemirror', $this->plugin_url . 'assets/js/script-codemirror.js', array('code-editor'), $this->plugin_version );
86 wp_enqueue_script( $this->plugin_slug . '-admin', $this->plugin_url . 'assets/js/admin.js', array('jquery'), $this->plugin_version );
87
88 }
89
90 public function action_links( $actions, $plugin_file ) {
91 if( false === strpos( $plugin_file, $this->plugin_file ) ) {
92 return $actions;
93 }
94 $settings_link = '<a href="admin.php?page=' . $this->plugin_slug . '">' . __( 'Settings', $this->plugin_pref ) . '</a>';
95 array_unshift( $actions, $settings_link );
96 return $actions;
97 }
98
99 public function rate_us( $footer_text ) {
100 global $typenow;
101 if ( $typenow == $this->plugin_slug ) {
102 $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 ),
103 $this->plugin_home_url,
104 $this->plugin_home_url . 'reviews/?rate=5#new-post'
105 );
106 return str_replace( '</span>', '', $footer_text ) . ' | ' . $rate_text . '</span>';
107 } else {
108 return $footer_text;
109 }
110 }
111
112 static function tooltip( $arg ) {
113 $tooltip = '';
114 foreach ( $arg as $key => $value ) {
115 if( $key == 'title' ) {
116 $tooltip .= $value . '<p/>';
117 }
118 elseif ( $key == 'ul' ) {
119 $tooltip .= '<ul>';
120 $arr = $value;
121 foreach ( $arr as $val ) {
122 $tooltip .= '<li>' . $val . '</li>';
123 }
124 $tooltip .= '</ul>';
125 }
126 else {
127 $tooltip .= $value;
128 }
129 }
130 $tooltip = "<span class='wow-help dashicons dashicons-editor-help' title='" . $tooltip . "'></span>";
131 return $tooltip;
132 }
133
134 static function option( $arg ) {
135 $id = isset( $arg['id'] ) ? $arg['id'] : null;
136 $name = isset( $arg['name'] ) ? $arg['name'] : '';
137 $type = isset( $arg['type'] ) ? $arg['type'] : '';
138 $func = !empty( $arg['func'] ) ? ' onchange="'.$arg['func'].'();"' : '';
139 $options = isset( $arg['option'] ) ? $arg['option'] : '';
140 $val = $arg['val'];
141 $separator = isset($arg['sep']) ? $arg['sep'] : '';
142 // create radio fields
143 if ($type == 'radio'){
144 $option = '';
145 foreach ($options as $key => $value){
146 $select = ($key == $val) ? 'checked="checked"' : '';
147 $option .= '<input name="param['.$name.']" type="radio" value="'.$key.'" id="wow_'.$id.'_'.$key.'" '.$select.$func.'><label for="wow_'.$id.'_'.$key.'"> '.$value.'</label>'.$separator;
148 }
149 $field = $option;
150 }
151
152 // create checkbox field
153 elseif ($type == 'checkbox'){
154 $select = !empty($val) ? 'checked="checked"' : '';
155 $field = '<input type="checkbox" '.$select.$func.' id="wow_'.$id.'">'.$separator;
156 $field .= '<input type="hidden" name="param['.$name.']" value="">';
157 }
158
159 // create text field
160 elseif ($type == 'text'){
161 $option = '';
162 if ( is_array( $options ) ) {
163 foreach ($options as $key => $value){
164 $option .= ' ' . $key . '="' . $value . '"';
165 }
166 }
167 $field = '<input name="param[' . $name . ']" type="text" value="' . $val . '" id="wow_' . $id . '"' . $func . $option .'>'.$separator;
168 }
169
170 // create number field
171 elseif ($type == 'number'){
172 $option = '';
173 if ( is_array( $options ) ) {
174 foreach ($options as $key => $value){
175 $option .= ' ' . $key . '="' . $value . '"';
176 }
177 }
178 $field = '<input name="param['.$name.']" type="number" value="'.$val.'" id="wow_'.$id.'"' . $func . $option . '>'.$separator;
179 }
180
181 // create color field
182 elseif ($type == 'color'){
183 $field = '<input name="param['.$name.']" type="text" value="'.$val.'" class="wp-color-picker-field" data-alpha="true" id="wow_'.$id.'">'.$separator;
184 }
185
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 }
197
198 // create editor field
199 elseif ($type == 'editor'){
200 $settings = array(
201 'wpautop' => 0,
202 'textarea_name' => 'param['.$name.']',
203 'textarea_rows' => 15,
204 );
205 $field = wp_editor( $val, $id, $settings );
206 }
207
208 // create textarea field
209 elseif ($type == 'textarea'){
210 $field = '<textarea name="param['.$name.']" id="wow_'.$id.'">'.$val.'</textarea>'.$separator;
211 }
212
213 return $field;
214 }
215
216 public function plugin_check() {
217 if ( isset( $_POST[$this->plugin_slug . '_nonce'] ) ) {
218 if ( !empty( $_POST ) && wp_verify_nonce( $_POST[$this->plugin_slug . '_nonce'], $this->plugin_slug . '_action' ) && current_user_can( 'manage_options' ) ) {
219 self:: save_data();
220 }
221 }
222 }
223
224 public function save_data(){
225 global $wpdb;
226 $save_class = __NAMESPACE__ . '\\Wow_DB_Update';
227 $objItem = new $save_class( $this->plugin_dir, $this->plugin_slug );
228 $add = ( isset( $_REQUEST['add'] ) ) ? absint( $_REQUEST['add'] ) : '';
229 $data = ( isset( $_REQUEST['data'] ) ) ? sanitize_text_field( $_REQUEST['data'] ) : '';
230 $page = sanitize_text_field( $_REQUEST['page'] );
231 $tool_id = absint( $_POST['tool_id'] );
232 $info = array();
233 $info['id'] = $tool_id;
234 $info['title'] = sanitize_text_field( $_POST['title'] );
235 $info['param'] = $_POST['param'];
236 if ( isset( $_POST['submit'] ) ) {
237 if ( absint( $_POST['add'] ) == '1') {
238 $objItem->addNewItem( $data, $info );
239 header( 'Location:admin.php?page=' . $page . '&tab=add_new&act=update&id=' . $tool_id . '&info=saved' );
240 exit;
241 }
242 elseif ( absint($_POST['add'] ) == '2' ) {
243 $objItem->updItem( $data, $info );
244 header( 'Location:admin.php?page=' . $page . '&tab=add_new&act=update&id=' . $tool_id . '&info=update' );
245 exit;
246 }
247 }
248 }
249 }