Commit | Line | Data |
---|---|---|
3095cd65 SJ |
1 | #!/usr/bin/php5 |
2 | <?php | |
3 | // WARNING: this script takes a few weeks to be executed completly, thus run it into a screen. | |
4 | ||
5 | require_once 'connect.db.inc.php'; | |
6 | require_once '../../classes/phone.php'; | |
7 | require_once '../../classes/address.php'; | |
8 | ||
9 | $globals->debug = 0; // Do not store backtraces. | |
10 | ||
2493913b | 11 | echo "Formats non formated phones. (1/4)\n"; |
3095cd65 SJ |
12 | $it = XDB::rawIterator("SELECT search_tel AS search, display_tel AS display, comment, link_id, |
13 | tel_type AS type, link_type, tel_id AS id, pid, pub | |
14 | FROM profile_phones | |
15 | WHERE search_tel = '' OR search_tel IS NULL | |
16 | ORDER BY pid, link_id, tel_id"); | |
17 | while ($phone = new Phone($it->next())) { | |
18 | $phone->delete(); | |
19 | $phone->save(); | |
20 | } | |
21 | ||
2493913b | 22 | echo "Deletes duplicated phones. (2/4)\n"; |
3095cd65 SJ |
23 | $it = XDB::rawIterator("SELECT search_tel AS search, display_tel AS display, comment, link_id, |
24 | tel_type AS type, link_type, tel_id AS id, pid, pub | |
25 | FROM profile_phones | |
26 | WHERE link_type = 'user' | |
27 | ORDER BY pid, tel_id"); | |
28 | $phones = array(); | |
29 | $duplicates = array(); | |
30 | $phone = new Phone($it->next()); | |
31 | $pid = $phone->pid(); | |
32 | $phones[] = $phone; | |
33 | $count = 1; | |
34 | while ($phone = new Phone($it->next())) { | |
35 | if ($phone->pid() == $pid) { | |
36 | $phone[] = $phone; | |
37 | ++$count; | |
38 | } else { | |
39 | if ($count != 1) { | |
40 | for ($i = 0; $i < $count; ++$i) { | |
41 | for ($j = $i + 1; $j < $count; ++$j) { | |
42 | if ($phones[$i]->search() == $phones[$j]->search()) { | |
43 | $duplicates[$i] = true; | |
44 | } | |
45 | } | |
46 | } | |
47 | foreach ($duplicates as $key => $bool) { | |
48 | unset($phones[$key]); | |
49 | } | |
50 | if (count($phones) != $count) { | |
51 | Phone::deletePhones($pid, 'user'); | |
52 | $id = 0; | |
53 | foreach ($phones as $phone) { | |
54 | $phone->setId($id); | |
55 | $phone->save(); | |
56 | ++$id; | |
57 | } | |
58 | XDB::execute('UPDATE profile_merge_issues | |
59 | SET issues = REPLACE(issues, \'phone\', \'\') | |
60 | WHERE pid = {?}', $pid); | |
61 | } | |
62 | unset($duplicates); | |
63 | } | |
64 | unset($phones); | |
65 | $pid = $phone->pid(); | |
66 | $phones[] = $phone; | |
67 | $count = 1; | |
68 | } | |
69 | } | |
70 | ||
2493913b | 71 | echo "Tries to geocode addresses (due a bug in the previous release, all addresses must run once again). (3/4)\n"; |
3095cd65 SJ |
72 | $it = XDB::rawIterator('SELECT * |
73 | FROM profile_addresses | |
74 | ORDER BY pid, jobid, type, id'); | |
75 | $pid = 0; | |
76 | $jobid = 0; | |
2493913b | 77 | while ($address = new Address($it->next())) { |
3095cd65 SJ |
78 | $address->format(array(true, true)); |
79 | $address->delete(); | |
80 | $address->save(); | |
81 | if (!($pid == $address->pid && $jobid == $address->jobid)) { | |
82 | $pid = $address->pid; | |
83 | $jobid = $address->jobid; | |
84 | sleep(60); | |
85 | } | |
86 | } | |
87 | ||
2493913b | 88 | echo "Deletes duplicated addresses. (4/4)\n"; |
3095cd65 SJ |
89 | $it = XDB::rawIterator("SELECT * |
90 | FROM profile_addresses | |
91 | WHERE type = 'home' | |
92 | ORDER BY pid, id"); | |
93 | $addresses = array(); | |
94 | $duplicates = array(); | |
95 | $address = new Address($it->next()); | |
96 | $pid = $address->pid; | |
97 | $addresses[] = $address; | |
98 | $count = 1; | |
99 | while ($address = new Address($it->next())) { | |
100 | if ($address->pid == $pid) { | |
101 | $address[] = $address; | |
102 | ++$count; | |
103 | } else { | |
104 | if ($count != 1) { | |
105 | for ($i = 0; $i < $count; ++$i) { | |
106 | for ($j = $i + 1; $j < $count; ++$j) { | |
107 | if ($addresses[$i]->text == $addresses[$j]->text) { | |
108 | $duplicates[$i] = true; | |
109 | } | |
110 | } | |
111 | } | |
112 | foreach ($duplicates as $key => $bool) { | |
113 | unset($addresses[$key]); | |
114 | } | |
115 | if (count($addresses) != $count) { | |
116 | Address::deleteAddresses($pid, 'home'); | |
117 | $id = 0; | |
118 | foreach ($addresses as $address) { | |
119 | $address->setId($id); | |
120 | $address->save(); | |
121 | ++$id; | |
122 | } | |
123 | XDB::execute('UPDATE profile_merge_issues | |
124 | SET issues = REPLACE(issues, \'address\', \'\') | |
125 | WHERE pid = {?}', $pid); | |
126 | } | |
127 | unset($duplicates); | |
128 | } | |
129 | unset($addresses); | |
130 | $pid = $address->pid; | |
131 | $addresses[] = $address; | |
132 | $count = 1; | |
133 | } | |
134 | } | |
2493913b | 135 | echo "That's all folks!\n"; |
3095cd65 SJ |
136 | |
137 | /* vim:set et sw=4 sts=4 ts=4: */ | |
138 | ?> |