00001 <?php
00002
00016 import('form.Form');
00017
00018 class PayMethodSettingsForm extends Form {
00020 var $errors;
00021
00023 var $plugins;
00024
00028 function PayMethodSettingsForm() {
00029 parent::Form('manager/payments/payMethodSettingsForm.tpl');
00030
00031
00032 $this->plugins =& PluginRegistry::loadCategory('paymethod');
00033
00034
00035 $this->addCheck(new FormValidatorInSet($this, 'paymentMethodPluginName', 'optional', 'manager.payment.paymentPluginInvalid', array_keys($this->plugins)));
00036
00037 }
00038
00042 function display() {
00043 $templateMgr = &TemplateManager::getManager();
00044 $templateMgr->assign_by_ref('paymentMethodPlugins', $this->plugins);
00045 parent::display();
00046 }
00047
00051 function initData() {
00052 $journal =& Request::getJournal();
00053
00054
00055 $paymentMethodPluginName = Request::getUserVar('paymentMethodPluginName');
00056 if (empty($paymentMethodPluginName) || !in_array($paymentMethodPluginName, array_keys($this->plugins))) {
00057 $paymentMethodPluginName = $journal->getSetting('paymentMethodPluginName');
00058 }
00059
00060 if (!isset($this->plugins[$paymentMethodPluginName])) {
00061
00062 $paymentMethodPluginName = array_shift(array_keys($this->plugins));
00063 }
00064
00065
00066 $paymentMethodPlugin =& $this->plugins[$paymentMethodPluginName];
00067
00068 $this->_data = array(
00069 'paymentMethodPluginName' => $paymentMethodPluginName
00070 );
00071
00072 if (isset($this->plugins[$paymentMethodPluginName])) {
00073 $plugin =& $this->plugins[$paymentMethodPluginName];
00074 foreach ($plugin->getSettingsFormFieldNames() as $field) {
00075 $this->_data[$field] = $plugin->getSetting($journal->getJournalId(), $field);
00076 }
00077 }
00078 }
00079
00083 function readInputData() {
00084 $this->readUserVars(array(
00085 'paymentMethodPluginName'
00086 ));
00087
00088 $paymentMethodPluginName = $this->getData('paymentMethodPluginName');
00089 if (isset($this->plugins[$paymentMethodPluginName])) {
00090 $plugin =& $this->plugins[$paymentMethodPluginName];
00091 $this->readUserVars($plugin->getSettingsFormFieldNames());
00092 }
00093
00094 }
00095
00099 function execute() {
00100 $journal =& Request::getJournal();
00101
00102 foreach (array('paymentMethodPluginName') as $journalSettingName) {
00103 $journal->updateSetting($journalSettingName, $this->getData($journalSettingName));
00104 }
00105
00106
00107 $paymentMethodPluginName = $this->getData('paymentMethodPluginName');
00108 if (isset($this->plugins[$paymentMethodPluginName])) {
00109 $plugin =& $this->plugins[$paymentMethodPluginName];
00110 foreach ($plugin->getSettingsFormFieldNames() as $field) {
00111 $plugin->updateSetting($journal->getJournalId(), $field, $this->getData($field));
00112 }
00113 }
00114 }
00115 }
00116
00117 ?>