public function filterSearch($filterRequest = array(), $casesensitive = false, $visibility = 'all')
{
// Filter link database according to parameters.
- $searchtags = !empty($filterRequest['searchtags']) ? escape($filterRequest['searchtags']) : '';
- $searchterm = !empty($filterRequest['searchterm']) ? escape($filterRequest['searchterm']) : '';
+ $searchtags = isset($filterRequest['searchtags']) ? escape($filterRequest['searchtags']) : '';
+ $searchterm = isset($filterRequest['searchterm']) ? escape($filterRequest['searchterm']) : '';
- // Search tags + fullsearch.
- if (! empty($searchtags) && ! empty($searchterm)) {
- $type = LinkFilter::$FILTER_TAG | LinkFilter::$FILTER_TEXT;
- $request = array($searchtags, $searchterm);
- }
- // Search by tags.
- elseif (! empty($searchtags)) {
- $type = LinkFilter::$FILTER_TAG;
- $request = $searchtags;
- }
- // Fulltext search.
- elseif (! empty($searchterm)) {
- $type = LinkFilter::$FILTER_TEXT;
- $request = $searchterm;
- }
- // Otherwise, display without filtering.
- else {
- $type = '';
- $request = '';
- }
+ // Search tags + fullsearch - blank string parameter will return all links.
+ $type = LinkFilter::$FILTER_TAG | LinkFilter::$FILTER_TEXT;
+ $request = [$searchtags, $searchterm];
$linkFilter = new LinkFilter($this);
return $linkFilter->filter($type, $request, $casesensitive, $visibility);
}
/**
- * Returns the list of all tags
- * Output: associative array key=tags, value=0
+ * Returns the list tags appearing in the links with the given tags
+ * @param $filteringTags: tags selecting the links to consider
+ * @param $visibility: process only all/private/public links
+ * @return: a tag=>linksCount array
*/
- public function allTags()
+ public function linksCountPerTag($filteringTags = [], $visibility = 'all')
{
+ $links = empty($filteringTags) ? $this->links : $this->filterSearch(['searchtags' => $filteringTags], false, $visibility);
$tags = array();
$caseMapping = array();
- foreach ($this->links as $link) {
+ foreach ($links as $link) {
foreach (preg_split('/\s+/', $link['tags'], 0, PREG_SPLIT_NO_EMPTY) as $tag) {
if (empty($tag)) {
continue;