コード例 #1
0
ファイル: ApiMain.php プロジェクト: whysasse/kmwiki
 /**
  * Execute an action, and in case of an error, erase whatever partial results
  * have been accumulated, and replace it with an error message and a help screen.
  */
 protected function executeActionWithErrorHandling()
 {
     // Verify the CORS header before executing the action
     if (!$this->handleCORS()) {
         // handleCORS() has sent a 403, abort
         return;
     }
     // Exit here if the request method was OPTIONS
     // (assume there will be a followup GET or POST)
     if ($this->getRequest()->getMethod() === 'OPTIONS') {
         return;
     }
     // In case an error occurs during data output,
     // clear the output buffer and print just the error information
     ob_start();
     $t = microtime(true);
     try {
         $this->executeAction();
     } catch (Exception $e) {
         $this->handleException($e);
     }
     // Log the request whether or not there was an error
     $this->logRequest(microtime(true) - $t);
     // Send cache headers after any code which might generate an error, to
     // avoid sending public cache headers for errors.
     $this->sendCacheHeaders();
     if ($this->mPrinter->getIsHtml() && !$this->mPrinter->isDisabled()) {
         echo wfReportTime();
     }
     ob_end_flush();
 }
コード例 #2
0
ファイル: ApiMain.php プロジェクト: mangowi/mediawiki
 /**
  * Execute an action, and in case of an error, erase whatever partial results
  * have been accumulated, and replace it with an error message and a help screen.
  */
 protected function executeActionWithErrorHandling()
 {
     // Verify the CORS header before executing the action
     if (!$this->handleCORS()) {
         // handleCORS() has sent a 403, abort
         return;
     }
     // Exit here if the request method was OPTIONS
     // (assume there will be a followup GET or POST)
     if ($this->getRequest()->getMethod() === 'OPTIONS') {
         return;
     }
     // In case an error occurs during data output,
     // clear the output buffer and print just the error information
     ob_start();
     $t = microtime(true);
     try {
         $this->executeAction();
     } catch (Exception $e) {
         // Allow extra cleanup and logging
         wfRunHooks('ApiMain::onException', array($this, $e));
         // Log it
         if ($e instanceof MWException && !$e instanceof UsageException) {
             global $wgLogExceptionBacktrace;
             if ($wgLogExceptionBacktrace) {
                 wfDebugLog('exception', $e->getLogMessage() . "\n" . $e->getTraceAsString() . "\n");
             } else {
                 wfDebugLog('exception', $e->getLogMessage());
             }
         }
         // Handle any kind of exception by outputting properly formatted error message.
         // If this fails, an unhandled exception should be thrown so that global error
         // handler will process and log it.
         $errCode = $this->substituteResultWithError($e);
         // Error results should not be cached
         $this->setCacheMode('private');
         $response = $this->getRequest()->response();
         $headerStr = 'MediaWiki-API-Error: ' . $errCode;
         if ($e->getCode() === 0) {
             $response->header($headerStr);
         } else {
             $response->header($headerStr, true, $e->getCode());
         }
         // Reset and print just the error message
         ob_clean();
         // If the error occurred during printing, do a printer->profileOut()
         $this->mPrinter->safeProfileOut();
         $this->printResult(true);
     }
     // Log the request whether or not there was an error
     $this->logRequest(microtime(true) - $t);
     // Send cache headers after any code which might generate an error, to
     // avoid sending public cache headers for errors.
     $this->sendCacheHeaders();
     if ($this->mPrinter->getIsHtml() && !$this->mPrinter->isDisabled()) {
         echo wfReportTime();
     }
     ob_end_flush();
 }
コード例 #3
0
ファイル: ApiMain.php プロジェクト: eFFemeer/seizamcore
 /**
  * Execute an action, and in case of an error, erase whatever partial results
  * have been accumulated, and replace it with an error message and a help screen.
  */
 protected function executeActionWithErrorHandling()
 {
     // In case an error occurs during data output,
     // clear the output buffer and print just the error information
     ob_start();
     try {
         $this->executeAction();
     } catch (Exception $e) {
         // Log it
         if ($e instanceof MWException) {
             wfDebugLog('exception', $e->getLogMessage());
         }
         // Handle any kind of exception by outputing properly formatted error message.
         // If this fails, an unhandled exception should be thrown so that global error
         // handler will process and log it.
         $errCode = $this->substituteResultWithError($e);
         // Error results should not be cached
         $this->setCacheMode('private');
         $response = $this->getRequest()->response();
         $headerStr = 'MediaWiki-API-Error: ' . $errCode;
         if ($e->getCode() === 0) {
             $response->header($headerStr);
         } else {
             $response->header($headerStr, true, $e->getCode());
         }
         // Reset and print just the error message
         ob_clean();
         // If the error occured during printing, do a printer->profileOut()
         $this->mPrinter->safeProfileOut();
         $this->printResult(true);
     }
     // Send cache headers after any code which might generate an error, to
     // avoid sending public cache headers for errors.
     $this->sendCacheHeaders();
     if ($this->mPrinter->getIsHtml() && !$this->mPrinter->isDisabled()) {
         echo wfReportTime();
     }
     ob_end_flush();
 }