diff options
author | rvelices <rv-github@modusoptimus.com> | 2012-10-04 04:15:28 +0000 |
---|---|---|
committer | rvelices <rv-github@modusoptimus.com> | 2012-10-04 04:15:28 +0000 |
commit | cc558d869496f051c1b667d37e4dcfc474c007d1 (patch) | |
tree | d6447c2284e229c432139dd23aa46b422fe134f9 | |
parent | b90d2721e5f7f81ac821ab5075472fbbb0917c67 (diff) |
php optimizations:
- use faster [] operator instead of array_push
- if tags are grouped by letter, don't add level to tags, sort etc ...
git-svn-id: http://piwigo.org/svn/trunk@18455 68402e56-0260-453c-a942-63ccdbb3a9ee
-rw-r--r-- | include/functions_tag.inc.php | 17 | ||||
-rw-r--r-- | tags.php | 58 | ||||
-rw-r--r-- | themes/default/template/tags.tpl | 65 |
3 files changed, 69 insertions, 71 deletions
diff --git a/include/functions_tag.inc.php b/include/functions_tag.inc.php index f42fe88f7..74b27f8e2 100644 --- a/include/functions_tag.inc.php +++ b/include/functions_tag.inc.php @@ -64,12 +64,12 @@ SELECT * $tags = array(); while ($row = pwg_db_fetch_assoc($result)) { - $counter = @$tag_counters[ $row['id'] ]; + $counter = intval(@$tag_counters[ $row['id'] ]); if ( $counter ) { $row['counter'] = $counter; $row['name'] = trigger_event('render_tag_name', $row['name']); - array_push($tags, $row); + $tags[] = $row; } } return $tags; @@ -91,7 +91,7 @@ SELECT * while ($row = pwg_db_fetch_assoc($result)) { $row['name'] = trigger_event('render_tag_name', $row['name']); - array_push($tags, $row); + $tags[] = $row; } usort($tags, 'tag_alpha_compare'); @@ -138,20 +138,21 @@ function add_level_to_tags($tags) } // display sorted tags - foreach (array_keys($tags) as $k) + foreach ($tags as &$tag) { - $tags[$k]['level'] = 1; + $tag['level'] = 1; // based on threshold, determine current tag level for ($i = $conf['tags_levels'] - 1; $i >= 1; $i--) { - if ($tags[$k]['counter'] > $threshold_of_level[$i]) + if ($tag['counter'] > $threshold_of_level[$i]) { - $tags[$k]['level'] = $i + 1; + $tag['level'] = $i + 1; break; } } } + unset($tag); return $tags; } @@ -254,7 +255,7 @@ SELECT t.*, count(*) AS counter while($row = pwg_db_fetch_assoc($result)) { $row['name'] = trigger_event('render_tag_name', $row['name']); - array_push($tags, $row); + $tags[] = $row; } usort($tags, 'tag_alpha_compare'); return $tags; @@ -159,43 +159,41 @@ if ($page['display_mode'] == 'letters') { ); } } +else +{ + // +-----------------------------------------------------------------------+ + // | tag cloud construction | + // +-----------------------------------------------------------------------+ -// +-----------------------------------------------------------------------+ -// | tag cloud construction | -// +-----------------------------------------------------------------------+ - -// we want only the first most represented tags, so we sort them by counter -// and take the first tags -usort($tags, 'counter_compare'); -$tags = array_slice($tags, 0, $conf['full_tag_cloud_items_number']); + // we want only the first most represented tags, so we sort them by counter + // and take the first tags + usort($tags, 'counter_compare'); + $tags = array_slice($tags, 0, $conf['full_tag_cloud_items_number']); -// depending on its counter and the other tags counter, each tag has a level -$tags = add_level_to_tags($tags); + // depending on its counter and the other tags counter, each tag has a level + $tags = add_level_to_tags($tags); -// we want tags diplayed in alphabetic order -if ('letters' != $page['display_mode']) -{ + // we want tags diplayed in alphabetic order usort($tags, 'tag_alpha_compare'); -} -// display sorted tags -foreach ($tags as $tag) -{ - $template->append( - 'tags', - array_merge( - $tag, - array( - 'URL' => make_index_url( - array( - 'tags' => array($tag), - ) - ), + // display sorted tags + foreach ($tags as $tag) + { + $template->append( + 'tags', + array_merge( + $tag, + array( + 'URL' => make_index_url( + array( + 'tags' => array($tag), + ) + ), + ) ) - ) - ); + ); + } } - // include menubar $themeconf = $template->get_template_vars('themeconf'); if (!isset($themeconf['hide_menu_on']) OR !in_array('theTagsPage', $themeconf['hide_menu_on'])) diff --git a/themes/default/template/tags.tpl b/themes/default/template/tags.tpl index 2e47a3f83..c4327289a 100644 --- a/themes/default/template/tags.tpl +++ b/themes/default/template/tags.tpl @@ -19,40 +19,39 @@ {include file='infos_errors.tpl'} -{if isset($tags)} - {if $display_mode == 'cloud'} - <div id="fullTagCloud"> - {foreach from=$tags item=tag} - <span><a href="{$tag.URL}" class="tagLevel{$tag.level}" title="{$pwg->l10n_dec('%d photo', '%d photos', $tag.counter)}">{$tag.name}</a></span> - {/foreach} - </div> - {/if} - {if $display_mode == 'letters'} - <table> - <tr> - <td valign="top"> - {foreach from=$letters item=letter} - <fieldset class="tagLetter"> - <legend class="tagLetterLegend">{$letter.TITLE}</legend> - <table class="tagLetterContent"> - {foreach from=$letter.tags item=tag} - <tr class="tagLine"> - <td><a href="{$tag.URL}" title="{$tag.name}">{$tag.name}</a></td> - <td class="nbEntries">{$pwg->l10n_dec('%d photo', '%d photos', $tag.counter)}</td> - </tr> - {/foreach} - </table> - </fieldset> - {if isset($letter.CHANGE_COLUMN) } - </td> - <td valign="top"> - {/if} - {/foreach} - </td> - </tr> - </table> - {/if} +{if $display_mode == 'cloud' and isset($tags)} +<div id="fullTagCloud"> + {foreach from=$tags item=tag} + <span><a href="{$tag.URL}" class="tagLevel{$tag.level}" title="{$pwg->l10n_dec('%d photo', '%d photos', $tag.counter)}">{$tag.name}</a></span> + {/foreach} +</div> +{/if} + +{if $display_mode == 'letters' and isset($letters)} +<table> + <tr> + <td valign="top"> + {foreach from=$letters item=letter} +<fieldset class="tagLetter"> + <legend class="tagLetterLegend">{$letter.TITLE}</legend> + <table class="tagLetterContent"> + {foreach from=$letter.tags item=tag} + <tr class="tagLine"> + <td><a href="{$tag.URL}" title="{$tag.name}">{$tag.name}</a></td> + <td class="nbEntries">{$pwg->l10n_dec('%d photo', '%d photos', $tag.counter)}</td> + </tr> + {/foreach} + </table> +</fieldset> + {if isset($letter.CHANGE_COLUMN) } + </td> + <td valign="top"> + {/if} + {/foreach} + </td> + </tr> +</table> {/if} </div> <!-- content --> |