PluginProbe ʕ •ᴥ•ʔ
Event Tickets with Ticket Scanner / 2.7.3
Event Tickets with Ticket Scanner v2.7.3
3.1.2 3.1.1 3.1.0 3.0.9 3.0.8 3.0.7 3.0.6 3.0.5 3.0.4 trunk 2.6.0 2.7.0 2.7.1 2.7.10 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 2.7.8 2.7.9 2.8.0 2.8.1 2.8.10 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.0 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 2.9.8 2.9.9 3.0.0 3.0.1 3.0.2 3.0.3
event-tickets-with-ticket-scanner / sasoEventtickets_Authtoken.php
event-tickets-with-ticket-scanner Last commit date
3rd 1 year ago css 1 year ago img 1 year ago languages 1 year ago ticket 1 year ago vendors 1 year ago SASO_EVENTTICKETS.php 1 year ago backend.js 1 year ago changelog.txt 1 year ago db.php 1 year ago index.php 1 year ago init_file.php 1 year ago js_seatingplan.js 1 year ago order_details.js 1 year ago readme.txt 1 year ago saso-eventtickets-validator.js 1 year ago sasoEventtickets_AdminSettings.php 1 year ago sasoEventtickets_Authtoken.php 1 year ago sasoEventtickets_Base.php 1 year ago sasoEventtickets_Core.php 1 year ago sasoEventtickets_Frontend.php 1 year ago sasoEventtickets_Messenger.php 1 year ago sasoEventtickets_Options.php 1 year ago sasoEventtickets_PDF.php 1 year ago sasoEventtickets_Ticket.php 1 year ago sasoEventtickets_TicketBadge.php 1 year ago sasoEventtickets_TicketDesigner.php 1 year ago sasoEventtickets_TicketQR.php 1 year ago ticket_events.js 1 year ago ticket_scanner.js 1 year ago validator.js 1 year ago wc_backend.js 1 year ago wc_frontend.js 1 year ago woocommerce-hooks.php 1 year ago
sasoEventtickets_Authtoken.php
166 lines
1 <?php
2 include_once(plugin_dir_path(__FILE__)."init_file.php");
3 class sasoEventtickets_Authtoken {
4 public static $authtoken_param = "auth";
5
6 private $MAIN = null;
7
8 public static function Instance() {
9 static $inst = null;
10 if ($inst === null) {
11 $inst = new sasoEventtickets_Authtoken();
12 }
13 return $inst;
14 }
15
16 private function __construct() {
17 global $sasoEventtickets;
18 $this->MAIN = $sasoEventtickets;
19 }
20
21 public function checkAccessForAuthtoken($code) {
22 $code = trim($code);
23 if (empty($code)) return false;
24 $sql = "select id from ".$this->MAIN->getDB()->getTabelle("authtokens")." where code = %s and aktiv = 1";
25 $d = $this->MAIN->getDB()->_db_datenholen_prepared($sql, [$code]);
26 if (count($d) == 0) return false;
27 return apply_filters( $this->MAIN->_add_filter_prefix.'authtoken_checkAccessForAuthtoken', true, $code );
28 }
29
30 public function isProductAllowedByAuthToken($authtoken, $product_ids=[]) {
31 if (!is_array($product_ids)) {
32 $product_ids = [$product_ids];
33 }
34
35 if (count($product_ids) == 0) return true;
36
37 $tokenObj = $this->getAuthtokenByCode($authtoken);
38 $metaObj = $this->MAIN->getCore()->encodeMetaValuesAndFillObjectAuthtoken($tokenObj['meta']);
39
40 if (empty($metaObj["ticketscanner"]["bound_to_products"])) return true; // no product_ids set up
41
42 $allowed_product_ids = explode(",", $metaObj["ticketscanner"]["bound_to_products"]);
43 $allowed_product_ids = array_map("intval", $allowed_product_ids);
44
45 foreach($product_ids as $product_id) {
46 $product_id = intval($product_id);
47 if (!in_array($product_id, $allowed_product_ids)) return false;
48 }
49 return apply_filters( $this->MAIN->_add_filter_prefix.'authtoken_isProductAllowedByAuthToken', true, $authtoken, $product_ids );
50 }
51
52 public function getAuthtokens() {
53 $sql = "select * from ".$this->MAIN->getDB()->getTabelle("authtokens")." order by name asc";
54 $tokens = $this->MAIN->getDB()->_db_datenholen($sql);
55 foreach($tokens as $idx => $value) {
56 $tokens[$idx]["metaObj"] = $this->MAIN->getCore()->encodeMetaValuesAndFillObjectAuthtoken($value['meta']);
57 $tokens[$idx]["meta"] = $this->MAIN->getCore()->json_encode_with_error_handling($tokens[$idx]["metaObj"]);
58 }
59 return $tokens;
60 }
61
62 public function getAuthtokenByCode($code) {
63 $code = trim($code);
64 if (empty($code)) throw new Exception("#510 auth token not valid");
65 $sql = "select * from ".$this->MAIN->getDB()->getTabelle("authtokens")." where code = %s and aktiv = 1";
66 $d = $this->MAIN->getDB()->_db_datenholen_prepared($sql, [$code]);
67 if (count($d) == 0) throw new Exception("#509 auth token not found");
68 return $d[0];
69 }
70
71 public function getAuthtoken($data) {
72 if (!isset($data['id'])) throw new Exception("#504 id parameter is missing");
73 $sql = "select * from ".$this->MAIN->getDB()->getTabelle("authtokens")." where id = ".intval($data['id']);
74 $ret = $this->MAIN->getDB()->_db_datenholen($sql);
75 if (count($ret) == 0) throw new Exception("#505 auth token not found");
76 return $ret[0];
77 }
78
79 public function addAuthtoken($data) {
80 if (!isset($data['name']) || trim($data['name']) == "") throw new Exception("#501 name parameter missing - cannot add a new auth token");
81 if (!$this->MAIN->getBase()->_isMaxReachedForAuthtokens($this->MAIN->getDB()->_db_getRecordCountOfTable('authtokens'))) throw new Exception("#508 too many authtokens. Unlimited authtokens only with premium");
82 $tokenObj = ['meta'=>''];
83 $metaObj = $this->MAIN->getCore()->encodeMetaValuesAndFillObjectAuthtoken($tokenObj['meta']);
84
85 $felder = ["name"=>strip_tags($data['name']), "time"=>date("Y-m-d H:i:s", current_time("timestamp"))];
86 $felder['code'] = strtoupper(base64_encode(get_site_url())."_".md5(current_time("timestamp")."-".uniqid()));
87 $felder['areacode'] = "ticketscanner";
88 $felder['aktiv'] = isset($data['aktiv']) ? intval($data['aktiv']) : 1;
89 $felder['time'] = date("Y-m-d H:i:s", current_time("timestamp"));
90
91 $metaObj = $this->setMetaDataForAuthtokens($data, $metaObj);
92
93 if ($this->MAIN->isPremium() && method_exists($this->MAIN->getPremiumFunctions(), 'setFelderAuthtokenEdit')) {
94 $felder = $this->MAIN->getPremiumFunctions()->setFelderAuthtokenEdit($felder, $data, $tokenObj, $metaObj);
95 }
96 if (isset($felder['meta']) && !empty($felder['meta'])) { // evtl gesetzt vom premium plugin
97 $f_meta = json_decode($felder['meta'], true);
98 $f_meta["desc"] = strip_tags($f_meta["desc"]);
99 $metaObj = array_replace_recursive($metaObj, $f_meta);
100 }
101 $felder["meta"] = $this->MAIN->getCore()->json_encode_with_error_handling($metaObj);
102
103 $ret = -1;
104 try {
105 $ret = $this->MAIN->getDB()->insert("authtokens", $felder);
106 } catch(Exception $e) {
107 throw new Exception("#502 ".__("Could not create authtoken. Auth token code exists already.", 'event-tickets-with-ticket-scanner'));
108 }
109 do_action( $this->MAIN->_do_action_prefix.'authtoken_addAuthtoken', $data, $ret );
110 return $ret;
111 }
112
113 public function editAuthtoken($data) {
114 if (!isset($data['id']) || intval($data['id']) == 0) throw new Exception("#506 id parameter missing - cannot edit auth token");
115 if (isset($data['name']) && trim($data['name']) == "") throw new Exception("#507 name parameter missing - cannot edit auth token");
116 $tokenObj = $this->getAuthtoken($data);
117 $metaObj = $this->MAIN->getCore()->encodeMetaValuesAndFillObjectAuthtoken($tokenObj['meta']);
118 $felder = [];
119
120 if (isset($data['name']) && trim($data['name']) != "") $felder["name"] = strip_tags($data['name']);
121 if (isset($data['aktiv'])) $felder["aktiv"] = intval($data['aktiv']);
122 $felder['changed'] = date("Y-m-d H:i:s", current_time("timestamp"));
123
124 $metaObj = $this->setMetaDataForAuthtokens($data, $metaObj);
125
126 if ($this->MAIN->isPremium() && method_exists($this->MAIN->getPremiumFunctions(), 'setFelderAuthtokenEdit')) {
127 $felder = $this->MAIN->getPremiumFunctions()->setFelderAuthtokenEdit($felder, $data, $tokenObj, $metaObj);
128 }
129 if (isset($felder['meta']) && !empty($felder['meta'])) { // evtl gesetzt vom premium plugin
130 $f_meta = json_decode($felder['meta'], true);
131 $f_meta["desc"] = strip_tags($f_meta["desc"]);
132 $metaObj = array_replace_recursive($metaObj, $f_meta);
133 }
134 $felder["meta"] = $this->MAIN->getCore()->json_encode_with_error_handling($metaObj);
135
136 $where = ["id"=>intval($data['id'])];
137 $ret = $this->MAIN->getDB()->update("authtokens", $felder, $where);
138 do_action( $this->MAIN->_do_action_prefix.'authtoken_editAuthtoken', $data, $ret );
139 return $ret;
140 }
141
142 public function removeAuthtoken($data) {
143 if (!isset($data['id'])) throw new Exception("#507 id parameter is missing - cannot remove auth token");
144 $sql = "delete from ".$this->MAIN->getDB()->getTabelle("authtokens")." where id = ".intval($data['id']);
145 $ret = $this->MAIN->getDB()->_db_query($sql);
146 do_action( $this->MAIN->_do_action_prefix.'authtoken_removeAuthtoken', $data, $ret );
147 return $ret;
148 }
149
150 private function setMetaDataForAuthtokens($data, $metaObj) {
151 if (isset($data['meta'])) {
152 if (isset($data['meta']['desc'])) {
153 $metaObj['desc'] = strip_tags(trim($data['meta']['desc']));
154 }
155 if (isset($data['meta']['ticketscanner']) && isset($data['meta']['ticketscanner']['bound_to_products'])) {
156 $metaObj['ticketscanner']['bound_to_products'] = strip_tags(trim($data['meta']['ticketscanner']['bound_to_products']));
157 }
158 // der rotz hier ist BS und funktioniert nicht, da wieder data.meta genutzt wird
159 //$this->MAIN->getCore()->alignArrays($metaObj, $data["meta"]);
160 //$metaObj = array_merge($metaObj, $data["meta"]);
161 }
162 return $metaObj;
163 }
164
165 }
166 ?>