ac0c495649e30ab1d47b38cf62c2636c5ae59f60
3 // WARNING: this script takes a few minutes to be executed completly, thus run it into a screen.
5 require_once 'connect.db.inc.php';
6 require_once '../../classes/phone.php';
7 require_once '../../classes/address.php';
9 $globals->debug
= 0; // Do not store backtraces.
11 print "Deletes duplicated addresses. (1/3)\n";
12 $pids = XDB
::rawFetchColumn("SELECT DISTINCT(pid)
13 FROM profile_addresses AS a1
14 WHERE type = 'home' AND EXISTS (SELECT *
15 FROM profile_addresses AS a2
16 WHERE a2.type = 'home' AND a2.pid = a1.pid AND a2.id != a1.id)
18 $total = count($pids);
23 $rawAddresses = array();
24 $duplicates = array();
25 foreach ($pids as $pid) {
27 $it = Address
::iterate(array($pid), array(Address
::LINK_PROFILE
), array(0));
28 while ($item = $it->next()) {
30 $rawAddresses[] = preg_replace('/[^a-zA-Z0-9]/', '', replace_accent($item->text
));
33 for ($i = 0; $i < $count; ++
$i) {
34 for ($j = $i +
1; $j < $count; ++
$j) {
35 if ($rawAddresses[$i] == $rawAddresses[$j]) {
36 $duplicates[$i] = true
;
40 foreach ($duplicates as $key => $bool) {
41 unset($addresses[$key]);
43 if (count($addresses) != $count) {
44 $deleted +
= ($count - count($addresses));
45 Address
::deleteAddresses($pid, 'home');
47 foreach ($addresses as $address) {
52 XDB
::execute('UPDATE IGNORE profile_merge_issues
53 SET issues = REPLACE(issues, \'address\', \'\')
54 WHERE pid = {?}', $pid);
64 printf("\r%u / %u", $done, $total);
67 printf("\r%u / %u", $done, $total);
68 print "\n$deleted addresses deleted.\n\n";
70 print "Formats non formated phones. (2/3)\n";
71 $it = XDB
::rawIterator("SELECT search_tel AS search, display_tel AS display, comment, link_id,
72 tel_type AS type, link_type, tel_id AS id, pid, pub
74 WHERE search_tel = '' OR search_tel IS NULL
75 ORDER BY pid, link_id, tel_id");
76 $total = $it->total();
79 while ($item = $it->next()) {
80 $phone = new Phone($item);
88 printf("\r%u / %u", $i, $total);
91 printf("\r%u / %u", $i, $total);
92 print "\nFormating done.\n\n";
94 print "Deletes duplicated phones. (3/3)\n";
95 $pids = XDB
::rawFetchColumn("SELECT DISTINCT(pid)
96 FROM profile_phones AS p1
97 WHERE link_type = 'user' AND EXISTS (SELECT *
98 FROM profile_phones AS p2
99 WHERE p2.link_type = 'user' AND p2.pid = p1.pid AND p2.tel_id != p1.tel_id)
101 $total = count($pids);
106 $duplicates = array();
107 foreach ($pids as $pid) {
109 Phone
::iterate(array($pid), array(Phone
::LINK_PROFILE
), array(0));
110 while ($item = $it->next()) {
114 for ($i = 0; $i < $count; ++
$i) {
115 for ($j = $i +
1; $j < $count; ++
$j) {
116 if ($phones[$i]->search() == $phones[$j]->search()) {
117 $duplicates[$i] = true
;
121 foreach ($duplicates as $key => $bool) {
122 unset($phones[$key]);
124 if (count($phones) != $count) {
125 $deleted +
= ($count - count($phones));
126 Phone
::deletePhones($pid, 'user');
128 foreach ($phones as $phone) {
133 XDB
::execute('UPDATE IGNORE profile_merge_issues
134 SET issues = REPLACE(issues, \'phone\', \'\')
135 WHERE pid = {?}', $pid);
144 printf("\r%u / %u", $done, $total);
147 printf("\r%u / %u", $done, $total);
148 print "\n$deleted phones deleted.\n\n";
150 print "That's all folks!\n";
152 /* vim:set et sw=4 sts=4 ts=4: */