/** * Generates a unique hash for identification purposes. * * @param string $source_path * Source path of the redirect. * @param array $source_query * Source query as an array. * @param string $language * Redirect language. * * @return string * Base 64 hash. */ public static function generateHash($source_path, array $source_query, $language) { $hash = array('source' => Unicode::strtolower($source_path), 'language' => $language); if (!empty($source_query)) { $hash['source_query'] = $source_query; } redirect_sort_recursive($hash, 'ksort'); return Crypt::hashBase64(serialize($hash)); }
/** * Test redirect_sort_recursive(). */ public function testSortRecursive() { $test_cases = array(array('input' => array('b' => 'aa', 'c' => array('c2' => 'aa', 'c1' => 'aa'), 'a' => 'aa'), 'expected' => array('a' => 'aa', 'b' => 'aa', 'c' => array('c1' => 'aa', 'c2' => 'aa')), 'callback' => 'ksort')); foreach ($test_cases as $index => $test_case) { $output = $test_case['input']; redirect_sort_recursive($output, $test_case['callback']); $this->assertIdentical($output, $test_case['expected']); } }