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