/** * Recursive helper for _getMergedArray. */ function &_getMergedKeywordResults(&$journal, &$keyword, $type, $publishedFrom, $publishedTo, $resultsPerKeyword, $resultCacheHours) { $mergedResults = null; if (isset($keyword['type'])) { $type = $keyword['type']; } foreach ($keyword['+'] as $phrase) { $results =& ArticleSearch::_getMergedPhraseResults($journal, $phrase, $type, $publishedFrom, $publishedTo, $resultsPerKeyword, $resultCacheHours); if ($mergedResults == null) { $mergedResults = $results; } else { foreach ($mergedResults as $articleId => $count) { if (isset($results[$articleId])) { $mergedResults[$articleId] += $results[$articleId]; } else { unset($mergedResults[$articleId]); } } } } if ($mergedResults == null) { $mergedResults = array(); } if (!empty($mergedResults) || empty($keyword['+'])) { foreach ($keyword[''] as $phrase) { $results =& ArticleSearch::_getMergedPhraseResults($journal, $phrase, $type, $publishedFrom, $publishedTo, $resultsPerKeyword, $resultCacheHours); foreach ($results as $articleId => $count) { if (isset($mergedResults[$articleId])) { $mergedResults[$articleId] += $count; } else { if (empty($keyword['+'])) { $mergedResults[$articleId] = $count; } } } } foreach ($keyword['-'] as $phrase) { $results =& ArticleSearch::_getMergedPhraseResults($journal, $phrase, $type, $publishedFrom, $publishedTo, $resultsPerKeyword, $resultCacheHours); foreach ($results as $articleId => $count) { if (isset($mergedResults[$articleId])) { unset($mergedResults[$articleId]); } } } } return $mergedResults; }