Merge remote branch 'origin/platal-1.0.1'
[platal.git] / upgrade / 1.0.1 / merge_issues_addresses.php
CommitLineData
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
5require_once 'connect.db.inc.php';
3095cd65
SJ
6require_once '../../classes/address.php';
7
8$globals->debug = 0; // Do not store backtraces.
9
74e1e725 10echo "Tries to geocode addresses (due a bug in the previous release, all addresses must run once again). (1/2)\n";
3095cd65
SJ
11$it = XDB::rawIterator('SELECT *
12 FROM profile_addresses
13 ORDER BY pid, jobid, type, id');
14$pid = 0;
15$jobid = 0;
2493913b 16while ($address = new Address($it->next())) {
3095cd65
SJ
17 $address->format(array(true, true));
18 $address->delete();
19 $address->save();
20 if (!($pid == $address->pid && $jobid == $address->jobid)) {
21 $pid = $address->pid;
22 $jobid = $address->jobid;
23 sleep(60);
24 }
25}
26
74e1e725 27echo "Deletes duplicated addresses. (2/2)\n";
3095cd65
SJ
28$it = XDB::rawIterator("SELECT *
29 FROM profile_addresses
30 WHERE type = 'home'
31 ORDER BY pid, id");
32$addresses = array();
33$duplicates = array();
34$address = new Address($it->next());
35$pid = $address->pid;
36$addresses[] = $address;
37$count = 1;
38while ($address = new Address($it->next())) {
39 if ($address->pid == $pid) {
40 $address[] = $address;
41 ++$count;
42 } else {
43 if ($count != 1) {
44 for ($i = 0; $i < $count; ++$i) {
45 for ($j = $i + 1; $j < $count; ++$j) {
46 if ($addresses[$i]->text == $addresses[$j]->text) {
47 $duplicates[$i] = true;
48 }
49 }
50 }
51 foreach ($duplicates as $key => $bool) {
52 unset($addresses[$key]);
53 }
54 if (count($addresses) != $count) {
55 Address::deleteAddresses($pid, 'home');
56 $id = 0;
57 foreach ($addresses as $address) {
58 $address->setId($id);
59 $address->save();
60 ++$id;
61 }
62 XDB::execute('UPDATE profile_merge_issues
63 SET issues = REPLACE(issues, \'address\', \'\')
64 WHERE pid = {?}', $pid);
65 }
66 unset($duplicates);
67 }
68 unset($addresses);
69 $pid = $address->pid;
70 $addresses[] = $address;
71 $count = 1;
72 }
73}
74e1e725 74
2493913b 75echo "That's all folks!\n";
3095cd65
SJ
76
77/* vim:set et sw=4 sts=4 ts=4: */
78?>