Example #1
0
 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);
 }