Changeset 3379026
- Timestamp:
- 10/15/2025 04:19:24 PM (6 months ago)
- Location:
- flex-qr-code-generator
- Files:
-
- 2 edited
-
tags/1.2.5/qr-code-generator.php (modified) (7 diffs)
-
trunk/qr-code-generator.php (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
flex-qr-code-generator/tags/1.2.5/qr-code-generator.php
r3301390 r3379026 1 1 <?php 2 2 3 /** 3 4 * Plugin Name: Flex QR Code Generator … … 13 14 * @package flex-qr-code-generator 14 15 */ 16 17 // Ensure WordPress functions are available if run directly 18 if (! defined('ABSPATH')) { 19 require_once(dirname(__FILE__, 4) . '/wp-load.php'); 20 } 15 21 if (!defined('FLEXQR_CODE_GENERATOR_PATH')) { 16 22 define('FLEXQR_CODE_GENERATOR_PATH', plugin_dir_path(__FILE__)); … … 30 36 31 37 add_action('wp_ajax_flexqr_save_qr', [$this, 'save_qr_code_to_db']); 32 add_action('wp_ajax_nopriv_flexqr_save_qr', [$this, 'save_qr_code_to_db']);38 // add_action('wp_ajax_nopriv_flexqr_save_qr', [$this, 'save_qr_code_to_db']); 33 39 34 40 // update qr … … 206 212 } 207 213 214 // function save_qr_code_to_db() 215 // { 216 217 // if ( ! isset($_POST['nonce']) || ! wp_verify_nonce($_POST['nonce'], 'wp_rest') ) { 218 // wp_send_json_error(['message' => 'Security check failed.']); 219 // wp_die(); 220 // } 221 222 // if (isset($_POST['qrData'])) { 223 // global $wpdb; 224 // $qrData = json_decode(stripslashes($_POST['qrData']), true); 225 // $qrName = isset($_POST['qrName']) ? $_POST['qrName'] : null; 226 // $isTrackingEnabled = $_POST['isTrackingEnabled'] === 'true'; 227 228 // if (!$qrData) { 229 // echo 'Invalid QR data.'; 230 // wp_die(); 231 // } 232 233 // $originalText = sanitize_text_field($qrData['data']); 234 235 // $input_data = array( 236 // 'text' => $originalText, 237 // 'qr_data' => json_encode($qrData, JSON_UNESCAPED_SLASHES), 238 // ); 239 240 // // Add qr_name only if it's not null 241 // if ($qrName !== null) { 242 // $input_data['qr_name'] = sanitize_text_field($qrName); 243 // } 244 245 // // Save it to the database first to get the ID 246 // $result = $wpdb->insert( 247 // $wpdb->prefix . 'qr_codes', 248 // $input_data 249 // ); 250 251 // if (!$result) { 252 // wp_send_json_error(['message' => 'Error saving QR code.']); 253 // wp_die(); 254 // } 255 256 // $inserted_id = $wpdb->insert_id; 257 258 // // Handle the logo (file upload) - now that we have the ID 259 // $logo_url = ''; 260 261 // if (isset($_FILES['logo']) && $_FILES['logo']['error'] === UPLOAD_ERR_OK) { 262 // $logo = $_FILES['logo']; 263 // $upload_dir = wp_upload_dir(); 264 265 // $file_ext = pathinfo($logo['name'], PATHINFO_EXTENSION); 266 // $file_name = pathinfo($logo['name'], PATHINFO_FILENAME); 267 268 // // Create new filename with ID 269 // $new_file_name = $file_name . '_' . $inserted_id . '.' . $file_ext; 270 // $file_path = $upload_dir['path'] . '/' . $new_file_name; 271 272 // if (move_uploaded_file($logo['tmp_name'], $file_path)) { 273 // $logo_url = $upload_dir['url'] . '/' . $new_file_name; 274 // $logo_url = str_replace(home_url(), '', $logo_url); 275 276 // // Update the database with the logo URL 277 // $wpdb->update( 278 // $wpdb->prefix . 'qr_codes', 279 // ['logo_url' => $logo_url], 280 // ['id' => $inserted_id] 281 // ); 282 // } 283 // } 284 285 // // qr_image handling 286 // $qr_image_url = ''; 287 288 // if (isset($_FILES['qr_image']) && $_FILES['qr_image']['error'] === UPLOAD_ERR_OK) { 289 // $qr_image = $_FILES['qr_image']; 290 // $upload_dir = wp_upload_dir(); 291 292 // $file_ext = pathinfo($qr_image['name'], PATHINFO_EXTENSION); 293 // $file_name = pathinfo($qr_image['name'], PATHINFO_FILENAME); 294 295 // // Create new filename with ID 296 // $new_file_name = $file_name . '_' . $inserted_id . '.' . $file_ext; 297 // $file_path = $upload_dir['path'] . '/' . $new_file_name; 298 299 // if (move_uploaded_file($qr_image['tmp_name'], $file_path)) { 300 // $qr_image_url = $upload_dir['url'] . '/' . $new_file_name; 301 // $qr_image_url = str_replace(home_url(), '', $qr_image_url); 302 303 // // Update the database with the QR image URL 304 // $wpdb->update( 305 // $wpdb->prefix . 'qr_codes', 306 // ['qr_image_url' => $qr_image_url], 307 // ['id' => $inserted_id] 308 // ); 309 // } 310 // } 311 312 // if ($isTrackingEnabled) { 313 // $trackedUrl = $this->add_tracking_param_to_url($originalText, $inserted_id); 314 315 // $qrData['data'] = $trackedUrl; 316 317 // $wpdb->update( 318 // $wpdb->prefix . 'qr_codes', 319 // ['qr_data' => json_encode($qrData, JSON_UNESCAPED_SLASHES)], 320 // ['id' => $inserted_id] 321 // ); 322 // } 323 324 // wp_send_json_success([ 325 // 'message' => 'QR code saved successfully.', 326 // 'id' => $inserted_id, 327 // 'finalUrl' => $isTrackingEnabled ? $trackedUrl : $originalText, 328 // ]); 329 330 // } else { 331 // wp_send_json_error(array('message' => 'Missing QR data.')); 332 // } 333 334 // wp_die(); 335 // } 208 336 function save_qr_code_to_db() 209 337 { 210 if (isset($_POST['qrData'])) { 211 global $wpdb; 212 $qrData = json_decode(stripslashes($_POST['qrData']), true); 213 $qrName = isset($_POST['qrName']) ? $_POST['qrName'] : null; 214 $isTrackingEnabled = $_POST['isTrackingEnabled'] === 'true'; 215 216 if (!$qrData) { 217 echo 'Invalid QR data.'; 338 if (! is_user_logged_in() || ! current_user_can('upload_files')) { 339 wp_send_json_error(['message' => 'Unauthorized access.']); 340 wp_die(); 341 } 342 343 // Verify nonce 344 if (! isset($_POST['nonce']) || ! wp_verify_nonce($_POST['nonce'], 'wp_rest')) { 345 wp_send_json_error(['message' => 'Security check failed.']); 346 wp_die(); 347 } 348 349 if (! isset($_POST['qrData'])) { 350 wp_send_json_error(['message' => 'Missing QR data.']); 351 wp_die(); 352 } 353 354 global $wpdb; 355 356 $qrData = json_decode(stripslashes($_POST['qrData']), true); 357 if (! $qrData || ! isset($qrData['data'])) { 358 wp_send_json_error(['message' => 'Invalid QR data.']); 359 wp_die(); 360 } 361 362 $qrName = isset($_POST['qrName']) ? sanitize_text_field($_POST['qrName']) : null; 363 $isTrackingEnabled = isset($_POST['isTrackingEnabled']) && $_POST['isTrackingEnabled'] === 'true'; 364 $originalText = sanitize_text_field($qrData['data']); 365 366 $input_data = [ 367 'text' => $originalText, 368 'qr_data' => wp_json_encode($qrData, JSON_UNESCAPED_SLASHES), 369 ]; 370 371 if ($qrName) { 372 $input_data['qr_name'] = $qrName; 373 } 374 375 // Insert to DB 376 $result = $wpdb->insert( 377 $wpdb->prefix . 'qr_codes', 378 $input_data 379 ); 380 381 if (! $result) { 382 wp_send_json_error(['message' => 'Error saving QR code.']); 383 wp_die(); 384 } 385 386 $inserted_id = $wpdb->insert_id; 387 388 require_once(ABSPATH . 'wp-admin/includes/file.php'); 389 390 // Allowed MIME types 391 $allowed_mimes = [ 392 'jpg|jpeg|jpe' => 'image/jpeg', 393 'png' => 'image/png', 394 'gif' => 'image/gif', 395 'webp' => 'image/webp', 396 'svg' => 'image/svg+xml', 397 ]; 398 399 $upload_overrides = [ 400 'test_form' => false, 401 'mimes' => $allowed_mimes, 402 ]; 403 404 // Handle logo upload 405 if (! empty($_FILES['logo']['name'])) { 406 $uploaded = wp_handle_upload($_FILES['logo'], $upload_overrides); 407 408 if (isset($uploaded['error'])) { 409 wp_send_json_error(['message' => 'Logo upload failed: ' . $uploaded['error']]); 218 410 wp_die(); 219 411 } 220 412 221 $ originalText = sanitize_text_field($qrData['data']);222 223 $input_data = array(224 'text' => $originalText,225 'qr_data' => json_encode($qrData, JSON_UNESCAPED_SLASHES),413 $logo_url = esc_url_raw($uploaded['url']); 414 $wpdb->update( 415 $wpdb->prefix . 'qr_codes', 416 ['logo_url' => $logo_url], 417 ['id' => $inserted_id] 226 418 ); 227 228 // Add qr_name only if it's not null 229 if ($qrName !== null) { 230 $input_data['qr_name'] = sanitize_text_field($qrName); 231 } 232 233 // Save it to the database first to get the ID 234 $result = $wpdb->insert( 419 } 420 421 // Handle QR image upload 422 if (! empty($_FILES['qr_image']['name'])) { 423 $uploaded_qr = wp_handle_upload($_FILES['qr_image'], $upload_overrides); 424 425 if (isset($uploaded_qr['error'])) { 426 wp_send_json_error(['message' => 'QR image upload failed: ' . $uploaded_qr['error']]); 427 wp_die(); 428 } 429 430 $qr_image_url = esc_url_raw($uploaded_qr['url']); 431 $wpdb->update( 235 432 $wpdb->prefix . 'qr_codes', 236 $input_data 433 ['qr_image_url' => $qr_image_url], 434 ['id' => $inserted_id] 237 435 ); 238 239 if (!$result) { 240 wp_send_json_error(['message' => 'Error saving QR code.']); 241 wp_die(); 242 } 243 244 $inserted_id = $wpdb->insert_id; 245 246 // Handle the logo (file upload) - now that we have the ID 247 $logo_url = ''; 248 249 if (isset($_FILES['logo']) && $_FILES['logo']['error'] === UPLOAD_ERR_OK) { 250 $logo = $_FILES['logo']; 251 $upload_dir = wp_upload_dir(); 252 253 $file_ext = pathinfo($logo['name'], PATHINFO_EXTENSION); 254 $file_name = pathinfo($logo['name'], PATHINFO_FILENAME); 255 256 // Create new filename with ID 257 $new_file_name = $file_name . '_' . $inserted_id . '.' . $file_ext; 258 $file_path = $upload_dir['path'] . '/' . $new_file_name; 259 260 if (move_uploaded_file($logo['tmp_name'], $file_path)) { 261 $logo_url = $upload_dir['url'] . '/' . $new_file_name; 262 $logo_url = str_replace(home_url(), '', $logo_url); 263 264 // Update the database with the logo URL 265 $wpdb->update( 266 $wpdb->prefix . 'qr_codes', 267 ['logo_url' => $logo_url], 268 ['id' => $inserted_id] 269 ); 270 } 271 } 272 273 // qr_image handling 274 $qr_image_url = ''; 275 276 if (isset($_FILES['qr_image']) && $_FILES['qr_image']['error'] === UPLOAD_ERR_OK) { 277 $qr_image = $_FILES['qr_image']; 278 $upload_dir = wp_upload_dir(); 279 280 $file_ext = pathinfo($qr_image['name'], PATHINFO_EXTENSION); 281 $file_name = pathinfo($qr_image['name'], PATHINFO_FILENAME); 282 283 // Create new filename with ID 284 $new_file_name = $file_name . '_' . $inserted_id . '.' . $file_ext; 285 $file_path = $upload_dir['path'] . '/' . $new_file_name; 286 287 if (move_uploaded_file($qr_image['tmp_name'], $file_path)) { 288 $qr_image_url = $upload_dir['url'] . '/' . $new_file_name; 289 $qr_image_url = str_replace(home_url(), '', $qr_image_url); 290 291 // Update the database with the QR image URL 292 $wpdb->update( 293 $wpdb->prefix . 'qr_codes', 294 ['qr_image_url' => $qr_image_url], 295 ['id' => $inserted_id] 296 ); 297 } 298 } 299 300 if ($isTrackingEnabled) { 301 $trackedUrl = $this->add_tracking_param_to_url($originalText, $inserted_id); 302 303 $qrData['data'] = $trackedUrl; 304 305 $wpdb->update( 306 $wpdb->prefix . 'qr_codes', 307 ['qr_data' => json_encode($qrData, JSON_UNESCAPED_SLASHES)], 308 ['id' => $inserted_id] 309 ); 310 } 311 312 wp_send_json_success([ 313 'message' => 'QR code saved successfully.', 314 'id' => $inserted_id, 315 'finalUrl' => $isTrackingEnabled ? $trackedUrl : $originalText, 316 ]); 317 318 } else { 319 wp_send_json_error(array('message' => 'Missing QR data.')); 320 } 436 } 437 438 // Handle tracking 439 if ($isTrackingEnabled && method_exists($this, 'add_tracking_param_to_url')) { 440 $trackedUrl = $this->add_tracking_param_to_url($originalText, $inserted_id); 441 $qrData['data'] = $trackedUrl; 442 443 $wpdb->update( 444 $wpdb->prefix . 'qr_codes', 445 ['qr_data' => wp_json_encode($qrData, JSON_UNESCAPED_SLASHES)], 446 ['id' => $inserted_id] 447 ); 448 } 449 450 wp_send_json_success([ 451 'message' => 'QR code saved successfully.', 452 'id' => $inserted_id, 453 'finalUrl' => $isTrackingEnabled ? $trackedUrl : $originalText, 454 ]); 321 455 322 456 wp_die(); 323 457 } 458 324 459 325 460 public function update_qr_code() … … 450 585 'finalUrl' => $isTrackingEnabled ? $trackedUrl : $originalText, 451 586 ]); 452 453 587 } else { 454 588 wp_send_json_error(array('message' => 'Missing QR data or ID.')); … … 716 850 ); 717 851 } 718 719 852 } 720 853 … … 891 1024 ]); 892 1025 } 893 894 1026 } 895 1027 -
flex-qr-code-generator/trunk/qr-code-generator.php
r3301390 r3379026 1 1 <?php 2 2 3 /** 3 4 * Plugin Name: Flex QR Code Generator … … 13 14 * @package flex-qr-code-generator 14 15 */ 16 17 // Ensure WordPress functions are available if run directly 18 if (! defined('ABSPATH')) { 19 require_once(dirname(__FILE__, 4) . '/wp-load.php'); 20 } 15 21 if (!defined('FLEXQR_CODE_GENERATOR_PATH')) { 16 22 define('FLEXQR_CODE_GENERATOR_PATH', plugin_dir_path(__FILE__)); … … 30 36 31 37 add_action('wp_ajax_flexqr_save_qr', [$this, 'save_qr_code_to_db']); 32 add_action('wp_ajax_nopriv_flexqr_save_qr', [$this, 'save_qr_code_to_db']);38 // add_action('wp_ajax_nopriv_flexqr_save_qr', [$this, 'save_qr_code_to_db']); 33 39 34 40 // update qr … … 206 212 } 207 213 214 // function save_qr_code_to_db() 215 // { 216 217 // if ( ! isset($_POST['nonce']) || ! wp_verify_nonce($_POST['nonce'], 'wp_rest') ) { 218 // wp_send_json_error(['message' => 'Security check failed.']); 219 // wp_die(); 220 // } 221 222 // if (isset($_POST['qrData'])) { 223 // global $wpdb; 224 // $qrData = json_decode(stripslashes($_POST['qrData']), true); 225 // $qrName = isset($_POST['qrName']) ? $_POST['qrName'] : null; 226 // $isTrackingEnabled = $_POST['isTrackingEnabled'] === 'true'; 227 228 // if (!$qrData) { 229 // echo 'Invalid QR data.'; 230 // wp_die(); 231 // } 232 233 // $originalText = sanitize_text_field($qrData['data']); 234 235 // $input_data = array( 236 // 'text' => $originalText, 237 // 'qr_data' => json_encode($qrData, JSON_UNESCAPED_SLASHES), 238 // ); 239 240 // // Add qr_name only if it's not null 241 // if ($qrName !== null) { 242 // $input_data['qr_name'] = sanitize_text_field($qrName); 243 // } 244 245 // // Save it to the database first to get the ID 246 // $result = $wpdb->insert( 247 // $wpdb->prefix . 'qr_codes', 248 // $input_data 249 // ); 250 251 // if (!$result) { 252 // wp_send_json_error(['message' => 'Error saving QR code.']); 253 // wp_die(); 254 // } 255 256 // $inserted_id = $wpdb->insert_id; 257 258 // // Handle the logo (file upload) - now that we have the ID 259 // $logo_url = ''; 260 261 // if (isset($_FILES['logo']) && $_FILES['logo']['error'] === UPLOAD_ERR_OK) { 262 // $logo = $_FILES['logo']; 263 // $upload_dir = wp_upload_dir(); 264 265 // $file_ext = pathinfo($logo['name'], PATHINFO_EXTENSION); 266 // $file_name = pathinfo($logo['name'], PATHINFO_FILENAME); 267 268 // // Create new filename with ID 269 // $new_file_name = $file_name . '_' . $inserted_id . '.' . $file_ext; 270 // $file_path = $upload_dir['path'] . '/' . $new_file_name; 271 272 // if (move_uploaded_file($logo['tmp_name'], $file_path)) { 273 // $logo_url = $upload_dir['url'] . '/' . $new_file_name; 274 // $logo_url = str_replace(home_url(), '', $logo_url); 275 276 // // Update the database with the logo URL 277 // $wpdb->update( 278 // $wpdb->prefix . 'qr_codes', 279 // ['logo_url' => $logo_url], 280 // ['id' => $inserted_id] 281 // ); 282 // } 283 // } 284 285 // // qr_image handling 286 // $qr_image_url = ''; 287 288 // if (isset($_FILES['qr_image']) && $_FILES['qr_image']['error'] === UPLOAD_ERR_OK) { 289 // $qr_image = $_FILES['qr_image']; 290 // $upload_dir = wp_upload_dir(); 291 292 // $file_ext = pathinfo($qr_image['name'], PATHINFO_EXTENSION); 293 // $file_name = pathinfo($qr_image['name'], PATHINFO_FILENAME); 294 295 // // Create new filename with ID 296 // $new_file_name = $file_name . '_' . $inserted_id . '.' . $file_ext; 297 // $file_path = $upload_dir['path'] . '/' . $new_file_name; 298 299 // if (move_uploaded_file($qr_image['tmp_name'], $file_path)) { 300 // $qr_image_url = $upload_dir['url'] . '/' . $new_file_name; 301 // $qr_image_url = str_replace(home_url(), '', $qr_image_url); 302 303 // // Update the database with the QR image URL 304 // $wpdb->update( 305 // $wpdb->prefix . 'qr_codes', 306 // ['qr_image_url' => $qr_image_url], 307 // ['id' => $inserted_id] 308 // ); 309 // } 310 // } 311 312 // if ($isTrackingEnabled) { 313 // $trackedUrl = $this->add_tracking_param_to_url($originalText, $inserted_id); 314 315 // $qrData['data'] = $trackedUrl; 316 317 // $wpdb->update( 318 // $wpdb->prefix . 'qr_codes', 319 // ['qr_data' => json_encode($qrData, JSON_UNESCAPED_SLASHES)], 320 // ['id' => $inserted_id] 321 // ); 322 // } 323 324 // wp_send_json_success([ 325 // 'message' => 'QR code saved successfully.', 326 // 'id' => $inserted_id, 327 // 'finalUrl' => $isTrackingEnabled ? $trackedUrl : $originalText, 328 // ]); 329 330 // } else { 331 // wp_send_json_error(array('message' => 'Missing QR data.')); 332 // } 333 334 // wp_die(); 335 // } 208 336 function save_qr_code_to_db() 209 337 { 210 if (isset($_POST['qrData'])) { 211 global $wpdb; 212 $qrData = json_decode(stripslashes($_POST['qrData']), true); 213 $qrName = isset($_POST['qrName']) ? $_POST['qrName'] : null; 214 $isTrackingEnabled = $_POST['isTrackingEnabled'] === 'true'; 215 216 if (!$qrData) { 217 echo 'Invalid QR data.'; 338 if (! is_user_logged_in() || ! current_user_can('upload_files')) { 339 wp_send_json_error(['message' => 'Unauthorized access.']); 340 wp_die(); 341 } 342 343 // Verify nonce 344 if (! isset($_POST['nonce']) || ! wp_verify_nonce($_POST['nonce'], 'wp_rest')) { 345 wp_send_json_error(['message' => 'Security check failed.']); 346 wp_die(); 347 } 348 349 if (! isset($_POST['qrData'])) { 350 wp_send_json_error(['message' => 'Missing QR data.']); 351 wp_die(); 352 } 353 354 global $wpdb; 355 356 $qrData = json_decode(stripslashes($_POST['qrData']), true); 357 if (! $qrData || ! isset($qrData['data'])) { 358 wp_send_json_error(['message' => 'Invalid QR data.']); 359 wp_die(); 360 } 361 362 $qrName = isset($_POST['qrName']) ? sanitize_text_field($_POST['qrName']) : null; 363 $isTrackingEnabled = isset($_POST['isTrackingEnabled']) && $_POST['isTrackingEnabled'] === 'true'; 364 $originalText = sanitize_text_field($qrData['data']); 365 366 $input_data = [ 367 'text' => $originalText, 368 'qr_data' => wp_json_encode($qrData, JSON_UNESCAPED_SLASHES), 369 ]; 370 371 if ($qrName) { 372 $input_data['qr_name'] = $qrName; 373 } 374 375 // Insert to DB 376 $result = $wpdb->insert( 377 $wpdb->prefix . 'qr_codes', 378 $input_data 379 ); 380 381 if (! $result) { 382 wp_send_json_error(['message' => 'Error saving QR code.']); 383 wp_die(); 384 } 385 386 $inserted_id = $wpdb->insert_id; 387 388 require_once(ABSPATH . 'wp-admin/includes/file.php'); 389 390 // Allowed MIME types 391 $allowed_mimes = [ 392 'jpg|jpeg|jpe' => 'image/jpeg', 393 'png' => 'image/png', 394 'gif' => 'image/gif', 395 'webp' => 'image/webp', 396 'svg' => 'image/svg+xml', 397 ]; 398 399 $upload_overrides = [ 400 'test_form' => false, 401 'mimes' => $allowed_mimes, 402 ]; 403 404 // Handle logo upload 405 if (! empty($_FILES['logo']['name'])) { 406 $uploaded = wp_handle_upload($_FILES['logo'], $upload_overrides); 407 408 if (isset($uploaded['error'])) { 409 wp_send_json_error(['message' => 'Logo upload failed: ' . $uploaded['error']]); 218 410 wp_die(); 219 411 } 220 412 221 $ originalText = sanitize_text_field($qrData['data']);222 223 $input_data = array(224 'text' => $originalText,225 'qr_data' => json_encode($qrData, JSON_UNESCAPED_SLASHES),413 $logo_url = esc_url_raw($uploaded['url']); 414 $wpdb->update( 415 $wpdb->prefix . 'qr_codes', 416 ['logo_url' => $logo_url], 417 ['id' => $inserted_id] 226 418 ); 227 228 // Add qr_name only if it's not null 229 if ($qrName !== null) { 230 $input_data['qr_name'] = sanitize_text_field($qrName); 231 } 232 233 // Save it to the database first to get the ID 234 $result = $wpdb->insert( 419 } 420 421 // Handle QR image upload 422 if (! empty($_FILES['qr_image']['name'])) { 423 $uploaded_qr = wp_handle_upload($_FILES['qr_image'], $upload_overrides); 424 425 if (isset($uploaded_qr['error'])) { 426 wp_send_json_error(['message' => 'QR image upload failed: ' . $uploaded_qr['error']]); 427 wp_die(); 428 } 429 430 $qr_image_url = esc_url_raw($uploaded_qr['url']); 431 $wpdb->update( 235 432 $wpdb->prefix . 'qr_codes', 236 $input_data 433 ['qr_image_url' => $qr_image_url], 434 ['id' => $inserted_id] 237 435 ); 238 239 if (!$result) { 240 wp_send_json_error(['message' => 'Error saving QR code.']); 241 wp_die(); 242 } 243 244 $inserted_id = $wpdb->insert_id; 245 246 // Handle the logo (file upload) - now that we have the ID 247 $logo_url = ''; 248 249 if (isset($_FILES['logo']) && $_FILES['logo']['error'] === UPLOAD_ERR_OK) { 250 $logo = $_FILES['logo']; 251 $upload_dir = wp_upload_dir(); 252 253 $file_ext = pathinfo($logo['name'], PATHINFO_EXTENSION); 254 $file_name = pathinfo($logo['name'], PATHINFO_FILENAME); 255 256 // Create new filename with ID 257 $new_file_name = $file_name . '_' . $inserted_id . '.' . $file_ext; 258 $file_path = $upload_dir['path'] . '/' . $new_file_name; 259 260 if (move_uploaded_file($logo['tmp_name'], $file_path)) { 261 $logo_url = $upload_dir['url'] . '/' . $new_file_name; 262 $logo_url = str_replace(home_url(), '', $logo_url); 263 264 // Update the database with the logo URL 265 $wpdb->update( 266 $wpdb->prefix . 'qr_codes', 267 ['logo_url' => $logo_url], 268 ['id' => $inserted_id] 269 ); 270 } 271 } 272 273 // qr_image handling 274 $qr_image_url = ''; 275 276 if (isset($_FILES['qr_image']) && $_FILES['qr_image']['error'] === UPLOAD_ERR_OK) { 277 $qr_image = $_FILES['qr_image']; 278 $upload_dir = wp_upload_dir(); 279 280 $file_ext = pathinfo($qr_image['name'], PATHINFO_EXTENSION); 281 $file_name = pathinfo($qr_image['name'], PATHINFO_FILENAME); 282 283 // Create new filename with ID 284 $new_file_name = $file_name . '_' . $inserted_id . '.' . $file_ext; 285 $file_path = $upload_dir['path'] . '/' . $new_file_name; 286 287 if (move_uploaded_file($qr_image['tmp_name'], $file_path)) { 288 $qr_image_url = $upload_dir['url'] . '/' . $new_file_name; 289 $qr_image_url = str_replace(home_url(), '', $qr_image_url); 290 291 // Update the database with the QR image URL 292 $wpdb->update( 293 $wpdb->prefix . 'qr_codes', 294 ['qr_image_url' => $qr_image_url], 295 ['id' => $inserted_id] 296 ); 297 } 298 } 299 300 if ($isTrackingEnabled) { 301 $trackedUrl = $this->add_tracking_param_to_url($originalText, $inserted_id); 302 303 $qrData['data'] = $trackedUrl; 304 305 $wpdb->update( 306 $wpdb->prefix . 'qr_codes', 307 ['qr_data' => json_encode($qrData, JSON_UNESCAPED_SLASHES)], 308 ['id' => $inserted_id] 309 ); 310 } 311 312 wp_send_json_success([ 313 'message' => 'QR code saved successfully.', 314 'id' => $inserted_id, 315 'finalUrl' => $isTrackingEnabled ? $trackedUrl : $originalText, 316 ]); 317 318 } else { 319 wp_send_json_error(array('message' => 'Missing QR data.')); 320 } 436 } 437 438 // Handle tracking 439 if ($isTrackingEnabled && method_exists($this, 'add_tracking_param_to_url')) { 440 $trackedUrl = $this->add_tracking_param_to_url($originalText, $inserted_id); 441 $qrData['data'] = $trackedUrl; 442 443 $wpdb->update( 444 $wpdb->prefix . 'qr_codes', 445 ['qr_data' => wp_json_encode($qrData, JSON_UNESCAPED_SLASHES)], 446 ['id' => $inserted_id] 447 ); 448 } 449 450 wp_send_json_success([ 451 'message' => 'QR code saved successfully.', 452 'id' => $inserted_id, 453 'finalUrl' => $isTrackingEnabled ? $trackedUrl : $originalText, 454 ]); 321 455 322 456 wp_die(); 323 457 } 458 324 459 325 460 public function update_qr_code() … … 450 585 'finalUrl' => $isTrackingEnabled ? $trackedUrl : $originalText, 451 586 ]); 452 453 587 } else { 454 588 wp_send_json_error(array('message' => 'Missing QR data or ID.')); … … 716 850 ); 717 851 } 718 719 852 } 720 853 … … 891 1024 ]); 892 1025 } 893 894 1026 } 895 1027
Note: See TracChangeset
for help on using the changeset viewer.