diff --git a/enrol/authorize/authorizenetlib.php b/enrol/authorize/authorizenetlib.php
index f1a2c7ea9da..5c7be9cc778 100644
--- a/enrol/authorize/authorizenetlib.php
+++ b/enrol/authorize/authorizenetlib.php
@@ -295,7 +295,7 @@ function authorize_action(&$order, &$message, &$extra, $action=AN_ACTION_NONE, $
$responsecode = intval($response[0]);
if ($responsecode == AN_APPROVED || $responsecode == AN_REVIEW)
{
- $transid = intval($response[6]);
+ $transid = floatval($response[6]);
if ($test || $transid == 0) {
return $responsecode; // don't update original transaction in test mode.
}
diff --git a/enrol/authorize/db/install.xml b/enrol/authorize/db/install.xml
index 646e6479cd7..9b6ee31354c 100644
--- a/enrol/authorize/db/install.xml
+++ b/enrol/authorize/db/install.xml
@@ -12,7 +12,7 @@
-
+
@@ -35,7 +35,7 @@
-
+
@@ -47,4 +47,4 @@
-
\ No newline at end of file
+
diff --git a/enrol/authorize/db/upgrade.php b/enrol/authorize/db/upgrade.php
index 5a4ec888312..7a39905827f 100644
--- a/enrol/authorize/db/upgrade.php
+++ b/enrol/authorize/db/upgrade.php
@@ -59,6 +59,46 @@ function xmldb_enrol_authorize_upgrade($oldversion=0) {
}
}
+ if ($result && $oldversion < 2006112902) {
+ /// enrol_authorize.transid
+ /// Define index transid (not unique) to be dropped form enrol_authorize
+ $table = new XMLDBTable('enrol_authorize');
+ $index = new XMLDBIndex('transid');
+ $index->setAttributes(XMLDB_INDEX_NOTUNIQUE, array('transid'));
+ drop_index($table, $index);
+
+ /// Changing precision of field transid on table enrol_authorize to (20)
+ $table = new XMLDBTable('enrol_authorize');
+ $field = new XMLDBField('transid');
+ $field->setAttributes(XMLDB_TYPE_INTEGER, '20', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0', 'userid');
+ change_field_precision($table, $field);
+
+ /// Launch add index transid again
+ $table = new XMLDBTable('enrol_authorize');
+ $index = new XMLDBIndex('transid');
+ $index->setAttributes(XMLDB_INDEX_NOTUNIQUE, array('transid'));
+ add_index($table, $index);
+
+ /// enrol_authorize_refunds.transid
+ /// Define index transid (not unique) to be dropped form enrol_authorize_refunds
+ $table = new XMLDBTable('enrol_authorize_refunds');
+ $index = new XMLDBIndex('transid');
+ $index->setAttributes(XMLDB_INDEX_NOTUNIQUE, array('transid'));
+ drop_index($table, $index);
+
+ /// Changing precision of field transid on table enrol_authorize_refunds to (20)
+ $table = new XMLDBTable('enrol_authorize_refunds');
+ $field = new XMLDBField('transid');
+ $field->setAttributes(XMLDB_TYPE_INTEGER, '20', XMLDB_UNSIGNED, null, null, null, null, '0', 'amount');
+ change_field_precision($table, $field);
+
+ /// Launch add index transid again
+ $table = new XMLDBTable('enrol_authorize_refunds');
+ $index = new XMLDBIndex('transid');
+ $index->setAttributes(XMLDB_INDEX_NOTUNIQUE, array('transid'));
+ add_index($table, $index);
+ }
+
return $result;
}
diff --git a/enrol/authorize/locallib.php b/enrol/authorize/locallib.php
index 45c80d141e5..f3b229cf860 100644
--- a/enrol/authorize/locallib.php
+++ b/enrol/authorize/locallib.php
@@ -561,7 +561,7 @@ function authorize_get_status_action($order)
$canmanage = has_capability('enrol/authorize:managepayments', get_context_instance(CONTEXT_COURSE, $order->courseid));
- if (intval($order->transid) == 0) { // test transaction or new order
+ if (floatval($order->transid) == 0) { // test transaction or new order
if ($order->timecreated < $newordertime) {
if ($canmanage) {
$ret->actions = array(ORDER_DELETE);
diff --git a/enrol/authorize/version.php b/enrol/authorize/version.php
index 297dbbbdbf5..ce8b723cb63 100755
--- a/enrol/authorize/version.php
+++ b/enrol/authorize/version.php
@@ -1,6 +1,6 @@
version = 2006112901;
+$plugin->version = 2006112902;
$plugin->requires = 2006100401;
?>