﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	blockedby	blocking
1852	Optimierung (und Bug ?) in /admin/modules.php	noRiddle	somebody	" * Sortierung: [[BR]]Wenn man z.B. eine Klassenerweiterung baut und den diversen  Einstellungsmöglichkeiten eine Sortierung gibt (Feld ''sort_order'' in  DB-Tabelle ''configuration'') wird diese bei der Darstellung im Edit-Modus nicht berücksichtigt. Statt dessen wird die Reihenfolge im Array das die Methode ''keys()'' zurückgibt als Sortierung verwendet (Funktion ''get_module_info()'').[[BR]]Das ist nicht nur kontra-intuitiv sondern das DB-Feld ''sort_order'' wird auch ad absurdum geführt weil es keine Wirkung hat.[[BR]]Das würde ich als eine Art Bug bezeichnen wollen.
 * Query:[[BR]]Die Query in o.g. Funktion ''get_module_info()'' wird innerhalb des for-Loops und somit mehrfach ausgeführt, was bei vielen Konfigurations-Parameteren sicherlich performance-technisch nicht optimal ist.[[BR]]Man könnte die Query, um ''sort_order'' ergänzt, außerhalb eines Loops mittels[[BR]]`   WHERE configuration_key IN('"".implode('\',\'', $module_keys).""') ORDER BY sort_order ASC"");`[[BR]]machen und in einer while-Loop dann das Array ''$module_info'' füllen.

Mein Vorschlag inkl. auskommentiertem alten Code:

{{{
  function get_module_info($module) {
    $module_info = array('code' => $module->code,
                         'title' => $module->title,
                         'description' => $module->description,
                         'extended_description' => isset($module->extended_description) ? $module->extended_description : '',
                         'status' => $module->check());
    $module_info['properties'] = isset($module->properties) ? $module->properties : array();
    $module_keys = method_exists($module,'keys') ? $module->keys() : array();
    $keys_extra = array();
    
    $key_value_query = xtc_db_query(""SELECT configuration_key,
                                            configuration_value,
                                            sort_order,
                                            use_function,
                                            set_function
                                       FROM "" . TABLE_CONFIGURATION . ""
                                      WHERE configuration_key IN('"".implode('\',\'', $module_keys).""')
                                   ORDER BY sort_order ASC"");
    
    while($key_value = xtc_db_fetch_array($key_value_query)) {
        if ($key_value['configuration_key'] !='') {
            $keys_extra[$key_value['sort_order']]['title'] = constant(strtoupper($key_value['configuration_key'] .'_TITLE'));
        }
        $keys_extra[$key_value['sort_order']]['value'] = $key_value['configuration_value'];
        if ($key_value['configuration_key'] !='') {
            $keys_extra[$key_value['sort_order']]['description'] = constant(strtoupper($key_value['configuration_key'] .'_DESC'));
        }
        $keys_extra[$key_value['sort_order']]['use_function'] = $key_value['use_function'];
        $keys_extra[$key_value['sort_order']]['set_function'] = $key_value['set_function'];
    }
    
    /*for ($j = 0, $k = sizeof($module_keys); $j < $k; $j++) {
      $key_value_query = xtc_db_query(""SELECT configuration_key,
                                              configuration_value,
                                              use_function,
                                              set_function
                                         FROM "" . TABLE_CONFIGURATION . ""
                                        WHERE configuration_key = '"" . $module_keys[$j] . ""'"");
      $key_value = xtc_db_fetch_array($key_value_query);
      if ($key_value['configuration_key'] !='') {
        $keys_extra[$module_keys[$j]]['title'] = constant(strtoupper($key_value['configuration_key'] .'_TITLE'));
      }
      $keys_extra[$module_keys[$j]]['value'] = $key_value['configuration_value'];
      if ($key_value['configuration_key'] !='') {
        $keys_extra[$module_keys[$j]]['description'] = constant(strtoupper($key_value['configuration_key'] .'_DESC'));
      }
      $keys_extra[$module_keys[$j]]['use_function'] = $key_value['use_function'];
      $keys_extra[$module_keys[$j]]['set_function'] = $key_value['set_function'];
    }*/
    $module_info['keys'] = $keys_extra;
    
    return $module_info;
  }

}}}
Damit hätten wir dem Feld ''sort_order'' wieder zur Geltung verholfen und die DB-Query optimiert.

Gruß,
noRiddle"	Bug/Fehler	closed	normal	modified-shop-2.0.6.0	Admin	2.0.5.1	fixed				
