| @@ 192-230 (lines=39) @@ | ||
| 189 | * |
|
| 190 | * @return string |
|
| 191 | */ |
|
| 192 | private static function getInitialSql($field, $letter) { |
|
| 193 | switch (WT_LOCALE) { |
|
| 194 | case 'cs': |
|
| 195 | switch ($letter) { |
|
| 196 | case 'C': return $field . " LIKE 'C%' COLLATE " . I18N::collation() . " AND " . $field . " NOT LIKE 'CH%' COLLATE " . I18N::collation(); |
|
| 197 | } |
|
| 198 | break; |
|
| 199 | case 'da': |
|
| 200 | case 'nb': |
|
| 201 | case 'nn': |
|
| 202 | switch ($letter) { |
|
| 203 | // AA gets listed under Å |
|
| 204 | case 'A': return $field . " LIKE 'A%' COLLATE " . I18N::collation() . " AND " . $field . " NOT LIKE 'AA%' COLLATE " . I18N::collation(); |
|
| 205 | case 'Å': return "(" . $field . " LIKE 'Å%' COLLATE " . I18N::collation() . " OR " . $field . " LIKE 'AA%' COLLATE " . I18N::collation() . ")"; |
|
| 206 | } |
|
| 207 | break; |
|
| 208 | case 'hu': |
|
| 209 | switch ($letter) { |
|
| 210 | case 'C': return $field . " LIKE 'C%' COLLATE " . I18N::collation() . " AND " . $field . " NOT LIKE 'CS%' COLLATE " . I18N::collation(); |
|
| 211 | case 'D': return $field . " LIKE 'D%' COLLATE " . I18N::collation() . " AND " . $field . " NOT LIKE 'DZ%' COLLATE " . I18N::collation(); |
|
| 212 | case 'DZ': return $field . " LIKE 'DZ%' COLLATE " . I18N::collation() . " AND " . $field . " NOT LIKE 'DZS%' COLLATE " . I18N::collation(); |
|
| 213 | case 'G': return $field . " LIKE 'G%' COLLATE " . I18N::collation() . " AND " . $field . " NOT LIKE 'GY%' COLLATE " . I18N::collation(); |
|
| 214 | case 'L': return $field . " LIKE 'L%' COLLATE " . I18N::collation() . " AND " . $field . " NOT LIKE 'LY%' COLLATE " . I18N::collation(); |
|
| 215 | case 'N': return $field . " LIKE 'N%' COLLATE " . I18N::collation() . " AND " . $field . " NOT LIKE 'NY%' COLLATE " . I18N::collation(); |
|
| 216 | case 'S': return $field . " LIKE 'S%' COLLATE " . I18N::collation() . " AND " . $field . " NOT LIKE 'SZ%' COLLATE " . I18N::collation(); |
|
| 217 | case 'T': return $field . " LIKE 'T%' COLLATE " . I18N::collation() . " AND " . $field . " NOT LIKE 'TY%' COLLATE " . I18N::collation(); |
|
| 218 | case 'Z': return $field . " LIKE 'Z%' COLLATE " . I18N::collation() . " AND " . $field . " NOT LIKE 'ZS%' COLLATE " . I18N::collation(); |
|
| 219 | } |
|
| 220 | break; |
|
| 221 | case 'nl': |
|
| 222 | switch ($letter) { |
|
| 223 | case 'I': return $field . " LIKE 'I%' COLLATE " . I18N::collation() . " AND " . $field . " NOT LIKE 'IJ%' COLLATE " . I18N::collation(); |
|
| 224 | } |
|
| 225 | break; |
|
| 226 | } |
|
| 227 | ||
| 228 | // Easy cases: the MySQL collation rules take care of it |
|
| 229 | return "$field LIKE CONCAT('@'," . Database::quote($letter) . ",'%') COLLATE " . I18N::collation() . " ESCAPE '@'"; |
|
| 230 | } |
|
| 231 | ||
| 232 | /** |
|
| 233 | * Get a list of initial surname letters for indilist.php and famlist.php |
|
| @@ 193-231 (lines=39) @@ | ||
| 190 | * |
|
| 191 | * @return string |
|
| 192 | */ |
|
| 193 | private function getInitialSql($field, $letter) { |
|
| 194 | switch (WT_LOCALE) { |
|
| 195 | case 'cs': |
|
| 196 | switch ($letter) { |
|
| 197 | case 'C': return $field . " LIKE 'C%' COLLATE " . I18N::collation() . " AND " . $field . " NOT LIKE 'CH%' COLLATE " . I18N::collation(); |
|
| 198 | } |
|
| 199 | break; |
|
| 200 | case 'da': |
|
| 201 | case 'nb': |
|
| 202 | case 'nn': |
|
| 203 | switch ($letter) { |
|
| 204 | // AA gets listed under Å |
|
| 205 | case 'A': return $field . " LIKE 'A%' COLLATE " . I18N::collation() . " AND " . $field . " NOT LIKE 'AA%' COLLATE " . I18N::collation(); |
|
| 206 | case 'Å': return "(" . $field . " LIKE 'Å%' COLLATE " . I18N::collation() . " OR " . $field . " LIKE 'AA%' COLLATE " . I18N::collation() . ")"; |
|
| 207 | } |
|
| 208 | break; |
|
| 209 | case 'hu': |
|
| 210 | switch ($letter) { |
|
| 211 | case 'C': return $field . " LIKE 'C%' COLLATE " . I18N::collation() . " AND " . $field . " NOT LIKE 'CS%' COLLATE " . I18N::collation(); |
|
| 212 | case 'D': return $field . " LIKE 'D%' COLLATE " . I18N::collation() . " AND " . $field . " NOT LIKE 'DZ%' COLLATE " . I18N::collation(); |
|
| 213 | case 'DZ': return $field . " LIKE 'DZ%' COLLATE " . I18N::collation() . " AND " . $field . " NOT LIKE 'DZS%' COLLATE " . I18N::collation(); |
|
| 214 | case 'G': return $field . " LIKE 'G%' COLLATE " . I18N::collation() . " AND " . $field . " NOT LIKE 'GY%' COLLATE " . I18N::collation(); |
|
| 215 | case 'L': return $field . " LIKE 'L%' COLLATE " . I18N::collation() . " AND " . $field . " NOT LIKE 'LY%' COLLATE " . I18N::collation(); |
|
| 216 | case 'N': return $field . " LIKE 'N%' COLLATE " . I18N::collation() . " AND " . $field . " NOT LIKE 'NY%' COLLATE " . I18N::collation(); |
|
| 217 | case 'S': return $field . " LIKE 'S%' COLLATE " . I18N::collation() . " AND " . $field . " NOT LIKE 'SZ%' COLLATE " . I18N::collation(); |
|
| 218 | case 'T': return $field . " LIKE 'T%' COLLATE " . I18N::collation() . " AND " . $field . " NOT LIKE 'TY%' COLLATE " . I18N::collation(); |
|
| 219 | case 'Z': return $field . " LIKE 'Z%' COLLATE " . I18N::collation() . " AND " . $field . " NOT LIKE 'ZS%' COLLATE " . I18N::collation(); |
|
| 220 | } |
|
| 221 | break; |
|
| 222 | case 'nl': |
|
| 223 | switch ($letter) { |
|
| 224 | case 'I': return $field . " LIKE 'I%' COLLATE " . I18N::collation() . " AND " . $field . " NOT LIKE 'IJ%' COLLATE " . I18N::collation(); |
|
| 225 | } |
|
| 226 | break; |
|
| 227 | } |
|
| 228 | ||
| 229 | // Easy cases: the MySQL collation rules take care of it |
|
| 230 | return "$field LIKE CONCAT('@'," . Database::quote($letter) . ",'%') COLLATE " . I18N::collation() . " ESCAPE '@'"; |
|
| 231 | } |
|
| 232 | ||
| 233 | /** |
|
| 234 | * Get a list of initial surname letters for indilist.php and famlist.php |
|