From: ethem Date: Wed, 15 Nov 2006 20:44:49 +0000 (+0000) Subject: Fixed: MDL-7561 X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=f5fbea120f5f225c19af8076455db43edac1c7b5;p=moodle.git Fixed: MDL-7561 New forms api --- diff --git a/enrol/authorize/enrol.php b/enrol/authorize/enrol.php index 3a4b9798ed..f564b390eb 100755 --- a/enrol/authorize/enrol.php +++ b/enrol/authorize/enrol.php @@ -45,6 +45,7 @@ class enrolment_plugin_authorize return; } + prevent_double_paid($course); httpsrequired(); if (empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == 'off') { @@ -69,7 +70,7 @@ class enrolment_plugin_authorize print_heading(get_string('choosemethod', 'enrol_authorize'), 'center'); } - print_simple_box_start('center'); + print_simple_box_start('center', '80%'); if (has_capability('moodle/legacy:guest', get_context_instance(CONTEXT_SYSTEM), $USER->id, false)) { $curcost = get_course_cost($course); echo '
'; @@ -77,8 +78,23 @@ class enrolment_plugin_authorize echo '

'.get_string('cost').": $curcost[currency] $curcost[cost]".'

'; echo '

'.get_string('loginsite').'

'; echo '
'; - } else { - include($CFG->dirroot.'/enrol/authorize/enrol_form.php'); + } + else { + require_once($CFG->dirroot.'/enrol/authorize/enrol_form.php'); + $authorize_enrol = new authorize_enrol_form('enrol.php'); + if ($authorize_enrol->data_submitted() && + (AN_METHOD_CC == $form->paymentmethod || AN_METHOD_ECHECK == $form->paymentmethod)) { + switch ($form->paymentmethod) { + case AN_METHOD_CC: + $this->cc_submit($form, $course); + break; + + case AN_METHOD_ECHECK: + $this->echeck_submit($form, $course); + break; + } + } + $authorize_enrol->display(); } print_simple_box_end(); @@ -110,17 +126,10 @@ class enrolment_plugin_authorize $this->errormsg = $manual->errormsg; } } - elseif (!empty($form->paymentmethod) && in_array($form->paymentmethod, get_list_of_payment_methods())) { - if ($form->paymentmethod == AN_METHOD_CC && validate_cc_form($form, $this->authorizeerrors)) { - $this->cc_submit($form, $course); - } - elseif($form->paymentmethod == AN_METHOD_ECHECK && validate_echeck_form($form, $this->authorizeerrors)) { - $this->echeck_submit($form, $course); - } - } } + /** * The user submitted credit card form. * @@ -144,7 +153,7 @@ class enrolment_plugin_authorize $order = new stdClass(); $order->paymentmethod = AN_METHOD_CC; $order->cclastfour = substr($form->cc, -4); - $order->ccname = $form->ccfirstname . " " . $form->cclastname; + $order->ccname = $form->firstname . " " . $form->lastname; $order->courseid = $course->id; $order->userid = $USER->id; $order->status = AN_STATUS_NONE; // it will be changed... @@ -166,8 +175,8 @@ class enrolment_plugin_authorize $extra->x_exp_date = $exp_date; $extra->x_currency_code = $curcost['currency']; $extra->x_amount = $curcost['cost']; - $extra->x_first_name = $form->ccfirstname; - $extra->x_last_name = $form->cclastname; + $extra->x_first_name = $form->firstname; + $extra->x_last_name = $form->lastname; $extra->x_country = $form->cccountry; $extra->x_address = $form->ccaddress; $extra->x_state = $form->ccstate; diff --git a/enrol/authorize/enrol_form.php b/enrol/authorize/enrol_form.php index 966dba6419..f08170075a 100755 --- a/enrol/authorize/enrol_form.php +++ b/enrol/authorize/enrol_form.php @@ -1,229 +1,222 @@ libdir.'/formslib.php'); -/// Get payment methods enabled and use the first method as default payment method - $paymentmethodsenabled = get_list_of_payment_methods(); // methods enabled - $paymentmethod = optional_param('paymentmethod', $paymentmethodsenabled[0], PARAM_ALPHA); // user's payment preference +class authorize_enrol_form extends moodleform +{ + function definition() + { + global $course; + global $CFG, $USER; - if (!in_array($paymentmethod, $paymentmethodsenabled)) { - error("Invalid payment method: $paymentmethod"); - } + $paymentmethodsenabled = get_list_of_payment_methods(); + $paymentmethod = optional_param('paymentmethod', $paymentmethodsenabled[0], PARAM_ALPHA); + if (!in_array($paymentmethod, $paymentmethodsenabled)) { + error("Invalid payment method: $paymentmethod"); + } - switch ($paymentmethod) - { - case AN_METHOD_CC: + $mform =& $this->_form; + $renderer =& $mform->defaultRenderer(); + + $mform->addElement('header', '', '  ' . get_string('paymentrequired'), ''); + + $mform->addElement('hidden', 'id', $course->id); + $mform->setType('id', PARAM_INT); + + $mform->addElement('hidden', 'paymentmethod', $paymentmethod); + $mform->setType('paymentmethod', PARAM_ALPHA); + + $firstlastnamegrp = array(); + $firstlastnamegrp[] = &MoodleQuickForm::createElement('text', 'firstname', '', 'size="10"'); + $firstlastnamegrp[] = &MoodleQuickForm::createElement('text', 'lastname', '', 'size="10"'); + $mform->addGroup($firstlastnamegrp, 'firstlastgrp', get_string('nameoncard', 'enrol_authorize'), ' ', false); + $firstlastnamegrprules = array(); + $firstlastnamegrprules['firstname'][] = array(get_string('missingfirstname'), 'required', null, 'client'); + $firstlastnamegrprules['lastname'][] = array(get_string('missinglastname'), 'required', null, 'client'); + $mform->addGroupRule('firstlastgrp', $firstlastnamegrprules); + $mform->setType('firstname', PARAM_ALPHANUM); + $mform->setType('lastname', PARAM_ALPHANUM); + $mform->setDefault('firstname', $USER->firstname); + $mform->setDefault('lastname', $USER->lastname); + + if (AN_METHOD_CC == $paymentmethod) { - print_cc_form($this); - break; - } + $mform->addElement('text', 'cc', get_string('ccno', 'enrol_authorize'), 'size="16"'); + $mform->setType('cc', PARAM_ALPHANUM); + $mform->setDefault('cc', ''); + $mform->addRule('cc', get_string('missingcc', 'enrol_authorize'), 'required', null, 'client'); + $mform->addRule('cc', get_string('ccinvalid', 'enrol_authorize'), 'numeric', null, 'client'); + + $creditcardsmenu = array('' => get_string('choose')) + get_list_of_creditcards(); + $mform->addElement('select', 'cctype', get_string('cctype', 'enrol_authorize'), $creditcardsmenu); + $mform->setType('cctype', PARAM_ALPHA); + $mform->addRule('cctype', get_string('missingcctype', 'enrol_authorize'), 'required', null, 'client'); + $mform->setDefault('cctype', ''); + + $monthsmenu = array('' => get_string('choose')); + for ($i = 1; $i <= 12; $i++) { + $monthsmenu[$i] = userdate(gmmktime(12, 0, 0, $i, 1, 2000), "%B"); + } + $yearsmenu = array('' => get_string('choose')); + $nowdate = getdate(); + $nowyear = $nowdate["year"] - 1; + for ($i = $nowyear; $i <= $nowyear + 11; $i++) { + $yearsmenu[$i] = $i; + } + $ccexpiregrp = array(); + $ccexpiregrp[] = &MoodleQuickForm::createElement('select', 'ccexpiremm', '', $monthsmenu); + $ccexpiregrp[] = &MoodleQuickForm::createElement('select', 'ccexpireyyyy', '', $yearsmenu); + $mform->addGroup($ccexpiregrp, 'ccexpiregrp', get_string('ccexpire', 'enrol_authorize'), ' ', false); + $ccexpiregrprules = array(); + $ccexpiregrprules['ccexpiremm'][] = array(get_string('missingccexpire', 'enrol_authorize'), 'required', null, 'client'); + $ccexpiregrprules['ccexpireyyyy'][] = array(get_string('missingccexpire', 'enrol_authorize'), 'required', null, 'client'); + $mform->addGroupRule('ccexpiregrp', $ccexpiregrprules); + $mform->setType('ccexpiremm', PARAM_INT); + $mform->setType('ccexpireyyyy', PARAM_INT); + $mform->setDefault('ccexpiremm', ''); + $mform->setDefault('ccexpireyyyy', ''); + + $mform->addElement('text', 'cvv', get_string('ccvv', 'enrol_authorize'), 'size="4"'); + $mform->setHelpButton('cvv', array('cvv',get_string('ccvv', 'enrol_authorize'),'enrol/authorize'), true); + $mform->setType('cvv', PARAM_ALPHANUM); + $mform->setDefault('cvv', ''); + $mform->addRule('cvv', get_string('missingcvv', 'enrol_authorize'), 'required', null, 'client'); + $mform->addRule('cvv', get_string('missingcvv', 'enrol_authorize'), 'numeric', null, 'client'); + + if (!empty($CFG->an_authcode)) { + $ccauthgrp = array(); + $ccauthgrp[] = &MoodleQuickForm::createElement('checkbox', 'haveauth', null, get_string('haveauthcode', 'enrol_authorize')); + $ccauthgrp[] = &MoodleQuickForm::createElement('static', 'nextline', null, '
'); + $ccauthgrp[] = &MoodleQuickForm::createElement('text', 'ccauthcode', '', 'size="8"'); + $mform->addGroup($ccauthgrp, 'ccauthgrp', get_string('authcode', 'enrol_authorize'), ' ', false); + $mform->setHelpButton('ccauthgrp', array('authcode',get_string('authcode', 'enrol_authorize'),'enrol/authorize'), true); + $ccauthgrprules = array(); + $ccauthgrprules['ccauthcode'][] = array(get_string('missingccauthcode', 'enrol_authorize'), 'numeric', null, 'client'); + $mform->addGroupRule('ccauthgrp', $ccauthgrprules); + $mform->setDefault('haveauth', ''); + $mform->setDefault('ccauthcode', ''); + } - case AN_METHOD_ECHECK: + if (!empty($CFG->an_avs)) { + $mform->addElement('header', '', '  ' . get_string('address'), ''); + + $mform->addElement('text', 'ccaddress', get_string('address'), 'size="20"'); + $mform->setType('ccaddress', PARAM_ALPHANUM); + $mform->setDefault('ccaddress', $USER->address); + $mform->addRule('ccaddress', get_string('missingaddress', 'enrol_authorize'), 'required', null, 'client'); + + $citystategrp = array(); + $citystategrp[] = &MoodleQuickForm::createElement('text', 'cccity', '', 'size="10"'); + $citystategrp[] = &MoodleQuickForm::createElement('text', 'ccstate', '', 'size="10"'); + $mform->addGroup($citystategrp, 'citystategrp', get_string('city') . ' / ' . get_string('state'), ' ', false); + $citystategrprules = array(); + $citystategrprules['cccity'][] = array(get_string('missingcity'), 'required', null, 'client'); + $mform->addGroupRule('citystategrp', $citystategrprules); + $mform->setType('cccity', PARAM_ALPHANUM); + $mform->setType('ccstate', PARAM_ALPHANUM); + $mform->setDefault('cccity', $USER->city); + $mform->setDefault('ccstate', ''); + + $mform->addElement('select', 'cccountry', get_string('country'), get_list_of_countries()); + $mform->addRule('cccountry', get_string('missingcountry'), 'required', null, 'client'); + $mform->setType('cccountry', PARAM_ALPHA); + $mform->setDefault('cccountry', $USER->country); + } + else { + $mform->addElement('hidden', 'ccstate', ''); + $mform->addElement('hidden', 'ccaddress', $USER->address); + $mform->addElement('hidden', 'cccity', $USER->city); + $mform->addElement('hidden', 'cccountry', $USER->country); + } + } + elseif (AN_METHOD_ECHECK == $paymentmethod) { - print_echeck_form($this); - break; + $mform->addElement('text', 'abacode', get_string('echeckabacode', 'enrol_authorize'), 'size="9" maxlength="9"'); + $mform->setHelpButton('abacode', array('aba',get_string('echeckabacode', 'enrol_authorize'),'enrol/authorize'), true); + $mform->setType('abacode', PARAM_ALPHANUM); + $mform->setDefault('abacode', ''); + $mform->addRule('abacode', get_string('missingaba', 'enrol_authorize'), 'required', null, 'client'); + $mform->addRule('abacode', get_string('missingaba', 'enrol_authorize'), 'numeric', null, 'client'); + + $mform->addElement('text', 'accnum', get_string('echeckaccnum', 'enrol_authorize'), 'size="20" maxlength="20"'); + $mform->setType('accnum', PARAM_ALPHANUM); + $mform->setDefault('accnum', ''); + $mform->addRule('accnum', get_string('invalidaccnum', 'enrol_authorize'), 'required', null, 'client'); + $mform->addRule('accnum', get_string('invalidaccnum', 'enrol_authorize'), 'numeric', null, 'client'); + + $acctypes = array(); + $acctypesenabled = get_list_of_bank_account_types(); + foreach ($acctypesenabled as $key) { + $acctypes[$key] = get_string("echeck".strtolower($key), "enrol_authorize"); + } + $acctypes = array('' => get_string('choose')) + $acctypes; + $mform->addElement('select', 'acctype', get_string('echeckacctype', 'enrol_authorize'), $acctypes); + $mform->setType('acctype', PARAM_ALPHA); + $mform->addRule('acctype', get_string('invalidacctype', 'enrol_authorize'), 'required', null, 'client'); + $mform->setDefault('acctype', ''); + + $mform->addElement('text', 'bankname', get_string('echeckbankname', 'enrol_authorize'), 'size="20" maxlength="50"'); + $mform->setType('bankname', PARAM_ALPHANUM); + $mform->setDefault('bankname', ''); + $mform->addRule('bankname', get_string('missingbankname', 'enrol_authorize'), 'required', null, 'client'); } - } -function print_cc_form($classreference) -{ - global $form, $course; - global $CFG, $USER; - - $formvars = array( - 'ccaddress', 'cccity', 'ccstate', 'cccountry', 'cczip', 'ccauthcode', 'haveauth', - 'ccfirstname', 'cclastname', 'cc', 'ccexpiremm', 'ccexpireyyyy', 'cctype', 'cvv' - ); - foreach ($formvars as $var) { - if (!isset($form->$var)) { - $form->$var = ''; - } + $mform->addElement('text', 'cczip', get_string('zipcode', 'enrol_authorize'), 'size="5"'); + $mform->setType('cczip', PARAM_ALPHANUM); + $mform->setDefault('cczip', ''); + $mform->addRule('cczip', get_string('missingzip', 'enrol_authorize'), 'required', null, 'client'); + $mform->addRule('cczip', get_string('missingzip', 'enrol_authorize'), 'numeric', null, 'client'); + + $mform->addElement('submit', 'submit', get_string('sendpaymentbutton', 'enrol_authorize')); + $renderer->addStopFieldsetElements('submit'); } - $curcost = 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; - $usercity = empty($form->cccity) ? $USER->city : $form->cccity; - $usercountry = empty($form->cccountry) ? $USER->country : $form->cccountry; -?> - -

authorizeerrors['header'])) { formerr($classreference->authorizeerrors['header']); } ?>

-
- -

-

-

-

- -
- - - - - - - - - - - - - - - - - - - - - - - - - an_authcode)) : /* Authorization Code */ ?> - - - - - - - an_avs)) : /* Address Verification System */ ?> - - - - - - - - - - - - - - - - - - - - - - -
: - authorizeerrors['cc'])) { formerr($classreference->authorizeerrors['cc']); } ?>
: - - authorizeerrors['ccfirstlast'])) { formerr($classreference->authorizeerrors['ccfirstlast']); } ?>
: ccexpiremm); - $nowdate = getdate(); - $nowyear = $nowdate["year"]-1; - for ($i=$nowyear; $i<=$nowyear+11; $i++) { - $years[$i] = $i; - } - choose_from_menu($years, 'ccexpireyyyy', $form->ccexpireyyyy); - if (!empty($classreference->authorizeerrors['ccexpire'])) { formerr($classreference->authorizeerrors['ccexpire']); } - ?>
: cctype); - if (!empty($classreference->authorizeerrors['cctype'])) { formerr($classreference->authorizeerrors['cctype']); } - ?> -
: - - authorizeerrors['cvv'])) { formerr($classreference->authorizeerrors['cvv']); } ?>
: haveauth), get_string("haveauthcode", "enrol_authorize")) ?> -
- - authorizeerrors['ccauthcode'])) { formerr($classreference->authorizeerrors['ccauthcode']); } ?>
: - authorizeerrors['ccaddress'])) { formerr($classreference->authorizeerrors['ccaddress']); } ?>
/ : / - - authorizeerrors['cccity'])) { formerr($classreference->authorizeerrors['cccity']); } ?>
: - authorizeerrors['cccountry'])) { formerr($classreference->authorizeerrors['cccountry']); } ?>
- - - - -
: - authorizeerrors['cczip'])) { formerr($classreference->authorizeerrors['cczip']); } ?>
- "> -
-
- -$var)) { - $form->$var = ''; + if (!empty($CFG->an_authcode) && !empty($data['haveauth']) && empty($data['ccauthcode'])) { + $err['ccauthgrp'] = get_string('missingccauthcode', 'enrol_authorize'); } } + elseif (AN_METHOD_ECHECK == $data['paymentmethod']) + { + if (!ABAVal($data['abacode'])) { + $err['abacode'] = get_string('invalidaba', 'enrol_authorize'); + } + + if (!in_array($data['acctype'], get_list_of_bank_account_types())) { + $err['acctype'] = get_string('invalidacctype', 'enrol_authorize'); + } + } + + if (!empty($err)) { + $err['header'] = get_string('someerrorswerefound'); + return $err; + } + + return true; + } - $curcost = get_course_cost($course); - $userfirstname = empty($form->firstname) ? $USER->firstname : $form->firstname; - $userlastname = empty($form->lastname) ? $USER->lastname : $form->lastname; -?> - -

authorizeerrors['header'])) { formerr($classreference->authorizeerrors['header']); } ?>

-
- -

-

-

-

- -
- - - - - - - - - - - - - - - - - - - - - - - -
: - - authorizeerrors['abacode'])) { formerr($classreference->authorizeerrors['abacode']); } ?>
: - authorizeerrors['accnum'])) { formerr($classreference->authorizeerrors['accnum']); } ?>
: acctype); - if (!empty($classreference->authorizeerrors['acctype'])) { formerr($classreference->authorizeerrors['acctype']); } - ?> -
: - authorizeerrors['bankname'])) { formerr($classreference->authorizeerrors['bankname']); } ?>
: - - authorizeerrors['firstlast'])) { formerr($classreference->authorizeerrors['firstlast']); } ?>
- "> -
-
- -cc)) { - $err['cc'] = get_string('missingcc', 'enrol_authorize'); - } - if (empty($form->ccexpiremm) || empty($form->ccexpireyyyy)) { - $err['ccexpire'] = get_string('missingccexpire', 'enrol_authorize'); - } - else { - $expdate = sprintf("%02d", intval($form->ccexpiremm)) . $form->ccexpireyyyy; - $validcc = CCVal($form->cc, $form->cctype, $expdate); - if (!$validcc) { - if ($validcc === 0) { - $err['ccexpire'] = get_string('ccexpired', 'enrol_authorize'); - } - else { - $err['cc'] = get_string('ccinvalid', 'enrol_authorize'); - } - } - } - - if (empty($form->ccfirstname) || empty($form->cclastname)) { - $err['ccfirstlast'] = get_string('missingfullname'); - } - - if (empty($form->cvv) || !is_numeric($form->cvv)) { - $err['cvv'] = get_string('missingcvv', 'enrol_authorize'); - } - - if (empty($form->cctype) or !in_array($form->cctype, array_keys(get_list_of_creditcards()))) { - $err['cctype'] = get_string('missingcctype', 'enrol_authorize'); - } - - if (!empty($CFG->an_authcode) && !empty($form->haveauth) && empty($form->ccauthcode)) { - $err['ccauthcode'] = get_string('missingccauthcode', 'enrol_authorize'); - } - - if (!empty($CFG->an_avs)) { - if (empty($form->ccaddress)) { - $err['ccaddress'] = get_string('missingaddress', 'enrol_authorize'); - } - if (empty($form->cccity)) { - $err['cccity'] = get_string('missingcity'); - } - if (empty($form->cccountry)) { - $err['cccountry'] = get_string('missingcountry'); - } - } - - if (empty($form->cczip) || !is_numeric($form->cczip)) { - $err['cczip'] = get_string('missingzip', 'enrol_authorize'); - } - - if (!empty($err)) { - $err['header'] = get_string('someerrorswerefound'); - return false; - } - - return true; -} - -function validate_echeck_form($form, &$err) -{ - global $CFG; - - if (empty($form->abacode) || !is_numeric($form->abacode)) { - $err['abacode'] = get_string('missingaba', 'enrol_authorize'); - } - elseif (!ABAVal($form->abacode)) { - $err['abacode'] = get_string('invalidaba', 'enrol_authorize'); - } - - if (empty($form->accnum) || !is_numeric($form->accnum)) { - $err['accnum'] = get_string('invalidaccnum', 'enrol_authorize'); - } - - if (empty($form->acctype) || !in_array($form->acctype, get_list_of_bank_account_types())) { - $err['acctype'] = get_string('invalidacctype', 'enrol_authorize'); - } - - if (empty($form->bankname)) { - $err['bankname'] = get_string('missingbankname', 'enrol_authorize'); - } - - if (empty($form->firstname) || empty($form->lastname)) { - $err['firstlast'] = get_string('missingfullname'); - } - - if (!empty($err)) { - $err['header'] = get_string('someerrorswerefound'); - return false; - } - - return true; -} - function email_to_admin($subject, $data) { global $SITE;