mirror of
https://github.com/moodle/moodle.git
synced 2025-02-08 09:02:07 +01:00
04b8b68848
It is time to use own enrolment method when calling funcs enrol_into_course, role_assign, role_unassign. Zend Studio Warning: Assignment in condition (line XX), Solved, one more () Assignments in a conditional statement are sometimes the result of a typo. In many cases, instead of the assignment operator =, the equality operator == should be used. When comparing a variable and a non-variable expression, it is common practice to put the variable on the right-hand side of the equality operator, so that if the equality operator is erroneously replaced with the assignment operator, PHP will report a parse error immediately. This helps you avoid a big subset of this class of bugs. Merged from MOODLE_19_STABLE
222 lines
6.1 KiB
PHP
222 lines
6.1 KiB
PHP
<?php // $Id$
|
|
|
|
function get_course_cost($course)
|
|
{
|
|
global $CFG;
|
|
|
|
$cost = (float)0;
|
|
$currency = (!empty($course->currency))
|
|
? $course->currency :( empty($CFG->enrol_currency)
|
|
? 'USD' : $CFG->enrol_currency );
|
|
|
|
if (!empty($course->cost)) {
|
|
$cost = (float)(((float)$course->cost) < 0) ? $CFG->enrol_cost : $course->cost;
|
|
}
|
|
|
|
$cost = format_float($cost, 2);
|
|
$ret = array(
|
|
'cost' => $cost,
|
|
'currency' => $currency
|
|
);
|
|
|
|
return $ret;
|
|
}
|
|
|
|
function zero_cost($course) {
|
|
$curcost = get_course_cost($course);
|
|
return (abs($curcost['cost']) < 0.01);
|
|
}
|
|
|
|
function prevent_double_paid($course)
|
|
{
|
|
global $CFG, $SESSION, $USER;
|
|
|
|
$sql = "SELECT id FROM {$CFG->prefix}enrol_authorize WHERE userid = '$USER->id' AND courseid = '$course->id' ";
|
|
|
|
if (empty($CFG->an_test)) { // Real mode
|
|
$sql .= 'AND status IN('.AN_STATUS_AUTH.','.AN_STATUS_UNDERREVIEW.','.AN_STATUS_APPROVEDREVIEW.')';
|
|
}
|
|
else { // Test mode
|
|
$sql .= 'AND status='.AN_STATUS_NONE;
|
|
}
|
|
|
|
if (($recid = get_field_sql($sql))) {
|
|
$a = new stdClass;
|
|
$a->orderid = $recid;
|
|
$a->url = "$CFG->wwwroot/enrol/authorize/index.php?order=$a->orderid";
|
|
redirect($a->url, get_string("paymentpending", "enrol_authorize", $a), '10');
|
|
return;
|
|
}
|
|
if (isset($SESSION->ccpaid)) {
|
|
unset($SESSION->ccpaid);
|
|
redirect($CFG->wwwroot . '/login/logout.php?sesskey='.sesskey());
|
|
return;
|
|
}
|
|
}
|
|
|
|
function get_list_of_creditcards($getall = false)
|
|
{
|
|
global $CFG;
|
|
|
|
$alltypes = array(
|
|
'mcd' => 'Master Card',
|
|
'vis' => 'Visa',
|
|
'amx' => 'American Express',
|
|
'dsc' => 'Discover',
|
|
'dnc' => 'Diners Club',
|
|
'jcb' => 'JCB',
|
|
'swi' => 'Switch',
|
|
'dlt' => 'Delta',
|
|
'enr' => 'EnRoute'
|
|
);
|
|
|
|
if ($getall or empty($CFG->an_acceptccs)) {
|
|
return $alltypes;
|
|
}
|
|
|
|
$ret = array();
|
|
$ccs = explode(',', $CFG->an_acceptccs);
|
|
foreach ($ccs as $key) {
|
|
$ret[$key] = $alltypes[$key];
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
function get_list_of_payment_methods($getall = false)
|
|
{
|
|
global $CFG;
|
|
|
|
if ($getall || empty($CFG->an_acceptmethods)) {
|
|
return array(AN_METHOD_CC, AN_METHOD_ECHECK);
|
|
}
|
|
else {
|
|
return explode(',', $CFG->an_acceptmethods);
|
|
}
|
|
}
|
|
|
|
function get_list_of_bank_account_types($getall = false)
|
|
{
|
|
global $CFG;
|
|
|
|
if ($getall || empty($CFG->an_acceptechecktypes)) {
|
|
return array('CHECKING', 'BUSINESSCHECKING', 'SAVINGS');
|
|
}
|
|
else {
|
|
return explode(',', $CFG->an_acceptechecktypes);
|
|
}
|
|
}
|
|
|
|
function email_to_admin($subject, $data)
|
|
{
|
|
global $SITE;
|
|
|
|
$admin = get_admin();
|
|
$data = (array)$data;
|
|
|
|
$message = "$SITE->fullname: Transaction failed.\n\n$subject\n\n";
|
|
$message .= print_r($data, true);
|
|
email_to_user($admin, $admin, "$SITE->fullname: Authorize.net ERROR", $message);
|
|
}
|
|
|
|
|
|
function send_welcome_messages($orderdata)
|
|
{
|
|
global $CFG, $SITE;
|
|
|
|
if (empty($orderdata)) {
|
|
return;
|
|
}
|
|
|
|
if (is_numeric($orderdata)) {
|
|
$orderdata = array($orderdata);
|
|
}
|
|
|
|
$select = "SELECT e.id, e.courseid, e.userid, c.fullname
|
|
FROM {$CFG->prefix}enrol_authorize e
|
|
INNER JOIN {$CFG->prefix}course c ON c.id = e.courseid
|
|
WHERE e.id IN(" . implode(',', $orderdata) . ")
|
|
ORDER BY e.userid";
|
|
|
|
$emailinfo = get_records_sql($select);
|
|
if (1 == count($emailinfo)) {
|
|
$ei = reset($emailinfo);
|
|
$context = get_context_instance(CONTEXT_COURSE, $ei->courseid);
|
|
$paymentmanagers = get_users_by_capability($context, 'enrol/authorize:managepayments', '', '', '0', '1');
|
|
$sender = array_shift($paymentmanagers);
|
|
}
|
|
else {
|
|
$sender = get_admin();
|
|
}
|
|
|
|
for($ei = reset($emailinfo); $ei !== false; ) {
|
|
$usercourses = array();
|
|
$lastuserid = $ei->userid;
|
|
for($current = $ei; $current !== false && $current->userid == $lastuserid; $current = next($emailinfo)) {
|
|
$usercourses[] = $current->fullname;
|
|
}
|
|
$ei = $current;
|
|
if ($user = get_record('user', 'id', $lastuserid)) {
|
|
$a = new stdClass;
|
|
$a->name = $user->firstname;
|
|
$a->courses = implode("\n", $usercourses);
|
|
$a->profileurl = "$CFG->wwwroot/user/view.php?id=$lastuserid";
|
|
$a->paymenturl = "$CFG->wwwroot/enrol/authorize/index.php?user=$lastuserid";
|
|
$emailmessage = get_string('welcometocoursesemail', 'enrol_authorize', $a);
|
|
@email_to_user($user, $sender, get_string("enrolmentnew", '', $SITE->shortname), $emailmessage);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
function check_curl_available()
|
|
{
|
|
return function_exists('curl_init') &&
|
|
function_exists('stream_get_wrappers') &&
|
|
in_array('https', stream_get_wrappers());
|
|
}
|
|
|
|
|
|
function authorize_verify_account()
|
|
{
|
|
global $CFG, $USER, $SITE;
|
|
require_once('authorizenetlib.php');
|
|
|
|
$CFG->an_test = 1; // Test mode
|
|
|
|
$order = new stdClass();
|
|
$order->id = -1;
|
|
$order->paymentmethod = AN_METHOD_CC;
|
|
$order->refundinfo = '1111';
|
|
$order->ccname = 'Test User';
|
|
$order->courseid = $SITE->id;
|
|
$order->userid = $USER->id;
|
|
$order->status = AN_STATUS_NONE;
|
|
$order->settletime = 0;
|
|
$order->transid = 0;
|
|
$order->timecreated = time();
|
|
$order->amount = '0.01';
|
|
$order->currency = 'USD';
|
|
|
|
$extra = new stdClass();
|
|
$extra->x_card_num = '4111111111111111';
|
|
$extra->x_card_code = '123';
|
|
$extra->x_exp_date = "129999";
|
|
$extra->x_currency_code = $order->currency;
|
|
$extra->x_amount = $order->amount;
|
|
$extra->x_first_name = 'Test';
|
|
$extra->x_last_name = 'User';
|
|
$extra->x_country = $USER->country;
|
|
|
|
$extra->x_invoice_num = $order->id;
|
|
$extra->x_description = 'Verify Account';
|
|
|
|
if (AN_APPROVED == authorize_action($order, $message, $extra, AN_ACTION_AUTH_CAPTURE, 'vis')) {
|
|
return get_string('verifyaccountresult', 'enrol_authorize', get_string('success'));
|
|
}
|
|
else {
|
|
return get_string('verifyaccountresult', 'enrol_authorize', $message);
|
|
}
|
|
}
|
|
|
|
?>
|