From: <ral...@us...> - 2015-05-27 12:18:41
|
Author: ralfbecker Date: Wed May 27 14:18:33 2015 New Revision: 52845 URL: http://svn.stylite.de/viewvc/egroupware?rev=52845&view=rev Log: * Tracker: fix slow rendering of edit popup for hugh number of tracker-user doublicate check was iterating through all options for each option, causing it to take eg. 25s for 7000 options Modified: branches/14.2/etemplate/ (props changed) branches/14.2/etemplate/inc/class.etemplate_widget_menupopup.inc.php Propchange: branches/14.2/etemplate/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Wed May 27 14:18:33 2015 @@ -1,1 +1,1 @@ -/trunk/etemplate:51364,51378,51382,51385,51389,51391,51397-51398,51405,51410,51412,51424-51425,51435,51437-51438,51450,51453-51454,51465,51488,51490,51516,51518,51522,51531,51533,51548,51551,51562,51565,51567,51580,51586-51589,51595,51600,51612,51628,51636,51645-51646,51649-51651,51680,51684,51690-51691,51695,51708,51712,51716-51717,51720,51791,51812,51814,51817,51822,51826,51830,51834,51874-51875,51886,51894,51903,51907,51929,51933,51943,51948,51950-51951,51953,51958,51971,51997,51999,52001,52012,52022,52036,52051,52072,52088,52093,52100,52103,52114,52117,52152-52153,52163,52175-52176,52188,52192,52194-52196,52204,52222,52224,52229,52232,52236,52238,52243,52245,52253,52255,52258,52261-52262,52268,52275-52276,52278,52282,52285-52286,52296,52307,52321,52330,52334-52336,52340-52341,52353-52355,52357,52360,52368,52372-52373,52375,52379,52385,52406,52412,52423,52440,52447,52449,52455,52460,52470,52472,52477,52482,52487,52492,52495-52496,52510,52514,52519,52524,52555,52570,52573-52574,52 583,52610,52624,52627,52635,52664,52667,52688,52690,52696,52698,52708,52713,52718,52720,52726,52728,52732,52734,52749,52753,52787-52788,52790,52804-52806,52819,52832,52842 +/trunk/etemplate:51364,51378,51382,51385,51389,51391,51397-51398,51405,51410,51412,51424-51425,51435,51437-51438,51450,51453-51454,51465,51488,51490,51516,51518,51522,51531,51533,51548,51551,51562,51565,51567,51580,51586-51589,51595,51600,51612,51628,51636,51645-51646,51649-51651,51680,51684,51690-51691,51695,51708,51712,51716-51717,51720,51791,51812,51814,51817,51822,51826,51830,51834,51874-51875,51886,51894,51903,51907,51929,51933,51943,51948,51950-51951,51953,51958,51971,51997,51999,52001,52012,52022,52036,52051,52072,52088,52093,52100,52103,52114,52117,52152-52153,52163,52175-52176,52188,52192,52194-52196,52204,52222,52224,52229,52232,52236,52238,52243,52245,52253,52255,52258,52261-52262,52268,52275-52276,52278,52282,52285-52286,52296,52307,52321,52330,52334-52336,52340-52341,52353-52355,52357,52360,52368,52372-52373,52375,52379,52385,52406,52412,52423,52440,52447,52449,52455,52460,52470,52472,52477,52482,52487,52492,52495-52496,52510,52514,52519,52524,52555,52570,52573-52574,52 583,52610,52624,52627,52635,52664,52667,52688,52690,52696,52698,52708,52713,52718,52720,52726,52728,52732,52734,52749,52753,52787-52788,52790,52804-52806,52819,52832,52842,52844 Modified: branches/14.2/etemplate/inc/class.etemplate_widget_menupopup.inc.php URL: http://svn.stylite.de/viewvc/egroupware/branches/14.2/etemplate/inc/class.etemplate_widget_menupopup.inc.php?rev=52845&r1=52844&r2=52845&view=diff ============================================================================== --- branches/14.2/etemplate/inc/class.etemplate_widget_menupopup.inc.php (original) +++ branches/14.2/etemplate/inc/class.etemplate_widget_menupopup.inc.php Wed May 27 14:18:33 2015 @@ -332,27 +332,21 @@ { $backup_options = $options; + $values = array(); foreach($options as $value => &$label) { // Of course once we re-index the options, we can't detect duplicates // so check here, as we re-index // Duplicates might happen if app programmer isn't paying attention and // either uses the same ID in the template, or adds the options twice - if(!is_array($label) || is_array($label) && !array_key_exists('value',$label)) - { - $check_value = (string)(is_array($label) && array_key_exists('value', $label) ? $label['value'] : $value); - if((string)$value === $check_value) - { - foreach($options as $key => $existing) - { - if(is_array($existing) && isset($existing['value']) && (string)$existing['value'] === $check_value && $key != $value) - { - unset($options[$value]); - continue 2; - } - } - } - } + $check_value = (string)(is_array($label) && array_key_exists('value', $label) ? $label['value'] : $value); + if (isset($values[$check_value])) + { + unset($options[$value]); + continue; + } + $values[$check_value] = $label; + if (is_null($use_array_of_objects) && is_numeric($value) && (!is_array($label) || !isset($label['value']))) { $options = $backup_options; |