+
+ private function saveTel($adrid, $telid, array &$tel)
+ {
+ XDB::execute("INSERT INTO profile_phones (uid, link_type, link_id, tel_id, tel_type,
+ search_tel, display_tel, pub)
+ VALUES ({?}, 'address', {?}, {?}, {?},
+ {?}, {?}, {?})",
+ S::i('uid'), $adrid, $telid, $tel['type'],
+ format_phone_number($tel['tel']), $tel['tel'], $tel['pub']);
+ }
+
+ private function saveAddress($adrid, array &$address)
+ {
+ $flags = new PlFlagSet();
+ if ($address['secondaire']) {
+ $flags->addFlag('res-secondaire');
+ }
+ if ($address['mail']) {
+ $flags->addFlag('courrier');
+ }
+ if ($address['temporary']) {
+ $flags->addFlag('temporaire');
+ }
+ if ($address['current']) {
+ $flags->addFlag('active');
+ }
+ if ($address['checked']) {
+ $flags->addFlag('coord-checked');
+ }
+ XDB::execute("INSERT INTO adresses (adr1, adr2, adr3,
+ postcode, city, cityid,
+ country, region, regiontxt,
+ pub, datemaj, statut,
+ uid, adrid, glat, glng, comment)
+ VALUES ({?}, {?}, {?},
+ {?}, {?}, {?},
+ {?}, {?}, {?},
+ {?}, FROM_UNIXTIME({?}), {?},
+ {?}, {?}, {?}, {?}, {?})",
+ $address['adr1'], $address['adr2'], $address['adr3'],
+ $address['postcode'], $address['city'], $address['cityid'],
+ $address['country'], $address['region'], $address['regiontxt'],
+ $address['pub'], $address['datemaj'], $flags,
+ S::i('uid'), $adrid, $address['precise_lat'], $address['precise_lon'], $address['comment']);
+ }
+
+ public function save(ProfilePage &$page, $field, $value)
+ {
+ XDB::execute("DELETE FROM adresses
+ WHERE uid = {?}",
+ S::i('uid'));
+ XDB::execute("DELETE FROM profile_phones
+ WHERE uid = {?} AND link_type = 'address'",
+ S::i('uid'));
+ foreach ($value as $adrid=>&$address) {
+ $this->saveAddress($adrid, $address);
+ $profiletel = new ProfilePhones('address', $adrid);
+ $profiletel->saveTels('tel', $address['tel']);
+ }
+ }