Jump to content

Presta 1.7.5 - επεμβάσεις και διορθώσεις


FotisM

Recommended Posts

Presta 1.7.5 vs PHP V 7.2

Γεια χαρά, πάει πολύς καιρός που έγραψα κάτι εδώ.

Υπάρχει ένα θέμα με κάποιες εντολές php του κώδικα του Presta (1.7.5) που είναι deprecated στην version 7.2 της PHP.
Για παράδειγμα, η create_function που υπάρχει τουλάχιστον στο module gamification (αν όχι κι αλλού).

Μια που τα overrides δεν δουλεύουν και με τον καλύτερο τρόπο στην 1.7 (ή και καθόλου), δυστυχώς θα πρέπει να γίνουν
κάποιες αλλαγές στον κώδικα, τουλάχιστον μέχρι να αλλαχθούν σε κάποια επόμενη αναβάθμιση.

Για το συγκεκριμένο module λοιπόν, η αλλαγή που έκανα εγώ και μου δούλεψε ήταν η αντικατάσταση των γραμμών:

        $content = preg_replace_callback('#\{config\}([a-zA-Z0-9_-]*)\{/config\}#', create_function('$matches', 'return Configuration::get($matches[1]);'), $content);
        $content = preg_replace_callback('#\{link\}(.*)\{/link\}#', create_function('$matches', 'return Context::getContext()->link->getAdminLink($matches[1]);'), $content);
        $content = preg_replace_callback('#\{employee\}(.*)\{/employee\}#', create_function('$matches', 'return Context::getContext()->employee->$matches[1];'), $content);
        $content = preg_replace_callback('#\{language\}(.*)\{/language\}#', create_function('$matches', 'return Context::getContext()->language->$matches[1];'), $content);
        $content = preg_replace_callback('#\{country\}(.*)\{/country\}#', create_function('$matches', 'return Context::getContext()->country->$matches[1];'), $content);

σε:

        $content = preg_replace_callback('#\{config\}([a-zA-Z0-9_-]*)\{/config\}#', function($matches) { return Configuration::get($matches[1]); }, $content);
        $content = preg_replace_callback('#\{link\}(.*)\{/link\}#', function($matches) { return Context::getContext()->link->getAdminLink($matches[1]); }, $content);
        $content = preg_replace_callback('#\{employee\}(.*)\{/employee\}#', function($matches) { return Context::getContext()->employee->$matches[1]; }, $content);
        $content = preg_replace_callback('#\{language\}(.*)\{/language\}#', function($matches)  {return Context::getContext()->language->$matches[1]; }, $content);
        $content = preg_replace_callback('#\{country\}(.*)\{/country\}#', function($matches) { return Context::getContext()->country->$matches[1]; }, $content);


Σίγουρα υπάρχουν κι άλλες αλλαγές που μπορούν να γίνουν, το topic είναι ανοιχτό για όποιον θέλει να τις μοιραστεί με τους ενδιαφερόμενους.

  • Like 1
Link to comment
Share on other sites

On 2/16/2019 at 9:47 PM, sanctusmob said:

Προτεινόμενη έκδοση για το πρεστα 1.7.5 είναι η php 7.1...

Κατανοητό, και ευχαριστώ για την ενημέρωση. Φαντάζομαι δε, ότι στα μελλοντικά upgrades του presta θα έχει αντικατασταθεί η εντολή, όπως και ό,τι άλλο είναι deprecated πλέον στις νέες εκδόσεις της PHP.

Απλά, προσωπικά προτιμώ να είμαι έτοιμος για την επόμενη PHP version, μια που τα one-click upgrades κλπ δεν μπορώ να τα χρησιμοποιήσω με τίποτα, με τόσες επεμβάσεις που θα αναγκαστώ να κάνω λόγω μη υποστήριξης των overrides.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...