public function edit($id) { if ($id) { $pp = new PaymentProcessor(); if (!$pp->loadId($id)) { return false; } // Init Info and Settings $pp->fullInit(true); $lists = array(); // Get Backend Settings $settings_array = $pp->getBackendSettings(); $original_settings = $pp->processor->settings(); if (isset($settings_array['lists'])) { foreach ($settings_array['lists'] as $lname => $lvalue) { $list_name = $pp->processor_name . '_' . $lname; $lists[$list_name] = str_replace('name="' . $lname . '"', 'name="' . $list_name . '"', $lvalue); } unset($settings_array['lists']); } $available_plans = SubscriptionPlanHandler::getActivePlanList(); // Iterate through settings form assigning the db settings foreach ($settings_array as $name => $values) { $setting_name = $pp->processor_name . '_' . $name; switch ($settings_array[$name][0]) { case 'list_currency': // Get currency list if (is_array($pp->info['currencies'])) { $currency_array = $pp->info['currencies']; } else { $currency_array = explode(',', $pp->info['currencies']); } // Transform currencies into OptionArray $currency_code_list = array(); foreach ($currency_array as $currency) { if ($this->lang->hasKey('CURRENCY_' . $currency)) { $currency_code_list[] = JHTML::_('select.option', $currency, $currency . ' - ' . JText::_('CURRENCY_' . $currency)); } } $size = min(count($currency_array), 10); // Create list $lists[$setting_name] = JHTML::_('select.genericlist', $currency_code_list, $setting_name, 'size="' . $size . '"', 'value', 'text', $pp->settings[$name]); $settings_array[$name][0] = 'list'; break; case 'list_language': // Get language list if (is_array($pp->info['languages'])) { $this->language_array = $pp->info['languages']; } else { $this->language_array = explode(',', $pp->info['languages']); } // Transform languages into OptionArray $this->language_code_list = array(); foreach ($this->language_array as $this->language) { $this->language_code_list[] = JHTML::_('select.option', $this->language, JText::_('LANGUAGECODE_' . strtoupper($this->language))); } // Create list $lists[$setting_name] = JHTML::_('select.genericlist', $this->language_code_list, $setting_name, 'size="10"', 'value', 'text', $pp->settings[$name]); $settings_array[$name][0] = 'list'; break; case 'list_plan': // Create list $lists[$setting_name] = JHTML::_('select.genericlist', $available_plans, $setting_name, 'size="10"', 'value', 'text', $pp->settings[$name]); $settings_array[$name][0] = 'list'; break; default: break; } if (!isset($settings_array[$name][1])) { $settings_array[$name][1] = $pp->getParamLang($name . '_NAME'); $settings_array[$name][2] = $pp->getParamLang($name . '_DESC'); } // It might be that the processor has got some new properties, so we need to double check here if (isset($pp->settings[$name])) { $content = $pp->settings[$name]; } elseif (isset($original_settings[$name])) { $content = $original_settings[$name]; } else { $content = null; } // Set the settings value $settings_array[$setting_name] = array_merge((array) $settings_array[$name], array($content)); // unload the original value unset($settings_array[$name]); } $longname = $pp->processor_name . '_info_longname'; $description = $pp->processor_name . '_info_description'; $settingsparams = $pp->settings; $params = array(); $params[$pp->processor_name . '_active'] = array('toggle', JText::_('PP_GENERAL_ACTIVE_NAME'), JText::_('PP_GENERAL_ACTIVE_DESC'), $pp->processor->active); if (is_array($settings_array) && !empty($settings_array)) { $params = array_merge($params, $settings_array); } $params[$longname] = array('inputC', JText::_('CFG_PROCESSOR_NAME_NAME'), JText::_('CFG_PROCESSOR_NAME_DESC'), $pp->info['longname'], $longname); $params[$description] = array('editor', JText::_('CFG_PROCESSOR_DESC_NAME'), JText::_('CFG_PROCESSOR_DESC_DESC'), $pp->info['description'], $description); } else { $lists['processor'] = PaymentProcessorHandler::getSelectList(); $params['processor'] = array('list'); $settingsparams = array(); $pp = null; } $settings = new aecSettings('pp', 'general'); $settings->fullSettingsArray($params, $settingsparams, $lists); // Call HTML Class $aecHTML = new aecHTML($settings->settings, $settings->lists); if (!empty($customparamsarray)) { $aecHTML->customparams = $customparamsarray; } $aecHTML->pp = $pp; HTML_AcctExp::editProcessor($aecHTML); }