require_once 'Exceptions/WrongAntiSpamAnswerException.php';
require_once 'Exceptions/EmailNotSentException.php';
// CREATE OBJECTS OF THE MODELS.
$userDAL = new UserDAL();
$rssDAL = new RssDAL();
$serviceModel = new ServiceModel($userDAL, $rssDAL);
$sessionModel = new SessionModel();
$homeModel = new HomeModel($serviceModel);
$loginModel = new LoginModel($sessionModel, $serviceModel);
$registerModel = new RegisterModel($sessionModel, $serviceModel);
$newsfeedModel = new NewsfeedModel($serviceModel);
$contactModel = new ContactModel();
// CREATE OBJECTS OF THE VIEWS.
$navigationView = new NavigationView();
$homeView = new HomeView($sessionModel, $serviceModel);
$registerView = new RegisterView($registerModel);
$newsfeedView = new NewsfeedView($sessionModel);
$loginView = new LoginView($loginModel, $sessionModel, $serviceModel);
$contactView = new ContactView();
$layoutView = new LayoutView($homeView, $loginView, $registerView, $newsfeedView, $contactView);
// CREATE OBJECTS OF CONTROLLERS.
$homeController = new HomeController($homeView, $homeModel, $sessionModel);
$loginController = new LoginController($loginView, $loginModel, $sessionModel);
$registerController = new RegisterController($registerView, $registerModel, $navigationView);
$newsfeedController = new NewsfeedController($newsfeedView, $newsfeedModel, $sessionModel);
$contactController = new ContactController($contactView, $contactModel);
$masterController = new MasterController($homeController, $loginController, $registerController, $newsfeedController, $contactController);
// CALL FUNCTIONS.
$masterController->handleUserRequest();
$layoutView->renderLayout();