2a4816d18a18f67d64be60c78448673643d4fdfe
[moodle.git] / lib / portfolio / exceptions.php
1 <?php
2 /**
3  * Moodle - Modular Object-Oriented Dynamic Learning Environment
4  *          http://moodle.org
5  * Copyright (C) 1999 onwards Martin Dougiamas  http://dougiamas.com
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
19  *
20  * @package    core
21  * @subpackage portfolio
22  * @author     Penny Leach <penny@catalyst.net.nz>
23  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL
24  * @copyright  (C) 1999 onwards Martin Dougiamas  http://dougiamas.com
25  *
26  * This file contains all the portfolio exception classes.
27  */
29 defined('MOODLE_INTERNAL') || die();
31 /**
32 * top level portfolio exception.
33 * sometimes caught and rethrown as {@see portfolio_export_exception}
34 */
35 class portfolio_exception extends moodle_exception {}
37 /**
38 * exception to throw during an export - will clean up session and tempdata
39 */
40 class portfolio_export_exception extends portfolio_exception {
42     /**
43     * constructor.
44     * @param object $exporter instance of portfolio_exporter (will handle null case)
45     * @param string $errorcode language string key
46     * @param string $module language string module (optional, defaults to moodle)
47     * @param string $continue url to continue to (optional, defaults to wwwroot)
48     * @param mixed $a language string data (optional, defaults to  null)
49     */
50     public function __construct($exporter, $errorcode, $module=null, $continue=null, $a=null) {
51         global $CFG;
53         if (!empty($exporter) && $exporter instanceof portfolio_exporter) {
54             if (empty($continue)) {
55                 $caller = $exporter->get('caller');
56                 if (!empty($caller) && $caller instanceof portfolio_caller_base) {
57                     $continue = $exporter->get('caller')->get_return_url();
58                 }
59             }
60             // this was previously only called if we were in cron,
61             // but I think if there's always an exception, we should clean up
62             // rather than force the user to resolve the export later.
63             $exporter->process_stage_cleanup();
64         }
65         parent::__construct($errorcode, $module, $continue, $a);
66     }
67 }
69 /**
70 * exception for callers to throw when they have a problem.
71 * usually caught and rethrown as {@see portfolio_export_exception}
72 */
73 class portfolio_caller_exception extends portfolio_exception {}
75 /**
76 * exception for portfolio plugins to throw when they have a problem.
77 * usually caught and rethrown as {@see portfolio_export_exception}
78 */
79 class portfolio_plugin_exception extends portfolio_exception {}
81 /**
82 * exception for interacting with the button class
83 */
84 class portfolio_button_exception extends portfolio_exception {}
86 /**
87  * leap2a exception - for invalid api calls
88  */
89 class portfolio_format_leap2a_exception extends portfolio_exception {}