Plugin Directory

Changeset 3368946


Ignore:
Timestamp:
09/27/2025 06:07:50 PM (6 months ago)
Author:
quizell
Message:

Fixed some functionalities.

Location:
quizell
Files:
48 added
5 edited

Legend:

Unmodified
Added
Removed
  • quizell/trunk/api-calls.php

    r3089608 r3368946  
    1515    // Make the request
    1616    $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>");
    1721
    1822    if (!is_wp_error($response) && wp_remote_retrieve_response_code($response) === 200) {
    1923        $data = wp_remote_retrieve_body($response);
    2024        $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'];
    2226        //$validatedToken = $decoded_data['access_token'];
     27        //var_dump($validatedToken);
    2328        update_option('quazilla_access_toekn', $validatedToken);
    2429        //update_option('quazilla_access_toekn', $decoded_data['access_token']);
     
    4954    $decoded_data = json_decode($data, true);
    5055    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'];
    5257                //$validatedToken = $decoded_data['access_token'];
    5358        update_option('quazilla_access_toekn', $validatedToken);
     
    116121    $data = wp_remote_retrieve_body($response);
    117122    //var_dump(    $data);
     123      //print("<pre>".print_r($data,true)."</pre>");
    118124    if ($response_code == 401) {
    119125        return false;
     
    166172        if (isset($decoded_data['status']) && $decoded_data['status'] == false) {
    167173            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'] ) {
    169175            return true;
    170176        }
  • quizell/trunk/includes/login-page.php

    r3089608 r3368946  
    2020{
    2121    $access_token =  quizell_api_get_access_token($email, $password);
     22    //var_dump( $access_token);
    2223    if(!$access_token){
    2324        $_SESSION['errors'] = [
     
    2728    }
    2829    if($access_token){        quizell_upate_login_record($email, $password, $access_token);
    29        // echo 'redirecting';
     30        //echo 'redirecting';
    3031        //var_dump($access_token);
    3132        //quizell_admin_redirect('dashboard');
  • quizell/trunk/includes/root-page.php

    r3089608 r3368946  
    22if (!defined('ABSPATH')) exit; // Exit if accessed directly
    33
     4/**
     5 * Page callback: only render inside WordPress admin wrap.
     6 * Redirect logic must have already run in load-$hook_suffix.
     7 */
    48function quizell_root()
    59{
    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>';
    1333}
    1434
    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 */
     39function quizell_resolve_route_for_redirect() {
     40    $route = quizell_get_route(); // current callback (may be empty)
     41    $token = quizell_access_token();
    1742
    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
    4050            quizell_destory_login_user();
    41             quizell_admin_redirect('signup');
     51            return 'signup';
    4252        }
     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;
    4359    }
    4460
     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    }
    4569
     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';
    4677}
    4778
    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 */
     82function 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}
    5487
    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 */
     91function 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>";
    6497    }
    6598}
    6699
    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 */
    83103function quizell_get_route()
    84104{
     
    86106}
    87107
     108/**
     109 * Token helpers (unchanged, simplified)
     110 */
    88111function quizell_access_token()
    89112{
     
    91114
    92115    if (!$access_token) {
     116        //echo 'gettingfromdb';
    93117        $access_token = quizell_token_from_db();
    94118    }
    95119
    96     return  $access_token;
     120    return $access_token;
    97121}
    98122
    99123function quizell_token_from_db()
    100124{
    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');
    116127}
    117 
  • quizell/trunk/plugin.php

    r3089615 r3368946  
    33
    44/**
    5  * Plugin Name: Quizell: AI-Powered Quizzes, Forms, and Product Recommendation Quiz for Enhanced Engagement
     5 * Plugin Name: Quizell – Quizzes, Forms, Product Recommendations & Funnels for WordPress
    66 * Plugin URI: https://app.quizell.com
    77 * Description: Quizell is an online E-commerce Quiz Generator that will increase your conversion rate, reduce return rate and improve your customer experience.
    88 * Author: Quizell
    99 * Author URI: https://quizell.com
    10  * Version: 1.5
     10 * Version: 2.0
    1111 * License: GPLv2 or later
    1212 * License URI: http://www.gnu.org/licenses/gpl-2.0.html
     
    1919const API_URL = 'https://api.quizell.com';
    2020const USER_DASHBOARD_APP = "https://app.quizell.com";
     21// Create a tab in the admin dashboard
    2122// Create a tab in the admin dashboard
    2223add_action('admin_menu', 'quizell_admin_menu');
     
    2425register_deactivation_hook(__FILE__, 'quizell_deactivate');
    2526
    26 
    2727function quizell_admin_menu()
    2828{
    29     add_menu_page(
     29    // capture hook suffix so we can use load-$hook_suffix
     30    $hook_suffix = add_menu_page(
    3031        'Quizell', // Page Title
    31         'Quizell',       // Menu Title
    32         'manage_options',    // Capability required to access
    33         'quizell',  // Menu Slug
    34         'quizell_root',   // Callback function to display the page content
    35         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 menu
     32        '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
    3738    );
    38 }
     39
     40    // run resolver / redirect before page output
     41    add_action("load-$hook_suffix", 'quizell_handle_load');
     42}
     43
    3944function quizell_deactivate()
    4045{
     
    4348}
    4449
    45 //api related functions
     50// include api and root page functions
    4651require_once(dirname(__FILE__) . '/api-calls.php');
    47 
    48 //main page
    4952require_once(dirname(__FILE__) . '/includes/root-page.php');
    5053
    51 
     54// enqueue assets still fine
    5255function quizell_enqueue_custom_assets() {
    53 
    54     // Check if the current screen is your plugin page
    5556    if (is_admin() && isset($_GET['page']) && $_GET['page'] === 'quizell') {
    5657        wp_enqueue_style('bootstrap', esc_url( plugins_url('/assets/style/bootstrap.min.css', __FILE__)), array(), '0.1.0');
    5758        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);
    5959        wp_enqueue_script('login-js', esc_url( plugins_url('/assets/js/script.js', __FILE__)), array('jquery'), '1.0', true);
    6060    }
    6161}
    6262add_action('admin_enqueue_scripts', 'quizell_enqueue_custom_assets');
     63
    6364function quizell_custom_scripts_enqueue() {
    6465    wp_enqueue_script('custom-script', esc_url(plugins_url('../js/quizell-script.js', __FILE__)), array('jquery'), '1.0', true);
     
    6667add_action('wp_enqueue_scripts', 'quizell_custom_scripts_enqueue');
    6768
     69/**
     70 * Load handler that resolves the route and redirects (if needed) BEFORE admin output.
     71 */
     72function 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
    6887function quizell_admin_redirect(string $page_name)
    6988{
    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));
    7294    die;
    7395}
  • quizell/trunk/readme.txt

    r3365077 r3368946  
    88License: GPLv2 or later
    99License URI: http://www.gnu.org/licenses/gpl-2.0.html
    10 Stable Tag: 1.5
     10Stable Tag: 2
    1111Tags: quiz, product quiz, product recommendation, ecommerce, lead generation, form builder, funnel, drag-and-drop, survey
    1212
     
    8989= 1.5 =
    9090- New Improved UI with extra functionalities
     91
     92== 2.0 ==
     93- Fixed Bugs
Note: See TracChangeset for help on using the changeset viewer.