Commit | Line | Data |
---|---|---|
2e649a44 SJ |
1 | #!/usr/bin/php5 |
2 | <?php | |
c8d0a532 SJ |
3 | require_once 'connect.db.inc.php'; |
4 | require_once '../../include/name.func.inc.php'; | |
2e649a44 SJ |
5 | |
6 | // Returns the lower-cased name; if proper capitalization rule was not known, | |
7 | // warns the user, and returns the initial name. | |
8 | function capitalize_name_checked($name) | |
9 | { | |
c8d0a532 SJ |
10 | if ($name == '') { |
11 | return ''; | |
12 | } | |
13 | ||
2e649a44 SJ |
14 | $capitalized = capitalize_name($name); |
15 | if (!$capitalized) { | |
c8d0a532 | 16 | echo " - WARNING: Unable to capitalize '$name'.\n"; |
2e649a44 SJ |
17 | return $name; |
18 | } | |
19 | if (mb_strtolower($name, 'UTF-8') != mb_strtolower($capitalized, 'UTF-8')) { | |
c8d0a532 | 20 | echo " - WARNING: Capitalization of '$name' is unexpected: '$capitalized'\n"; |
2e649a44 SJ |
21 | return $name; |
22 | } | |
23 | ||
24 | return $capitalized; | |
25 | } | |
26 | ||
27 | // Returns true iff the @p name looks like it should be properly recapitalized. | |
28 | function needs_conversion($name) | |
29 | { | |
30 | if (strlen($name) == 0) { | |
31 | return false; | |
32 | } | |
33 | if ($name == mb_strtoupper($name, 'UTF-8')) { | |
34 | return true; | |
35 | } | |
36 | ||
37 | $name_length = mb_strlen($name, 'UTF-8'); | |
38 | $name_capitals = preg_replace('/\P{Lu}/u', '', $name); | |
39 | return (mb_strlen($name_capitals, 'UTF-8') > 0.4 * $name_length); | |
40 | } | |
41 | ||
42 | // Retrieves all the names to convert. | |
43 | $conversions = 0; | |
c8d0a532 SJ |
44 | $names = XDB::iterator('SELECT pid, lastname_initial, lastname_main, lastname_marital, lastname_ordinary, |
45 | firstname_initial, firstname_main, firstname_ordinary, pseudonym | |
46 | FROM profile_public_names'); | |
2e649a44 SJ |
47 | $name_list = array('lastname_initial', 'lastname_main', 'lastname_marital', 'lastname_ordinary', |
48 | 'firstname_initial', 'firstname_main', 'firstname_ordinary', 'pseudonym'); | |
c8d0a532 | 49 | $total = $names->total(); |
2e649a44 SJ |
50 | while ($item = $names->next()) { |
51 | foreach ($name_list as $type) { | |
c8d0a532 | 52 | $item[$type] = capitalize_name_checked($item[$type]); |
2e649a44 SJ |
53 | } |
54 | ||
55 | XDB::execute('UPDATE profile_public_names | |
56 | SET lastname_initial = {?}, lastname_main = {?}, lastname_marital = {?}, lastname_ordinary = {?}, | |
57 | firstname_initial = {?}, firstname_main = {?}, firstname_ordinary = {?}, pseudonym = {?} | |
58 | WHERE pid = {?}', | |
59 | $item['lastname_initial'], $item['lastname_main'], $item['lastname_marital'], $item['lastname_ordinary'], | |
60 | $item['firstname_initial'], $item['firstname_main'], $item['firstname_ordinary'], $item['pseudonym'], | |
61 | $item['pid']); | |
c8d0a532 | 62 | $profile = Profile::get($item['pid']); |
2e649a44 SJ |
63 | update_display_names($profile, $item); |
64 | ||
c8d0a532 | 65 | printf("\r%u / %u", $conversions, $total); |
2e649a44 SJ |
66 | $conversions++; |
67 | unset($item, $profile); | |
68 | } | |
69 | ||
c8d0a532 SJ |
70 | printf("\r%u / %u", $conversions, $total); |
71 | echo "\n$conversions names from profiles properly recapitalized.\n"; | |
2e649a44 SJ |
72 | |
73 | $conversions = 0; | |
c8d0a532 SJ |
74 | $names = XDB::iterator('SELECT uid, firstname, lastname |
75 | FROM accounts | |
76 | WHERE NOT EXISTS (SELECT 1 | |
2e649a44 SJ |
77 | FROM account_profiles |
78 | WHERE account_profiles.uid = accounts.uid)'); | |
79 | ||
c8d0a532 | 80 | $total = $names->total(); |
2e649a44 SJ |
81 | while ($item = $names->next()) { |
82 | $lastname = capitalize_name_checked($item['lastname']); | |
83 | $firstname = capitalize_name_checked($item['firstname']); | |
84 | ||
85 | $full_name = build_full_name($firstname, $lastname); | |
86 | $directory_name = build_directory_name($firstname, $lastname); | |
87 | $sort_name = build_sort_name($firstname, $lastname); | |
88 | ||
89 | XDB::execute('UPDATE accounts | |
90 | SET firstname = {?}, lastname = {?}, full_name = {?}, directory_name = {?}, sort_name = {?} | |
91 | WHERE uid = {?}', | |
c8d0a532 | 92 | $firstname, $lastname, $full_name, $directory_name, $sort_name, $item['uid']); |
2e649a44 | 93 | |
c8d0a532 | 94 | printf("\r%u / %u", $conversions, $total); |
2e649a44 SJ |
95 | $conversions++; |
96 | unset($item); | |
97 | } | |
c8d0a532 | 98 | printf("\r%u / %u", $conversions, $total); |
2e649a44 | 99 | |
c8d0a532 | 100 | echo "\n$conversions names from accounts properly recapitalized.\n"; |
2e649a44 SJ |
101 | |
102 | // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: | |
103 | ?> |