#!/usr/bin/php5 debug = 0; // Do not store backtraces. echo "Formats non formated phones.\n"; $it = XDB::rawIterator("SELECT search_tel AS search, display_tel AS display, comment, link_id, tel_type AS type, link_type, tel_id AS id, pid, pub FROM profile_phones WHERE search_tel = '' OR search_tel IS NULL ORDER BY pid, link_id, tel_id"); while ($phone = new Phone($it->next())) { $phone->delete(); $phone->save(); } echo "Deletes duplicated phones.\n"; $it = XDB::rawIterator("SELECT search_tel AS search, display_tel AS display, comment, link_id, tel_type AS type, link_type, tel_id AS id, pid, pub FROM profile_phones WHERE link_type = 'user' ORDER BY pid, tel_id"); $phones = array(); $duplicates = array(); $phone = new Phone($it->next()); $pid = $phone->pid(); $phones[] = $phone; $count = 1; while ($phone = new Phone($it->next())) { if ($phone->pid() == $pid) { $phone[] = $phone; ++$count; } else { if ($count != 1) { for ($i = 0; $i < $count; ++$i) { for ($j = $i + 1; $j < $count; ++$j) { if ($phones[$i]->search() == $phones[$j]->search()) { $duplicates[$i] = true; } } } foreach ($duplicates as $key => $bool) { unset($phones[$key]); } if (count($phones) != $count) { Phone::deletePhones($pid, 'user'); $id = 0; foreach ($phones as $phone) { $phone->setId($id); $phone->save(); ++$id; } XDB::execute('UPDATE profile_merge_issues SET issues = REPLACE(issues, \'phone\', \'\') WHERE pid = {?}', $pid); } unset($duplicates); } unset($phones); $pid = $phone->pid(); $phones[] = $phone; $count = 1; } } echo "Tries to geocode addresses (due a bug in the previous release, all addresses must run once again).\n"; $it = XDB::rawIterator('SELECT * FROM profile_addresses ORDER BY pid, jobid, type, id'); $pid = 0; $jobid = 0; while ($address = $it->next()) { $address->format(array(true, true)); $address->delete(); $address->save(); if (!($pid == $address->pid && $jobid == $address->jobid)) { $pid = $address->pid; $jobid = $address->jobid; sleep(60); } } echo "Deletes duplicated addresses.\n"; $it = XDB::rawIterator("SELECT * FROM profile_addresses WHERE type = 'home' ORDER BY pid, id"); $addresses = array(); $duplicates = array(); $address = new Address($it->next()); $pid = $address->pid; $addresses[] = $address; $count = 1; while ($address = new Address($it->next())) { if ($address->pid == $pid) { $address[] = $address; ++$count; } else { if ($count != 1) { for ($i = 0; $i < $count; ++$i) { for ($j = $i + 1; $j < $count; ++$j) { if ($addresses[$i]->text == $addresses[$j]->text) { $duplicates[$i] = true; } } } foreach ($duplicates as $key => $bool) { unset($addresses[$key]); } if (count($addresses) != $count) { Address::deleteAddresses($pid, 'home'); $id = 0; foreach ($addresses as $address) { $address->setId($id); $address->save(); ++$id; } XDB::execute('UPDATE profile_merge_issues SET issues = REPLACE(issues, \'address\', \'\') WHERE pid = {?}', $pid); } unset($duplicates); } unset($addresses); $pid = $address->pid; $addresses[] = $address; $count = 1; } } /* vim:set et sw=4 sts=4 ts=4: */ ?>