示例#1
0
 /**
  * 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;
 }