Na początku próbowałem przepisać moduł prywatnych wiadomości w stylu proceduralnym. Ze względu na dużą ilość instrukcji warunkowych, gdzie trzeba wysłać odmienne zapytania (z innymi danymi lub parametrami) oraz FAKT, że niektóre moduły mogą też wysyłać prywatne wiadomości do użytkowników, napisałem klasę. Dobra decyzja?
Nie rozwiązuje to problemów całkowicie. Operacje możliwe do wykonania to:
1) Wysłać nową wiadomość
2) zapisać ją do kopii roboczych (nie wysyłać)
3) wysłać zapisaną kopię do użytkownika (tutaj najlepszym wyjściem będzie chyba UPDATE)
4) zapisać wysłaną wiadomość także do folderu "wysłane" (opcjonalnie)
5) zaktualizować kopię roboczą (gdy użytkownik ją zmienia)
6)

Jak przepisać klasę, aby wszystkie operacje wykonywało się łatwo, a kod nie stracił na wydajności?
Przykład: aktualizując kopię roboczą, zmieniamy tylko: tytuł, treść, odbiorcę i opcje. Wysyłając ją, zmieniamy status, właściciela i pole "usr" (wtedy zawiera ID nadawcy). Znów 2 zapytania? Czy aktualizować wszystko podczas 1?
W pliku edycji prywatnych wiadomości oprócz instrukcji warunkowych i komunikacji z klasą wykonuję jeszcze kilka operacji, gdzie mogą wystąpić błędy (np. gdy dodaje wiadomość do "wysłanych", a limit jest przekroczony) czy "brak wiadomości". Dlatego dodałem referencję $errRef.
Jak przepisać kod, aby wszystkie operacje (zważając na ich zawiłość, różnice) wykonywało się łatwo, a klasa stała się elastyczna? Może za dużo lub za mało kodu tam umieściłem? Może zamiast proporcji (zmiennych klasy) lepiej użyć tablicy z danymi (do, temat, itp.)? Ostateczność - mogę wykorzystać gotową klasę na zasadach GPL.