// Remove private tags if the user is not logged in.
if (! $this->_loggedIn) {
- $link['tags'] = preg_replace('/(^| )\.[^($| )]+/', '', $link['tags']);
+ $link['tags'] = preg_replace('/(^|\s+)\.[^($|\s)]+\s*/', ' ', $link['tags']);
}
// Do not use the redirector for internal links (Shaarli note URL starting with a '?').
$searchterm = !empty($filterRequest['searchterm']) ? escape($filterRequest['searchterm']) : '';
// Search tags + fullsearch.
- if (empty($type) && ! empty($searchtags) && ! empty($searchterm)) {
+ if (! empty($searchtags) && ! empty($searchterm)) {
$type = LinkFilter::$FILTER_TAG | LinkFilter::$FILTER_TEXT;
$request = array($searchtags, $searchterm);
}
public function allTags()
{
$tags = array();
+ $caseMapping = array();
foreach ($this->_links as $link) {
- foreach (explode(' ', $link['tags']) as $tag) {
- if (!empty($tag)) {
- $tags[$tag] = (empty($tags[$tag]) ? 1 : $tags[$tag] + 1);
+ foreach (preg_split('/\s+/', $link['tags'], 0, PREG_SPLIT_NO_EMPTY) as $tag) {
+ if (empty($tag)) {
+ continue;
}
+ // The first case found will be displayed.
+ if (!isset($caseMapping[strtolower($tag)])) {
+ $caseMapping[strtolower($tag)] = $tag;
+ $tags[$caseMapping[strtolower($tag)]] = 0;
+ }
+ $tags[$caseMapping[strtolower($tag)]]++;
}
}
// Sort tags by usage (most used tag first)