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
This commit is contained in:
rvelices 2012-10-04 04:15:28 +00:00
commit cc558d8694
3 changed files with 69 additions and 71 deletions

View file

@ -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;

View file

@ -159,28 +159,26 @@ if ($page['display_mode'] == 'letters') {
);
}
}
// +-----------------------------------------------------------------------+
// | 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']);
// 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'])
else
{
// +-----------------------------------------------------------------------+
// | 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']);
// 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
usort($tags, 'tag_alpha_compare');
}
// display sorted tags
foreach ($tags as $tag)
{
// display sorted tags
foreach ($tags as $tag)
{
$template->append(
'tags',
array_merge(
@ -194,8 +192,8 @@ foreach ($tags as $tag)
)
)
);
}
}
// include menubar
$themeconf = $template->get_template_vars('themeconf');
if (!isset($themeconf['hide_menu_on']) OR !in_array('theTagsPage', $themeconf['hide_menu_on']))

View file

@ -19,21 +19,21 @@
{include file='infos_errors.tpl'}
{if isset($tags)}
{if $display_mode == 'cloud'}
<div id="fullTagCloud">
{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}
</div>
{/if}
{if $display_mode == 'letters'}
<table>
{if $display_mode == 'letters' and isset($letters)}
<table>
<tr>
<td valign="top">
{foreach from=$letters item=letter}
<fieldset class="tagLetter">
<fieldset class="tagLetter">
<legend class="tagLetterLegend">{$letter.TITLE}</legend>
<table class="tagLetterContent">
{foreach from=$letter.tags item=tag}
@ -43,7 +43,7 @@
</tr>
{/foreach}
</table>
</fieldset>
</fieldset>
{if isset($letter.CHANGE_COLUMN) }
</td>
<td valign="top">
@ -51,8 +51,7 @@
{/foreach}
</td>
</tr>
</table>
{/if}
</table>
{/if}
</div> <!-- content -->