+
+ private function saveTel($adrid, $telid, array &$tel)
+ {
+ XDB::execute("INSERT INTO tels (uid, adrid, telid,
+ tel_type, tel_pub, tel)
+ VALUES ({?}, {?}, {?},
+ {?}, {?}, {?})",
+ S::i('uid'), $adrid, $telid,
+ $tel['type'], $tel['pub'], $tel['tel']);
+ }
+
+ 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)
+ 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']);
+ foreach ($address['tel'] as $telid=>&$tel) {
+ $this->saveTel($adrid, $telid, $tel);
+ }
+ }
+
+ public function save(ProfilePage &$page, $field, $value)
+ {
+ XDB::execute("DELETE FROM adresses
+ WHERE uid = {?}",
+ S::i('uid'));
+ XDB::execute("DELETE FROM tels
+ WHERE uid = {?}",
+ S::i('uid'));
+ foreach ($value as $adrid=>&$address) {
+ $this->saveAddress($adrid, $address);
+ }
+ }