public function execute($par) { global $wgOut; $cacheManager = new \PageAttachment\Cache\CacheManager(); $pageFactory = new \PageAttachment\Session\PageFactory($cacheManager); $security = new \PageAttachment\Security\SecurityManager(); $session = new \PageAttachment\Session\Session($security, $pageFactory); $attachToPage = $session->getAttachToPage(); if (isset($attachToPage) && $attachToPage->getId() > 0) { $abort = false; if ($security->isDownloadRequestValid()) { // Subsequest Passes - Upload File parent::execute($par); } else { // First Pass - Display Form $protectedPage = $attachToPage->isProtected(); if ($security->isAttachmentAddUpdateRequireLogin($protectedPage) && !$security->isLoggedIn()) { $session->setStatusMessage('YouMustBeLoggedInToAddUpdateAttachments'); $abort = true; } elseif (!$security->isRequestValidationTokenValid()) { $session->setStatusMessage('UnableToAuthenticateYourRequest'); $abort = true; } if ($abort == true) { $title = \Title::newFromText($attachToPage->getPageTitle()); $wgOut->redirect($title->getFullURL()); } else { $security->setDownloadRequestValid(true); $session->setUploadAndAttachFileInitiated(true); parent::execute($par); } } } else { $session->setStatusMessage('UnableToDetermineAttachToPage'); $title = \Title::newFromText(\wfMsgForContent('mainpage')); $wgOut->redirect($title->getFullURL()); } }