Plugin Directory

Changeset 3249938


Ignore:
Timestamp:
03/03/2025 08:50:03 PM (11 months ago)
Author:
hippooo
Message:

1.5.8 - Improvements & Add PWA Support

Location:
hippoo/trunk
Files:
85 added
19 edited

Legend:

Unmodified
Added
Removed
  • hippoo/trunk/app/settings.php

    r3237006 r3249938  
    1 <?php
     1<?php // phpcs:disable PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage
    22
    33class HippooSettings
     
    2828    public function settings_init()
    2929    {
    30         register_setting('hippoo_settings', $this->slug);
     30        register_setting('hippoo_settings', $this->slug); // phpcs:ignore
    3131
    3232        add_settings_section(
    3333            'hippoo_invoice_settings_section',
    34             __('Hippoo invoice extension', 'hippoo'),
     34            null,
    3535            null,
    3636            $this->slug
    3737        );
    3838
     39        $description = '<p>' . esc_html__( 'Provides PDF invoices and shipping labels for easy printing. Also generates barcodes for orders and product SKUs inside the WooCommerce dashboard, allowing you to scan them with the Hippoo WooCommerce app\'s barcode scanner to quickly find orders and products.', 'hippoo' ) . '</p>';
    3940        add_settings_field(
    4041            'invoice_plugin_enabled',
    41             __('Enable Hippoo invoice and shipping label', 'hippoo'),
     42            __('Enable Hippoo invoice and shipping label', 'hippoo') . $description,
    4243            array($this, 'invoice_plugin_enabled_render'),
    4344            $this->slug,
     
    4647    }
    4748
    48         /***** Helper Function *****/
    49         public function render_checkbox_input($name, $value_key) {
    50             $value = isset($this->settings[$value_key]) ? $this->settings[$value_key] : 0;
    51             ?>
    52             <input type="checkbox" class="switch" name="hippoo_invoice_settings[<?php echo esc_attr($name); ?>]" <?php checked($value, 1); ?> value="1">
    53             <?php
    54         }
     49    /***** Helper Function *****/
     50    public function render_checkbox_input($name, $value_key) {
     51        $value = isset($this->settings[$value_key]) ? $this->settings[$value_key] : 0;
     52        ?>
     53        <input type="checkbox" class="switch" name="hippoo_invoice_settings[<?php echo esc_attr($name); ?>]" <?php checked($value, 1); ?> value="1">
     54        <?php
     55    }
    5556
    5657    public function invoice_plugin_enabled_render()
    5758    {
    5859        $value = isset($this->settings['invoice_plugin_enabled']) ? $this->settings['invoice_plugin_enabled'] : 0;
    59 ?>
     60    ?>
    6061        <input type="checkbox" class="switch" name="hippoo_settings[invoice_plugin_enabled]" <?php checked($value, 1); ?> value="1">
    6162    <?php
     
    6566    {
    6667    ?>
    67         <<form id="hippoo_settings" action="options.php" method="post">
    68     <h2><?php esc_html_e('Hippoo Settings', 'hippoo-setting'); ?></h2>
     68        <form id="hippoo_settings" action="options.php" method="post">
     69    <h2><?php esc_html_e('Hippoo Settings', 'hippoo'); ?></h2>
    6970    <div class="tabs">
    7071        <h2 class="nav-tab-wrapper">
     
    124125
    125126new HippooSettings();
    126 ?>
  • hippoo/trunk/app/utils.php

    r3117864 r3249938  
    33        $wp_upload_dir = wp_upload_dir();
    44        $temp_dir = implode( DIRECTORY_SEPARATOR, [ $wp_upload_dir['basedir'], 'hippoo', 'tmp' ] ) . DIRECTORY_SEPARATOR;
     5       
    56        if (!file_exists($temp_dir)) {
     7            // phpcs:ignore
    68            mkdir($temp_dir, 0755, true);
    79        }
  • hippoo/trunk/app/web_api.php

    r3237006 r3249938  
    88
    99function hippoo_woocommerce_no_stock_notification($product){
    10     update_post_meta($product->get_id(), 'out_stock_time', date('Y-m-d H:i:s'));
     10    update_post_meta($product->get_id(), 'out_stock_time', gmdate('Y-m-d H:i:s'));
    1111    hippoo_out_of_stock_send_notification_by_prodcut($product);
    1212}
     
    113113
    114114    $home_url = home_url();
    115     $parsed_url = parse_url($home_url);
     115    $parsed_url = wp_parse_url($home_url);
    116116    $cs_hostname = $parsed_url['host'];
    117117   
     
    149149
    150150    $home_url = home_url();
    151     $parsed_url = parse_url($home_url);
     151    $parsed_url = wp_parse_url($home_url);
    152152    $cs_hostname = $parsed_url['host'];
    153153   
     
    180180function hippoo_get_token_from_wc()
    181181{
    182     $key          = md5(microtime().rand());
     182    $key          = md5(microtime().wp_rand());
    183183    $store_url    = get_option('siteurl');
    184184    $store_url    = str_replace("http://", "https://", $store_url);
     
    230230    {
    231231        if (time() - filemtime($t) > 20000) {
    232             unlink($t);
     232            wp_delete_file($t);
    233233        }
    234234    }
     
    242242        if (file_exists($file)) {
    243243            $token = file_get_contents($file);
    244             unlink($file);
     244            wp_delete_file($file);
    245245            $token_json = json_decode($token);
    246246            return new WP_REST_Response ($token_json, 200);
     
    407407
    408408
     409/*
     410* WC Store Settings API Route
     411*/
     412add_action( 'rest_api_init', function () {
     413
     414    register_rest_route( 'wc/store/v1', 'settings', array(
     415        'methods'             => 'GET',
     416        'callback'            => 'hippoo_wc_store_settings',
     417        'permission_callback' => '__return_true',
     418    ));
     419
     420} );
     421
     422function hippoo_wc_store_settings() {
     423    $shop_title = get_bloginfo('name');
     424    $cart_url = wc_get_cart_url();
     425    $base_url = get_site_url();
     426
     427    $response_data = array(
     428        'shop_title' => $shop_title,
     429        'cart_url'   => $cart_url,
     430        'base_url'   => $base_url,
     431    );
     432
     433    return new WP_REST_Response($response_data, 200);
     434}
  • hippoo/trunk/app/web_api_auth.php

    r3237006 r3249938  
    116116        $page = --$page * 25;
    117117        global $wpdb;
    118         $query = "SELECT p.ID as post_id, p.post_title, pm.meta_value as product_quantity, o.meta_value as out_of_stock_date
    119                                         FROM $wpdb->posts AS p
    120                                         JOIN $wpdb->postmeta AS pm ON p.ID = pm.post_id
    121                                         JOIN $wpdb->postmeta AS o ON p.ID = o.post_id
    122                                         WHERE p.post_type = 'product'
    123                                         AND p.post_status = 'publish'
    124                                         AND o.meta_key = 'out_stock_time'
    125                                         AND pm.meta_key = '_stock'
    126                                         AND pm.meta_value <= 0
    127                                         ORDER BY out_of_stock_date DESC limit $page,25";
    128         $rows = $wpdb->get_results($wpdb->prepare($query));
     118       
     119        // phpcs:ignore
     120        $rows = $wpdb->get_results(
     121            $wpdb->prepare(
     122                "SELECT p.ID as post_id, p.post_title, pm.meta_value as product_quantity, o.meta_value as out_of_stock_date
     123                FROM $wpdb->posts AS p
     124                JOIN $wpdb->postmeta AS pm ON p.ID = pm.post_id
     125                JOIN $wpdb->postmeta AS o ON p.ID = o.post_id
     126                WHERE p.post_type = 'product'
     127                AND p.post_status = 'publish'
     128                AND o.meta_key = 'out_stock_time'
     129                AND pm.meta_key = '_stock'
     130                AND pm.meta_value <= 0
     131                ORDER BY out_of_stock_date DESC limit %d,25",
     132                $page
     133            )
     134        );
    129135
    130136        if (empty($rows)) {
     
    148154    function hippoo_media_upload()
    149155    {
    150         if (empty($_FILES['file'])) {
     156        // phpcs:ignore
     157        $file = isset($_FILES['file']) ? sanitize_text_field($_FILES['file']) : '';
     158
     159        if (empty($file)) {
    151160            return new WP_Error('invalid_file', 'Invalid file.', ['status' => 400]);
    152161        }
    153         $file = $_FILES['file'];
     162       
    154163        $upload = wp_upload_bits($file['name'], null, file_get_contents($file['tmp_name']));
    155164
  • hippoo/trunk/assets/css/admin-style.css

    r3117864 r3249938  
    2525/* General Settigs */
    2626
    27 #hippoo_settings .form-table th {
     27#hippoo_settings .form-table {
     28    max-width: 800px;
    2829    vertical-align: middle;
    2930}
     
    3132#hippoo_settings .form-table:first-of-type tr:first-child {
    3233    border-bottom: 1px solid #DFDFDF;
     34}
     35
     36#hippoo_settings .form-table tr.disabled * {
     37    color: #818181;
     38    cursor: not-allowed;
    3339}
    3440
     
    3642    font-size: 16px;
    3743    font-weight: normal;
     44    vertical-align: middle;
     45    width: 100%;
     46}
     47
     48#hippoo_settings .form-table td {
     49    text-align: end;
     50    vertical-align: top;
     51    text-wrap: nowrap;
     52    max-width: 100px;
     53}
     54
     55#hippoo_settings .form-table td > * {
     56    float: right;
    3857}
    3958
     
    7998
    8099/* Form Elements */
     100
     101#hippoo_settings input[type="text"] {
     102    width: 150px;
     103    height: 39px;
     104}
    81105
    82106#hippoo_settings select {
  • hippoo/trunk/assets/js/admin-script.js

    r3117864 r3249938  
    7777        moveCarouselNext();
    7878    });
     79
     80    /* PWA */
     81    function toggleRouteNameField() {
     82        if ($('#pwa_plugin_enabled').is(':checked')) {
     83            $('#pwa_route_name').prop('disabled', false);
     84            $('#pwa_route_name').closest('tr').removeClass('disabled');
     85        } else {
     86            $('#pwa_route_name').prop('disabled', true);
     87            $('#pwa_route_name').closest('tr').addClass('disabled');
     88        }
     89    }
     90
     91    toggleRouteNameField();
     92
     93    $(document).on('click', '#hippoo_settings #pwa_plugin_enabled', function() {
     94        console.log("PWA checkbox clicked");
     95        toggleRouteNameField();
     96    });
    7997});
  • hippoo/trunk/hippoo.php

    r3237006 r3249938  
    22/**
    33 * Plugin Name: Hippoo mobile app for woocommerce
    4  * Version: 1.5.0
     4 * Version: 1.5.8
    55 * Plugin URI: https://Hippoo.app/
    66 * Description: Best WooCommerce App Alternative – Manage orders and products on the go with real-time notifications, seamless order and product management, and powerful add-ons. Available for Android & iOS. 🚀.
     
    3030}
    3131
     32define('hippoo_version', '1.5.8');
    3233define('hippoo_path', dirname(__file__).DIRECTORY_SEPARATOR);
    3334define('hippoo_main_file_path', __file__);
     
    4142include_once(hippoo_path.'app'.DIRECTORY_SEPARATOR.'web_api.php');
    4243include_once(hippoo_path.'app'.DIRECTORY_SEPARATOR.'settings.php');
     44include_once(hippoo_path.'app'.DIRECTORY_SEPARATOR.'pwa.php');
    4345
    4446
     
    4850add_action( 'after_setup_theme', 'hippoo_textdomain' );
    4951
    50 
    5152function hippoo_page_style( $hook ) {
    52         wp_enqueue_style(  'hippoo-main-page-style', hippoo_url . "css/style.css", null, 1.0 );
    53         wp_enqueue_style(  'hippoo-main-admin-style', hippoo_url . "css/admin-style.css", null, 1.0 );
    54         wp_enqueue_script( 'hippoo-main-scripts', hippoo_url . "js/admin-script.js", [ 'jquery', 'jquery-ui-core', 'jquery-ui-tooltip' ] );
     53        wp_enqueue_style(  'hippoo-main-page-style', hippoo_url . "css/style.css", null, hippoo_version );
     54        wp_enqueue_style(  'hippoo-main-admin-style', hippoo_url . "css/admin-style.css", null, hippoo_version );
     55        wp_enqueue_script( 'hippoo-main-scripts', hippoo_url . "js/admin-script.js", [ 'jquery', 'jquery-ui-core', 'jquery-ui-tooltip' ], hippoo_version, true );
    5556}
    5657add_action( 'admin_enqueue_scripts', 'hippoo_page_style' );
     
    99100    update_option('hippoo_settings', $settings);
    100101}
    101 
    102 ?>
  • hippoo/trunk/invoice/api.php

    r3117864 r3249938  
    55    $controller->register_routes();
    66});
    7 ?>
  • hippoo/trunk/invoice/assets/css/admin-style.css

    r3117864 r3249938  
    192192
    193193.barcode-tooltip {
    194     position: relative;
    195194    border: 1px solid #8B8B8B !important;
    196     background: #FFFFFF !important;
     195    background-color: #FFFFFF !important;
    197196    box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.1) !important;
    198197    opacity: 1 !important;
    199198    text-align: center;
     199    justify-items: center;
    200200    font-size: 18px;
    201201    padding: 10px 25px !important;
  • hippoo/trunk/invoice/main.php

    r3117864 r3249938  
    1010add_action( 'plugins_loaded', 'hippoo_load_textdomain' );
    1111function hippoo_load_textdomain() {
    12     load_plugin_textdomain( 'hippoo-invoice', FALSE, HIPPOO_INVOICE_PLUGIN_LANG_DIR );
     12    load_plugin_textdomain( 'hippoo-invoice', false, HIPPOO_INVOICE_PLUGIN_LANG_DIR );
    1313}
    1414add_action( 'admin_enqueue_scripts', 'hippoo_enqueue_scripts' );
    1515function hippoo_enqueue_scripts() {
    16     wp_enqueue_style(  'hippoo-styles', HIPPOO_INVOICE_PLUGIN_URL . 'assets/css/admin-style.css' );
    17     wp_enqueue_script( 'hippoo-scripts', HIPPOO_INVOICE_PLUGIN_URL . 'assets/js/admin-script.js', [ 'jquery', 'jquery-ui-core', 'jquery-ui-tooltip' ] );
     16    wp_enqueue_style(  'hippoo-styles', HIPPOO_INVOICE_PLUGIN_URL . 'assets/css/admin-style.css', null, hippoo_version );
     17    wp_enqueue_script( 'hippoo-scripts', HIPPOO_INVOICE_PLUGIN_URL . 'assets/js/admin-script.js', [ 'jquery', 'jquery-ui-core', 'jquery-ui-tooltip' ], hippoo_version, true );
     18}
     19add_action('admin_head', 'hippoo_force_admin_styles', 9999);
     20function hippoo_force_admin_styles() {
     21    ?>
     22    <style type="text/css">
     23        .barcode-tooltip {
     24            background-color: #ffffff !important;
     25        }
     26    </style>
     27    <?php
    1828}
    1929add_action( 'woocommerce_init', 'hippoo_invoice_load' );
    20 
    2130function hippoo_invoice_load() {
    2231   
     
    4251add_filter( 'init', 'hippoo_handle_html_display' );
    4352function hippoo_handle_html_display() {
    44     if ( isset( $_GET['download_type'] ) && isset( $_GET['post_id'] ) ) {
    45         $post_id = sanitize_text_field( $_GET['post_id'] );
    46         $download_type = sanitize_text_field( $_GET['download_type'] );
     53    $_get = map_deep($_GET, 'sanitize_key'); // phpcs:ignore
     54
     55    if ( isset( $_get['download_type'] ) && isset( $_get['post_id'] ) ) {
     56        $post_id = sanitize_text_field( $_get['post_id'] );
     57        $download_type = sanitize_text_field( $_get['download_type'] );
    4758
    4859        if ( user_has_order_access( $post_id ) || current_user_can( 'administrator' ) ) {
    4960            $html_doc = generate_html( $post_id, $download_type );
    5061
    51             echo  $html_doc;
     62            echo $html_doc; // phpcs:ignore
    5263        } else {
    5364            echo "You do not have access to view this order.";
     
    5667    }
    5768}
    58 
    59 ?>
  • hippoo/trunk/invoice/settings.php

    r3117864 r3249938  
    1 <?php
     1<?php // phpcs:disable PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage
    22
    33class HippooInvoiceSettings {
     
    3737
    3838    public function settings_init() {
    39         register_setting( 'hippoo_invoice_settings', $this->slug );
     39        register_setting('hippoo_invoice_settings', $this->slug); // phpcs:ignore
    4040
    4141        $this->general_settings_init();
     
    4848        <form id="hippoo_invoice_settings" action="options.php" method="post">
    4949            <?php wp_nonce_field('hippoo_invoice_settings_save', 'hippoo_invoice_settings_nonce'); ?>
    50             <h2><?php esc_html_e('Hippoo invoice and shipping label', 'hippoo-invoice'); ?></h2>
     50            <h2><?php esc_html_e('Hippoo invoice and shipping label', 'hippoo'); ?></h2>
    5151
    5252            <div class="tabs">
    5353                <h2 class="nav-tab-wrapper">
    54                     <a href="#tab-settings" class="nav-tab nav-tab-active"><?php esc_html_e('Settings', 'hippoo-invoice'); ?></a>
     54                    <a href="#tab-settings" class="nav-tab nav-tab-active"><?php esc_html_e('Settings', 'hippoo'); ?></a>
    5555                </h2>
    5656
     
    7171        add_settings_section(
    7272            'hippoo_general_settings_section',
    73             __( 'General settings', 'hippoo-invoice' ),
     73            __( 'General settings', 'hippoo' ),
    7474            null,
    7575            $this->slug
     
    7878        add_settings_field(
    7979            'shop_logo',
    80             __( 'Shop logo', 'hippoo-invoice' ),
     80            __( 'Shop logo', 'hippoo' ),
    8181            array( $this, 'shop_logo_render' ),
    8282            $this->slug,
     
    8686        add_settings_field(
    8787            'language_direction',
    88             __( 'Language direction', 'hippoo-invoice' ),
     88            __( 'Language direction', 'hippoo' ),
    8989            array( $this, 'language_direction_render' ),
    9090            $this->slug,
     
    9494        add_settings_field(
    9595            'show_barcode_order_list',
    96             __( 'Show barcode(Order id) in order list', 'hippoo-invoice' ),
     96            __( 'Show barcode(Order id) in order list', 'hippoo' ),
    9797            array( $this, 'show_barcode_order_list_render' ),
    9898            $this->slug,
     
    102102        add_settings_field(
    103103            'show_barcode_order_details',
    104             __( 'Show barcode(Order id) in order details', 'hippoo-invoice' ),
     104            __( 'Show barcode(Order id) in order details', 'hippoo' ),
    105105            array( $this, 'show_barcode_order_details_render' ),
    106106            $this->slug,
     
    110110        add_settings_field(
    111111            'show_barcode_products_list',
    112             __( 'Show barcode(SKU) in products list', 'hippoo-invoice' ),
     112            __( 'Show barcode(SKU) in products list', 'hippoo' ),
    113113            array( $this, 'show_barcode_products_list_render' ),
    114114            $this->slug,
     
    118118        add_settings_field(
    119119            'show_barcode_products_details',
    120             __( 'Show barcode(SKU) in products details', 'hippoo-invoice' ),
     120            __( 'Show barcode(SKU) in products details', 'hippoo' ),
    121121            array( $this, 'show_barcode_products_details_render' ),
    122122            $this->slug,
     
    128128        add_settings_section(
    129129            'hippoo_invoice_settings_section',
    130             __( 'Invoice settings', 'hippoo-invoice' ),
     130            __( 'Invoice settings', 'hippoo' ),
    131131            null,
    132132            $this->slug
     
    136136        add_settings_field(
    137137            'font_name',
    138             __( 'Font name', 'hippoo-invoice' ),
     138            __( 'Font name', 'hippoo' ),
    139139            array( $this, 'font_name_render' ),
    140140            $this->slug,
     
    144144        add_settings_field(
    145145            'invoice_show_logo',
    146             __( 'Show logo', 'hippoo-invoice' ),
     146            __( 'Show logo', 'hippoo' ),
    147147            array( $this, 'invoice_show_logo_render' ),
    148148            $this->slug,
     
    152152        add_settings_field(
    153153            'show_customer_note',
    154             __( 'Show customer note', 'hippoo-invoice' ),
     154            __( 'Show customer note', 'hippoo' ),
    155155            array( $this, 'show_customer_note_render' ),
    156156            $this->slug,
     
    160160        add_settings_field(
    161161            'show_product_sku_invoice',
    162             __( 'Show product SKU in invoice', 'hippoo-invoice' ),
     162            __( 'Show product SKU in invoice', 'hippoo' ),
    163163            array( $this, 'show_product_sku_invoice_render' ),
    164164            $this->slug,
     
    168168        add_settings_field(
    169169            'footer_description',
    170             __( 'Footer description', 'hippoo-invoice' ),
     170            __( 'Footer description', 'hippoo' ),
    171171            array( $this, 'footer_description_render' ),
    172172            $this->slug,
     
    178178        add_settings_section(
    179179            'hippoo_shipping_settings_section',
    180             __( 'Shipping label settings', 'hippoo-invoice' ),
     180            __( 'Shipping label settings', 'hippoo' ),
    181181            null,
    182182            $this->slug
     
    186186        add_settings_field(
    187187            'shipping_show_logo',
    188             __( 'Show logo', 'hippoo-invoice' ),
     188            __( 'Show logo', 'hippoo' ),
    189189            array( $this, 'shipping_show_logo_render' ),
    190190            $this->slug,
     
    194194        add_settings_field(
    195195            'shipping_calculate_weight',
    196             __( 'Calculate Weight', 'hippoo-invoice' ),
     196            __( 'Calculate Weight', 'hippoo' ),
    197197            array( $this, 'shipping_calculate_weight_render' ),
    198198            $this->slug,
     
    202202        add_settings_field(
    203203            'shipping_courier_logo',
    204             __( 'Courier logo', 'hippoo-invoice' ),
     204            __( 'Courier logo', 'hippoo' ),
    205205            array( $this, 'shipping_courier_logo_render' ),
    206206            $this->slug,
     
    226226            <div class="uploader">
    227227                <input type="hidden" id="shop_logo_field" name="hippoo_invoice_settings[shop_logo]" value="<?php echo esc_url($image_url); ?>" />
    228                 <img id="shop_logo" src="<?php echo esc_url($image_url); ?>" width="64" height="64" alt="<?php esc_attr_e('Shop Logo', 'hippoo-invoice'); ?>" />
     228                <img id="shop_logo" src="<?php echo esc_url($image_url); ?>" width="64" height="64" alt="<?php esc_attr_e('Shop Logo', 'hippoo'); ?>" />
    229229                <div class="upload_buttons">
    230                     <button id="shop_logo_upload_button" class="button upload"><?php esc_html_e('Upload Logo', 'hippoo-invoice'); ?></button>
    231                     <button id="shop_logo_clear_button" class="button remove"><?php esc_html_e('Remove', 'hippoo-invoice'); ?></button>
    232                     <p class="desc"><?php esc_html_e('512x512 is perfect size for logo', 'hippoo-invoice'); ?></p>
     230                    <button id="shop_logo_upload_button" class="button upload"><?php esc_html_e('Upload Logo', 'hippoo'); ?></button>
     231                    <button id="shop_logo_clear_button" class="button remove"><?php esc_html_e('Remove', 'hippoo'); ?></button>
     232                    <p class="desc"><?php esc_html_e('512x512 is perfect size for logo', 'hippoo'); ?></p>
    233233                </div>
    234234            </div>
     
    251251            foreach ( $options as $value => $label ) {
    252252                $selected_attr = selected( $selected, $value, false );
    253                 echo '<option value="' . esc_attr( $value ) . '" ' . $selected_attr . '>' . esc_html( $label ) . '</option>';
     253                echo '<option value="' . esc_attr( $value ) . '" ' . esc_html($selected_attr) . '>' . esc_html( $label ) . '</option>';
    254254            }
    255255            ?>
     
    286286                $selected_attr = selected($selected, $font_name, false);
    287287                ?>
    288                 <option value="<?php echo esc_attr($font_name); ?>" <?php echo $selected_attr; ?>><?php echo esc_html($font_name); ?></option>
     288                <option value="<?php echo esc_attr($font_name); ?>" <?php echo esc_html($selected_attr); ?>><?php echo esc_html($font_name); ?></option>
    289289                <?php
    290290            }
     
    309309        $value = isset( $this->settings['footer_description'] ) ? esc_textarea( $this->settings['footer_description'] ) : '';
    310310        ?>
    311         <textarea rows="5" cols="35" id="footer_description" name="hippoo_invoice_settings[footer_description]"><?php echo $value; ?></textarea>
     311        <textarea rows="5" cols="35" id="footer_description" name="hippoo_invoice_settings[footer_description]"><?php echo esc_html($value); ?></textarea>
    312312        <?php
    313313    }
     
    332332                <img id="courier_logo" src="<?php echo esc_url( $image_url ); ?>" width="64" height="64" />
    333333                <div class="upload_buttons">
    334                     <button id="courier_logo_upload_button" class="button upload"><?php _e( 'Upload Logo', 'hippoo-invoice' ); ?></button>
    335                     <button id="courier_logo_clear_button" class="button remove"><?php _e( 'Remove', 'hippoo-invoice' ); ?></button>
     334                    <button id="courier_logo_upload_button" class="button upload"><?php esc_html_e( 'Upload Logo', 'hippoo' ); ?></button>
     335                    <button id="courier_logo_clear_button" class="button remove"><?php esc_html_e( 'Remove', 'hippoo' ); ?></button>
    336336                </div>
    337337            </div>
     
    352352        ?>
    353353        <div class="notice notice-info is-dismissible">
    354             <p><?php _e( 'Setting saved.', 'hippoo-invoice' ); ?></p>
     354            <p><?php esc_html_e( 'Setting saved.', 'hippoo' ); ?></p>
    355355        </div>
    356356        <?php
     
    358358   
    359359    public function handle_dismiss() {
    360         if ( ! isset( $_REQUEST['dismiss_admin_notice_nonce'] ) || ! wp_verify_nonce( $_REQUEST['dismiss_admin_notice_nonce'], 'dismiss_admin_notice_nonce' ) ) {
     360        $nonce = ( isset( $_REQUEST['dismiss_admin_notice_nonce'] ) ) ? sanitize_key( $_REQUEST['dismiss_admin_notice_nonce'] ) : '';
     361
     362        if ( ! wp_verify_nonce( $nonce, 'dismiss_admin_notice_nonce' ) ) {
    361363            wp_send_json_error( array( 'message' => 'Nonce verification failed.' ) );
    362364        }
  • hippoo/trunk/invoice/templates/simple/factor.php

    r3117864 r3249938  
    1 <html>
     1<?php // phpcs:disable PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?><html>
    22<head>
    3     <title><?php esc_html_e( 'Invoice', 'hippoo-invoice' ); ?> <?php echo esc_html( $order->get_id() ); ?></title>
     3    <title><?php esc_html_e( 'Invoice', 'hippoo' ); ?> <?php echo esc_html( $order->get_id() ); ?></title>
    44    <meta charset="utf-8">
    55    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
     
    139139                    <td class="shop-logo text-left">
    140140                        <?php if ( isset( $settings['invoice_show_logo'] ) && ! empty( $shop_logo ) ) : ?>
    141                             <img src="data:image/jpeg;base64,<?php echo esc_attr( $shop_logo ); ?>" width="48" alt="<?php esc_attr_e( 'Shop Logo', 'hippoo-invoice' ); ?>">
     141                            <img src="data:image/jpeg;base64,<?php echo esc_attr( $shop_logo ); ?>" width="48" alt="<?php esc_attr_e( 'Shop Logo', 'hippoo' ); ?>">
    142142                        <?php endif; ?>
    143143                    </td>
     
    147147                    </td>
    148148                    <td class="invoice-info">
    149                         <div class="invoice-id"><?php esc_html_e( 'Invoice', 'hippoo-invoice' ); ?> <?php echo esc_html( $order->get_id() ); ?></div>
     149                        <div class="invoice-id"><?php esc_html_e( 'Invoice', 'hippoo' ); ?> <?php echo esc_html( $order->get_id() ); ?></div>
    150150                        <div class="invoice-barcode">
    151                             <img src="data:image/jpeg;base64,<?php echo esc_attr( $invoice_barcode ); ?>" alt="<?php esc_attr_e( 'Invoice Barcode', 'hippoo-invoice' ); ?>">
     151                            <img src="data:image/jpeg;base64,<?php echo esc_attr( $invoice_barcode ); ?>" alt="<?php esc_attr_e( 'Invoice Barcode', 'hippoo' ); ?>">
    152152                        </div>
    153153                    </td>
     
    163163            <thead>
    164164                <tr>
    165                     <th class="text-left bill"><?php esc_html_e( 'Bill to:', 'hippoo-invoice' ); ?></th>
     165                    <th class="text-left bill"><?php esc_html_e( 'Bill to:', 'hippoo' ); ?></th>
    166166                    <?php if ( isset( $settings['show_customer_note'] ) && $settings['show_customer_note'] && $customer_note ) : ?>
    167                         <th class="text-left"><?php esc_html_e( 'Customer note:', 'hippoo-invoice' ); ?></th>
     167                        <th class="text-left"><?php esc_html_e( 'Customer note:', 'hippoo' ); ?></th>
    168168                    <?php endif; ?>
    169169                </tr>
     
    181181            <thead>
    182182                <tr>
    183                     <th class="text-left"><?php esc_html_e( 'Item', 'hippoo-invoice' ); ?></th>
     183                    <th class="text-left"><?php esc_html_e( 'Item', 'hippoo' ); ?></th>
    184184                    <?php if ( isset( $settings['show_product_sku_invoice'] ) && $settings['show_product_sku_invoice'] && ! empty( $sku ) ) : ?>
    185                         <th class="text-center"><?php esc_html_e( 'SKU', 'hippoo-invoice' ); ?></th>
    186                     <?php endif; ?>
    187                     <th class="text-center"><?php esc_html_e( 'Qty', 'hippoo-invoice' ); ?></th>
    188                     <th class="text-center"><?php esc_html_e( 'Price', 'hippoo-invoice' ); ?></th>
    189                     <th class="text-right"><?php esc_html_e( 'Amount', 'hippoo-invoice' ); ?></th>
     185                        <th class="text-center"><?php esc_html_e( 'SKU', 'hippoo' ); ?></th>
     186                    <?php endif; ?>
     187                    <th class="text-center"><?php esc_html_e( 'Qty', 'hippoo' ); ?></th>
     188                    <th class="text-center"><?php esc_html_e( 'Price', 'hippoo' ); ?></th>
     189                    <th class="text-right"><?php esc_html_e( 'Amount', 'hippoo' ); ?></th>
    190190                </tr>
    191191            </thead>
     
    201201                    <?php if ( isset( $settings['show_product_sku_invoice'] ) && $settings['show_product_sku_invoice'] && ! empty( $sku ) ) : ?>
    202202                        <td class="text-center">
    203                             <img src="data:image/jpeg;base64,<?php echo esc_attr( base64_encode( generate_barcode_image( $product->get_sku() ) ) ); ?>" alt="<?php esc_attr_e( 'Product SKU Barcode', 'hippoo-invoice' ); ?>">
     203                            <img src="data:image/jpeg;base64,<?php echo esc_attr( base64_encode( generate_barcode_image( $product->get_sku() ) ) ); ?>" alt="<?php esc_attr_e( 'Product SKU Barcode', 'hippoo' ); ?>">
    204204                            <div class="sku"><?php echo esc_html( $product->get_sku() ); ?></div>
    205205                        </td>
     
    214214                <tr class="subtotal-row">
    215215                    <td colspan="2"></td>
    216                     <td colspan="1" class="text-right"><?php esc_html_e( 'Subtotal', 'hippoo-invoice' ); ?></td>
     216                    <td colspan="1" class="text-right"><?php esc_html_e( 'Subtotal', 'hippoo' ); ?></td>
    217217                    <td colspan="<?php echo ( isset( $settings['show_product_sku_invoice'] ) && $settings['show_product_sku_invoice'] ) ? 2 : 1; ?>" class="text-right"><?php echo esc_html( $order->get_subtotal() ); ?> <?php echo esc_html( $order->get_currency() ); ?></td>
    218218                </tr>
     
    220220                    <tr class="discount-row">
    221221                        <td colspan="2"></td>
    222                         <td colspan="1" class="text-right"><?php esc_html_e( 'Discount', 'hippoo-invoice' ); ?></td>
     222                        <td colspan="1" class="text-right"><?php esc_html_e( 'Discount', 'hippoo' ); ?></td>
    223223                        <td colspan="<?php echo ( isset( $settings['show_product_sku_invoice'] ) && $settings['show_product_sku_invoice'] ) ? 2 : 1; ?>" class="text-right">-<?php echo esc_html( $order->get_total_discount() ); ?> <?php echo esc_html( $order->get_currency() ); ?></td>
    224224                    </tr>
     
    227227                    <tr class="tax-row">
    228228                        <td colspan="2"></td>
    229                         <td colspan="1" class="text-right"><?php esc_html_e( 'Tax', 'hippoo-invoice' ); ?></td>
     229                        <td colspan="1" class="text-right"><?php esc_html_e( 'Tax', 'hippoo' ); ?></td>
    230230                        <td colspan="<?php echo ( isset( $settings['show_product_sku_invoice'] ) && $settings['show_product_sku_invoice'] ) ? 2 : 1; ?>" class="text-right">+<?php echo esc_html( $order->get_total_tax() ); ?> <?php echo esc_html( $order->get_currency() ); ?></td>
    231231                    </tr>
     
    233233                <tr class="total-row">
    234234                    <td colspan="2"></td>
    235                     <td colspan="1" class="text-right"><?php esc_html_e( 'Total', 'hippoo-invoice' ); ?></td>
     235                    <td colspan="1" class="text-right"><?php esc_html_e( 'Total', 'hippoo' ); ?></td>
    236236                    <td colspan="<?php echo ( isset( $settings['show_product_sku_invoice'] ) && $settings['show_product_sku_invoice'] ) ? 2 : 1; ?>" class="text-right"><?php echo esc_html( $order->get_total() ); ?> <?php echo esc_html( $order->get_currency() ); ?></td>
    237237                </tr>
  • hippoo/trunk/invoice/templates/simple/label.php

    r3117864 r3249938  
    1 <html>
     1<?php // phpcs:disable PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?><html>
    22<head>
    3     <title><?php esc_html_e( 'Label', 'hippoo-invoice' ); ?></title>
     3    <title><?php esc_html_e( 'Label', 'hippoo' ); ?></title>
    44    <meta charset="utf-8">
    55    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
     
    7171                <tr>
    7272                    <td class="shop-info">
    73                         <h4 class="text-left"><?php esc_html_e( 'From:', 'hippoo-invoice' ); ?></h4><br>
     73                        <h4 class="text-left"><?php esc_html_e( 'From:', 'hippoo' ); ?></h4><br>
    7474                        <div class="address"><?php echo wp_kses_post( $shop_address ); ?></div>
    7575                    </td>
    7676                    <td class="invoice-logo text-right">
    7777                        <?php if ( isset( $settings['shipping_show_logo'] ) && ! empty( $shop_logo ) ) : ?>
    78                             <img src="data:image/jpeg;base64,<?php echo esc_attr( $shop_logo ); ?>" width="48" alt="<?php esc_attr_e( 'Shop Logo', 'hippoo-invoice' ); ?>">
     78                            <img src="data:image/jpeg;base64,<?php echo esc_attr( $shop_logo ); ?>" width="48" alt="<?php esc_attr_e( 'Shop Logo', 'hippoo' ); ?>">
    7979                        <?php endif; ?>
    8080                    </td>
     
    8282                <tr>
    8383                    <td colspan="2">
    84                         <h4 class="text-left"><?php esc_html_e( 'Ship to:', 'hippoo-invoice' ); ?></h4><br>
     84                        <h4 class="text-left"><?php esc_html_e( 'Ship to:', 'hippoo' ); ?></h4><br>
    8585                        <div class="address">
    8686                            <?php echo esc_html( $order->get_formatted_shipping_full_name() ); ?><br>
     
    9292                <tr>
    9393                    <td colspan="2" class="additional">
    94                         <h4><?php esc_html_e( 'Weight:', 'hippoo-invoice' ); ?> <?php echo esc_html( $weight ); ?> <?php echo esc_html( get_option( 'woocommerce_weight_unit' ) ); ?></h4>
     94                        <h4><?php esc_html_e( 'Weight:', 'hippoo' ); ?> <?php echo esc_html( $weight ); ?> <?php echo esc_html( get_option( 'woocommerce_weight_unit' ) ); ?></h4>
    9595                    </td>
    9696                </tr>
     
    9898                <tr class="no-border">
    9999                    <td colspan="2" class="text-center">
    100                         <h4><?php esc_html_e( 'Invoice', 'hippoo-invoice' ); ?> <?php echo esc_html( $order->get_id() ); ?></h4><br>
     100                        <h4><?php esc_html_e( 'Invoice', 'hippoo' ); ?> <?php echo esc_html( $order->get_id() ); ?></h4><br>
    101101                        <div class="invoice-barcode">
    102                             <img src="data:image/jpeg;base64,<?php echo esc_attr( $invoice_barcode ); ?>" alt="<?php esc_attr_e( 'Invoice Barcode', 'hippoo-invoice' ); ?>">
     102                            <img src="data:image/jpeg;base64,<?php echo esc_attr( $invoice_barcode ); ?>" alt="<?php esc_attr_e( 'Invoice Barcode', 'hippoo' ); ?>">
    103103                            <br><br><br>
    104104                            <?php if ( $settings['shipping_courier_logo'] ) : ?>
    105                                 <img class="courier_logo" src="data:image/jpeg;base64,<?php echo esc_attr( $shipping_courier_logo ); ?>" alt="<?php esc_attr_e( 'Courier Logo', 'hippoo-invoice' ); ?>">
     105                                <img class="courier_logo" src="data:image/jpeg;base64,<?php echo esc_attr( $shipping_courier_logo ); ?>" alt="<?php esc_attr_e( 'Courier Logo', 'hippoo' ); ?>">
    106106                            <?php endif; ?>
    107107                        </div>
  • hippoo/trunk/invoice/web_api_auth.php

    r3117864 r3249938  
    104104        $html_doc = generate_html( $order_id, 'factor' );
    105105        header( 'Content-Type: text/html; charset=utf-8' );
    106         echo $html_doc;
     106        echo $html_doc; // phpcs:ignore
    107107        exit;
    108108    }
     
    112112        $html_doc = generate_html( $order_id, 'label' );
    113113        header( 'Content-Type: text/html; charset=utf-8' );
    114         echo $html_doc;
     114        echo $html_doc; // phpcs:ignore
    115115        exit;
    116116    }
    117117}
    118 ?>
  • hippoo/trunk/invoice/woocommerce/my-account.php

    r3117864 r3249938  
    1 <?php
     1<?php // phpcs:disable PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage
    22
    33class Hippoo_Ticket_Woo_My_Account {
     
    1010
    1111    function enqueue_scripts() {
    12         wp_enqueue_style( 'hippoo-css', HIPPOO_INVOICE_PLUGIN_URL . 'assets/css/style.css' );
    13         wp_enqueue_script( 'hippoo-js', HIPPOO_INVOICE_PLUGIN_URL . 'assets/js/script.js', array( 'jquery' ), null, true ); // Enqueue script with dependencies
     12        wp_enqueue_style( 'hippoo-css', HIPPOO_INVOICE_PLUGIN_URL . 'assets/css/style.css', [], hippoo_version );
     13        wp_enqueue_script( 'hippoo-js', HIPPOO_INVOICE_PLUGIN_URL . 'assets/js/script.js', array( 'jquery' ), hippoo_version, true ); // Enqueue script with dependencies
    1414    }
    1515
     
    4848        $order_id = $order->get_id();
    4949
    50         echo '<a href="?post_id=' . $order_id . '&download_type=factor" target="_blank" class="factor-download"><img src="' . HIPPOO_INVOICE_PLUGIN_URL . 'assets/images/invoice-factor.svg" /></a>';
     50        echo '<a href="?post_id=' . intval($order_id) . '&download_type=factor" target="_blank" class="factor-download"><img src="' . esc_url(HIPPOO_INVOICE_PLUGIN_URL . 'assets/images/invoice-factor.svg') . '" /></a>';
    5151    }
    5252}
  • hippoo/trunk/invoice/woocommerce/order-test.php

    r3117864 r3249938  
    4646        add_meta_box(
    4747            'address_validation_actions',
    48             __( 'Validate Address', 'textdomain' ),
     48            __( 'Validate Address', 'hippoo' ),
    4949            array( $this, 'render_address_validation_actions' ),
    5050            $screen,
  • hippoo/trunk/invoice/woocommerce/order.php

    r3117864 r3249938  
    1 <?php
     1<?php // phpcs:disable PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage
    22
    33## Add Colums to orders table
     
    4747        case 'order_id_barcode':
    4848            $barcode = base64_encode( generate_barcode_html( $order_id ) );
    49             echo '<img src="' . HIPPOO_INVOICE_PLUGIN_URL . 'assets/images/barcode-scanner.svg" data-src="' . $barcode . '" data-text="' . $order_id . '" class="hippoo-tooltip" />';
     49            echo '<img src="' . esc_url(HIPPOO_INVOICE_PLUGIN_URL . 'assets/images/barcode-scanner.svg') . '" data-src="' . esc_attr($barcode) . '" data-text="' . esc_attr($order_id) . '" class="hippoo-tooltip" />';
    5050            break;
    5151
    5252        case 'order_print':
    53             echo '<a href="?post_id=' . $order_id . '&download_type=factor" target="_blank" data-barcode="' .
    54                 $order_id . '" data-type="factor" data-text="Invoice" class="hippoo-tooltip" title="Invoice"><img src="' .
    55                 HIPPOO_INVOICE_PLUGIN_URL . 'assets/images/invoice-factor.svg" /></a>';
     53            echo '<a href="?post_id=' . intval($order_id) . '&download_type=factor" target="_blank" data-barcode="' .
     54                esc_attr($order_id) . '" data-type="factor" data-text="Invoice" class="hippoo-tooltip" title="Invoice"><img src="' .
     55                esc_url(HIPPOO_INVOICE_PLUGIN_URL . 'assets/images/invoice-factor.svg') . '" /></a>';
    5656           
    57             echo '<a href="?post_id=' . $order_id . '&download_type=label" target="_blank" data-barcode="' .
    58                 $order_id . '" data-type="label" data-text="Shipping Label" class="hippoo-tooltip" title="Shipping Label"><img src="' .
    59                 HIPPOO_INVOICE_PLUGIN_URL . 'assets/images/shipping-label.svg" /></a>';
     57            echo '<a href="?post_id=' . intval($order_id) . '&download_type=label" target="_blank" data-barcode="' .
     58                esc_attr($order_id) . '" data-type="label" data-text="Shipping Label" class="hippoo-tooltip" title="Shipping Label"><img src="' .
     59                esc_url(HIPPOO_INVOICE_PLUGIN_URL . 'assets/images/shipping-label.svg') . '" /></a>';
    6060            break;
    6161    }
     
    7070
    7171function add_stock_status_header() {
    72     echo '<th class="quantity sortable" data-sort="string-ins">' . __('Barcode', 'hippoo-invoice') . '</th>';
     72    echo '<th class="quantity sortable" data-sort="string-ins">' . esc_html__('Barcode', 'hippoo') . '</th>';
    7373}
    7474
     
    8282    $barcode = base64_encode(generate_barcode_html($sku));
    8383
    84     echo '<td class="barcode" width="1%"><img src="' . HIPPOO_INVOICE_PLUGIN_URL . 'assets/images/barcode-scanner.svg" data-src="' . $barcode . '" data-text="' . $sku . '" class="hippoo-tooltip" /></td>';
     84    echo '<td class="barcode" width="1%"><img src="' . esc_url(HIPPOO_INVOICE_PLUGIN_URL . 'assets/images/barcode-scanner.svg') . '" data-src="' . esc_attr($barcode) . '" data-text="' . esc_attr($sku) . '" class="hippoo-tooltip" /></td>';
    8585}
    8686
     
    213213    add_meta_box(
    214214        'hippoo_invoice_order_barcode_metabox',
    215         __('Order ID Barcode', 'hippoo-invoice'),
     215        __('Order ID Barcode', 'hippoo'),
    216216        'display_order_barcode_metabox',
    217217        $post_type,
  • hippoo/trunk/invoice/woocommerce/product.php

    r3117864 r3249938  
    1 <?php
     1<?php // phpcs:disable PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage
    22
    33class Hippoo_Ticket_Woo_Product {
     
    4040            $barcode = base64_encode(generate_barcode_html($sku));
    4141
    42             echo '<img src="' . HIPPOO_INVOICE_PLUGIN_URL . 'assets/images/barcode-scanner.svg" data-src="' . $barcode . '" data-text="' . $sku . '" class="hippoo-tooltip" />';
     42            echo '<img src="' . esc_url(HIPPOO_INVOICE_PLUGIN_URL . 'assets/images/barcode-scanner.svg') . '" data-src="' . esc_attr($barcode) . '" data-text="' . esc_attr($sku) . '" class="hippoo-tooltip" />';
    4343        }
    4444    }
     
    6464        $barcode = generate_barcode_html( $sku );
    6565   
    66         echo $barcode . '<br><strong>' . $sku . '</strong>';
     66        echo esc_html($barcode) . '<br><strong>' . esc_html($sku) . '</strong>';
    6767    }
    6868}
  • hippoo/trunk/readme.txt

    r3237006 r3249938  
    1 === Hippoo mobile app for woocommerce ===
     1=== Hippoo Mobile App for WooCommerce ===
    22Contributors: Hippooo
    33Donate link: https://Hippoo.app/
     
    1515== Description ==
    1616<h3><b>Hippoo WooCommerce App | Your Store, Anywhere, Anytime</b></h3>
    17 <span style="font-weight: 400;">The <strong><a href="https://hippoo.app">Hippoo WooCommerce app</a> </strong> is a powerful extension that enhances the functionality of your WooCommerce shop. Seamlessly integrate your shop with the Hippoo Android app to unlock advanced features, including the creation of out-of-stock lists, adding images to order products via API, and user authentication for optimal app utilization. Take control of your shop's inventory, order fulfillment, and customer engagement with ease.</span>
     17<span style="font-weight: 400;">The <strong><a href="https://hippoo.app">Hippoo WooCommerce app</a> </strong> is a powerful extension that enhances the functionality of your WooCommerce shop. Seamlessly integrate your shop with the Hippoo mobile app (both Android and iOS) to unlock advanced features, including the creation of out-of-stock lists, adding images to order products via API, and user authentication for optimal app utilization. Take control of your shop's inventory, order fulfillment, and customer engagement with ease.</span>
    1818<h3><b>Key Features:</b></h3>
    1919<ol>
     
    3333</ol>
    3434
     35<h3><b>Progressive Web App (PWA) Support</b></h3> 
     36<span style="font-weight: 400;">Hippoo WooCommerce now enables a <b>PWA for your store</b>, allowing customers to install it on their devices. By default, a "Designed by Hippoo WooCommerce app" credit appears under the PWA. The entire PWA feature can be disabled in the settings.</span> 
     37
     38<h3><b>Why Use Hippoo PWA for Instagram Shop?</b></h3> 
     39<span style="font-weight: 400;">The PWA is <b>perfect for Instagram Shop</b> because of its <b>simple design, mobile-friendly interface, and fast performance</b>. It uses the <b>WooCommerce Store API</b>, ensuring <b>quick loading times and a smooth shopping experience</b> for customers.</span> 
     40
     41
     42
    3543<h3><b>To install the Hippoo WooCommerce app on your phone:</b></h3>
    3644<ol>
    37     <li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Visit the Google Play Store using the following link:</span><a href="https://play.google.com/store/apps/details?id=io.hippo"> <span style="font-weight: 400;">Hippoo Android App</span></a><span style="font-weight: 400;">.</span></li>
    38     <li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Click on the "Install" button to download and install the Hippoo app on your Android device.</span></li>
     45    <li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">For Android users: Visit the Google Play Store using the following link:</span><a href="https://play.google.com/store/apps/details?id=io.hippo"> <span style="font-weight: 400;">Hippoo Android App</span></a><span style="font-weight: 400;">.</span></li>
     46  <li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">For iPhone users: Visit the App Store using the following link:</span> <a href="https://apps.apple.com/ee/app/hippoo-woocommerce-admin-app/id1667265325" style="font-weight: 400;">Hippoo iOS App</a>.</li>
     47    <li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Click on the "Install" button to download and install the Hippoo app on your mobile device.</span></li>
    3948    <li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Open the Hippoo app and follow the on-screen instructions to authenticate your shop and start utilizing the advanced features.</span></li>
    4049</ol>
     
    44531. Upload the plugin folder to the `/wp-content/plugins/` directory
    45542. Activate the plugin through the 'Plugins' menu in WordPress
    46 3. Install <a href="https://play.google.com/store/apps/details?id=io.hippo">Hippo WooCommerce app (Android)</a> or <a href="https://apps.apple.com/ee/app/hippoo-woocommerce-admin-app/id1667265325">Hippoo WooCommerce app for iOS</a>
     553. Install <a href="https://play.google.com/store/apps/details?id=io.hippo">Hippoo WooCommerce app for Android</a> or <a href="https://apps.apple.com/ee/app/hippoo-woocommerce-admin-app/id1667265325">Hippoo WooCommerce app for iOS</a>.
    4756
    4857== Screenshots ==
     
    5766
    5867== Changelog ==
    59 
     68* 1.5.8 - Minor Improvements.
     69* 1.5.1 - Added PWA feature with optional store activation.
    6070* 1.5.0 - Improvements & Enhancements Enhanced app functionality for a smoother user experience. Improved plugin authentication system, allowing seamless integration with third-party plugins. Optimized performance and security for better reliability.
    6171* 1.4.3 - Updated the mobile notification text and title, Round the weight on orders
Note: See TracChangeset for help on using the changeset viewer.