Changeset 3368946
- Timestamp:
- 09/27/2025 06:07:50 PM (6 months ago)
- Location:
- quizell
- Files:
-
- 48 added
- 5 edited
-
tags/2.0 (added)
-
tags/2.0/api-calls.php (added)
-
tags/2.0/assets (added)
-
tags/2.0/assets/js (added)
-
tags/2.0/assets/js/script.js (added)
-
tags/2.0/assets/style (added)
-
tags/2.0/assets/style/bootstrap.min.css (added)
-
tags/2.0/assets/style/style.css (added)
-
tags/2.0/css (added)
-
tags/2.0/css/login.css (added)
-
tags/2.0/images (added)
-
tags/2.0/images/01 align center.svg (added)
-
tags/2.0/images/Frame 4.svg (added)
-
tags/2.0/images/Frame 5 (1).svg (added)
-
tags/2.0/images/Frame 5 (2).svg (added)
-
tags/2.0/images/Frame 5 (4).svg (added)
-
tags/2.0/images/Frame 5 (5).svg (added)
-
tags/2.0/images/Frame 5 (6).svg (added)
-
tags/2.0/images/Frame 5 (7).svg (added)
-
tags/2.0/images/Frame 5 (8).svg (added)
-
tags/2.0/images/Frame 5 (9).svg (added)
-
tags/2.0/images/Group 69213.png (added)
-
tags/2.0/images/Group 69220.png (added)
-
tags/2.0/images/Group 69280.png (added)
-
tags/2.0/images/connect.png (added)
-
tags/2.0/images/quizell-icon-new.png (added)
-
tags/2.0/images/quizell-page-logo.svg (added)
-
tags/2.0/images/sidebar-image.png (added)
-
tags/2.0/includes (added)
-
tags/2.0/includes/connect-page.php (added)
-
tags/2.0/includes/dashboard-page.php (added)
-
tags/2.0/includes/dashboard-view.php (added)
-
tags/2.0/includes/display-errors.php (added)
-
tags/2.0/includes/login-page.php (added)
-
tags/2.0/includes/login-view.php (added)
-
tags/2.0/includes/logout-page.php (added)
-
tags/2.0/includes/resend-otp-page.php (added)
-
tags/2.0/includes/root-page.php (added)
-
tags/2.0/includes/signup-page.php (added)
-
tags/2.0/includes/signup-view.php (added)
-
tags/2.0/includes/verify-otp-page.php (added)
-
tags/2.0/includes/verify-otp-view.php (added)
-
tags/2.0/js (added)
-
tags/2.0/js/quizell-script.js (added)
-
tags/2.0/license.txt (added)
-
tags/2.0/plugin.php (added)
-
tags/2.0/readme.txt (added)
-
trunk/api-calls.php (modified) (4 diffs)
-
trunk/images/quizell-icon-new.png (added)
-
trunk/includes/login-page.php (modified) (2 diffs)
-
trunk/includes/root-page.php (modified) (3 diffs)
-
trunk/plugin.php (modified) (5 diffs)
-
trunk/readme.txt (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
quizell/trunk/api-calls.php
r3089608 r3368946 15 15 // Make the request 16 16 $response = wp_remote_post(API_URL . '/login', $params); 17 $data = wp_remote_retrieve_body($response); 18 $decoded_data = json_decode($data, true); 19 //var_dump($response); 20 //print("<pre>".print_r($decoded_data,true)."</pre>"); 17 21 18 22 if (!is_wp_error($response) && wp_remote_retrieve_response_code($response) === 200) { 19 23 $data = wp_remote_retrieve_body($response); 20 24 $decoded_data = json_decode($data, true); 21 $validatedToken = preg_replace('/[^a-zA-Z0-9-.]+/', '', $decoded_data['access_token']);25 $validatedToken = $decoded_data['data']['access_token']; 22 26 //$validatedToken = $decoded_data['access_token']; 27 //var_dump($validatedToken); 23 28 update_option('quazilla_access_toekn', $validatedToken); 24 29 //update_option('quazilla_access_toekn', $decoded_data['access_token']); … … 49 54 $decoded_data = json_decode($data, true); 50 55 if (!is_wp_error($response) && wp_remote_retrieve_response_code($response) === 200) { 51 $validatedToken = preg_replace('/[^a-zA-Z0-9-.]+/', '', $decoded_data['access_token']);56 $validatedToken = $validatedToken = $decoded_data['data']['access_token']; 52 57 //$validatedToken = $decoded_data['access_token']; 53 58 update_option('quazilla_access_toekn', $validatedToken); … … 116 121 $data = wp_remote_retrieve_body($response); 117 122 //var_dump( $data); 123 //print("<pre>".print_r($data,true)."</pre>"); 118 124 if ($response_code == 401) { 119 125 return false; … … 166 172 if (isset($decoded_data['status']) && $decoded_data['status'] == false) { 167 173 return false; 168 } elseif(isset($decoded_data[' access_token']) && $decoded_data['access_token'] ) {174 } elseif(isset($decoded_data['data']['access_token']) && $decoded_data['data']['access_token'] ) { 169 175 return true; 170 176 } -
quizell/trunk/includes/login-page.php
r3089608 r3368946 20 20 { 21 21 $access_token = quizell_api_get_access_token($email, $password); 22 //var_dump( $access_token); 22 23 if(!$access_token){ 23 24 $_SESSION['errors'] = [ … … 27 28 } 28 29 if($access_token){ quizell_upate_login_record($email, $password, $access_token); 29 //echo 'redirecting';30 //echo 'redirecting'; 30 31 //var_dump($access_token); 31 32 //quizell_admin_redirect('dashboard'); -
quizell/trunk/includes/root-page.php
r3089608 r3368946 2 2 if (!defined('ABSPATH')) exit; // Exit if accessed directly 3 3 4 /** 5 * Page callback: only render inside WordPress admin wrap. 6 * Redirect logic must have already run in load-$hook_suffix. 7 */ 4 8 function quizell_root() 5 9 { 6 //var_dump(quizell_access_token()); 7 //ini_set('display_errors',0); 8 //wp_redirect('http://localhost/plugin2/wp-admin/'); 9 //die(); 10 quizell_auth_middleware(); 11 quizell_guest_middleware(); 12 quizell_router(); 10 // Determine current route (safe to use because redirect already executed if needed) 11 $route = quizell_get_route(); 12 13 // If no callback present, fallback to default (shouldn't normally happen because load handler redirects) 14 if ($route === '') { 15 $route = quizell_resolve_default_view(); 16 } 17 18 echo '<div class="wrap">'; 19 20 // simple header area if you need it 21 //quizell_destory_login_user(); 22 //var_dump(quizell_access_token()); 23 24 // include page file 25 $file_path = dirname(__FILE__) . "/{$route}-page.php"; 26 if (file_exists($file_path)) { 27 require_once($file_path); 28 } else { 29 echo '<p>Page missing: ' . esc_html($route) . '</p>'; 30 } 31 32 echo '</div>'; 13 33 } 14 34 15 function quizell_auth_middleware() 16 { 35 /** 36 * Resolve where the user *should* be and return that callback name. 37 * This is intended to be used in the load handler for redirect decisions. 38 */ 39 function quizell_resolve_route_for_redirect() { 40 $route = quizell_get_route(); // current callback (may be empty) 41 $token = quizell_access_token(); 17 42 18 $protected_routes = [ 19 'dashboard', 20 'verify-otp', 21 ]; 22 //var_dump('reading_this'); 23 24 if (in_array(quizell_get_route(), $protected_routes)) { 25 26 $token = quizell_access_token(); 27 28 if(quizell_api_validate_token($token)){ 29 30 if(!quizell_is_current_user_verified() && quizell_is_verified_route()){ 31 quizell_admin_redirect('verify-otp'); 32 } 33 34 35 } else { 36 //var_dump('reading_this'); 37 //echo $token; 38 //var_dump(quizell_api_validate_token($token)); 39 //exit(); 43 $token_valid = $token && quizell_api_validate_token($token); 44 //var_dump($token, $token_valid ); 45 //exit(); 46 // If user tries to access protected pages 47 if (in_array($route, ['dashboard', 'verify-otp'])) { 48 if (!$token_valid) { 49 // logged-out trying to access protected -> send to signup or login 40 50 quizell_destory_login_user(); 41 quizell_admin_redirect('signup');51 return 'signup'; 42 52 } 53 // If user isn't verified but hits dashboard -> they must verify first 54 if ($route === 'dashboard' && !quizell_is_current_user_verified()) { 55 return 'verify-otp'; 56 } 57 // valid token and route is allowed 58 return $route; 43 59 } 44 60 61 // If user is on guest pages (login/signup) 62 if (in_array($route, ['login', 'signup'])) { 63 if ($token_valid) { 64 // logged-in users should not see login/signup 65 return 'dashboard'; 66 } 67 return $route; 68 } 45 69 70 // No explicit callback given 71 if ($route === '') { 72 return $token_valid ? 'dashboard' : 'signup'; 73 } 74 75 // Unknown route: fallback depending on auth state 76 return $token_valid ? 'dashboard' : 'signup'; 46 77 } 47 78 48 function quizell_guest_middleware() 49 { 50 $protected_routes = [ 51 'login', 52 'signup', 53 ]; 79 /** 80 * Resolve a sensible default view when rendering (if load handler didn't redirect). 81 */ 82 function quizell_resolve_default_view() { 83 $token = quizell_access_token(); 84 $token_valid = $token && quizell_api_validate_token($token); 85 return $token_valid ? 'dashboard' : 'signup'; 86 } 54 87 55 if (in_array(quizell_get_route(), $protected_routes)) { 56 57 $token = quizell_access_token();58 59 if ($token) {60 quizell_admin_redirect('dashboard');61 } else {62 quizell_destory_login_user();63 }88 /** 89 * Router: includes the view file (rendering only). 90 */ 91 function quizell_router($route) { 92 $file_path = dirname(__FILE__) . "/$route-page.php"; 93 if (file_exists($file_path)) { 94 require_once($file_path); 95 } else { 96 echo "<h2>Page not found</h2>"; 64 97 } 65 98 } 66 99 67 function quizell_router() 68 { 69 $route = quizell_get_route(); 70 if ($route == "") { 71 quizell_admin_redirect('dashboard'); 72 } 73 //$route = $route); 74 $file_path = dirname(__FILE__) . "/$route-page.php"; 75 76 if (file_exists($file_path)) { 77 require_once($file_path); 78 } else { 79 echo "File Missing"; 80 } 81 } 82 100 /** 101 * Helper: current callback from query string (sanitized) 102 */ 83 103 function quizell_get_route() 84 104 { … … 86 106 } 87 107 108 /** 109 * Token helpers (unchanged, simplified) 110 */ 88 111 function quizell_access_token() 89 112 { … … 91 114 92 115 if (!$access_token) { 116 //echo 'gettingfromdb'; 93 117 $access_token = quizell_token_from_db(); 94 118 } 95 119 96 return $access_token;120 return $access_token; 97 121 } 98 122 99 123 function quizell_token_from_db() 100 124 { 101 // global $wpdb; 102 //$table_name = $wpdb->prefix . 'quizell_login'; 103 104 //$query = "SELECT * FROM $table_name ORDER BY id DESC LIMIT 1"; 105 //$latest_record = $wpdb->get_row($query, ARRAY_A); 106 107 //if ($latest_record) { 108 //$_SESSION['quizell_access_token'] = $latest_record['access_token']; 109 //return $latest_record['access_token']; 110 //} else { 111 //return false; 112 //} 113 //$latest_record = json_decode(get_option('quizell_login'), true); 114 $accestoken = get_option('quazilla_access_toekn'); 115 return $accestoken; 125 // your option key 126 return get_option('quazilla_access_toekn'); 116 127 } 117 -
quizell/trunk/plugin.php
r3089615 r3368946 3 3 4 4 /** 5 * Plugin Name: Quizell : AI-Powered Quizzes, Forms, and Product Recommendation Quiz for Enhanced Engagement5 * Plugin Name: Quizell – Quizzes, Forms, Product Recommendations & Funnels for WordPress 6 6 * Plugin URI: https://app.quizell.com 7 7 * Description: Quizell is an online E-commerce Quiz Generator that will increase your conversion rate, reduce return rate and improve your customer experience. 8 8 * Author: Quizell 9 9 * Author URI: https://quizell.com 10 * Version: 1.510 * Version: 2.0 11 11 * License: GPLv2 or later 12 12 * License URI: http://www.gnu.org/licenses/gpl-2.0.html … … 19 19 const API_URL = 'https://api.quizell.com'; 20 20 const USER_DASHBOARD_APP = "https://app.quizell.com"; 21 // Create a tab in the admin dashboard 21 22 // Create a tab in the admin dashboard 22 23 add_action('admin_menu', 'quizell_admin_menu'); … … 24 25 register_deactivation_hook(__FILE__, 'quizell_deactivate'); 25 26 26 27 27 function quizell_admin_menu() 28 28 { 29 add_menu_page( 29 // capture hook suffix so we can use load-$hook_suffix 30 $hook_suffix = add_menu_page( 30 31 'Quizell', // Page Title 31 'Quizell', // Menu Title32 'manage_options', // Capability required to access33 'quizell', // Menu Slug34 'quizell_root', // Callback function to display the page content35 esc_url( plugins_url('/images/quizell-icon .png', __FILE__)), // Icon class (use your custom icon's class or Dashicons class)36 20 // Position in the menu32 'Quizell', // Menu Title 33 'manage_options', // Capability required 34 'quizell', // Menu Slug 35 'quizell_root', // Callback function to display the page content 36 esc_url( plugins_url('/images/quizell-icon-new.png', __FILE__)), // Icon 37 20 // Position 37 38 ); 38 } 39 40 // run resolver / redirect before page output 41 add_action("load-$hook_suffix", 'quizell_handle_load'); 42 } 43 39 44 function quizell_deactivate() 40 45 { … … 43 48 } 44 49 45 // api relatedfunctions50 // include api and root page functions 46 51 require_once(dirname(__FILE__) . '/api-calls.php'); 47 48 //main page49 52 require_once(dirname(__FILE__) . '/includes/root-page.php'); 50 53 51 54 // enqueue assets still fine 52 55 function quizell_enqueue_custom_assets() { 53 54 // Check if the current screen is your plugin page55 56 if (is_admin() && isset($_GET['page']) && $_GET['page'] === 'quizell') { 56 57 wp_enqueue_style('bootstrap', esc_url( plugins_url('/assets/style/bootstrap.min.css', __FILE__)), array(), '0.1.0'); 57 58 wp_enqueue_style('custom-style',esc_url( plugins_url('/assets/style/style.css', __FILE__)), array(), '2.0'); 58 //wp_enqueue_script('bootstrap-bundle',esc_url( plugins_url('/assets/js/bootstrap.bundle.min.js', __FILE__)), array('jquery'), '', true);59 59 wp_enqueue_script('login-js', esc_url( plugins_url('/assets/js/script.js', __FILE__)), array('jquery'), '1.0', true); 60 60 } 61 61 } 62 62 add_action('admin_enqueue_scripts', 'quizell_enqueue_custom_assets'); 63 63 64 function quizell_custom_scripts_enqueue() { 64 65 wp_enqueue_script('custom-script', esc_url(plugins_url('../js/quizell-script.js', __FILE__)), array('jquery'), '1.0', true); … … 66 67 add_action('wp_enqueue_scripts', 'quizell_custom_scripts_enqueue'); 67 68 69 /** 70 * Load handler that resolves the route and redirects (if needed) BEFORE admin output. 71 */ 72 function quizell_handle_load() { 73 // safe: functions defined in includes/root-page.php 74 $current_route = quizell_get_route(); // may be '' or a callback 75 $target_route = quizell_resolve_route_for_redirect(); 76 77 // Only redirect if different AND target is not empty 78 if ($target_route && $target_route !== $current_route) { 79 $url = admin_url('admin.php?page=quizell&callback=' . urlencode($target_route)); 80 wp_safe_redirect($url); 81 exit; 82 } 83 84 // if no redirect required, continue to page rendering -> quizell_root will run 85 } 86 68 87 function quizell_admin_redirect(string $page_name) 69 88 { 70 71 wp_safe_redirect(admin_url('admin.php?page=quizell&callback=' . $page_name)); 89 $url = admin_url('admin.php?page=quizell&callback=' . $page_name); 90 //echo "<script>window.location.href='" . esc_html($url) . "';</script>"; 91 //exit; 92 echo $page_name; 93 //wp_safe_redirect(admin_url('admin.php?page=quizell&callback=' . $page_name)); 72 94 die; 73 95 } -
quizell/trunk/readme.txt
r3365077 r3368946 8 8 License: GPLv2 or later 9 9 License URI: http://www.gnu.org/licenses/gpl-2.0.html 10 Stable Tag: 1.510 Stable Tag: 2 11 11 Tags: quiz, product quiz, product recommendation, ecommerce, lead generation, form builder, funnel, drag-and-drop, survey 12 12 … … 89 89 = 1.5 = 90 90 - New Improved UI with extra functionalities 91 92 == 2.0 == 93 - Fixed Bugs
Note: See TracChangeset
for help on using the changeset viewer.