Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 3.10.x will end 8 November 2021 (12 months).
  • Bug fixes for security issues in 3.10.x will end 9 May 2022 (18 months).
  • PHP version: minimum PHP 7.2.0 Note: minimum PHP version has increased since Moodle 3.8. PHP 7.3.x and 7.4.x are supported too.
   1  <?php
   2  
   3  /**
   4   * Licensed to Jasig under one or more contributor license
   5   * agreements. See the NOTICE file distributed with this work for
   6   * additional information regarding copyright ownership.
   7   *
   8   * Jasig licenses this file to you under the Apache License,
   9   * Version 2.0 (the "License"); you may not use this file except in
  10   * compliance with the License. You may obtain a copy of the License at:
  11   *
  12   * http://www.apache.org/licenses/LICENSE-2.0
  13   *
  14   * Unless required by applicable law or agreed to in writing, software
  15   * distributed under the License is distributed on an "AS IS" BASIS,
  16   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  17   * See the License for the specific language governing permissions and
  18   * limitations under the License.
  19   *
  20   * PHP Version 5
  21   *
  22   * @file     CAS/GracefullTerminationException.php
  23   * @category Authentication
  24   * @package  PhpCAS
  25   * @author   Joachim Fritschi <jfritschi@freenet.de>
  26   * @author   Adam Franco <afranco@middlebury.edu>
  27   * @license  http://www.apache.org/licenses/LICENSE-2.0  Apache License 2.0
  28   * @link     https://wiki.jasig.org/display/CASC/phpCAS
  29   */
  30  
  31  /**
  32   * An exception for terminatinating execution or to throw for unit testing
  33   *
  34   * @class     CAS_GracefullTerminationException.php
  35   * @category Authentication
  36   * @package  PhpCAS
  37   * @author   Joachim Fritschi <jfritschi@freenet.de>
  38   * @author   Adam Franco <afranco@middlebury.edu>
  39   * @license  http://www.apache.org/licenses/LICENSE-2.0  Apache License 2.0
  40   * @link     https://wiki.jasig.org/display/CASC/phpCAS
  41   */
  42  
  43  class CAS_GracefullTerminationException
  44  extends RuntimeException
  45  implements CAS_Exception
  46  {
  47  
  48      /**
  49       * Test if exceptions should be thrown or if we should just exit.
  50       * In production usage we want to just exit cleanly when prompting the user
  51       * for a redirect without filling the error logs with uncaught exceptions.
  52       * In unit testing scenarios we cannot exit or we won't be able to continue
  53       * with our tests.
  54       *
  55       * @param string $message Message Text
  56       * @param int $code    Error code
  57       *
  58       * @return self
  59       */
  60      public function __construct ($message = 'Terminate Gracefully', $code = 0)
  61      {
  62          // Exit cleanly to avoid filling up the logs with uncaught exceptions.
  63          if (self::$_exitWhenThrown) {
  64              exit;
  65          } else {
  66              // Throw exceptions to allow unit testing to continue;
  67              parent::__construct($message, $code);
  68          }
  69      }
  70  
  71      private static $_exitWhenThrown = true;
  72      /**
  73      * Force phpcas to thow Exceptions instead of calling exit()
  74      * Needed for unit testing. Generally shouldn't be used in production due to
  75      * an increase in Apache error logging if CAS_GracefulTerminiationExceptions
  76      * are not caught and handled.
  77      *
  78      * @return void
  79      */
  80      public static function throwInsteadOfExiting()
  81      {
  82          self::$_exitWhenThrown = false;
  83      }
  84  
  85  }
  86  ?>