From marlevak on October 17, 2019 21:04 CEST
Ovaj problem je prijavljen u komentaru moje objave u Facebook grupi WooCommerce Hrvatska.
Nakon neuspješnog reproduciranja tog istog problema na 3 različita sustava (WAMP s PHP 7.3, LAMP s PHP 5.6 te LAMP s PHP 7.2), bacila sam se u pregled izvornog koda te traženje što bi moglo biti uzrok prijavljenom problematičnom ponašanju.
Ubrzo sam shvatila da sljedeća linija JavaScript kôda koja se nalazi unutar znakovnog niza radi više nego što bi trebala:
link.download = /.\w+/.test(name) ? name :`${name}.${type}`;
Kako sam logiku za preuzimanje slike uplatnice sa stranice odradila oslanjavši se na ovaj odgovor sa StackOverflowa (u čijem kôdu je prisutan taj bug), tako se taj isti bug javlja i u ovom pluginu. U kojim okolnostima? S obzirom na uvjet unutar ternarnog operatora, problematično ponašanje se manifestira kada naziv datoteke sa slikom sadrži točku u sebi. A kako to da bi naziv datoteke sa slikom (ukoliko u naziv ne uključujemo ekstenziju datoteke koja bi se tek trebala dodati) mogao sadržavati točku? Odgovor na to pitanje jest ukoliko naziv web-stranie (koja koristi ovaj plugin) sadrži točku u sebi, s obzirom da naziv datoteke slike ovisi o nazivu web-stranice. Npr. ukoliko je naziv stranice, tj. vrijednost polja “Naziv web-stranice” (unutar izbornika Postavke > Općenito kod WordPress admin dashboarda), jednaka “F.R.I.E.N.D.S”, tada bi naziv datoteke slike sadržavao točku u sebi s obzirom da se naziv datoteke slike određuje sljedećom programskom linijom:
$file_name = sprintf( '%s-%s-%s', __('payment-slip', $this->domain), $webapp_name_for_filename, $order_id);
Tj. kako bi se u tom slučaju u gore-navedenom ternarnom operatoru provjeravalo ima li znakovni niz ‘uplatnica-F.R.I.E.N.D.S-1234’ (koji bi predstavljao naziv datoteke slike) točku u sebi, odgovor bi bio istinit te se ne bi na taj naziv nadodala ‘.png’ ekstenzija.
Patch za ovaj problem ću objaviti za par minuta.
Ujedno, ako tko od čitatelja ove poruke ima tamo reputaciju veću od 50, može slobodno ostaviti komentar na toj objavi kako se još netko ne bi opekao na istoj stvari.
Original issue: Popraviti bug kojim preuzeta slika uplatnice ponekad nema ekstenziju