Huomasinpa että noita oli useampikin samantyyppisiä tuossa pudotusvalikossa..
Tyyliin:
_ps_dirdepo_fi.php.html.php
Hyvä huomio. Kiitos tiedosta.
VM:n tapa listata maksutavat "Maksutapa luokan nimi"-alasvetovalikossa on tainnut taas muuttua hiukan jossain vaiheessa. Tämän asian tienoilla on soudettu ja huovattu aiemminkin.
Aiemmin listalle tuli vain hakemistossa /administrator/components/com_virtuemart/classes/payment/ olleet PHP-tiedostot. Nyt siihen näemmä listataan rekursiivisesti myös kaikkien ko. hakemiston alihakemistojen PHP-tiedostotkin. Siksi alasvetovalikossa näkyy joukko ylimääräisiä rivejä, joista on helppoa valita väärä.
Jos asia häiritsee, niin äkkiseltään katsoen alasvetovalikon saisi järkiinsä seuraavalla tavalla.
Tiedosto: /administrator/components/com_virtuemart/classes/ps_payment_method.php
Metodi: ps_payment_method::list_available_classes()
Riviltä: 817
function list_available_classes( $name, $preselected='ps_payment' ) {
$files = vmReadDirectory( CLASSPATH."payment/", ".php", true, true);
$array = array();
foreach ($files as $file) {
$file_info = pathinfo($file);
$filename = $file_info['basename'];
if( stristr($filename, '.cfg')) { continue; }
$array[basename($filename, '.php' )] = basename($filename, '.php' );
}
return ps_html::selectList( $name, $preselected, $array );
}
Yo. metodin rivi
$files = vmReadDirectory( CLASSPATH."payment/", ".php", true, true);
muutetaan muotoon
$files = vmReadDirectory( CLASSPATH."payment/", ".php", false, true);
Tämän muutoksen jälkeen alasvetovalikko toimii kuten ennenkin, eli payment-hakemistoa ei listata enää rekursiivisesti. Mutta jos teiltä sen jälkeen yks-kaks-yllättäen puuttuu alasvetovalikosta joku käyttämänne maksutapa, niin silloin ko. muutos ei sovellu käyttöönne.
Mikään hyvä ratkaisu yo. modis ei kuitenkaan ole, koska siinä kajotaan VM:n omiin tiedostoihin, eli se on ns. core hack, jonka heti seuraava VM:n päivitys saattaa taas muuttaa takaisin. Ja muutenkin tilanne on hankala, koska VM:n tapa käyttää payment-hakemiston maksutapaohjelmistoja vaihtelee toistuvasti. Parempi ratkaisu olisi siirtää kaikki tekemäni maksutapaohjelmistot "turvaan" jonnekin muualle kuin payment-hakemiston alle. Mutta se taas on varsin iso muutos.
Warning: include_once(/home/xxx/public_html/xxx/administrator/components/com_virtuemart/classes/payment/ps_dirdepo.php) [function.include-once]: failed to open stream: No such file or directory in /home/xxx/public_html/xxx/administrator/components/com_virtuemart/html/store.payment_method_form.php on line 40
[...]
Tuolaiset virheilmot tulee kun on tehnyt uuden maksutavan ja yrittää mennä editoimaan sitä, mikä avuksi?
Tarkista että www-palvelimella on lukuoikeudet tiedostoon /home/xxx/public_html/xxx/administrator/components/com_virtuemart/classes/payment/ps_dirdepo.php