WP Profitshare 1.4.9.1 – refactorizat pentru PHP 8.5

Am refactorizat plugin-ul WP Profitshare (versiunea originală 1.4.9) pentru a rula corect pe PHP 8.5. Versiunea veche genera erori fatale și o grămadă de warning-uri / deprecation-uri pe versiunile moderne de PHP. Mai jos găsești exact ce am modificat și de unde poți descărca varianta reparată.

De ce a fost nevoie

Plugin-ul a fost scris pentru versiuni mai vechi de PHP. Începând cu PHP 8.0–8.5, mai multe comportamente „tolerate” înainte au devenit erori sau au fost marcate ca depreciate. În practică, pe un hosting cu PHP 8.x, plugin-ul putea pica cu eroare fatală sau umplea log-urile cu avertismente. Refactorizarea rezolvă aceste probleme păstrând aceeași funcționalitate.

Ce am reparat, în detaliu

1. Eroare fatală: funcția usort_reorder() redeclarată

Fiecare clasă de tabel (Conversions, Campaigns, History_Links, Keywords_List, Tag_Images_List) declara o funcție globală usort_reorder() în interiorul metodei prepare_items(). La a doua execuție în același request, PHP arunca Cannot redeclare function usort_reorder(). Le-am înlocuit pe toate 5 cu funcții anonime (closures).

2. usort(null, …) și strcmp(null, null)

usort() aruncă TypeError dacă interogarea din baza de date întoarce ceva ce nu e array, iar strcmp() cu valori null este depreciat din PHP 8.1. Am adăugat verificare is_array() și conversie sigură la (string) pentru valorile comparate.

3. count(null) → TypeError

Funcția ps_get_html_links() returna null când conținutul era gol, iar codul care o apela folosea count() — ceea ce pe PHP 8 dă TypeError. Acum funcția returnează întotdeauna un array.

4. Accesări de index pe răspunsuri API false/null

În ps_account_balance() și ps_update_conversions() se accesau chei dintr-un răspuns care putea fi false (la eșec de conexiune), generând avertismente. Le-am protejat cu verificări isset()/!empty() și am eliminat o variabilă moartă care declanșa un warning suplimentar.

5. Chei $_GET nedefinite

În filtrele din paginile de Conversii și Campanii se citeau chei $_GET fără verificare (undefined array key, devenit warning în PHP 8). Le-am protejat cu isset()/!empty() și, în plus, am sanitizat valorile introduse în interogările SQL (intval, floatval, esc_sql).

6. Funcții făcute „null-safe”

  • config() – returnează '' în loc de null când nu există configurare validă;
  • ps_clear_url() și ps_remove_link_protocol() – conversie (string) pentru a evita avertismentul de „null trimis către parametru” (PHP 8.1+);
  • ps_api_connect() – iese curat dacă țara configurată nu e validă și protejează $_SERVER['HTTP_USER_AGENT'] (lipsă la rulări cron/CLI).

7. $post->ID pe obiect null

În ps_filter_links(), variabila globală $post putea fi null (pe pagini de arhivă sau la filtrul pentru comentarii), generând avertisment. Am adăugat o verificare înainte de a citi ID.

8. print_r($item) returna true

În cazurile default din clasele de tabel, print_r($item) (fără al doilea parametru) returna boolean true în loc de un șir. Am corectat la print_r($item, true).

Fișiere modificate

  • wp-profitshare/wp-profitshare.php
  • wp-profitshare/includes/functions.php
  • wp-profitshare/includes/class-conversions.php
  • wp-profitshare/includes/class-campaigns.php
  • wp-profitshare/includes/class-history-links.php
  • wp-profitshare/includes/class-keywords-list.php
  • wp-profitshare/includes/class-tag-images-list.php
  • wp-profitshare/changelog.txt

Descarcă versiunea nouă

Descarcă WP Profitshare 1.4.9.1 (ZIP)

Instalare

  1. În panoul WordPress: Plugins → Add New → Upload Plugin.
  2. Alege fișierul wp-profitshare.zip și apasă Install Now.
  3. Dacă ai deja o versiune instalată, confirmă suprascrierea.
  4. Activează plugin-ul. La prima accesare a paginii de administrare, plugin-ul detectează versiunea nouă și își recreează tabelele (comportament normal de update — datele din API se reîncarcă automat).

Disclaimer / Limitarea răspunderii

Această versiune refactorizată este oferită „așa cum este” (AS IS), fără nicio garanție și fără nicio răspundere. Nu este o versiune oficială și nu este afiliată cu Profitshare sau cu autorii originali ai plugin-ului. O folosești pe propriul risc!!!

  • Nu se oferă nicio garanție privind funcționarea, securitatea sau compatibilitatea cu configurația ta.
  • Nu îmi asum nicio răspundere pentru eventuale pierderi de date, întreruperi sau alte daune directe ori indirecte rezultate din utilizare.
  • Fă backup la baza de date și la fișiere înainte de instalare sau actualizare.
  • Recomandat: testează întâi pe un mediu de staging, nu direct pe site-ul de producție.
  • Drepturile asupra plugin-ului original aparțin autorilor săi; modificările vizează exclusiv compatibilitatea cu PHP 8.5, sub aceeași licență (GPL2).

Dacă întâmpini probleme sau ai sugestii, lasă un comentariu mai jos.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.