]> git.mjollnir.org Git - moodle.git/commitdiff
* Update record as soon as possible. If update/insert record fails email to admin...
authorethem <ethem>
Mon, 24 Jul 2006 12:19:20 +0000 (12:19 +0000)
committerethem <ethem>
Mon, 24 Jul 2006 12:19:20 +0000 (12:19 +0000)
 * ignore_user_abort(true) at critical section (before fwrite($fp, "POST /gateway/transact.dll).
   This is last change to ignore request for user.
 * Made some functions "static" to call function directly. So, no need new enrolment_plugin_authorize() instance.
   Now, these are static:
   get_list_of_creditcards, zero_cost, get_course_cost, prevent_double_paid, email_to_admin, check_openssl_loaded
 * Some mtrace cleanup. Removed default new line.

This is big work. When PHP5 is required for moodle in the future, I will add static modifier to functions.
Now and future, this plugin is/will unbreakable; Merged from MOODLE_16_STABLE. :)

enrol/authorize/authorizenetlib.php
enrol/authorize/config.html
enrol/authorize/enrol.html
enrol/authorize/enrol.php
enrol/authorize/locallib.php

index 978d7085bfef90f40a435322aa5eb2d499bea928..8759dd85e5be7945cd09a518e30b3ffae1dbd2f7 100644 (file)
@@ -15,8 +15,8 @@ require_once('const.php');
 /**
  * Gets settlement date and time
  *
- * @param int $time Processed time, usually now.
- * @return int Settlement date
+ * @param int $time Time processed, usually now.
+ * @return int Settlement date and time
  */
 function authorize_getsettletime($time)
 {
@@ -54,10 +54,6 @@ function authorize_expired(&$order)
 {
     static $timediff30;
 
-    if (empty($timediff30)) {
-        $timediff30 = authorize_getsettletime(time()) - (30 * 24 * 3600);
-    }
-
     if ($order->status == AN_STATUS_EXPIRE) {
         return true;
     }
@@ -65,24 +61,27 @@ function authorize_expired(&$order)
         return false;
     }
 
-    $exp = (authorize_getsettletime($order->timecreated) < $timediff30);
+    if (empty($timediff30)) {
+        $timediff30 = authorize_getsettletime(time()) - (30 * 24 * 3600);
+    }
 
-    if ($exp) {
+    $isexpired = (authorize_getsettletime($order->timecreated) < $timediff30);
+    if ($isexpired) {
         $order->status = AN_STATUS_EXPIRE;
         update_record('enrol_authorize', $order);
     }
-
-    return $exp;
+    return $isexpired;
 }
 
 /**
- * Performs an action on authorize.net
+ * Performs an action on authorize.net and updates/inserts records. If record update fails,
+ * sends email to admin.
  *
  * @param object &$order Which transaction data will be sent. See enrol_authorize table.
- * @param string &$message Information about error messages.
- * @param object &$extra Extra transaction data.
+ * @param string &$message Information about error message if this function returns false.
+ * @param object &$extra Extra data that used for refunding and credit card information.
  * @param int $action Which action will be performed. See AN_ACTION_*
- * @return bool true, transaction was successful, false otherwise.
+ * @return bool true Transaction was successful, false otherwise. Use $message for reason.
  * @author Ethem Evlice <ethem a.t evlice d.o.t com>
  * @uses $CFG
  */
@@ -117,12 +116,12 @@ function authorize_action(&$order, &$message, &$extra, $action=AN_ACTION_NONE)
 
     $action = intval($action);
 
-    if (empty($order) || empty($order->id)) {
+    if (empty($order) or empty($order->id)) {
         $message = "Check order->id!";
         return false;
     }
-    elseif ($action <= AN_ACTION_NONE || $action > AN_ACTION_VOID) {
-        $message = "No action taken!";
+    elseif ($action <= AN_ACTION_NONE or $action > AN_ACTION_VOID) {
+        $message = "Invalid action!";
         return false;
     }
 
@@ -187,11 +186,10 @@ function authorize_action(&$order, &$message, &$extra, $action=AN_ACTION_NONE)
                 return false;
             }
             if (empty($extra)) {
-                $message = "need extra fields for CREDIT!";
+                $message = "Need extra fields to REFUND!";
                 return false;
             }
             $total = floatval($extra->sum) + floatval($extra->amount);
-            unset($extra->sum); // this is not used in refunds table.
             if (($extra->amount == 0) || ($total > $order->amount)) {
                 $message = "Can be credited up to original amount.";
                 return false;
@@ -218,7 +216,7 @@ function authorize_action(&$order, &$message, &$extra, $action=AN_ACTION_NONE)
                 }
             }
             else {
-                $message = "Order status must be authorized, auth/captured or refunded!";
+                $message = "Order status must be authorized/pending capture or captured-refunded/pending settlement!";
                 return false;
             }
             $poststring .= '&x_type=VOID&x_trans_id=' . urlencode($order->transid);
@@ -226,7 +224,7 @@ function authorize_action(&$order, &$message, &$extra, $action=AN_ACTION_NONE)
         }
 
         default: {
-            $message = "Missing action? $action";
+            $message = "Invalid action: $action";
             return false;
         }
     }
@@ -243,6 +241,7 @@ function authorize_action(&$order, &$message, &$extra, $action=AN_ACTION_NONE)
         return false;
     }
 
+    @ignore_user_abort(true); // this is critical section
     fwrite($fp, "POST /gateway/transact.dll HTTP/1.0\r\n" .
                 "Host: $host\r\n" . $referer .
                 "Content-type: application/x-www-form-urlencoded\r\n" .
@@ -297,6 +296,10 @@ function authorize_action(&$order, &$message, &$extra, $action=AN_ACTION_NONE)
                     $order->status = AN_STATUS_AUTHCAPTURE;
                     $order->settletime = authorize_getsettletime(time());
                 }
+                if (! update_record('enrol_authorize', $order)) {
+                    enrolment_plugin_authorize::email_to_admin("Error while trying to update data " .
+                    "in table enrol_authorize. Please edit manually this record: ID=$order->id.", $order);
+                }
                 break;
             }
             case AN_ACTION_CREDIT:
@@ -306,12 +309,25 @@ function authorize_action(&$order, &$message, &$extra, $action=AN_ACTION_NONE)
                 $extra->status = AN_STATUS_CREDIT;
                 $extra->transid = $transid;
                 $extra->settletime = authorize_getsettletime(time());
+                unset($extra->sum); // this is not used in refunds table.
+                if (! $extra->id = insert_record('enrol_authorize_refunds', $extra)) {
+                    enrolment_plugin_authorize::email_to_admin("Error while trying to insert data " .
+                    "into table enrol_authorize_refunds. Please add manually this record:", $extra);
+                }
                 break;
             }
             case AN_ACTION_VOID:
             {
-                $order->status = AN_STATUS_VOID;
+                $tableupdate = 'enrol_authorize';
+                if ($order->status == AN_STATUS_CREDIT) {
+                    $tableupdate = 'enrol_authorize_refunds';
+                }
                 // dont't update settletime
+                $order->status = AN_STATUS_VOID;
+                if (! update_record($tableupdate, $order)) {
+                    enrolment_plugin_authorize::email_to_admin("Error while trying to update data " .
+                    "in table $tableupdate. Please edit manually this record: ID=$order->id.", $order);
+                }
                 break;
             }
             default: return false;
index d9ffa3e57ae67e69bcdb52f280015f68f5e2ac59..71b096b8e16214a5916d2441b15ac09a5e1bb09e 100755 (executable)
@@ -31,7 +31,7 @@ if (!isset($frm->an_cutoff_hour)) {
 }
 
 if (!isset($frm->acceptccs)) {
-    $frm->acceptccs = array_keys(get_list_of_creditcards());
+    $frm->acceptccs = array_keys(enrolment_plugin_authorize::get_list_of_creditcards());
     $CFG->an_acceptccs = implode(',', $frm->acceptccs);
 }
 
@@ -127,7 +127,7 @@ if (!isset($frm->acceptccs)) {
 <tr valign="top">
     <td align="right">an_acceptccs:</td>
     <td><?php
-    $allccs = get_list_of_creditcards(true);
+    $allccs = enrolment_plugin_authorize::get_list_of_creditcards(true);
     foreach ($allccs as $key => $val) {
         print_checkbox('acceptccs[]', $key, stristr($CFG->an_acceptccs, $key) !== false, $val); echo "<br />\n";
     }
index 5dcc2267e6d854556493d486610d260226576814..11386cf750ff4749202fb45fc528cb1af5ca54bb 100755 (executable)
@@ -1,6 +1,6 @@
 <?php // $Id$
 
-$this->prevent_double_paid($course);
+enrolment_plugin_authorize::prevent_double_paid($course);
 $formvars = array('password', 'ccaddress', 'cccity', 'ccstate', 'cccountry', 'cczip',
                   'ccfirstname', 'cclastname', 'cc', 'ccexpiremm', 'ccexpireyyyy', 'cctype', 'cvv');
 
@@ -10,7 +10,7 @@ foreach ($formvars as $var) {
     }
 }
 
-$curcost = $this->get_course_cost($course);
+$curcost = enrolment_plugin_authorize::get_course_cost($course);
 $userfirstname = empty($form->ccfirstname) ? $USER->firstname : $form->ccfirstname;
 $userlastname = empty($form->cclastname) ? $USER->lastname : $form->cclastname;
 $useraddress = empty($form->ccaddress) ? $USER->address : $form->ccaddress;
@@ -60,7 +60,7 @@ $usercountry = empty($form->cccountry) ? $USER->country : $form->cccountry;
 <tr>
   <td align="right"><?php print_string("cctype", "enrol_authorize") ?>: </td>
   <td align="left"><?php
-  choose_from_menu(get_list_of_creditcards(), 'cctype', $form->cctype);
+  choose_from_menu(enrolment_plugin_authorize::get_list_of_creditcards(), 'cctype', $form->cctype);
   if (!empty($this->ccerrors['cctype'])) { formerr($this->ccerrors['cctype']); }
   ?>
 </td>
index 945a45ceebbf9556ea9cd4b060caa1606b750091..57398cea78692dbbde4348cd2a26d41db8f0f4b7 100755 (executable)
@@ -3,42 +3,6 @@
 require_once($CFG->dirroot.'/enrol/enrol.class.php');
 require_once($CFG->dirroot.'/enrol/authorize/const.php');
 
-/**
- * get_list_of_creditcards
- *
- * @param bool $getall
- * @return array
- */
-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 || empty($CFG->an_acceptccs)) {
-        return $alltypes;
-    }
-
-    $ret = array();
-    $ccs = explode(',', $CFG->an_acceptccs);
-
-    foreach ($ccs as $key) {
-        $ret[$key] = $alltypes[$key];
-    }
-
-    return $ret;
-}
-
 /**
  * enrolment_plugin_authorize
  *
@@ -100,7 +64,7 @@ class enrolment_plugin_authorize
     function print_entry($course) {
         global $CFG, $USER, $form;
 
-        $zerocost = $this->zero_cost($course);
+        $zerocost = enrolment_plugin_authorize::zero_cost($course);
         if ($zerocost) {
             $manual = enrolment_factory::factory('manual');
             if (!empty($this->errormsg)) {
@@ -110,8 +74,6 @@ class enrolment_plugin_authorize
             return;
         }
 
-        httpsrequired();
-
         if (empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == 'off') {
             if (empty($CFG->loginhttps)) {
                 error(get_string('httpsrequired', 'enrol_authorize'));
@@ -122,6 +84,8 @@ class enrolment_plugin_authorize
             }
         }
 
+        httpsrequired();
+
         $strcourses = get_string('courses');
         $strloginto = get_string('loginto', '', $course->shortname);
 
@@ -132,17 +96,18 @@ class enrolment_plugin_authorize
             print_heading(get_string('choosemethod', 'enrol_authorize'), 'center');
         }
 
+        print_simple_box_start('center');
         if (isguest()) {
-            $curcost = $this->get_course_cost($course);
-            echo '<div align="center"><p>'.get_string('paymentrequired').'</p>';
+            $curcost = enrolment_plugin_authorize::get_course_cost($course);
+            echo '<div align="center">';
+            echo '<p>'.get_string('paymentrequired').'</p>';
             echo '<p><b>'.get_string('cost').": $curcost[currency] $curcost[cost]".'</b></p>';
             echo '<p><a href="'.$CFG->httpswwwroot.'/login/">'.get_string('loginsite').'</a></p>';
             echo '</div>';
         } else {
-            print_simple_box_start('center');
             include($CFG->dirroot.'/enrol/authorize/enrol.html');
-            print_simple_box_end();
         }
+        print_simple_box_end();
 
         if ($course->password) {
             $password = '';
@@ -162,7 +127,8 @@ class enrolment_plugin_authorize
      * @access public
      */
     function check_entry($form, $course) {
-        if ($this->zero_cost($course) or (!empty($course->password) and !empty($form->password))) {
+        if (enrolment_plugin_authorize::zero_cost($course) or
+           (!empty($course->password) and !empty($form->password))) {
             $manual = enrolment_factory::factory('manual');
             $manual->check_entry($form, $course);
             if (!empty($manual->errormsg)) {
@@ -187,10 +153,10 @@ class enrolment_plugin_authorize
         global $CFG, $USER, $SESSION;
         require_once('authorizenetlib.php');
 
-        $this->prevent_double_paid($course);
+        enrolment_plugin_authorize::prevent_double_paid($course);
 
         $useripno = getremoteaddr();
-        $curcost = $this->get_course_cost($course);
+        $curcost = enrolment_plugin_authorize::get_course_cost($course);
         $exp_date = sprintf("%02d", $form->ccexpiremm) . $form->ccexpireyyyy;
 
         // NEW ORDER
@@ -208,7 +174,7 @@ class enrolment_plugin_authorize
         $order->currency = $curcost['currency'];
         $order->id = insert_record("enrol_authorize", $order);
         if (!$order->id) {
-            $this->email_to_admin("Error while trying to insert new data", $order);
+            enrolment_plugin_authorize::email_to_admin("Error while trying to insert new data", $order);
             $this->ccerrors['header'] = "Insert record error. Admin has been notified!";
             return;
         }
@@ -242,7 +208,7 @@ class enrolment_plugin_authorize
         $action = $an_review ? AN_ACTION_AUTH_ONLY : AN_ACTION_AUTH_CAPTURE;
         $success = authorize_action($order, $message, $extra, $action);
         if (!$success) {
-            $this->email_to_admin($message, $order);
+            enrolment_plugin_authorize::email_to_admin($message, $order);
             $this->ccerrors['header'] = $message;
             return;
         }
@@ -261,43 +227,31 @@ class enrolment_plugin_authorize
             return;
         }
 
-        if ($an_review) { // review enabled, inform admin and redirect to main page.
-            if (update_record("enrol_authorize", $order)) {
-                $a = new stdClass;
-                $a->url = "$CFG->wwwroot/enrol/authorize/index.php?order=$order->id";
-                $a->orderid = $order->id;
-                $a->transid = $order->transid;
-                $a->amount = "$order->currency $order->amount";
-                $a->expireon = userdate(authorize_getsettletime($timenow + (30 * 3600 * 24)));
-                $a->captureon = userdate(authorize_getsettletime($timenow + (intval($CFG->an_capture_day) * 3600 * 24)));
-                $a->course = $course->fullname;
-                $a->user = fullname($USER);
-                $a->acstatus = ($CFG->an_capture_day > 0) ? get_string('yes') : get_string('no');
-                $emailmessage = get_string('adminneworder', 'enrol_authorize', $a);
-                $a = new stdClass;
-                $a->course = $course->shortname;
-                $a->orderid = $order->id;
-                $emailsubject = get_string('adminnewordersubject', 'enrol_authorize', $a);
-                $admins = get_admins();
-                foreach ($admins as $admin) {
-                    email_to_user($admin, $USER, $emailsubject, $emailmessage);
-                }
-            }
-            else {
-                $this->email_to_admin("Error while trying to update data. Please edit manually this record: " .
-                                      "ID=$order->id in enrol_authorize table.", $order);
+        if ($an_review) { // review enabled, inform admin and redirect user to main page.
+            $a = new stdClass;
+            $a->url = "$CFG->wwwroot/enrol/authorize/index.php?order=$order->id";
+            $a->orderid = $order->id;
+            $a->transid = $order->transid;
+            $a->amount = "$order->currency $order->amount";
+            $a->expireon = userdate(authorize_getsettletime($timenow + (30 * 3600 * 24)));
+            $a->captureon = userdate(authorize_getsettletime($timenow + (intval($CFG->an_capture_day) * 3600 * 24)));
+            $a->course = $course->fullname;
+            $a->user = fullname($USER);
+            $a->acstatus = ($CFG->an_capture_day > 0) ? get_string('yes') : get_string('no');
+            $emailmessage = get_string('adminneworder', 'enrol_authorize', $a);
+            $a = new stdClass;
+            $a->course = $course->shortname;
+            $a->orderid = $order->id;
+            $emailsubject = get_string('adminnewordersubject', 'enrol_authorize', $a);
+            $admins = get_admins();
+            foreach ($admins as $admin) {
+                email_to_user($admin, $USER, $emailsubject, $emailmessage);
             }
             redirect($CFG->wwwroot, get_string("reviewnotify", "enrol_authorize"), '30');
             return;
         }
 
-        // credit card captured, ENROL student...
-        if (!update_record("enrol_authorize", $order)) {
-            $this->email_to_admin("Error while trying to update data. Please edit manually this record: " .
-                                   "ID=$order->id in enrol_authorize table.", $order);
-                                   // no error occured??? enrol student??? return??? Database busy???
-        }
-
+        // Credit card captured, ENROL student now...
         if ($course->enrolperiod) {
             $timestart = $timenow;
             $timeend = $timestart + $course->enrolperiod;
@@ -338,7 +292,8 @@ class enrolment_plugin_authorize
                 }
             }
         } else {
-            $this->email_to_admin("Error while trying to enrol ".fullname($USER)." in '$course->fullname'", $order);
+            enrolment_plugin_authorize::email_to_admin("Error while trying to enrol " .
+            fullname($USER) . " in '$course->fullname'", $order);
         }
 
         if ($SESSION->wantsurl) {
@@ -387,7 +342,8 @@ class enrolment_plugin_authorize
             $this->ccerrors['cvv'] = get_string('missingcvv', 'enrol_authorize');
         }
 
-        if (empty($form->cctype) || !in_array($form->cctype, array_keys(get_list_of_creditcards()))) {
+        if (empty($form->cctype) or
+            !in_array($form->cctype, array_keys(enrolment_plugin_authorize::get_list_of_creditcards()))) {
             $this->ccerrors['cctype'] = get_string('missingcctype', 'enrol_authorize');
         }
 
@@ -414,45 +370,6 @@ class enrolment_plugin_authorize
         return true;
     }
 
-    /**
-     * zero_cost
-     *
-     * @param unknown_type $course
-     * @return number
-     * @access private
-     */
-    function zero_cost($course) {
-        $curcost = $this->get_course_cost($course);
-        return (abs($curcost['cost']) < 0.01);
-    }
-
-
-    /**
-     * get_course_cost
-     *
-     * @param object $course
-     * @return array
-     * @access private
-     */
-    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;
-    }
-
 
     /**
      * Gets access icons.
@@ -465,7 +382,7 @@ class enrolment_plugin_authorize
 
         $manual = enrolment_factory::factory('manual');
         $str = $manual->get_access_icons($course);
-        $curcost = $this->get_course_cost($course);
+        $curcost = enrolment_plugin_authorize::get_course_cost($course);
 
         if (abs($curcost['cost']) > 0.00) {
             $strrequirespayment = get_string("requirespayment");
@@ -498,7 +415,7 @@ class enrolment_plugin_authorize
     {
         global $CFG;
 
-        if (!$this->check_openssl_loaded()) {
+        if (! enrolment_plugin_authorize::check_openssl_loaded()) {
             notify('PHP must be compiled with SSL support (--with-openssl)');
         }
 
@@ -561,7 +478,9 @@ class enrolment_plugin_authorize
         set_config('an_teachermanagepay', optional_param('an_teachermanagepay', 0, PARAM_BOOL));
         set_config('an_referer', optional_param('an_referer', 'http://', PARAM_URL));
 
-        $acceptccs = optional_param('acceptccs', array_keys(get_list_of_creditcards()), PARAM_ALPHA);
+        $acceptccs = optional_param('acceptccs',
+                                    array_keys(enrolment_plugin_authorize::get_list_of_creditcards()),
+                                    PARAM_ALPHA);
         set_config('an_acceptccs', implode(',', $acceptccs));
 
         $cutoff_hour = optional_param('an_cutoff_hour', 0, PARAM_INT);
@@ -597,7 +516,7 @@ class enrolment_plugin_authorize
         $passwordval = optional_param('an_password', '');
 
         if ((empty($CFG->loginhttps) and substr($CFG->wwwroot, 0, 5) !== 'https') ||
-            !$this->check_openssl_loaded() ||
+            !enrolment_plugin_authorize::check_openssl_loaded() ||
             empty($loginval) ||
             (empty($tranval) and empty($passwordval))) {
             return false;
@@ -610,13 +529,51 @@ class enrolment_plugin_authorize
         return true;
     }
 
+    /**
+     * zero_cost (static method)
+     *
+     * @param unknown_type $course
+     * @return number
+     * @static
+     */
+    function zero_cost($course) {
+        $curcost = enrolment_plugin_authorize::get_course_cost($course);
+        return (abs($curcost['cost']) < 0.01);
+    }
+
 
     /**
-     * email_to_admin
+     * get_course_cost (static method)
+     *
+     * @param object $course
+     * @return array
+     * @static
+     */
+    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;
+    }
+
+    /**
+     * email_to_admin (static method)
      *
      * @param string $subject
      * @param mixed $data
-     * @access private
+     * @static
      */
     function email_to_admin($subject, $data)
     {
@@ -625,19 +582,16 @@ class enrolment_plugin_authorize
         $admin = get_admin();
         $data = (array)$data;
 
-        $message = "$SITE->fullname:  Transaction failed.\n\n$subject\n\n";
-        foreach ($data as $key => $value) {
-            $message .= "$key => $value\n";
-        }
-        email_to_user($admin, $admin, "Authorize.net ERROR: ".$subject, $message);
+        $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);
     }
 
-
     /**
-     * prevent_double_paid
+     * prevent_double_paid (static method)
      *
      * @param object $course
-     * @access private
+     * @static
      */
     function prevent_double_paid($course)
     {
@@ -659,17 +613,51 @@ class enrolment_plugin_authorize
         }
     }
 
-
     /**
-     * check_openssl_loaded
+     * check_openssl_loaded (static method)
      *
      * @return bool
-     * @access private
+     * @static
      */
     function check_openssl_loaded() {
         return extension_loaded('openssl');
     }
 
+    /**
+     * get_list_of_creditcards (static method)
+     *
+     * @param bool $getall
+     * @return array
+     * @static
+     */
+    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;
+    }
+
 
     /**
      * This function is run by admin/cron.php every time if admin has enabled this plugin.
@@ -698,17 +686,17 @@ class enrolment_plugin_authorize
 
         if (intval($mconfig->an_dailysettlement) < $settlementtime) {
             set_config('an_dailysettlement', $settlementtime, 'enrol/authorize');
-            mtrace("    daily cron: some cleanups and sending email to admins the count of pending orders expiring", "...");
+            mtrace("    daily cron; some cleanups and sending email to admins the count of pending orders expiring", ": ");
             $this->cron_daily();
-            mtrace("done", "\n");
+            mtrace("done");
         }
 
         mtrace("    scheduled capture", ": ");
         if (empty($CFG->an_review) or
            (!empty($CFG->an_test)) or
            (intval($CFG->an_capture_day) < 1) or
-           (!$this->check_openssl_loaded())) {
-            mtrace("disabled", "\n");
+           (!enrolment_plugin_authorize::check_openssl_loaded())) {
+            mtrace("disabled");
             return; // order review disabled or test mode or manual capture or openssl wasn't loaded.
         }
 
@@ -720,7 +708,7 @@ class enrolment_plugin_authorize
                "  AND (E.timecreated < '$timediffcnf') AND (E.timecreated > '$timediff30')";
 
         if (!$orders = get_records_sql($sql)) {
-            mtrace("no pending orders", "\n");
+            mtrace("no pending orders");
             return;
         }
 
@@ -730,11 +718,11 @@ class enrolment_plugin_authorize
 
         $ordercount = count((array)$orders);
         if (($ordercount * $eachconn) + intval($mconfig->an_lastcron) > $timenow) {
-            mtrace("blocked", "\n");
+            mtrace("blocked");
             return;
         }
 
-        mtrace($ordercount ." orders are processing", "\n");
+        mtrace("    $ordercount orders are being processed now", ": ");
 
         $faults = '';
         $sendem = array();
@@ -747,10 +735,6 @@ class enrolment_plugin_authorize
             $extra = NULL;
             $success = authorize_action($order, $message, $extra, AN_ACTION_PRIOR_AUTH_CAPTURE);
             if ($success) {
-                if (!update_record("enrol_authorize", $order)) {
-                    $this->email_to_admin("Error while trying to update data. Please edit manually this record: " .
-                    "ID=$order->id in enrol_authorize table.", $order);
-                }
                 $timestart = $timeend = 0;
                 if ($order->enrolperiod) {
                     $timestart = $timenow;
@@ -775,6 +759,8 @@ class enrolment_plugin_authorize
             }
         }
 
+        mtrace("processed");
+
         $timenow = time();
         $elapsed = $timenow - $elapsed;
         $eachconn = ceil($elapsed / $ordercount);
@@ -821,7 +807,7 @@ class enrolment_plugin_authorize
                           $emailmessage);
             $i = $j;
         }
-        mtrace("sent", "\n");
+        mtrace("sent");
     }
 
     /**
index 733f3a323d347339dbacd8f8f0f1c075b2d2f1c5..50eae6e1ee31aea8cfaf44ee6455e638a407bf8e 100644 (file)
@@ -5,6 +5,7 @@ if (!defined('MOODLE_INTERNAL')) {
 }
 
 require_once('const.php');
+require_once('enrol.php');
 require_once('authorizenetlib.php');
 
 define('ORDER_CAPTURE', 'capture');
@@ -224,7 +225,6 @@ function authorize_print_order_details($orderno)
             $message = '';
             $extra = NULL;
             $success = authorize_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);
             }
@@ -301,17 +301,8 @@ function authorize_print_order_details($orderno)
                 $success = authorize_action($order, $message, $extra, AN_ACTION_CREDIT);
                 if ($success) {
                     if (empty($CFG->an_test)) {
-                        $extra->id = insert_record("enrol_authorize_refunds", $extra);
                         if (empty($extra->id)) {
-                            $emailsubject = "Authorize.net: insert record error";
-                            $emailmessage = "Error while trying to insert new data to enrol_authorize_refunds table:\n";
-                            $data = (array)$extra;
-                            foreach ($data as $key => $value) {
-                                $emailmessage .= "$key => $value\n";
-                            }
-                            $adminuser = get_admin();
-                            email_to_user($adminuser, $adminuser, $emailsubject, $emailmessage);
-                            $table->data[] = array("<b><font color=red>$strs->error:</font></b>", $emailmessage);
+                            $table->data[] = array("<b><font color=red>$strs->error:</font></b>", 'insert record error');
                         }
                         else {
                             if (!empty($unenrol)) {
@@ -353,7 +344,6 @@ function authorize_print_order_details($orderno)
                 $extra = NULL;
                 $message = '';
                 $success = authorize_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");
@@ -395,7 +385,6 @@ function authorize_print_order_details($orderno)
                     $message = '';
                     $extra = NULL;
                     $success = authorize_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)) {