PluginProbe
MaxButtons – Create buttons / 7.13
MaxButtons – Create buttons v7.13
6.23 6.24 6.25 6.26 6.26.1 6.27 6.28 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.0 7.1 7.1.1 7.1.2 7.1.3 7.10 7.11 7.13 7.13.1 7.13.2 7.13.3 All 100 releases
maxbuttons / classes / buttons.php

buttons.php in MaxButtons – Create buttons 7.13, at classes/buttons.php

206 lines 5.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace MaxButtons;
3 /** Buttons class - handles paging issues and sanity check for individual buttons
4 */
5 class maxButtons
6 {
7 protected static $loadedButtons = array(); // loaded button in current scope
8 /*
9
10 array [ index ] [ button_id ] [data - document_id, done (bool )
11 */
12 protected static $documentArray = array(); // given out document ID's
13
14 // override to give out next document id. This is useful when buttons are set but not displayed directly.
15 protected static $doNext = false;
16 protected static $current_doc_id = null;
17 protected static $current_button_id = null;
18
19 protected static $instance = null;
20
21
22 public static function getInstance()
23 {
24 if (is_null(self::$instance))
25 self::$instance = MB()->getClass('button');
26
27 return self::$instance;
28 }
29
30 static function buttonLoad($args)
31 {
32
33 $button_id = $args["button_id"];
34 self::$loadedButtons[] = $button_id;
35 $document_id = self::getDocumentID(array("button_id" => $button_id));
36 self::$documentArray[] = array($button_id => array('document_id' => $document_id , 'done' => false));
37
38 }
39
40 static function forceNextID()
41 {
42 self::$doNext = true;
43 self::$current_doc_id = null;
44 self::$current_button_id = null;
45 }
46
47 static function getDocumentID($args)
48 {
49 $button_id = $args["button_id"];
50
51 if (! is_null(self::$current_doc_id) && self::$current_button_id == $button_id )
52 return self::$current_doc_id;
53
54
55 if (self::$doNext == false)
56 {
57 foreach(self::$documentArray as $index => $ids)
58 {
59 foreach($ids as $doc_button_id => $doc_vars)
60 {
61 if ($doc_button_id == $button_id)
62 {
63 if (! $doc_vars["done"])
64 return $doc_vars["document_id"];
65 }
66
67 }
68
69 }
70 }
71 // if not found in documentarray make a new one
72 $loaded = self::$loadedButtons;
73 end($loaded);
74 $i = 0;
75
76 foreach($loaded as $btn_id)
77 {
78 if ($btn_id == $button_id)
79 $i++;
80 }
81 $i--; // minus the current added button..
82
83 //$index = key($loaded); // find last index
84 if ($i == 0)
85 $document_id = $button_id;
86 else
87 $document_id = $button_id . "_" . $i;
88
89 self::$doNext = false;
90 self::$current_doc_id = $document_id;
91 self::$current_button_id = $button_id;
92 return $document_id;
93
94 }
95
96 static function buttonDone($args)
97 {
98 $button_id = $args["button_id"];
99 $document_id = $args["document_id"];
100
101 foreach(self::$documentArray as $index => $data)
102 {
103 foreach($data as $doc_button_id => $doc_data)
104 {
105 if ($doc_button_id == $button_id && $doc_data["document_id"] == $document_id)
106 {
107 self::$documentArray[$index][$button_id]["done"] = true;
108 }
109 }
110 }
111 }
112
113 public static function ajax_action()
114 {
115 $action = sanitize_text_field($_POST['button_action']);
116 $check = wp_verify_nonce($_POST['nonce'], 'button-' . $action);
117 $button_id = isset($_POST['button_id']) ? intval($_POST["button_id"]) : -1;
118 $button = MB()->getClass('button');
119 $paged = isset($_POST['paged']) ? intval($_POST['paged']) : '';
120
121 $redirect = admin_url() . 'admin.php?page=maxbuttons-list';
122
123 if ($paged)
124 $redirect = add_query_arg('paged', $paged, $redirect);
125
126 if (! $check)
127 exit('Invalid Nonce');
128
129 switch($action)
130 {
131 case "delete":
132 $button->delete($button_id);
133 $redirect = add_query_arg(array('action' => 'list', 'message' => '1delete'), $redirect);
134 //$redirect_url = admin_url() . 'admin.php?page=maxbuttons-controller&action=list&message=1delete';
135 break;
136
137 case "trash":
138 $result = $button->set($button_id);
139 if ($result)
140 $button->setStatus('trash');
141 $redirect = add_query_arg(array('action' => 'list', 'message' => '1'), $redirect);
142 //$redirect_url = admin_url() . 'admin.php?page=maxbuttons-controller&action=list&message=1';
143 break;
144 case "restore":
145 $set = $button->set($button_id,'','trash');
146 $button->setStatus("publish");
147 $redirect = add_query_arg(array('action' => 'list', 'message' => '1restore', 'status' => 'trash'), $redirect);
148 //$redirect_url = admin_url() . 'admin.php?page=maxbuttons-controller&action=list&status=trash&message=1restore';
149 break;
150 case "copy":
151 $button->set($button_id);
152 $new_id = $button->copy();
153 $redirect = add_query_arg(array('action' => 'button', 'id' => $new_id), $redirect);
154 //$redirect_url = admin_url() . 'admin.php?page=maxbuttons-controller&action=button&id=' . $new_id;
155 break;
156 case 'empty-trash':
157 $mbadmin = MB()->getClass("admin");
158 $args = array('status' => 'trash', 'limit' => -1 );
159 $buttons = $mbadmin->getButtons($args);
160
161 foreach($buttons as $btnar)
162 {
163 $button_id = $btnar['id'];
164 $button->delete($button_id);
165 }
166 $redirect = add_query_arg(array('action' => 'list', 'message' => 'empty-trash'), $redirect);
167 // $redirect_url = admin_url() . 'admin.php?page=maxbuttons-controller&action=list&message=empty-trash';
168 break;
169
170 }
171
172 if (isset($redirect)) {
173 $response = array('redirection' => $redirect);
174 echo json_encode($response);
175 exit();
176 }
177
178 exit(true);
179 }
180
181
182 public static function generate_css()
183 {
184 global $wpdb;
185 $id = isset($_REQUEST['id']) ? sanitize_text_field($_REQUEST['id']) : false;
186
187 if (! $id)
188 return;
189
190 $idar = explode(',', $id);
191 $idar = array_filter($idar, 'is_numeric');
192 $id = implode(',',$idar);
193
194 $row = $wpdb->get_col($wpdb->prepare("SELECT cache FROM " . maxUtils::get_table_name() . " WHERE id in($id) and status ='%s'", 'publish'));
195
196
197 header( "Content-type: text/css; charset: UTF-8" );
198 foreach($row as $content)
199 {
200 echo $content;
201 }
202 exit();
203 }
204
205 } // class
206