index.php & lib.php
Payment management functions moved to lib.php
This commit is contained in:
+22
-555
@@ -1,570 +1,37 @@
|
||||
<?php // $Id$
|
||||
<?PHP // $Id$
|
||||
|
||||
require_once '../../config.php';
|
||||
require_once $CFG->dirroot.'/enrol/authorize/const.php';
|
||||
require_once $CFG->dirroot.'/enrol/authorize/action.php';
|
||||
require_once '../../config.php';
|
||||
require_once 'lib.php';
|
||||
|
||||
define('ORDER_CAPTURE', 'capture');
|
||||
define('ORDER_DELETE', 'delete');
|
||||
define('ORDER_REFUND', 'refund');
|
||||
define('ORDER_VOID', 'void');
|
||||
|
||||
if (!($site = get_site())) {
|
||||
error("Could not find a site!");
|
||||
}
|
||||
|
||||
require_login();
|
||||
|
||||
if (isguest()) {
|
||||
error("Guests cannot use this page.");
|
||||
}
|
||||
|
||||
$orderid = optional_param('order', 0, PARAM_INT);
|
||||
|
||||
$strs = get_strings(array('user','status','action','delete','time','course','confirm','yes','no','none','error'));
|
||||
$authstrs = get_strings(array('paymentmanagement','orderid','void','capture','refund','delete',
|
||||
'authcaptured','authorizedpendingcapture','capturedpendingsettle','capturedsettled',
|
||||
'settled','refunded','cancelled','expired','tested',
|
||||
'transid','settlementdate','notsettled','amount',
|
||||
'howmuch','captureyes','unenrolstudent'), 'enrol_authorize');
|
||||
|
||||
print_header("$site->shortname: $authstrs->paymentmanagement",
|
||||
"$site->fullname",
|
||||
"<a href=\"index.php\">$authstrs->paymentmanagement</a>", "");
|
||||
|
||||
if (!empty($orderid)) {
|
||||
authorize_order_details($orderid);
|
||||
}
|
||||
else {
|
||||
authorize_orders();
|
||||
}
|
||||
print_footer();
|
||||
|
||||
|
||||
function authorize_orders()
|
||||
{
|
||||
global $CFG, $USER;
|
||||
global $strs, $authstrs;
|
||||
require_once $CFG->libdir.'/tablelib.php';
|
||||
|
||||
$perpage = 10;
|
||||
$userid = optional_param('user', 0, PARAM_INT);
|
||||
$courseid = optional_param('course', SITEID, PARAM_INT);
|
||||
$status = optional_param('status', AN_STATUS_NONE, PARAM_INT);
|
||||
|
||||
if (!isteacher($courseid)) {
|
||||
$userid = $USER->id;
|
||||
if (! $site = get_site()) {
|
||||
error("Could not find a site!");
|
||||
}
|
||||
|
||||
$baseurl = $CFG->wwwroot."/enrol/authorize/index.php?user=$userid";
|
||||
$statusmenu = array(AN_STATUS_NONE => get_string('all'),
|
||||
AN_STATUS_AUTH => $authstrs->authorizedpendingcapture,
|
||||
AN_STATUS_AUTHCAPTURE => $authstrs->authcaptured,
|
||||
AN_STATUS_CREDIT => $authstrs->refunded,
|
||||
AN_STATUS_VOID => $authstrs->cancelled,
|
||||
AN_STATUS_EXPIRE => $authstrs->expired
|
||||
);
|
||||
require_login();
|
||||
|
||||
print_simple_box_start('center');
|
||||
echo "$strs->status: ";
|
||||
echo popup_form($baseurl.'&course='.$courseid.'&status=', $statusmenu, 'statusmenu', $status, '', '', '', true);
|
||||
if ($courses = get_courses('all', 'c.sortorder ASC', 'c.id,c.fullname,c.enrol')) {
|
||||
$popupcrs = array();
|
||||
foreach ($courses as $crs) {
|
||||
if ($crs->enrol == 'authorize' || (empty($crs->enrol) && $CFG->enrol == 'authorize')) {
|
||||
$popupcrs[(int)$crs->id] = $crs->fullname;
|
||||
}
|
||||
}
|
||||
echo " $strs->course: ";
|
||||
echo popup_form($baseurl.'&status='.$status.'&course=', $popupcrs, 'coursesmenu', $courseid, '', '', '', true);
|
||||
if (isguest()) {
|
||||
error("Guests cannot use this page.");
|
||||
}
|
||||
print_simple_box_end();
|
||||
|
||||
$table = new flexible_table('enrol-authorize');
|
||||
$table->set_attribute('width', '100%');
|
||||
$table->set_attribute('cellspacing', '0');
|
||||
$table->set_attribute('cellpadding', '3');
|
||||
$table->set_attribute('id', 'orders');
|
||||
$table->set_attribute('class', 'generaltable generalbox');
|
||||
$strs = get_strings(array('user','status','action','delete','time','course','confirm','yes','no','none','error'));
|
||||
$authstrs = get_strings(array('paymentmanagement','orderid','void','capture','refund','delete',
|
||||
'authcaptured','authorizedpendingcapture','capturedpendingsettle','capturedsettled',
|
||||
'settled','refunded','cancelled','expired','tested',
|
||||
'transid','settlementdate','notsettled','amount',
|
||||
'howmuch','captureyes','unenrolstudent'), 'enrol_authorize');
|
||||
|
||||
$table->define_columns(array('id', 'timecreated', 'userid', 'status', ''));
|
||||
$table->define_headers(array($authstrs->orderid, $strs->time, $strs->user, $strs->status, $strs->action));
|
||||
$table->define_baseurl($baseurl."&status=$status");
|
||||
print_header("$site->shortname: $authstrs->paymentmanagement",
|
||||
"$site->fullname",
|
||||
"<a href=\"index.php\">$authstrs->paymentmanagement</a>", "");
|
||||
|
||||
$table->sortable(true);
|
||||
$table->pageable(true);
|
||||
$table->setup();
|
||||
$orderid = optional_param('order', 0, PARAM_INT);
|
||||
|
||||
$select = "SELECT E.id, E.transid, E.courseid, E.userid, E.status, E.ccname, E.timecreated, E.settletime";
|
||||
$from = " FROM {$CFG->prefix}enrol_authorize E ";
|
||||
|
||||
if ($status > AN_STATUS_NONE) {
|
||||
if ($status == AN_STATUS_CREDIT) {
|
||||
$from .= "INNER JOIN {$CFG->prefix}enrol_authorize_refunds R ON E.id = R.orderid ";
|
||||
$where = "WHERE (E.status = '" . AN_STATUS_AUTHCAPTURE . "') ";
|
||||
}
|
||||
else {
|
||||
$where = "WHERE (E.status = '$status') ";
|
||||
}
|
||||
if (!empty($orderid)) {
|
||||
print_authorize_order_details($orderid);
|
||||
}
|
||||
else {
|
||||
if (empty($CFG->an_test)) {
|
||||
$where = "WHERE (E.status != '" . AN_STATUS_NONE . "') ";
|
||||
}
|
||||
else {
|
||||
$where = "WHERE (1=1) ";
|
||||
}
|
||||
print_authorize_orders();
|
||||
}
|
||||
|
||||
if ($userid > 0) {
|
||||
$where .= "AND (userid = '" . $userid . "') ";
|
||||
}
|
||||
if ($courseid != SITEID) {
|
||||
$where .= "AND (courseid = '" . $courseid . "') ";
|
||||
}
|
||||
|
||||
if ($sort = $table->get_sql_sort()) {
|
||||
$sort = ' ORDER BY ' . $sort;
|
||||
}
|
||||
else {
|
||||
$sort = ' ORDER BY id DESC ';
|
||||
}
|
||||
|
||||
$totalcount = count_records_sql('SELECT COUNT(*) ' . $from . $where);
|
||||
$table->initialbars($totalcount > $perpage);
|
||||
$table->pagesize($perpage, $totalcount);
|
||||
if ($table->get_page_start() !== '' && $table->get_page_size() !== '') {
|
||||
$limit = ' ' . sql_paging_limit($table->get_page_start(), $table->get_page_size());
|
||||
}
|
||||
else {
|
||||
$limit = '';
|
||||
}
|
||||
|
||||
if ($records = get_records_sql($select . $from . $where . $sort . $limit)) {
|
||||
foreach ($records as $record) {
|
||||
$actionstatus = get_order_status_desc($record);
|
||||
$actions = '';
|
||||
|
||||
if (empty($actionstatus->actions)) {
|
||||
$actions .= $strs->none;
|
||||
}
|
||||
else {
|
||||
foreach ($actionstatus->actions as $value) {
|
||||
$actions .= " <a href='index.php?$value=y&order=$record->id'>{$authstrs->$value}</a> ";
|
||||
}
|
||||
}
|
||||
|
||||
$table->add_data(array(
|
||||
"<a href='index.php?order=$record->id'>$record->id</a>",
|
||||
userdate($record->timecreated),
|
||||
$record->ccname,
|
||||
$authstrs->{$actionstatus->status},
|
||||
$actions
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
$table->print_html();
|
||||
}
|
||||
|
||||
|
||||
function authorize_order_details($orderno) {
|
||||
global $CFG, $USER;
|
||||
global $strs, $authstrs;
|
||||
|
||||
$unenrol = optional_param('unenrol', '');
|
||||
$cmdconfirm = optional_param('confirm', '', PARAM_ALPHA);
|
||||
|
||||
$cmdcapture = optional_param('capture', '', PARAM_ALPHA);
|
||||
$cmddelete = optional_param('delete', '', PARAM_ALPHA);
|
||||
$cmdrefund = optional_param('refund', '', PARAM_ALPHA);
|
||||
$cmdvoid = optional_param('void', '', PARAM_ALPHA);
|
||||
|
||||
$table->width = '100%';
|
||||
$table->size = array('30%', '70%');
|
||||
$table->align = array('right', 'left');
|
||||
|
||||
$sql = "SELECT E.*, C.shortname, C.enrolperiod " .
|
||||
"FROM {$CFG->prefix}enrol_authorize E " .
|
||||
"INNER JOIN {$CFG->prefix}course C ON C.id = E.courseid " .
|
||||
"WHERE E.id = '$orderno'";
|
||||
|
||||
$order = get_record_sql($sql);
|
||||
if (!$order) {
|
||||
notice("Order $orderno not found.", "index.php");
|
||||
return;
|
||||
}
|
||||
|
||||
if ($USER->id != $order->userid) { // Current user viewing someone else's order
|
||||
if (!isteacher($order->courseid)) {
|
||||
error("Students can view their order.");
|
||||
}
|
||||
}
|
||||
|
||||
echo "<form action='index.php' method='post'>\n";
|
||||
echo "<input type='hidden' name='order' value='$orderno'>\n";
|
||||
|
||||
$settled = settled($order);
|
||||
$status = get_order_status_desc($order);
|
||||
|
||||
$table->data[] = array("<b>$authstrs->orderid:</b>", $orderno);
|
||||
$table->data[] = array("<b>$authstrs->transid:</b>", $order->transid);
|
||||
$table->data[] = array("<b>$authstrs->amount:</b>", "$order->currency $order->amount");
|
||||
if ((empty($cmdcapture) and empty($cmdrefund) and empty($cmdvoid))) {
|
||||
$table->data[] = array("<b>$strs->course:</b>", $order->shortname);
|
||||
$table->data[] = array("<b>$strs->status:</b>", $authstrs->{$status->status});
|
||||
$table->data[] = array("<b>$strs->user:</b>", $order->ccname);
|
||||
$table->data[] = array("<b>$strs->time:</b>", userdate($order->timecreated));
|
||||
$table->data[] = array("<b>$authstrs->settlementdate:</b>", $settled ?
|
||||
userdate($order->settletime) : $authstrs->notsettled);
|
||||
}
|
||||
$table->data[] = array(" ", "<hr size='1' noshade>\n");
|
||||
|
||||
if (!empty($cmdcapture)) { // CAPTURE
|
||||
if (!in_array(ORDER_CAPTURE, $status->actions)) {
|
||||
$a->action = ORDER_CAPTURE;
|
||||
error(get_string('youcantdo', 'enrol_authorize', $a));
|
||||
}
|
||||
|
||||
if (empty($cmdconfirm)) {
|
||||
$table->data[] = array("<b>$strs->confirm:</b>",
|
||||
"$authstrs->captureyes<br /><a href='index.php?order=$orderno&capture=y&confirm=y'>$strs->yes</a>
|
||||
<a href='index.php?order=$orderno'>$strs->no</a>");
|
||||
}
|
||||
else {
|
||||
$message = '';
|
||||
$extra = NULL;
|
||||
$success = authorizenet_action($order, $message, $extra, AN_ACTION_PRIOR_AUTH_CAPTURE);
|
||||
update_record("enrol_authorize", $order); // May be expired.
|
||||
if (!$success) {
|
||||
$table->data[] = array("<b><font color='red'>$strs->error:</font></b>", $message);
|
||||
}
|
||||
else {
|
||||
if (empty($CFG->an_test)) {
|
||||
$timestart = $timeend = 0;
|
||||
if ($order->enrolperiod) {
|
||||
$timestart = time(); // early start
|
||||
$timeend = $order->settletime + $order->enrolperiod; // lately end
|
||||
}
|
||||
if (enrol_student($order->userid, $order->courseid, $timestart, $timeend, 'authorize')) {
|
||||
$user = get_record('user', 'id', $order->userid);
|
||||
$teacher = get_teacher($order->courseid);
|
||||
$a->coursename = $order->shortname;
|
||||
$a->profileurl = "$CFG->wwwroot/user/view.php?id=$user->id";
|
||||
email_to_user($user, $teacher,
|
||||
get_string("enrolmentnew", '', $order->shortname),
|
||||
get_string('welcometocoursetext', '', $a));
|
||||
redirect("index.php?order=$orderno");
|
||||
}
|
||||
else {
|
||||
$table->data[] = array("<b><font color=red>$strs->error:</font></b>",
|
||||
"Error while trying to enrol ".fullname($user)." in '$order->shortname'");
|
||||
}
|
||||
}
|
||||
else {
|
||||
$table->data[] = array(get_string('testmode', 'enrol_authorize'),
|
||||
get_string('testwarning', 'enrol_authorize'));
|
||||
}
|
||||
}
|
||||
}
|
||||
print_table($table);
|
||||
}
|
||||
elseif (!empty($cmdrefund)) { // REFUND
|
||||
if (!in_array(ORDER_REFUND, $status->actions)) {
|
||||
$a->action = ORDER_REFUND;
|
||||
error(get_string('youcantdo', 'enrol_authorize', $a));
|
||||
}
|
||||
|
||||
$extra = new stdClass();
|
||||
$extra->sum = 0.0;
|
||||
$extra->orderid = $orderno;
|
||||
|
||||
$sql = "SELECT SUM(amount) AS refunded FROM {$CFG->prefix}enrol_authorize_refunds " .
|
||||
"WHERE (orderid = '" . $orderno . "') AND (status = '" . AN_STATUS_CREDIT . "')";
|
||||
|
||||
if ($refund = get_record_sql($sql)) {
|
||||
$extra->sum = floatval($refund->refunded);
|
||||
}
|
||||
$upto = format_float($order->amount - $extra->sum, 2);
|
||||
if ($upto <= 0) {
|
||||
error("Refunded to original amount.");
|
||||
}
|
||||
else {
|
||||
$amount = format_float(optional_param('amount', $upto), 2);
|
||||
if (($amount > $upto) || empty($cmdconfirm)) {
|
||||
$a->upto = $upto;
|
||||
$strcanbecredit = get_string('canbecredit', 'enrol_authorize', $a);
|
||||
$table->data[] = array("<b>$authstrs->unenrolstudent</b>",
|
||||
"<input type='checkbox' name='unenrol' value='y'" . (!empty($unenrol) ? " checked" : "") . ">");
|
||||
$table->data[] = array("<b>$authstrs->howmuch</b>",
|
||||
"<input type='hidden' name='confirm' value='y'>
|
||||
<input type='text' size='5' name='amount' value='$amount'>
|
||||
$strcanbecredit<br /><input type='submit' name='refund' value='$authstrs->refund'>");
|
||||
}
|
||||
else {
|
||||
$extra->amount = $amount;
|
||||
$message = '';
|
||||
$success = authorizenet_action($order, $message, $extra, AN_ACTION_CREDIT);
|
||||
if ($success) {
|
||||
if (empty($CFG->an_test)) {
|
||||
$extra->id = insert_record("enrol_authorize_refunds", $extra);
|
||||
if (!$extra->id) {
|
||||
// to do: email admin
|
||||
}
|
||||
if (!empty($unenrol)) {
|
||||
unenrol_student($order->userid, $order->courseid);
|
||||
}
|
||||
redirect("index.php?order=$orderno");
|
||||
}
|
||||
else {
|
||||
$table->data[] = array(get_string('testmode', 'enrol_authorize'),
|
||||
get_string('testwarning', 'enrol_authorize'));
|
||||
}
|
||||
}
|
||||
else {
|
||||
$table->data[] = array("<b><font color=red>$strs->error:</font></b>", $message);
|
||||
}
|
||||
}
|
||||
}
|
||||
print_table($table);
|
||||
}
|
||||
elseif (!empty($cmdvoid)) { // VOID
|
||||
if (!in_array(ORDER_VOID, $status->actions)) {
|
||||
$a->action = ORDER_VOID;
|
||||
error(get_string('youcantdo', 'enrol_authorize', $a));
|
||||
}
|
||||
|
||||
$suborderno = optional_param('suborder', 0, PARAM_INT);
|
||||
if (empty($suborderno)) { // cancel original transaction.
|
||||
if (empty($cmdconfirm)) {
|
||||
$strvoidyes = get_string('voidyes', 'enrol_authorize');
|
||||
$table->data[] = array("<b>$strs->confirm:</b>",
|
||||
"$strvoidyes<br /><input type='hidden' name='void' value='y'>
|
||||
<input type='hidden' name='confirm' value='y'>
|
||||
<input type='submit' value='$strs->yes'>
|
||||
<a href='index.php?order=$orderno'>$strs->no</a>");
|
||||
}
|
||||
else {
|
||||
$extra = NULL;
|
||||
$message = '';
|
||||
$success = authorizenet_action($order, $message, $extra, AN_ACTION_VOID);
|
||||
update_record("enrol_authorize", $order); // May be expired.
|
||||
if ($success) {
|
||||
if (empty($CFG->an_test)) {
|
||||
redirect("index.php?order=$orderno");
|
||||
}
|
||||
else {
|
||||
$table->data[] = array(get_string('testmode', 'enrol_authorize'),
|
||||
get_string('testwarning', 'enrol_authorize'));
|
||||
}
|
||||
}
|
||||
else {
|
||||
$table->data[] = array("<b><font color='red'>$strs->error:</font></b>", $message);
|
||||
}
|
||||
}
|
||||
}
|
||||
else { // cancel refunded transaction
|
||||
$suborder = get_record('enrol_authorize_refunds', 'id', $suborderno, 'status', AN_STATUS_CREDIT);
|
||||
if (!$suborder) { // not found
|
||||
error("Transaction can not be voided because of already been voided.");
|
||||
}
|
||||
else {
|
||||
if (empty($cmdconfirm)) {
|
||||
$a->transid = $suborder->transid;
|
||||
$a->amount = $suborder->amount;
|
||||
$strsubvoidyes = get_string('subvoidyes', 'enrol_authorize', $a);
|
||||
|
||||
$table->data[] = array("<b>$authstrs->unenrolstudent</b>",
|
||||
"<input type='checkbox' name='unenrol' value='y'" . (!empty($unenrol) ? " checked" : "") . ">");
|
||||
|
||||
$table->data[] = array("<b>$strs->confirm:</b>",
|
||||
"$strsubvoidyes<br /><input type='hidden' name='void' value='y'>
|
||||
<input type='hidden' name='confirm' value='y'>
|
||||
<input type='hidden' name='suborder' value='$suborderno'>
|
||||
<input type='submit' value='$strs->yes'>
|
||||
<a href='index.php?order=$orderno'>$strs->no</a>");
|
||||
}
|
||||
else {
|
||||
$message = '';
|
||||
$extra = NULL;
|
||||
$success = authorizenet_action($suborder, $message, $extra, AN_ACTION_VOID);
|
||||
update_record("enrol_authorize_refunds", $suborder); // May be expired.
|
||||
if ($success) {
|
||||
if (empty($CFG->an_test)) {
|
||||
if (!empty($unenrol)) {
|
||||
unenrol_student($order->userid, $order->courseid);
|
||||
}
|
||||
redirect("index.php?order=$orderno");
|
||||
}
|
||||
else {
|
||||
$table->data[] = array(get_string('testmode', 'enrol_authorize'),
|
||||
get_string('testwarning', 'enrol_authorize'));
|
||||
}
|
||||
}
|
||||
else {
|
||||
$table->data[] = array("<b><font color='red'>$strs->error:</font></b>", $message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
print_table($table);
|
||||
}
|
||||
elseif (!empty($cmddelete)) { // DELETE
|
||||
if (!in_array(ORDER_DELETE, $status->actions)) {
|
||||
$a->action = ORDER_DELETE;
|
||||
error(get_string('youcantdo', 'enrol_authorize', $a));
|
||||
}
|
||||
//if (!in_array(ORDER_DELETE, $status->actions)) {
|
||||
// error("Order $orderno cannot be deleted. Status must be expired.");
|
||||
//}
|
||||
if (empty($cmdconfirm)) {
|
||||
$table->data[] = array("<b>$authstrs->unenrolstudent</b>",
|
||||
"<input type='checkbox' name='unenrol' value='y'" . (!empty($unenrol) ? " checked" : "") . ">");
|
||||
|
||||
$table->data[] = array("<b>$strs->confirm:</b>",
|
||||
"<input type='hidden' name='delete' value='y'>
|
||||
<input type='hidden' name='confirm' value='y'>
|
||||
<input type='submit' value='$strs->yes'>
|
||||
<a href='index.php?order=$orderno'>$strs->no</a>");
|
||||
}
|
||||
else {
|
||||
if (!empty($unenrol)) {
|
||||
unenrol_student($order->userid, $order->courseid);
|
||||
}
|
||||
delete_records('enrol_authorize', 'id', $orderno);
|
||||
redirect("index.php");
|
||||
}
|
||||
print_table($table);
|
||||
}
|
||||
else { // SHOW
|
||||
$actions = '';
|
||||
if (empty($status->actions)) {
|
||||
$actions .= $strs->none;
|
||||
}
|
||||
else {
|
||||
foreach ($status->actions as $value) {
|
||||
$actions .= "<input type='submit' name='$value' value='{$authstrs->$value}'> ";
|
||||
}
|
||||
}
|
||||
$table->data[] = array("<b>$strs->action</b>", $actions);
|
||||
print_table($table);
|
||||
if ($settled) { // show refunds.
|
||||
echo "<h4>" . get_string('returns', 'enrol_authorize') . "</h4>\n";
|
||||
$table2->size = array('15%', '15%', '20%', '35%', '15%');
|
||||
$table2->align = array('right', 'right', 'right', 'left', 'right');
|
||||
$table2->head = array($authstrs->transid,
|
||||
$authstrs->amount,
|
||||
$strs->status,
|
||||
$authstrs->settlementdate,
|
||||
$strs->action);
|
||||
$refunds = get_records('enrol_authorize_refunds', 'orderid', $orderno);
|
||||
if ($refunds) {
|
||||
foreach ($refunds as $rf) {
|
||||
$substatus = get_order_status_desc($rf);
|
||||
$subactions = ' ';
|
||||
if (empty($substatus->actions)) {
|
||||
$subactions .= $strs->none;
|
||||
}
|
||||
else {
|
||||
foreach ($substatus->actions as $vl) {
|
||||
$subactions .=
|
||||
"<a href='index.php?$vl=y&order=$orderno&suborder=$rf->id'>{$authstrs->$vl}</a> ";
|
||||
}
|
||||
}
|
||||
$table2->data[] = array($rf->transid,
|
||||
$rf->amount,
|
||||
$authstrs->{$substatus->status},
|
||||
userdate($rf->settletime),
|
||||
$subactions);
|
||||
}
|
||||
}
|
||||
else {
|
||||
$table2->data[] = array(get_string('noreturns', 'enrol_authorize'));
|
||||
}
|
||||
print_table($table2);
|
||||
}
|
||||
}
|
||||
echo '</form>';
|
||||
}
|
||||
|
||||
|
||||
function get_order_status_desc($order)
|
||||
{
|
||||
global $CFG, $USER;
|
||||
|
||||
$ret = new stdClass();
|
||||
$ret->actions = array();
|
||||
|
||||
if (intval($order->transid) == 0) { // test transaction
|
||||
if (isadmin() || (!empty($CFG->an_teachermanagepay) && isteacher($order->courseid))) {
|
||||
$ret->actions = array(ORDER_DELETE);
|
||||
}
|
||||
$ret->status = 'tested';
|
||||
return $ret;
|
||||
}
|
||||
|
||||
switch ($order->status) {
|
||||
case AN_STATUS_AUTH:
|
||||
$timediff30 = getsettletime(time()) - (30 * 3600 * 24);
|
||||
if (getsettletime($order->timecreated) < $timediff30) {
|
||||
$order->status = AN_STATUS_EXPIRE;
|
||||
update_record("enrol_authorize", $order);
|
||||
if (isadmin() || (!empty($CFG->an_teachermanagepay) && isteacher($order->courseid))) {
|
||||
$ret->actions = array(ORDER_DELETE);
|
||||
}
|
||||
$ret->status = 'expired';
|
||||
}
|
||||
else {
|
||||
if (isadmin() || (!empty($CFG->an_teachermanagepay) && isteacher($order->courseid))) {
|
||||
$ret->actions = array(ORDER_CAPTURE, ORDER_VOID);
|
||||
}
|
||||
$ret->status = 'authorizedpendingcapture';
|
||||
}
|
||||
return $ret;
|
||||
|
||||
case AN_STATUS_AUTHCAPTURE:
|
||||
if (settled($order)) {
|
||||
if (isadmin() || (!empty($CFG->an_teachermanagepay) && isteacher($order->courseid))) {
|
||||
$ret->actions = array(ORDER_REFUND);
|
||||
}
|
||||
$ret->status = 'capturedsettled';
|
||||
}
|
||||
else {
|
||||
if (isadmin() || (!empty($CFG->an_teachermanagepay) && isteacher($order->courseid))) {
|
||||
$ret->actions = array(ORDER_VOID);
|
||||
}
|
||||
$ret->status = 'capturedpendingsettle';
|
||||
}
|
||||
return $ret;
|
||||
|
||||
case AN_STATUS_CREDIT:
|
||||
if (settled($order)) {
|
||||
$ret->actions = array();
|
||||
$ret->status = 'settled';
|
||||
}
|
||||
else {
|
||||
if (isadmin() || (!empty($CFG->an_teachermanagepay) && isteacher($order->courseid))) {
|
||||
$ret->actions = array(ORDER_VOID);
|
||||
}
|
||||
$ret->status = 'refunded';
|
||||
}
|
||||
return $ret;
|
||||
|
||||
case AN_STATUS_VOID:
|
||||
$ret->actions = array();
|
||||
$ret->status = 'cancelled';
|
||||
return $ret;
|
||||
|
||||
case AN_STATUS_EXPIRE:
|
||||
if (isadmin() || (!empty($CFG->an_teachermanagepay) && isteacher($order->courseid))) {
|
||||
$ret->actions = array(ORDER_DELETE);
|
||||
}
|
||||
$ret->status = 'expired';
|
||||
return $ret;
|
||||
|
||||
default:
|
||||
return $ret;
|
||||
}
|
||||
|
||||
}
|
||||
print_footer();
|
||||
?>
|
||||
|
||||
@@ -0,0 +1,538 @@
|
||||
<?PHP // $Id$
|
||||
|
||||
require_once '../../config.php';
|
||||
require_once $CFG->dirroot.'/enrol/authorize/const.php';
|
||||
require_once $CFG->dirroot.'/enrol/authorize/action.php';
|
||||
|
||||
define('ORDER_CAPTURE', 'capture');
|
||||
define('ORDER_DELETE', 'delete');
|
||||
define('ORDER_REFUND', 'refund');
|
||||
define('ORDER_VOID', 'void');
|
||||
|
||||
function print_authorize_orders()
|
||||
{
|
||||
global $CFG, $USER;
|
||||
global $strs, $authstrs;
|
||||
require_once $CFG->libdir.'/tablelib.php';
|
||||
|
||||
$perpage = 10;
|
||||
$userid = optional_param('user', 0, PARAM_INT);
|
||||
$courseid = optional_param('course', SITEID, PARAM_INT);
|
||||
$status = optional_param('status', AN_STATUS_NONE, PARAM_INT);
|
||||
|
||||
if (!isteacher($courseid)) {
|
||||
$userid = $USER->id;
|
||||
}
|
||||
|
||||
$baseurl = $CFG->wwwroot."/enrol/authorize/index.php?user=$userid";
|
||||
$statusmenu = array(AN_STATUS_NONE => get_string('all'),
|
||||
AN_STATUS_AUTH => $authstrs->authorizedpendingcapture,
|
||||
AN_STATUS_AUTHCAPTURE => $authstrs->authcaptured,
|
||||
AN_STATUS_CREDIT => $authstrs->refunded,
|
||||
AN_STATUS_VOID => $authstrs->cancelled,
|
||||
AN_STATUS_EXPIRE => $authstrs->expired
|
||||
);
|
||||
|
||||
print_simple_box_start('center');
|
||||
echo "$strs->status: ";
|
||||
echo popup_form($baseurl.'&course='.$courseid.'&status=', $statusmenu, 'statusmenu', $status, '', '', '', true);
|
||||
if ($courses = get_courses('all', 'c.sortorder ASC', 'c.id,c.fullname,c.enrol')) {
|
||||
$popupcrs = array();
|
||||
foreach ($courses as $crs) {
|
||||
if ($crs->enrol == 'authorize' || (empty($crs->enrol) && $CFG->enrol == 'authorize')) {
|
||||
$popupcrs[(int)$crs->id] = $crs->fullname;
|
||||
}
|
||||
}
|
||||
echo " $strs->course: ";
|
||||
echo popup_form($baseurl.'&status='.$status.'&course=', $popupcrs, 'coursesmenu', $courseid, '', '', '', true);
|
||||
}
|
||||
print_simple_box_end();
|
||||
|
||||
$table = new flexible_table('enrol-authorize');
|
||||
$table->set_attribute('width', '100%');
|
||||
$table->set_attribute('cellspacing', '0');
|
||||
$table->set_attribute('cellpadding', '3');
|
||||
$table->set_attribute('id', 'orders');
|
||||
$table->set_attribute('class', 'generaltable generalbox');
|
||||
|
||||
$table->define_columns(array('id', 'timecreated', 'userid', 'status', ''));
|
||||
$table->define_headers(array($authstrs->orderid, $strs->time, $strs->user, $strs->status, $strs->action));
|
||||
$table->define_baseurl($baseurl."&status=$status");
|
||||
|
||||
$table->sortable(true);
|
||||
$table->pageable(true);
|
||||
$table->setup();
|
||||
|
||||
$select = "SELECT E.id, E.transid, E.courseid, E.userid, E.status, E.ccname, E.timecreated, E.settletime";
|
||||
$from = " FROM {$CFG->prefix}enrol_authorize E ";
|
||||
|
||||
if ($status > AN_STATUS_NONE) {
|
||||
if ($status == AN_STATUS_CREDIT) {
|
||||
$from .= "INNER JOIN {$CFG->prefix}enrol_authorize_refunds R ON E.id = R.orderid ";
|
||||
$where = "WHERE (E.status = '" . AN_STATUS_AUTHCAPTURE . "') ";
|
||||
}
|
||||
else {
|
||||
$where = "WHERE (E.status = '$status') ";
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (empty($CFG->an_test)) {
|
||||
$where = "WHERE (E.status != '" . AN_STATUS_NONE . "') ";
|
||||
}
|
||||
else {
|
||||
$where = "WHERE (1=1) ";
|
||||
}
|
||||
}
|
||||
|
||||
if ($userid > 0) {
|
||||
$where .= "AND (userid = '" . $userid . "') ";
|
||||
}
|
||||
if ($courseid != SITEID) {
|
||||
$where .= "AND (courseid = '" . $courseid . "') ";
|
||||
}
|
||||
|
||||
if ($sort = $table->get_sql_sort()) {
|
||||
$sort = ' ORDER BY ' . $sort;
|
||||
}
|
||||
else {
|
||||
$sort = ' ORDER BY id DESC ';
|
||||
}
|
||||
|
||||
$totalcount = count_records_sql('SELECT COUNT(*) ' . $from . $where);
|
||||
$table->initialbars($totalcount > $perpage);
|
||||
$table->pagesize($perpage, $totalcount);
|
||||
if ($table->get_page_start() !== '' && $table->get_page_size() !== '') {
|
||||
$limit = ' ' . sql_paging_limit($table->get_page_start(), $table->get_page_size());
|
||||
}
|
||||
else {
|
||||
$limit = '';
|
||||
}
|
||||
|
||||
if ($records = get_records_sql($select . $from . $where . $sort . $limit)) {
|
||||
foreach ($records as $record) {
|
||||
$actionstatus = get_order_status_desc($record);
|
||||
$actions = '';
|
||||
|
||||
if (empty($actionstatus->actions)) {
|
||||
$actions .= $strs->none;
|
||||
}
|
||||
else {
|
||||
foreach ($actionstatus->actions as $value) {
|
||||
$actions .= " <a href='index.php?$value=y&order=$record->id'>{$authstrs->$value}</a> ";
|
||||
}
|
||||
}
|
||||
|
||||
$table->add_data(array(
|
||||
"<a href='index.php?order=$record->id'>$record->id</a>",
|
||||
userdate($record->timecreated),
|
||||
$record->ccname,
|
||||
$authstrs->{$actionstatus->status},
|
||||
$actions
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
$table->print_html();
|
||||
}
|
||||
|
||||
|
||||
function print_authorize_order_details($orderno) {
|
||||
global $CFG, $USER;
|
||||
global $strs, $authstrs;
|
||||
|
||||
$unenrol = optional_param('unenrol', '');
|
||||
$cmdconfirm = optional_param('confirm', '', PARAM_ALPHA);
|
||||
|
||||
$cmdcapture = optional_param('capture', '', PARAM_ALPHA);
|
||||
$cmddelete = optional_param('delete', '', PARAM_ALPHA);
|
||||
$cmdrefund = optional_param('refund', '', PARAM_ALPHA);
|
||||
$cmdvoid = optional_param('void', '', PARAM_ALPHA);
|
||||
|
||||
$table->width = '100%';
|
||||
$table->size = array('30%', '70%');
|
||||
$table->align = array('right', 'left');
|
||||
|
||||
$sql = "SELECT E.*, C.shortname, C.enrolperiod " .
|
||||
"FROM {$CFG->prefix}enrol_authorize E " .
|
||||
"INNER JOIN {$CFG->prefix}course C ON C.id = E.courseid " .
|
||||
"WHERE E.id = '$orderno'";
|
||||
|
||||
$order = get_record_sql($sql);
|
||||
if (!$order) {
|
||||
notice("Order $orderno not found.", "index.php");
|
||||
return;
|
||||
}
|
||||
|
||||
if ($USER->id != $order->userid) { // Current user viewing someone else's order
|
||||
if (!isteacher($order->courseid)) {
|
||||
error("Students can view their order.");
|
||||
}
|
||||
}
|
||||
|
||||
echo "<form action='index.php' method='post'>\n";
|
||||
echo "<input type='hidden' name='order' value='$orderno'>\n";
|
||||
|
||||
$settled = settled($order);
|
||||
$status = get_order_status_desc($order);
|
||||
|
||||
$table->data[] = array("<b>$authstrs->orderid:</b>", $orderno);
|
||||
$table->data[] = array("<b>$authstrs->transid:</b>", $order->transid);
|
||||
$table->data[] = array("<b>$authstrs->amount:</b>", "$order->currency $order->amount");
|
||||
if ((empty($cmdcapture) and empty($cmdrefund) and empty($cmdvoid))) {
|
||||
$table->data[] = array("<b>$strs->course:</b>", $order->shortname);
|
||||
$table->data[] = array("<b>$strs->status:</b>", $authstrs->{$status->status});
|
||||
$table->data[] = array("<b>$strs->user:</b>", $order->ccname);
|
||||
$table->data[] = array("<b>$strs->time:</b>", userdate($order->timecreated));
|
||||
$table->data[] = array("<b>$authstrs->settlementdate:</b>", $settled ?
|
||||
userdate($order->settletime) : $authstrs->notsettled);
|
||||
}
|
||||
$table->data[] = array(" ", "<hr size='1' noshade>\n");
|
||||
|
||||
if (!empty($cmdcapture)) { // CAPTURE
|
||||
if (!in_array(ORDER_CAPTURE, $status->actions)) {
|
||||
$a->action = ORDER_CAPTURE;
|
||||
error(get_string('youcantdo', 'enrol_authorize', $a));
|
||||
}
|
||||
|
||||
if (empty($cmdconfirm)) {
|
||||
$table->data[] = array("<b>$strs->confirm:</b>",
|
||||
"$authstrs->captureyes<br /><a href='index.php?order=$orderno&capture=y&confirm=y'>$strs->yes</a>
|
||||
<a href='index.php?order=$orderno'>$strs->no</a>");
|
||||
}
|
||||
else {
|
||||
$message = '';
|
||||
$extra = NULL;
|
||||
$success = authorizenet_action($order, $message, $extra, AN_ACTION_PRIOR_AUTH_CAPTURE);
|
||||
update_record("enrol_authorize", $order); // May be expired.
|
||||
if (!$success) {
|
||||
$table->data[] = array("<b><font color='red'>$strs->error:</font></b>", $message);
|
||||
}
|
||||
else {
|
||||
if (empty($CFG->an_test)) {
|
||||
$timestart = $timeend = 0;
|
||||
if ($order->enrolperiod) {
|
||||
$timestart = time(); // early start
|
||||
$timeend = $order->settletime + $order->enrolperiod; // lately end
|
||||
}
|
||||
if (enrol_student($order->userid, $order->courseid, $timestart, $timeend, 'authorize')) {
|
||||
$user = get_record('user', 'id', $order->userid);
|
||||
$teacher = get_teacher($order->courseid);
|
||||
$a->coursename = $order->shortname;
|
||||
$a->profileurl = "$CFG->wwwroot/user/view.php?id=$user->id";
|
||||
email_to_user($user, $teacher,
|
||||
get_string("enrolmentnew", '', $order->shortname),
|
||||
get_string('welcometocoursetext', '', $a));
|
||||
redirect("index.php?order=$orderno");
|
||||
}
|
||||
else {
|
||||
$table->data[] = array("<b><font color=red>$strs->error:</font></b>",
|
||||
"Error while trying to enrol ".fullname($user)." in '$order->shortname'");
|
||||
}
|
||||
}
|
||||
else {
|
||||
$table->data[] = array(get_string('testmode', 'enrol_authorize'),
|
||||
get_string('testwarning', 'enrol_authorize'));
|
||||
}
|
||||
}
|
||||
}
|
||||
print_table($table);
|
||||
}
|
||||
elseif (!empty($cmdrefund)) { // REFUND
|
||||
if (!in_array(ORDER_REFUND, $status->actions)) {
|
||||
$a->action = ORDER_REFUND;
|
||||
error(get_string('youcantdo', 'enrol_authorize', $a));
|
||||
}
|
||||
|
||||
$extra = new stdClass();
|
||||
$extra->sum = 0.0;
|
||||
$extra->orderid = $orderno;
|
||||
|
||||
$sql = "SELECT SUM(amount) AS refunded FROM {$CFG->prefix}enrol_authorize_refunds " .
|
||||
"WHERE (orderid = '" . $orderno . "') AND (status = '" . AN_STATUS_CREDIT . "')";
|
||||
|
||||
if ($refund = get_record_sql($sql)) {
|
||||
$extra->sum = floatval($refund->refunded);
|
||||
}
|
||||
$upto = format_float($order->amount - $extra->sum, 2);
|
||||
if ($upto <= 0) {
|
||||
error("Refunded to original amount.");
|
||||
}
|
||||
else {
|
||||
$amount = format_float(optional_param('amount', $upto), 2);
|
||||
if (($amount > $upto) || empty($cmdconfirm)) {
|
||||
$a->upto = $upto;
|
||||
$strcanbecredit = get_string('canbecredit', 'enrol_authorize', $a);
|
||||
$table->data[] = array("<b>$authstrs->unenrolstudent</b>",
|
||||
"<input type='checkbox' name='unenrol' value='y'" . (!empty($unenrol) ? " checked" : "") . ">");
|
||||
$table->data[] = array("<b>$authstrs->howmuch</b>",
|
||||
"<input type='hidden' name='confirm' value='y'>
|
||||
<input type='text' size='5' name='amount' value='$amount'>
|
||||
$strcanbecredit<br /><input type='submit' name='refund' value='$authstrs->refund'>");
|
||||
}
|
||||
else {
|
||||
$extra->amount = $amount;
|
||||
$message = '';
|
||||
$success = authorizenet_action($order, $message, $extra, AN_ACTION_CREDIT);
|
||||
if ($success) {
|
||||
if (empty($CFG->an_test)) {
|
||||
$extra->id = insert_record("enrol_authorize_refunds", $extra);
|
||||
if (!$extra->id) {
|
||||
// to do: email admin
|
||||
}
|
||||
if (!empty($unenrol)) {
|
||||
unenrol_student($order->userid, $order->courseid);
|
||||
}
|
||||
redirect("index.php?order=$orderno");
|
||||
}
|
||||
else {
|
||||
$table->data[] = array(get_string('testmode', 'enrol_authorize'),
|
||||
get_string('testwarning', 'enrol_authorize'));
|
||||
}
|
||||
}
|
||||
else {
|
||||
$table->data[] = array("<b><font color=red>$strs->error:</font></b>", $message);
|
||||
}
|
||||
}
|
||||
}
|
||||
print_table($table);
|
||||
}
|
||||
elseif (!empty($cmdvoid)) { // VOID
|
||||
if (!in_array(ORDER_VOID, $status->actions)) {
|
||||
$a->action = ORDER_VOID;
|
||||
error(get_string('youcantdo', 'enrol_authorize', $a));
|
||||
}
|
||||
|
||||
$suborderno = optional_param('suborder', 0, PARAM_INT);
|
||||
if (empty($suborderno)) { // cancel original transaction.
|
||||
if (empty($cmdconfirm)) {
|
||||
$strvoidyes = get_string('voidyes', 'enrol_authorize');
|
||||
$table->data[] = array("<b>$strs->confirm:</b>",
|
||||
"$strvoidyes<br /><input type='hidden' name='void' value='y'>
|
||||
<input type='hidden' name='confirm' value='y'>
|
||||
<input type='submit' value='$strs->yes'>
|
||||
<a href='index.php?order=$orderno'>$strs->no</a>");
|
||||
}
|
||||
else {
|
||||
$extra = NULL;
|
||||
$message = '';
|
||||
$success = authorizenet_action($order, $message, $extra, AN_ACTION_VOID);
|
||||
update_record("enrol_authorize", $order); // May be expired.
|
||||
if ($success) {
|
||||
if (empty($CFG->an_test)) {
|
||||
redirect("index.php?order=$orderno");
|
||||
}
|
||||
else {
|
||||
$table->data[] = array(get_string('testmode', 'enrol_authorize'),
|
||||
get_string('testwarning', 'enrol_authorize'));
|
||||
}
|
||||
}
|
||||
else {
|
||||
$table->data[] = array("<b><font color='red'>$strs->error:</font></b>", $message);
|
||||
}
|
||||
}
|
||||
}
|
||||
else { // cancel refunded transaction
|
||||
$suborder = get_record('enrol_authorize_refunds', 'id', $suborderno, 'status', AN_STATUS_CREDIT);
|
||||
if (!$suborder) { // not found
|
||||
error("Transaction can not be voided because of already been voided.");
|
||||
}
|
||||
else {
|
||||
if (empty($cmdconfirm)) {
|
||||
$a->transid = $suborder->transid;
|
||||
$a->amount = $suborder->amount;
|
||||
$strsubvoidyes = get_string('subvoidyes', 'enrol_authorize', $a);
|
||||
|
||||
$table->data[] = array("<b>$authstrs->unenrolstudent</b>",
|
||||
"<input type='checkbox' name='unenrol' value='y'" . (!empty($unenrol) ? " checked" : "") . ">");
|
||||
|
||||
$table->data[] = array("<b>$strs->confirm:</b>",
|
||||
"$strsubvoidyes<br /><input type='hidden' name='void' value='y'>
|
||||
<input type='hidden' name='confirm' value='y'>
|
||||
<input type='hidden' name='suborder' value='$suborderno'>
|
||||
<input type='submit' value='$strs->yes'>
|
||||
<a href='index.php?order=$orderno'>$strs->no</a>");
|
||||
}
|
||||
else {
|
||||
$message = '';
|
||||
$extra = NULL;
|
||||
$success = authorizenet_action($suborder, $message, $extra, AN_ACTION_VOID);
|
||||
update_record("enrol_authorize_refunds", $suborder); // May be expired.
|
||||
if ($success) {
|
||||
if (empty($CFG->an_test)) {
|
||||
if (!empty($unenrol)) {
|
||||
unenrol_student($order->userid, $order->courseid);
|
||||
}
|
||||
redirect("index.php?order=$orderno");
|
||||
}
|
||||
else {
|
||||
$table->data[] = array(get_string('testmode', 'enrol_authorize'),
|
||||
get_string('testwarning', 'enrol_authorize'));
|
||||
}
|
||||
}
|
||||
else {
|
||||
$table->data[] = array("<b><font color='red'>$strs->error:</font></b>", $message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
print_table($table);
|
||||
}
|
||||
elseif (!empty($cmddelete)) { // DELETE
|
||||
if (!in_array(ORDER_DELETE, $status->actions)) {
|
||||
$a->action = ORDER_DELETE;
|
||||
error(get_string('youcantdo', 'enrol_authorize', $a));
|
||||
}
|
||||
//if (!in_array(ORDER_DELETE, $status->actions)) {
|
||||
// error("Order $orderno cannot be deleted. Status must be expired.");
|
||||
//}
|
||||
if (empty($cmdconfirm)) {
|
||||
$table->data[] = array("<b>$authstrs->unenrolstudent</b>",
|
||||
"<input type='checkbox' name='unenrol' value='y'" . (!empty($unenrol) ? " checked" : "") . ">");
|
||||
|
||||
$table->data[] = array("<b>$strs->confirm:</b>",
|
||||
"<input type='hidden' name='delete' value='y'>
|
||||
<input type='hidden' name='confirm' value='y'>
|
||||
<input type='submit' value='$strs->yes'>
|
||||
<a href='index.php?order=$orderno'>$strs->no</a>");
|
||||
}
|
||||
else {
|
||||
if (!empty($unenrol)) {
|
||||
unenrol_student($order->userid, $order->courseid);
|
||||
}
|
||||
delete_records('enrol_authorize', 'id', $orderno);
|
||||
redirect("index.php");
|
||||
}
|
||||
print_table($table);
|
||||
}
|
||||
else { // SHOW
|
||||
$actions = '';
|
||||
if (empty($status->actions)) {
|
||||
$actions .= $strs->none;
|
||||
}
|
||||
else {
|
||||
foreach ($status->actions as $value) {
|
||||
$actions .= "<input type='submit' name='$value' value='{$authstrs->$value}'> ";
|
||||
}
|
||||
}
|
||||
$table->data[] = array("<b>$strs->action</b>", $actions);
|
||||
print_table($table);
|
||||
if ($settled) { // show refunds.
|
||||
echo "<h4>" . get_string('returns', 'enrol_authorize') . "</h4>\n";
|
||||
$table2->size = array('15%', '15%', '20%', '35%', '15%');
|
||||
$table2->align = array('right', 'right', 'right', 'left', 'right');
|
||||
$table2->head = array($authstrs->transid,
|
||||
$authstrs->amount,
|
||||
$strs->status,
|
||||
$authstrs->settlementdate,
|
||||
$strs->action);
|
||||
$refunds = get_records('enrol_authorize_refunds', 'orderid', $orderno);
|
||||
if ($refunds) {
|
||||
foreach ($refunds as $rf) {
|
||||
$substatus = get_order_status_desc($rf);
|
||||
$subactions = ' ';
|
||||
if (empty($substatus->actions)) {
|
||||
$subactions .= $strs->none;
|
||||
}
|
||||
else {
|
||||
foreach ($substatus->actions as $vl) {
|
||||
$subactions .=
|
||||
"<a href='index.php?$vl=y&order=$orderno&suborder=$rf->id'>{$authstrs->$vl}</a> ";
|
||||
}
|
||||
}
|
||||
$table2->data[] = array($rf->transid,
|
||||
$rf->amount,
|
||||
$authstrs->{$substatus->status},
|
||||
userdate($rf->settletime),
|
||||
$subactions);
|
||||
}
|
||||
}
|
||||
else {
|
||||
$table2->data[] = array(get_string('noreturns', 'enrol_authorize'));
|
||||
}
|
||||
print_table($table2);
|
||||
}
|
||||
}
|
||||
echo '</form>';
|
||||
}
|
||||
|
||||
|
||||
function get_order_status_desc($order)
|
||||
{
|
||||
global $CFG, $USER;
|
||||
|
||||
$ret = new stdClass();
|
||||
$ret->actions = array();
|
||||
|
||||
if (intval($order->transid) == 0) { // test transaction
|
||||
if (isadmin() || (!empty($CFG->an_teachermanagepay) && isteacher($order->courseid))) {
|
||||
$ret->actions = array(ORDER_DELETE);
|
||||
}
|
||||
$ret->status = 'tested';
|
||||
return $ret;
|
||||
}
|
||||
|
||||
switch ($order->status) {
|
||||
case AN_STATUS_AUTH:
|
||||
$timediff30 = getsettletime(time()) - (30 * 3600 * 24);
|
||||
if (getsettletime($order->timecreated) < $timediff30) {
|
||||
$order->status = AN_STATUS_EXPIRE;
|
||||
update_record("enrol_authorize", $order);
|
||||
if (isadmin() || (!empty($CFG->an_teachermanagepay) && isteacher($order->courseid))) {
|
||||
$ret->actions = array(ORDER_DELETE);
|
||||
}
|
||||
$ret->status = 'expired';
|
||||
}
|
||||
else {
|
||||
if (isadmin() || (!empty($CFG->an_teachermanagepay) && isteacher($order->courseid))) {
|
||||
$ret->actions = array(ORDER_CAPTURE, ORDER_VOID);
|
||||
}
|
||||
$ret->status = 'authorizedpendingcapture';
|
||||
}
|
||||
return $ret;
|
||||
|
||||
case AN_STATUS_AUTHCAPTURE:
|
||||
if (settled($order)) {
|
||||
if (isadmin() || (!empty($CFG->an_teachermanagepay) && isteacher($order->courseid))) {
|
||||
$ret->actions = array(ORDER_REFUND);
|
||||
}
|
||||
$ret->status = 'capturedsettled';
|
||||
}
|
||||
else {
|
||||
if (isadmin() || (!empty($CFG->an_teachermanagepay) && isteacher($order->courseid))) {
|
||||
$ret->actions = array(ORDER_VOID);
|
||||
}
|
||||
$ret->status = 'capturedpendingsettle';
|
||||
}
|
||||
return $ret;
|
||||
|
||||
case AN_STATUS_CREDIT:
|
||||
if (settled($order)) {
|
||||
$ret->actions = array();
|
||||
$ret->status = 'settled';
|
||||
}
|
||||
else {
|
||||
if (isadmin() || (!empty($CFG->an_teachermanagepay) && isteacher($order->courseid))) {
|
||||
$ret->actions = array(ORDER_VOID);
|
||||
}
|
||||
$ret->status = 'refunded';
|
||||
}
|
||||
return $ret;
|
||||
|
||||
case AN_STATUS_VOID:
|
||||
$ret->actions = array();
|
||||
$ret->status = 'cancelled';
|
||||
return $ret;
|
||||
|
||||
case AN_STATUS_EXPIRE:
|
||||
if (isadmin() || (!empty($CFG->an_teachermanagepay) && isteacher($order->courseid))) {
|
||||
$ret->actions = array(ORDER_DELETE);
|
||||
}
|
||||
$ret->status = 'expired';
|
||||
return $ret;
|
||||
|
||||
default:
|
||||
return $ret;
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user