Największą bolączką tego projektu jest brak podziału na warstwy.
Chciałbym Ci bardziej pomóc, ale ten kod jest zbyt czasożerny. Gdybyś skorzystał z funkcji, ułatwiłoby to o niebo sprawę. Przepisz projekt na paradygmat obiektowy/funkcyjny, wtedy dostaniesz o wiele większy feedback na forum. Odniesienie się do funkcji - wykonującej konkretne zadanie - i jej zrozumienie jest o wiele prostsze niżeli przytaczanie pojedynczych linijek kodu.
Poradniki odnośnie obiektówki:
https://symfonycasts.com/search?q=oop&sort=most%20relevant&page=1&types=course
https://webmastah.pl/jak-programowac-obiektowo-cz-1-wstep/
Ja jedynie dodam od siebie, żebyś się nie bał się rozdzielać kodu na małe kawałki.