dotpay / VirtueMart

VirtueMart
1 stars 0 forks source link

Rozszerzenie niedostosowane do PHP 8 i Joomla 4 #5

Open szepty-ziemi opened 1 year ago

szepty-ziemi commented 1 year ago

Hostingodawcy zachęcają różnymi komunikatami by przejść na wyższą wersje PHP 8.0. Niektórzy z nich nakładają dodatkowe opłaty za korzystanie ze starszych wersji PHP.

Sama Joomla ostrzega przed nieaktualną wersja PHP 7.4, więc klienci obawiajac sie proszą o zmianę na PHP 8.0.

Jednak dodatek płatności dotPay, nie jest dostosowany do PHP 8.0. Otrzymujemy komunikat:

Deprecated: Required parameter $paymentCounter follows optional parameter $cart_prices in plugins/vmpayment/dotpay/dotpay.php on line 850

Deprecated: Required parameter $htmlIn follows optional parameter $selected in /plugins/vmpayment/dotpay/dotpay.php on line 885

Uprzejmie proszę o dostosowanie.

VM 4.0.12 Joomla 4.2.7 PHP 8.0 Dodatek dotPay 1.2.1

Środowisko: https://prnt.sc/r4S9-b2A9Clb

szepty-ziemi commented 1 year ago

Dla szukających rozwiązania:

W pliku:

ROOT/plugins/vmpayment/dotpay/dotpay.php

W linii 850 zmień z:

function plgVmOnCheckAutomaticSelectedPayment(VirtueMartCart $cart, array $cart_prices = array(), &$paymentCounter) {
        return $this->onCheckAutomaticSelected($cart, $cart_prices, $paymentCounter);
    }

na

function plgVmOnCheckAutomaticSelectedPayment(VirtueMartCart $cart, array $cart_prices, &$paymentCounter) {
        return $this->onCheckAutomaticSelected($cart, $cart_prices, $paymentCounter);
    }

W linii 885 zmień z:

public function plgVmDisplayListFEPayment(VirtueMartCart $cart, $selected = 0, &$htmlIn)
    {
       return $this->displayListFE($cart, $selected, $htmlIn);
    }

na

    public function plgVmDisplayListFEPayment(VirtueMartCart $cart, $selected, &$htmlIn)
     {
        return $this->displayListFE($cart, $selected, $htmlIn);
     }

Dla Joomli 4 i VM 4 jest dodatkowy błąd uniemożliwiający poprawne wyświetlenie płatności w koszyku i naliczenie kosztów płatności. By to naprawić w tym samym pliku.

Około linii 899 zmień z:

public function plgVmonSelectedCalculatePricePayment(VirtueMartCart $cart, array &$cart_prices, &$cart_prices_name) {
        return $this->onSelectedCalculatePrice($cart, $cart_prices, $cart_prices_name);
    }

na

         public function plgVmOnSelectedCalculatePricePayment(VirtueMartCart $cart, array &$cart_prices, &$cart_prices_name) {
            return $this->onSelectedCalculatePrice ($cart, $cart_prices, $cart_prices_name);
        }

Jest błąd w nazwie funkcji: