+ $found = true;
+ for ($i = 0 ; $i < count($searchtags) && $found; $i++) {
+ // Exclusive search, quit if tag found.
+ // Or, tag not found in the link, quit.
+ if (($searchtags[$i][0] == '-'
+ && $this->searchTagAndHashTag(substr($searchtags[$i], 1), $linktags, $link['description']))
+ || ($searchtags[$i][0] != '-')
+ && ! $this->searchTagAndHashTag($searchtags[$i], $linktags, $link['description'])
+ ) {
+ $found = false;
+ }
+ }
+
+ if ($found) {
+ $filtered[$key] = $link;
+ }
+ }
+ return $filtered;
+ }
+
+ /**
+ * Return only links without any tag.
+ *
+ * @param string $visibility return only all/private/public links.
+ *
+ * @return array filtered links.
+ */
+ public function filterUntagged($visibility)
+ {
+ $filtered = [];
+ foreach ($this->links as $key => $link) {
+ if ($visibility !== 'all') {
+ if (! $link['private'] && $visibility === 'private') {
+ continue;
+ } else if ($link['private'] && $visibility === 'public') {
+ continue;
+ }
+ }
+
+ if (empty(trim($link['tags']))) {
+ $filtered[$key] = $link;