$eventdata->name = 'paypal_enrolment'; $eventdata->userfrom = $user; $eventdata->userto = $admin; $eventdata->subject = get_string("enrolmentnew", 'enrol', $shortname); $eventdata->fullmessage = get_string('enrolmentnewuser', 'enrol', $a); $eventdata->fullmessageformat = FORMAT_PLAIN; $eventdata->fullmessagehtml = ''; $eventdata->smallmessage = ''; message_send($eventdata); } } } else { if (strcmp($result, "INVALID") == 0) { // ERROR $DB->insert_record("enrol_paypal", $data, false); message_paypal_error_to_admin("Received an invalid payment notification!! (Fake payment?)", $data); } } } exit; //--- HELPER FUNCTIONS -------------------------------------------------------------------------------------- function message_paypal_error_to_admin($subject, $data) { echo $subject; $admin = get_admin(); $site = get_site(); $message = "{$site->fullname}: Transaction failed.\n\n{$subject}\n\n"; foreach ($data as $key => $value) { $message .= "{$key} => {$value}\n"; } $eventdata = new stdClass();
$data->payment_gross = $data->mc_gross; $data->payment_currency = $data->mc_currency; $data->timeupdated = time(); // Required for message_send. $PAGE->set_context(context_system::instance()); /// get the user and course records if (!($user = $DB->get_record("user", array("id" => $data->userid)))) { \enrol_paypal\util::message_paypal_error_to_admin("Not a valid user id", $data); die; } if (!($course = $DB->get_record("course", array("id" => $data->courseid)))) { \enrol_paypal\util::message_paypal_error_to_admin("Not a valid course id", $data); die; } if (!($context = context_course::instance($course->id, IGNORE_MISSING))) { message_paypal_error_to_admin("Not a valid context id", $data); die; } // Now that the course/context has been validated, we can set it. Not that it's wonderful // to set contexts more than once but system->course switches are accepted. // Required for message_send. $PAGE->set_context($context); if (!($plugin_instance = $DB->get_record("enrol", array("id" => $data->instanceid, "status" => 0)))) { \enrol_paypal\util::message_paypal_error_to_admin("Not a valid instance id", $data); die; } $plugin = enrol_get_plugin('paypal'); /// Open a connection back to PayPal to validate the data $paypaladdr = empty($CFG->usepaypalsandbox) ? 'www.paypal.com' : 'www.sandbox.paypal.com'; $c = new curl(); $options = array('returntransfer' => true, 'httpheader' => array('application/x-www-form-urlencoded', "Host: {$paypaladdr}"), 'timeout' => 30, 'CURLOPT_HTTP_VERSION' => CURL_HTTP_VERSION_1_1);