$whole_word = $get_option('whole_word') ? '\\b' : ''; $case_sensitive = $get_option('case_sensitive') ? '' : 'i'; if ($get_option('perfect_match')) { $regex = '~' . $whole_word . trim('^' . preg_quote($initial_search, '~') . '$') . $whole_word . '~' . $case_sensitive . 'u'; if ($request->parameters[2] == 'entities') { $entities = ShowResults::searchEntities($source_strings, $regex); $source_strings = array_intersect_key($source_strings, array_flip($entities)); } else { $source_strings = preg_grep($regex, $source_strings); $entities = array_keys($source_strings); } } else { foreach (Utils::uniqueWords($initial_search) as $word) { $regex = '~' . $whole_word . preg_quote($word, '~') . $whole_word . '~' . $case_sensitive . 'u'; if ($request->parameters[2] == 'entities') { $entities = ShowResults::searchEntities($source_strings, $regex); $source_strings = array_intersect_key($source_strings, array_flip($entities)); } else { $source_strings = preg_grep($regex, $source_strings); $entities = array_keys($source_strings); } } } // We have our list of filtered source strings, get corresponding target locale strings $target_strings = array_intersect_key(Utils::getRepoStrings($request->parameters[5], $request->parameters[3]), array_flip($entities)); // We sort arrays by key before array_splice() to keep matching keys ksort($source_strings); ksort($target_strings); // Limit results to 200 array_splice($source_strings, 200); array_splice($target_strings, 200);
// We loop through all repositories searched and merge results foreach ($repositories as $repository) { $source_strings = Utils::getRepoStrings($request->parameters[4], $repository); if ($search->isPerfectMatch()) { if ($request->parameters[2] == 'entities') { $entities = ShowResults::searchEntities($source_strings, $search->getRegex()); $source_strings = array_intersect_key($source_strings, array_flip($entities)); } else { $source_strings = preg_grep($search->getRegex(), $source_strings); $entities = array_keys($source_strings); } } else { foreach (Utils::uniqueWords($initial_search) as $word) { $search->setRegexSearchTerms($word); if ($request->parameters[2] == 'entities') { $entities = ShowResults::searchEntities($source_strings, $search->getRegex()); $source_strings = array_intersect_key($source_strings, array_flip($entities)); } else { $source_strings = preg_grep($search->getRegex(), $source_strings); $entities = array_keys($source_strings); } } } // We have our list of filtered source strings, get corresponding target locale strings $target_strings = array_intersect_key(Utils::getRepoStrings($request->parameters[5], $repository), array_flip($entities)); $source_strings_merged = array_merge($source_strings, $source_strings_merged); $target_strings_merged = array_merge($target_strings, $target_strings_merged); $entities_merged = array_merge($entities, $entities_merged); } // We sort arrays by key before array_splice() to keep matching keys ksort($source_strings_merged);
<?php namespace Transvision; // RTL support $direction1 = RTLSupport::getDirection($source_locale); $direction2 = RTLSupport::getDirection($locale); if ($url['path'] == '3locales') { $direction3 = RTLSupport::getDirection($locale2); $extra_column_header = "<th>{$locale2}</th>"; } else { $extra_column_header = ''; } $entities = ShowResults::searchEntities($tmx_source, $search->getRegex()); // Display a search hint for the closest string we have if we have no search results if (count($entities) == 0) { $merged_strings = []; $best_matches = Strings::getSimilar($initial_search, array_keys($tmx_source), 3); include VIEWS . 'results_similar.php'; return; }
<?php namespace Transvision; // rtl support $direction1 = RTLSupport::getDirection($source_locale); $direction2 = RTLSupport::getDirection($locale); if ($url['path'] == '3locales') { $direction3 = RTLSupport::getDirection($locale2); $extra_column_header = "<th>{$locale2}</th>"; } else { $extra_column_header = ''; } $entities = ShowResults::searchEntities($tmx_source, $main_regex); // Display a search hint for the closest string we have if we have no search results if (count($entities) == 0) { $merged_strings = []; $best_matches = Strings::getSimilar($initial_search, array_keys($tmx_source), 3); include VIEWS . 'results_similar.php'; return; }