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());
     }
 }