5cc5e7792fd84702c14f575449208795e5b916fe
[moodle.git] / admin / portfolio.php
1 <?php
3 require_once(dirname(dirname(__FILE__)) . '/config.php');
4 require_once($CFG->libdir . '/portfoliolib.php');
5 require_once($CFG->libdir . '/portfolio/forms.php');
6 require_once($CFG->libdir . '/adminlib.php');
8 $portfolio     = optional_param('pf', '', PARAM_FORMAT);
9 $action        = optional_param('action', '', PARAM_ALPHA);
10 $sure          = optional_param('sure', '', PARAM_ALPHA);
12 $display = true; // fall through to normal display
14 $pagename = 'portfoliocontroller';
16 if ($action == 'edit') {
17     $pagename = 'portfoliosettings' . $portfolio;
18 } else if ($action == 'delete') {
19     $pagename = 'portfoliodelete';
20 } else if (($action == 'newon') || ($action == 'newoff')) {
21     $pagename = 'portfolionew';
22 }
24 // Need to remember this for form
25 $formaction = $action;
27 // Check what visibility to show the new repository
28 if ($action == 'newon') {
29     $action = 'new';
30     $visible = 1;
31 } else if ($action == 'newoff') {
32     $action = 'new';
33     $visible = 0;
34 }
36 admin_externalpage_setup($pagename);
38 require_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM));
40 $baseurl    = "$CFG->wwwroot/$CFG->admin/settings.php?section=manageportfolios";
41 $sesskeyurl = "$CFG->wwwroot/$CFG->admin/portfolio.php?sesskey=" . sesskey();
42 $configstr  = get_string('manageportfolios', 'portfolio');
44 $return = true; // direct back to the main page
46 if (($action == 'edit') || ($action == 'new')) {
47     if (($action == 'edit')) {
48         $instance = portfolio_instance($portfolio);
49         $plugin = $instance->get('plugin');
51         // Since visible is being passed to form
52         // and used to set the value when a new
53         // instance is created - we must also
54         // place the currently visibility into the
55         // form as well
56         $visible = $instance->get('visible');
57     } else {
58         $instance = null;
59         $plugin = $portfolio;
60     }
62     $PAGE->set_pagetype('admin-portfolio-' . $plugin);
64     // Display the edit form for this instance
65     $mform = new portfolio_admin_form('', array('plugin' => $plugin, 'instance' => $instance, 'portfolio' => $portfolio, 'action' => $formaction, 'visible' => $visible));
66     // End setup, begin output
67     if ($mform->is_cancelled()){
68         redirect($baseurl);
69         exit;
70     } else if (($fromform = $mform->get_data()) && (confirm_sesskey())) {
71         // Unset whatever doesn't belong in fromform
72         foreach (array('pf', 'action', 'plugin', 'sesskey', 'submitbutton') as $key) {
73             unset($fromform->{$key});
74         }
75         // This branch is where you process validated data.
76         if ($action == 'edit') {
77             $instance->set_config((array)$fromform);
78             $instance->save();
79         } else {
80             portfolio_static_function($plugin, 'create_instance', $plugin, $fromform->name, $fromform);
81         }
82         $savedstr = get_string('instancesaved', 'portfolio');
83         redirect($baseurl, $savedstr, 1);
84         exit;
85     } else {
86         echo $OUTPUT->header();
87         echo $OUTPUT->heading(get_string('configplugin', 'portfolio'));
88         echo $OUTPUT->box_start();
89         $mform->display();
90         echo $OUTPUT->box_end();
91         $return = false;
92     }
93 } else if (($action == 'hide') || ($action == 'show')) {
94     require_sesskey();
96     $instance = portfolio_instance($portfolio);
97     $current = $instance->get('visible');
98     if (empty($current) && $instance->instance_sanity_check()) {
99         print_error('cannotsetvisible', 'portfolio', $baseurl);
100     }
102     if ($action == 'show') {
103         $visible = 1;
104     } else {
105         $visible = 0;
106     }
108     $instance->set('visible', $visible);
109     $instance->save();
110     $return = true;
111 } else if ($action == 'delete') {
112     $instance = portfolio_instance($portfolio);
113     if ($sure) {
114         if (!confirm_sesskey()) {
115             print_error('confirmsesskeybad', '', $baseurl);
116         }
117         if ($instance->delete()) {
118             $deletedstr = get_string('instancedeleted', 'portfolio');
119             redirect($baseurl, $deletedstr, 1);
120         } else {
121             print_error('instancenotdeleted', 'portfolio', $baseurl);
122         }
123         exit;
124     } else {
125         echo $OUTPUT->header();
126         echo $OUTPUT->confirm(get_string('sure', 'portfolio', $instance->get('name')), $sesskeyurl . '&pf='.$portfolio.'&action=delete&sure=yes', $baseurl);
127         $return = false;
128     }
131 if (!empty($return)) {
132     // normal display. fall through to here (don't call exit) if you want this to run
133     redirect($baseurl);
135 echo $OUTPUT->footer();