Trebuia să fie versiunea 0.2.9 și chiar a fost, însă am dat succesiv de două probleme: una legată de denumirea unui folder, care trebuia să înceapă cu literă mică și, în kitul de instalare, începea cu literă mare (0.3.0); cealaltă, ceva mai subtilă și care se pare că depinde de versiunea de PHP și pe care am redat-o la finalul articolului ca trivia (0.3.1).
Acestea fiind spuse, a mai trecut un an în care n-am prea avut timp să mă ocup, dar în care tot am făcut câte ceva. Am păstrat oarecum schema de denumire, numai că de data asta am sărit puțin în afara regulii și-am numit-o…. SG-1. Cine știe, cunoaște. După cum se vede, am schimbat și logo-ul.
Noutățile funcționale semnificative sunt, de fapt, doar una: inspirat din sugestia cuiva de pe pagina modulului, am implementat o funcție de jurnalizare. Adică în cadrul unui post poți face un jurnal cu cine a parcurs acel traseu și-n ce condiții (cu ce vehicul, echipament, când, cât a durat etc.).
Non-funcțional, am reușit să refactorizez clasa care gestiona instalarea modulului obținând dintr-o singură clasă toată această structură. Am fost impulsionat să fac modificarea pentru că ajunsese ridicol de mare până-n punctul în care-ar fi putut deveni de neîntreținut. Strict vorbind, nu era musai necesar să se-ntâmple chiar acum, atâta doar c-am preferat să o fac într-o versiune fără mize foarte mari.
În sfârșit, a fost și un bug interesant, pe care l-a reparat chiar cel care l-a raportat. În principiu, dacă un fișier GPX avea în antet suficient de multe comentarii, validarea la încărcare eșua cu succes. Am zis bogda-proste pentru ajutor, chiar dacă nu ar fi fost extrem de mult de muncă la soluția propriu-zisă.
Funcția de jurnalizare
În primul și primul rând, în meta-box-ul din dreapta, cel care sintetizează starea curentă, a apărut un nou rând: Jurnal de parcurgere (n-am găsit altă rimă). Recunosc că are mai puțin rol de sinteză și mai mult de a ajuta utilizatorul să ajunge la zona propriu-zisă de unde poate să le gestioneze (adică alt meta-box, plasat sub editorul de text).
Adăugarea ori modificarea oferă următoarele câmpuri:
– Cine a parcurs traseul (se poate introduce orice, implicit, când se-ncarcă prima oară pagina, este utilizatorul curent);
– Când;
– Durata (în ore);
– Vehiculul folosit (aici a trebuit să aleg o denumire mai generică, dar poate fi orice; implicit, când se-ncarcă prima oară pagina, este ultimul folosit pe acel post);
– Note legate de echipament;
– Alte observații (orice merită menționat);
– Dacă este afișat public sau nu (adică dacă apare-n caseta tehnică corespunzătoare articolului din site).
Listarea arată-n felul următor și cred eu că este suficient de limpede:
În caseta tehnică a apărut un tab nou în care sunt afișate toate înregistrările publice de jurnal (cu această ocazie am și modificat viewer-ul astfel încât să poată suporta oricâte secțiuni și, deci, oricât tab-uri; nu-i musai o chestie oficială, cu toate că nu cred că am să mai modific ceva):
Eroare la instanțierea dinamică a unei clase
Pe scurt, aveam într-o clasă următoarea construcție care executa corect peste PHP 8.1.12, însă nu executa defel peste PHP 7.4.33 (pe care rulează acest blog):
$obj = new ($this->_className)();
Eroarea generată de secvența de mai sus era o problemă de sintaxă:
PHP Parse error: syntax error, unexpected '('
Drept urmare, a trebuit s-o iau mai pe după vișin (deci, deși nu-s foarte la curent cu tot ce s-a schimbat de la o versiune de PHP la alta, îmi pare că posibilitatea de-a instanția o clasă al cărei nume este stocat într-un câmp dintr-un obiect este ceva nou-adăugat):
$className = $this->_className;
$obj = new $className();
Din păcate și din fericire am aflat de problemă înstalând-ul aici. În mod normal aș fi instalat versiunea manual, dar, date fiind modificările substanțiale la rutina de instalare, am vrut să văd cum se poartă instalând actualizarea direct de pe wordpress.org).
În final, ca de obicei, repet unde poate fi găsit modulul: