Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 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 7
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
?>