moodle/enrol/paypal/enrol.php
stronk7 04ad0d91e8 Now text sent to PayPal can be 'sanitised' to avoid
some diacritics (spanish for now) break the enrol process.
Only German and French diacritics are supported for now by PayPal.
Functionality can be easily expanded to other characters.
It make the sanitity when $CFG->sanitise_for_paypal is enabled.

Merged from MOODLE_14_STABLE
2005-01-05 00:28:26 +00:00

188 lines
5.1 KiB
PHP
Raw Blame History

<?php // $Id$
// Implements all the main code for the Paypal plugin
require_once("$CFG->dirroot/enrol/enrol.class.php");
class enrolment_plugin extends enrolment_base {
/// Override the base print_entry() function
function print_entry($course) {
global $CFG, $USER;
$strloginto = get_string("loginto", "", $course->shortname);
$strcourses = get_string("courses");
$teacher = get_teacher($course->id);
if ( (float) $course->cost < 0 ) {
$cost = (float) $CFG->enrol_cost;
} else {
$cost = (float) $course->cost;
}
$cost = format_float($cost, 2);
if (abs($cost) < 0.01) { // no cost, default to base class entry to course
parent::print_entry($course);
} else {
print_header($strloginto, $course->fullname,
"<a href=\"$CFG->wwwroot/course/\">$strcourses</a> -> $strloginto");
print_course($course, "80%");
print_simple_box_start("center");
//Sanitise some fields before building the PayPal form
$coursefullname = $this->sanitise_for_paypal($course->fullname);
$courseshortname = $this->sanitise_for_paypal($course->shortname);
$userfullname = $this->sanitise_for_paypal(fullname($USER));
$userfirstname = $this->sanitise_for_paypal($USER->firstname);
$userlastname = $this->sanitise_for_paypal($USER->lastname);
$useraddress = $this->sanitise_for_paypal($USER->address);
$usercity = $this->sanitise_for_paypal($USER->city);
include("$CFG->dirroot/enrol/paypal/enrol.html");
print_simple_box_end();
print_footer();
}
} // end of function print_entry()
/// Override the get_access_icons() function
function get_access_icons($course) {
global $CFG;
$str = '';
if ( (float) $course->cost < 0) {
$cost = (float) $CFG->enrol_cost;
} else {
$cost = (float) $course->cost;
}
if (abs($cost) < 0.01) {
$str = parent::get_access_icons($course);
} else {
$strrequirespayment = get_string("requirespayment");
$strcost = get_string("cost");
if (empty($CFG->enrol_currency)) {
set_config('enrol_currency', 'USD');
}
switch ($CFG->enrol_currency) {
case 'EUR': $currency = '&euro;'; break;
case 'CAD': $currency = '$'; break;
case 'GBP': $currency = '&pound;'; break;
case 'JPY': $currency = '&yen;'; break;
default: $currency = '$'; break;
}
$str .= '<span class="courseboxcost" title="'.$strrequirespayment.'">'.$strcost.': ';
$str .= $currency.format_float($cost,2).'</span>';
}
return $str;
}
/// Override the base class config_form() function
function config_form($frm) {
global $CFG;
$paypalcurrencies = array( 'USD' => 'US Dollars',
'EUR' => 'Euros',
'JPY' => 'Japanese Yen',
'GBP' => 'British Pounds',
'CAD' => 'Canadian Dollars'
);
include("$CFG->dirroot/enrol/paypal/config.html");
}
function process_config($config) {
if (!isset($config->enrol_cost)) {
$config->enrol_cost = 0;
}
set_config('enrol_cost', $config->enrol_cost);
if (!isset($config->enrol_currency)) {
$config->enrol_currency = 'USD';
}
set_config('enrol_currency', $config->enrol_currency);
if (!isset($config->enrol_paypalbusiness)) {
$config->enrol_paypalbusiness = '';
}
set_config('enrol_paypalbusiness', $config->enrol_paypalbusiness);
if (!isset($config->enrol_mailstudents)) {
$config->enrol_mailstudents = '';
}
set_config('enrol_mailstudents', $config->enrol_mailstudents);
if (!isset($config->enrol_mailteachers)) {
$config->enrol_mailteachers = '';
}
set_config('enrol_mailteachers', $config->enrol_mailteachers);
if (!isset($config->enrol_mailadmins)) {
$config->enrol_mailadmins = '';
}
set_config('enrol_mailadmins', $config->enrol_mailadmins);
return true;
}
//To avoid wrong (for PayPal) characters in sent data
function sanitise_for_paypal($text) {
global $CFG;
if (!empty($CFG->sanitise_for_paypal)) {
//Array of characters to replace (not allowed by PayPal)
//Can be expanded as necessary to add other diacritics
$replace = array('<27>' => 'a', //Spanish characters
'<27>' => 'e',
'<27>' => 'i',
'<27>' => 'o',
'<27>' => 'u',
'<27>' => 'A',
'<27>' => 'E',
'<27>' => 'I',
'<27>' => 'O',
'<27>' => 'U',
'<27>' => 'n',
'<27>' => 'N',
'<27>' => 'u',
'<27>' => 'U');
$text = strtr($text, $replace);
//Make here other sanities if necessary
}
return $text;
}
} // end of class definition
?>