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
41
Reaction score
395
Points
53
NullCash
2,341
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: 24

FloverLion

Well-known member
☆ Pro ☆
Master
Joined
Sep 30, 2022
Messages
1,245
Reaction score
258
Points
83
NullCash
396
Thanks alot nice module nice update nice share it.
 

PutinXuylo

Member
XNullUser
Joined
Nov 8, 2024
Messages
393
Reaction score
4
Points
18
Location
Boyarka
NullCash
102
Be carefulll - maybe viruses inside

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

1770470321701.png
 

Anvar6120

Well-known member
Elite
XNullUser
Joined
Apr 9, 2022
Messages
41
Reaction score
395
Points
53
NullCash
2,341
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;
    }
 

AquariusGaza

Well-known member
☆☆ Special ☆☆
☆ Pro ☆
Master
Joined
Sep 29, 2022
Messages
2,192
Reaction score
594
Points
113
NullCash
3,900
Thanks alot nice module nice update nice share it.
Post automatically merged:

1770651419852.png
Post automatically merged:

1770651546942.png
Post automatically merged:

eval(base64_decode('ZnVuY3Rpb24gdmFsaWRhdGVUb2tlbigka2V5ID0gJycsICR0eXBlID0gMCkgey4uLn0='));
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;
    }


I uncode the eval function i think the same. is not dangerous


/**
* Validate license / token
*
* @param string $key
* @param int $type
* @return bool
*/
protected function validateToken(string $key = '', int $type = 0): bool
{
if (empty($key)) {
return false;
}

// Expected format: hash|timestamp
$parts = explode('|', $key);

if (count($parts) !== 2) {
return false;
}

[$hash, $timestamp] = $parts;

if (!ctype_digit($timestamp)) {
return false;
}

$timestamp = (int) $timestamp;

// Token expiration (24h)
if ($timestamp < (time() - 86400)) {
return false;
}

// Generate expected hash
$expectedHash = sha1(
_COOKIE_KEY_
. $timestamp
. $type
);

return hash_equals($expectedHash, $hash);
}
 
Last edited:

hxcode

Well-known member
☆ Pro ☆
Master
Joined
Aug 16, 2020
Messages
3,944
Reaction score
470
Points
83
NullCash
1
Thank you very much for sharing this nice module.
 
Top