Skip to content

Commit

Permalink
MDL-23502 PayPal plugin now using separate edit form; added missing c…
Browse files Browse the repository at this point in the history
…apabilities and unenrol self support
  • Loading branch information
skodak committed Jul 31, 2010
1 parent 8372f76 commit 42761bc
Show file tree
Hide file tree
Showing 9 changed files with 395 additions and 277 deletions.
44 changes: 0 additions & 44 deletions enrol/paypal/addinstance.php

This file was deleted.

64 changes: 64 additions & 0 deletions enrol/paypal/db/access.php
@@ -0,0 +1,64 @@
<?php

// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.

/**
* Capabilities for paypal enrolment plugin.
*
* @package enrol
* @subpackage paypal
* @copyright 2010 Petr Skoda {@link http://skodak.org}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/

defined('MOODLE_INTERNAL') || die;

$capabilities = array(

'enrol/paypal:config' => array(
'captype' => 'write',
'contextlevel' => CONTEXT_COURSE,
'legacy' => array(
'manager' => CAP_ALLOW,
)
),

'enrol/paypal:manage' => array(
'captype' => 'write',
'contextlevel' => CONTEXT_COURSE,
'legacy' => array(
'manager' => CAP_ALLOW,
'editingteacher' => CAP_ALLOW,
)
),

'enrol/paypal:unenrol' => array(
'captype' => 'write',
'contextlevel' => CONTEXT_COURSE,
'legacy' => array(
'manager' => CAP_ALLOW,
)
),

'enrol/paypal:unenrolself' => array(
'captype' => 'write',
'contextlevel' => CONTEXT_COURSE,
'legacy' => array(
)
),

);

90 changes: 90 additions & 0 deletions enrol/paypal/edit.php
@@ -0,0 +1,90 @@
<?php

// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.

/**
* Adds new instance of enrol_paypal to specified course
* or edits current instance.
*
* @package enrol
* @subpackage paypal
* @copyright 2010 Petr Skoda {@link http://skodak.org}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/

require('../../config.php');
require_once('edit_form.php');

$courseid = required_param('courseid', PARAM_INT);
$instanceid = optional_param('id', 0, PARAM_INT); // instanceid

$course = $DB->get_record('course', array('id'=>$courseid), '*', MUST_EXIST);
$context = get_context_instance(CONTEXT_COURSE, $course->id, MUST_EXIST);

require_login($course);
require_capability('enrol/paypal:config', $context);

$PAGE->set_url('/enrol/paypal/edit.php', array('courseid'=>$course->id, 'id'=>$instanceid));
$PAGE->set_pagelayout('admin');

$return = new moodle_url('/enrol/instances.php', array('id'=>$course->id));
if (!enrol_is_enabled('paypal')) {
redirect($return);
}

$plugin = enrol_get_plugin('paypal');

if ($instanceid) {
$instance = $DB->get_record('enrol', array('courseid'=>$course->id, 'enrol'=>'paypal', 'id'=>$instanceid), '*', MUST_EXIST);
} else {
require_capability('moodle/course:enrolconfig', $context);
// no instance yet, we have to add new instance
$instance = new object();
$instance->id = null;
$instance->courseid = $course->id;
}

$mform = new enrol_paypal_edit_form(NULL, array($instance, $plugin, $context));

if ($mform->is_cancelled()) {
redirect($return);

} else if ($data = $mform->get_data()) {
if ($instance->id) {
$instance->status = $data->status;
$instance->name = $data->name;
$instance->cost = $data->cost;
$instance->currency = $data->currency;
$instance->roleid = $data->roleid;
$instance->enrolperiod = $data->enrolperiod;
$instance->enrolstartdate = $data->enrolstartdate;
$instance->enrolenddate = $data->enrolenddate;
$instance->timemodified = time();
$DB->update_record('enrol', $instance);

} else {
$fields = array('status'=>$data->status, 'name'=>$data->name, 'cost'=>$data->cost, 'currency'=>$data->currency, 'roleid'=>$data->roleid,
'enrolperiod'=>$data->enrolperiod, 'enrolstartdate'=>$data->enrolstartdate, 'enrolenddate'=>$data->enrolenddate);
$plugin->add_instance($course, $fields);
}

redirect($return);
}

echo $OUTPUT->header();
echo $OUTPUT->heading(get_string('pluginname', 'enrol_paypal'));
$mform->display();
echo $OUTPUT->footer();
108 changes: 108 additions & 0 deletions enrol/paypal/edit_form.php
@@ -0,0 +1,108 @@
<?php

// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.

/**
* Adds new instance of enrol_paypal to specified course
* or edits current instance.
*
* @package enrol
* @subpackage paypal
* @copyright 2010 Petr Skoda {@link http://skodak.org}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/

defined('MOODLE_INTERNAL') || die;

require_once($CFG->libdir.'/formslib.php');

class enrol_paypal_edit_form extends moodleform {

function definition() {
$mform = $this->_form;

list($instance, $plugin, $context) = $this->_customdata;

$mform->addElement('header', 'header', get_string('pluginname', 'enrol_paypal'));

$mform->addElement('text', 'name', get_string('custominstancename', 'enrol'));

$options = array(ENROL_INSTANCE_ENABLED => get_string('yes'),
ENROL_INSTANCE_DISABLED => get_string('no'));
$mform->addElement('select', 'status', get_string('status', 'enrol_paypal'), $options);
$mform->setDefault('status', $plugin->get_config('status'));

$mform->addElement('text', 'cost', get_string('cost', 'enrol_paypal'), array('size'=>4));
$mform->setDefault('cost', $plugin->get_config('cost'));

$paypalcurrencies = array('USD' => 'US Dollars',
'EUR' => 'Euros',
'JPY' => 'Japanese Yen',
'GBP' => 'British Pounds',
'CAD' => 'Canadian Dollars',
'AUD' => 'Australian Dollars'
);
$mform->addElement('select', 'currency', get_string('currency', 'enrol_paypal'), $paypalcurrencies);
$mform->setDefault('currency', $plugin->get_config('currency'));

if ($instance->id) {
$roles = get_default_enrol_roles($context, $instance->roleid);
} else {
$roles = get_default_enrol_roles($context, $plugin->get_config('roleid'));
}
$mform->addElement('select', 'roleid', get_string('assignrole', 'enrol_paypal'), $roles);
$mform->setDefault('roleid', $plugin->get_config('roleid'));


$mform->addElement('duration', 'enrolperiod', get_string('enrolperiod', 'enrol_paypal'), array('optional' => true, 'defaultunit' => 86400));
$mform->setDefault('enrolperiod', $plugin->get_config('enrolperiod'));


$mform->addElement('date_selector', 'enrolstartdate', get_string('enrolstartdate', 'enrol_paypal'), array('optional' => true));
$mform->setDefault('enrolstartdate', 0);


$mform->addElement('date_selector', 'enrolenddate', get_string('enrolenddate', 'enrol_paypal'), array('optional' => true));
$mform->setDefault('enrolenddate', 0);

$mform->addElement('hidden', 'id');
$mform->addElement('hidden', 'courseid');

$this->add_action_buttons();

$this->set_data($instance);
}

function validation($data, $files) {
global $DB, $CFG;
$errors = parent::validation($data, $files);

list($instance, $plugin, $context) = $this->_customdata;

if ($data['status'] == ENROL_INSTANCE_ENABLED) {
if (!empty($data['enrolenddate']) and $data['enrolenddate'] < $data['enrolstartdate']) {
$errors['enrolenddate'] = get_string('enrolenddaterror', 'enrol_paypal');
}

if (!is_numeric($data['cost'])) {
$errors['cost'] = get_string('costerror', 'enrol_paypal');

}
}

return $errors;
}
}
4 changes: 4 additions & 0 deletions enrol/paypal/lang/en/enrol_paypal.php
Expand Up @@ -42,6 +42,10 @@
$string['mailstudents'] = 'Notify students';
$string['mailteachers'] = 'Notify teachers';
$string['nocost'] = 'There is no cost associated with enrolling in this course!';
$string['paypal:config'] = 'Configure PayPal enrol instances';
$string['paypal:manage'] = 'Manage enrolled users';
$string['paypal:unenrol'] = 'Unenrol users from course';
$string['paypal:unenrolself'] = 'Unenrol self from the course';
$string['paypalaccepted'] = 'PayPal payments accepted';
$string['pluginname'] = 'PayPal';
$string['pluginname_desc'] = 'The PayPal module allows you to set up paid courses. If the cost for any course is zero, then students are not asked to pay for entry. There is a site-wide cost that you set here as a default for the whole site and then a course setting that you can set for each course individually. The course cost overrides the site cost.';
Expand Down

0 comments on commit 42761bc

Please sign in to comment.