Egy profilkép-kezelő plugint kerestem Joomla 2.5-höz. Találtam is, bár nem túl kiforrott példány, de most nem is ez a kérdés.
2.5.4-es Joomla! fut az oldal alatt és amikor megpróbáltam képet feltölteni, a következő hibaüzenetet kaptam: Attempting to load an image of unsupported type JPG
Na mondom, szépen vagyunk, már egy alap JPG kezelése is gondot okoz a pluginnek?
Nem szoktam annyiban hagyni az ilyesmit, főleg nem egy aprócska plugin esetében, most is nekiálltam debugolni, visszafelé értelmezni a kódot. Azt találtam, hogy ennél a sornál akad el:
$profilepicture = new JImage($files['tmp_name']['profilepicture']['file']);
Nocsak-nocsak, ez egy Joomla core class felhasználása, tehát úgy látszik, hogy (erről legalábbis) nem a plugin tehet.
Megkerestem a Joomla platform API oldalon a JImage class leírását, ott láthatólag van egy $formats protected tömb, gondoltam is, hogy itt lesz a hiba, valamiért nem kerül bele a jó formátum vagy a kép formátumát nem tudja érzékelni.
A libraries/joomla/image/image.php címen meg is találjuk a forrást, azon belül jelenleg a 77. sor környékén kell kutakodnunk (ez frissítés után simán megváltozhat). Itt egy if feltételt találunk, ami megnézi, hogy a formátum-tömbbe bekerült-e már a JPG támogatás, mint alapelem. Természetesen első körben nincs ott semmi, hiszen még a konstruktorban vagyunk és alap értéket nem definiáltunk.
És itt a trükk! A gd_info() PHP függvény segítségével lekérdezi az alkalmazás a GD Library adatait, ebben pedig a "JPEG Support" tömbelemet vizsgálja annak kiderítésére, hogy tudunk-e vajon JPEG fájlt kezelni. Nosza, lessük meg az érintett függvény manual-ját, ahol azt találjuk, hogy a "JPEG Support" PHP 5.3-ban lett bevezetve, előtte ugyanezt "JPG Support"-nak hívták. Azzal nem foglalkozok, hogy ennek most mi értelme volt, vagy miért nem lehetett mindkettőt megtartani.
Rákeresgélve az issue trackerekben azt találja az ember, hogy nem én találtam fel a spanyolviaszt, másnak is eszébe jutott, a platform kódban javították is, csak ugye a platform kód nem egyenlő a Joomla! CMS kóddal, abba meg valamiért nem került bele a legutóbbi kiadásig. Ezen javítottak, a trunk-ben benne van, tehát a következő frissítés megoldja a gondot.
Tehát akkor három lehetőségünk van, ha 5.3 alatti PHP-val dolgozunk:
- PHP-t frissítünk
- Megvárjuk az új Joomla! frissítést
- A JImage osztály konstruktorában a "JPEG Support" hivatkozást "JPG Support"-ra cseréljük, amit úgyis felülír majd a végleges kóddal a frissítés
Ennyit mára a témáról, jó idő van, menjetek ki :)
Utolsó kommentek