Imprezy
Imprezy służą do zbierania informacji o wydarzeniach, których nie da się przypisać do pozostałych baz. Ponadto do imprez dodawane są przez automaty wydarzenia, które następnie zapisywane są przez redaktorów we właściwych feed'ach.
Atrybuty imprez
Polami obowiązkowymi w imprezie są:
- Nazwa (rozpoczyna się wielką literą, nie kończy kropką, nie jest w całości pisana wielkimi literami ani brana w cudzysłów);
- Data i czas startu (gdy godzina startu nie jest znana, pozostawiamy 00:00);
- Data i czas końca (gdy godzina końca nie jest znana, pozostawiamy 23:59);
- Kategoria;
- Lokalizacja.
Dodatkowo impreza może posiadać atrybuty:
- Opis (nie powinien przekraczać 1500 znaków);
- Link imprezy (powinien kierować bezpośrednio do podstrony z uzupełnianym wydarzeniem na stronie www organizatora/FB);
- Wstęp (może przyjmować wartości: '-1' - cena nieznana, '0' - wstęp wolny lub dowolną wartości naturalną odpowiadającą najniższej cenie biletu normalnego);
- Tagi;
- Organizator;
- Źródło;
- Link do obrazka (obrazki mogą mieć co najmniej 288 px szerokości albo 384 px wysokości; mogą to być plakaty imprez, logotypy organizatorów, unikamy natomiast dodawania zdjęć);
- Linki do systemów biletowych (uzupełniane automatycznie, ale pola są edytowalne, można w nich wprowadzać ręczne zmiany w admince).
Import imprez
Importer zadań czyta pliki XML zapisane w katalogu 'input' i po udanym imporcie przenosi je do katalogu 'output', a w przypadku niepowodzenia importu zapisuje je w katalogu 'errors'. Głównym elementem importowanego pliku jest <happenings> i musi zawierać atrybut "username" zawierający nazwę użytkownika. Element <happenings> zawiera listę elementów <happening> zawierających dane o imprezie. Po sparsowaniu tego pliku otrzymujemy listę imprez.
Po wczytaniu pliku xml importu pobieramy listę wszystkich przyszłych wydarzeń dodanych przez danego użytkownika. Każda wczytywana impreza przechodzi przez następujące etapy:
- sprawdzamy, czy posiada ustaloną kategorię i jeśli nie to ją obliczamy;
- sprawdzamy, czy impreza jest w kategorii kultura/film. Jeśli tak to uznajemy, że jest to pokaz filmowy i takiej imprezy nie importujemy;
- sprawdzamy, czy impreza się nie zakończyła;
- sprawdzamy, czy impreza od tego dostawcy już jest w bazie, jeśli impreza jest w bazie, jest usunięta i nie czeka do moderacji, to ją pomijamy;
- sprawdzamy, czy impreza jest zgeokodowana (tj. czy ma przypisaną lokalizację), jeśli nie, to próbujemy ją geokodować, jeśli geokodowanie się nie powiedzie, to ją pomijamy;
- sprawdzamy, czy impreza jest w kategorii kultura/teatr, jeśli tak to próbujemy rozdystrybuować bilety, a samej imprezy dalej nie importujemy;
- sprawdzamy, czy impreza nadaje się to opublikowania, czy też musi być moderowana przez redaktorów;
- jeśli imprezy o takim happeningVendorId nie ma w bazie, to ją zapisujemy;
- jeśli impreza o takim happeningVendorId jest w bazie i jest w moderacji lub jeśli impreza w bazie nie jest do moderacji i nie jest usunięta, a nowa impreza nie musi być moderowana, to aktualizujemy imprezę z bazy.
Aktualizacja imprezy
Aktualizacji podlegają pola:
- nazwa;
- czas startu;
- czas końca;
- opis;
- kategoria;
- opis lokalizacji;
- cena;
- informacja o odwołaniu;
- licznik uczestników;
- priorytet;
- jeśli opis lokalizacji uległ zmianie, to aktualizujemy lokalizację;
- jeśli impreza w bazie nie miała ustawionych tagów, to aktualizujemy tagi;
- jeśli impreza w bazie nie miała organizatora, to aktualizujemy organizatora;
- jeśli się zmienił, to aktualizujemy link do obrazka.