v1.7x-v8x-v9x Element Flow PrestaShop Site Builder for PrestaShop 9/8/1.7 V2.3.4 (Newest 06.02.2026)

Anvar6120

Well-known member
Elite
XNullUser
Joined
Apr 9, 2022
Messages
40
Reaction score
375
Points
53
NullCash
2,246
Element Flow is a professional PrestaShop site builder, with it you can build most PrestaShop site pages on the front-end using the drag & drop interface.

V2.3.4 (February 6, 2026)
  • Added some new display conditions.
  • Added settings to change the blog URL.
  • Tweak: Make the custom template widget be able to load other modules' files.
  • Added a new type of sidebar to display product info in a sidebar on the product page.
  • Added a global maximum zoom level setting for the lightbox.
  • Fix: The "Play when in the viewport" setting in the Video widget doesn't work for YouTube videos.

This module is posted for informational purposes only!
If the module meets your needs, please purchase it from the developer!


DEMO
 

Attachments

  • stsitebuilder.zip
    10.5 MB · Views: 7

Anvar6120

Well-known member
Elite
XNullUser
Joined
Apr 9, 2022
Messages
40
Reaction score
375
Points
53
NullCash
2,246
Be carefulll - maybe viruses inside

\site/stsitebuilder/libs/elementor/modules/templates/module.php

View attachment 142734

This is a PHP function for handling tokens/keys, most likely for temporary one-time tokens (e.g., for CSRF protection or time-limited URLs).

Main Logic:​

1. Creating a new token (when $key is empty)​

  • Creates a token valid for 30 minutes
  • Format: XXXX123XXXX456XXXX7890XXXXXXXXXX
    • XXXX - random 4 characters (via Tools::passwdGen())
    • 123 - first 3 digits of timestamp
    • 456 - next 3 digits
    • 7890 - last 4 digits

2. Validating a token (when a 32-character $key is provided)​

Type 0 (default) - validation check:

  • Swaps the first and second halves of the token (16 characters each)
  • Extracts the timestamp
  • Checks:
    • If time has expired → returns -1
    • If time is within 30 minutes → returns true
    • If time is in the future (beyond 30 minutes) → returns -1
Type 1 - time extraction:

  • Simply extracts the timestamp from the token without validation
Type 2 - token regeneration/rewriting:

  • Creates a new token with the same timestamp but new random parts
  • Also swaps the token halves

The tokens are protected against simple guessing as they contain random parts and have a limited 30-minute validity period.
PHP:
function validateToken($key = '', $type = 0)
    {
        $key = trim($key);
        if (empty($key)) {
            $time = strtotime('+30 minutes');
            $a = substr($time, 0, 3);
            $b = substr($time, 3, 3);
            $c = substr($time, 6, 4);
            return Tools::passwdGen(4).$a.Tools::passwdGen(4).$b.Tools::passwdGen(4).$c.Tools::passwdGen(10);
        } elseif (strlen($key) == 32) {
            switch($type) {
                case 0:
                    $b = substr($key, 0, 16);
                    $e = substr($key, 16, 16);
                    $key = $e . $b;

                    $time = substr($key, 4, 3).substr($key, 11, 3).substr($key, 18, 4);
                    if (!preg_match('/[^0-9]/', $time)) {
                        $now = time();
                        if ($time < $now) {
                            return -1;
                        } else {
                            $diff = round(($time - $now)/60, 2);
                            if ($diff >= 0 && $diff <= 30) {
                                return true;
                            } else {
                                return -1;
                            }
                        }
                    }
                    break;
                case 1:
                    return substr($key, 4, 3).substr($key, 11, 3).substr($key, 18, 4);
                case 2:
                    $key = Tools::passwdGen(4).substr($key, 4, 3).Tools::passwdGen(4).substr($key, 11, 3).Tools::passwdGen(4).substr($key, 18, 4).Tools::passwdGen(10);
                    $b = substr($key, 0, 16);
                    $e = substr($key, 16, 16);
                    return $e . $b;
            }
        }
        return false;
    }
 
Top