Přeskočit obsah
V
Pro vývojáře
Architektura, konvence, jádro systému a bezpečnost
Moduly / Přehled modulů

Moduly#

Doménové moduly systému. Každý má svou část ve všech sekcích — app/UI/{Front,Api,Admin,Cron}/<Modul>/.

Modul Doména Entit Kapitola
System uživatelé, platby, nastavení, číselníky, assety 90
Eshop zboží, košík, objednávky, reklamace, feedy 84 E-shop
Bazaar inzerce 34 Inzerce
Comcat katalog firem 33 Katalog firem
Blog články, novinky, akce, galerie, kniha návštěv 29 Blog
Invoicer fakturace 28 Fakturace
Company vlastní firma — prezentace, termíny, zakázky 25 Moje firma
Base sdílené — komentáře, hodnocení, ankety, newsletter, reklamní plochy 22
Store sklad 13 Sklad
Discussion fórum 13 Diskuze

Počty jsou Api entity — ls app/UI/Api/<Modul>/Models/Entities/*.php | wc -l. Sekci Front nemá jediný modul: Invoicer, protože doklady se návštěvníkovi nezobrazují samostatně, jen jako soubor ke stažení u objednávky.

Kudy začít#

Chci Začni tady
poprvé se v modulech zorientovat Blog — je nejmenší z těch „normálních“ a je zároveň vzorem
napsat nový zdroj pro vyhledávání ArticleDocumentSource.php z blogu
pochopit dynamická pole Inzerce
pochopit peníze a stavy E-shopSkladFakturace v tomhle pořadí

Společné vzory#

Většina modulů sdílí tytéž vzory — když je poznáte v jednom, poznáte je všude:

Vzor Kde se objevuje Kde je popsaný
dynamické parametry místo pevných sloupců Bazaar, Comcat, Eshop Inzerce
stromové kategorie (nested set) Bazaar, Comcat, Discussion, Eshop, Blog, Company Inzerce
denormalizované počítadlo + přepočet cronem všude, kde je strom Inzerce
tarify a platební položky Bazaar, Comcat, Discussion Diskuze
zvýraznění časem (toped_until) Bazaar, Comcat, Discussion Inzerce
stavový automat s příznaky akcí Eshop (objednávka, reklamace) E-shop
doklad jako otisk Invoicer, Store Fakturace
zdroj pro Elasticsearch Blog, Bazaar, Comcat, Discussion, Eshop Elasticsearch

Comcat a Company jsou dva různé moduly, ne dvě části jednoho

Comcat je katalog cizích firem (kopie Bazaaru), Company je vlastní firma provozovatele. Nesdílí ani jednu tabulku a nemají společný předek — jen si jsou podobné jménem. Oprava v jednom se ve druhém neprojeví, takže hlášení „nefunguje to u firem" je vždycky potřeba nejdřív rozřadit.

Comcat vznikl kopií Bazaaru

Jsou si velmi podobné. Řešíte-li něco v jednom, podívejte se, jestli to není i v druhém — a jestli tam oprava nechybí. Zápisek o vzniku je v docs/comcat-copy-from-bazaar.md.

Podobnost ale není totožnost

Comcat nemá price, sold ani sledující, a jeho generovaný sloupec active má o jednu podmínku míň. Kopírovaný SQL dotaz nebo PHP getter proto může selhat — přehled rozdílů je v Katalogu firem.

Sdílené prvky z Base#

Komentáře, hodnocení, ankety, newsletter a reklamní plochy jsou jedna implementace pro všechny moduly (app/UI/Api/Base/).

Oprava sdílené komponenty zasáhne všechny moduly naráz

Změna v hodnocení se projeví u produktů, inzerátů, firem i příspěvků. Projděte všechny, ne jen ten, kvůli kterému opravujete — a počítejte s tím, že tři ze čtyř nikdo neotestuje, pokud si to neřeknete sami.

Kam sáhnout#

Chci Kde
sdílené entity app/UI/Api/Base/Models/Entities/
sdílené base entity modulů app/Core/Base/Shared/<Modul>/Models/Entities/
cron úlohy modulu app/UI/Cron/<Modul>/Presenters/
zdroje pro vyhledávání app/UI/Api/<Modul>/Models/Search/

Navazující kapitoly: Pětivrstvý model · Struktura projektu · Elasticsearch · Naplánované úlohy