X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fprofile%2Faddresses.inc.php;h=a308fe609683ed70fc81414f153b92ea92cb5083;hb=0001ba7a34dc3b535407cb1b961781c3c69c0ccd;hp=1e518aadcaa21b3afa699f2e479b552018a1f82a;hpb=646a45825d19a33e2fcafe7ad5ddd773eea0df46;p=platal.git diff --git a/modules/profile/addresses.inc.php b/modules/profile/addresses.inc.php index 1e518aa..a308fe6 100644 --- a/modules/profile/addresses.inc.php +++ b/modules/profile/addresses.inc.php @@ -1,6 +1,6 @@ bool = new ProfileBool(); $this->pub = new ProfilePub(); - $this->tel = new ProfileTel(); } - private function cleanAddress(ProfilePage &$page, array &$address, &$success) + private function cleanAddress(ProfilePage &$page, $adrid, array &$address, &$success) { if (@$address['changed']) { $address['datemaj'] = time(); } $success = true; - foreach ($address['tel'] as $t=>&$tel) { - if (@$tel['removed'] || !trim($tel['tel'])) { - unset($address['tel'][$t]); - } else { - $tel['pub'] = $this->pub->value($page, 'pub', $tel['pub'], $s); - $tel['tel'] = $this->tel->value($page, 'tel', $tel['tel'], $s); - if (!$s) { - $tel['error'] = true; - $success = false; - } - } - unset($tel['removed']); + if (!isset($address['tel'])) { + $address['tel'] = array(); } + $profiletel = new ProfilePhones('address', $adrid); + $address['tel'] = $profiletel->value($page, 'tel', $address['tel'], $s); $address['checked'] = $this->bool->value($page, 'checked', $address['checked'], $s); $address['secondaire'] = $this->bool->value($page, 'secondaire', $address['secondaire'], $s); $address['mail'] = $this->bool->value($page, 'mail', $address['mail'], $s); @@ -94,7 +84,7 @@ class ProfileAddress extends ProfileGeoloc $ls = true; $this->geolocAddress($adr, $s); $ls = ($ls && $s); - $this->cleanAddress($page, $adr, $s); + $this->cleanAddress($page, $key, $adr, $s); $ls = ($ls && $s); if (!trim($adr['text'])) { unset($value[$key]); @@ -105,35 +95,14 @@ class ProfileAddress extends ProfileGeoloc return $value; } - 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) + private function saveAddress($pid, $adrid, array &$address) { - $flags = array(); - if ($address['secondaire']) { - $flags[] = 'res-secondaire'; - } - if ($address['mail']) { - $flags[] = 'courrier'; - } - if ($address['temporary']) { - $flags[] = 'temporaire'; - } - if ($address['current']) { - $flags[] = 'active'; - } - if ($address['checked']) { - $flags[] = 'coord-checked'; - } - $flags = implode(',', $flags); + $flags = new PlFlagSet(); + $flags->addFlag('res-secondaire', $address['secondaire']); + $flags->addFlag('courrier', $address['mail']); + $flags->addFlag('temporaire', $address['temporary']); + $flags->addFlag('active', $address['current']); + $flags->addFlag('coord-checked', $address['checked']); XDB::execute("INSERT INTO adresses (adr1, adr2, adr3, postcode, city, cityid, country, region, regiontxt, @@ -148,22 +117,21 @@ class ProfileAddress extends ProfileGeoloc $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']); - foreach ($address['tel'] as $telid=>&$tel) { - $this->saveTel($adrid, $telid, $tel); - } + $pid, $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 tels - WHERE uid = {?}", - S::i('uid')); + $page->pid()); + XDB::execute("DELETE FROM profile_phones + WHERE uid = {?} AND link_type = 'address'", + $page->pid()); foreach ($value as $adrid=>&$address) { - $this->saveAddress($adrid, $address); + $this->saveAddress($page->pid(), $adrid, $address); + $profiletel = new ProfilePhones('address', $adrid); + $profiletel->saveTels($page->pid(), 'tel', $address['tel']); } } } @@ -197,18 +165,18 @@ class ProfileAddresses extends ProfilePage INNER JOIN geoloc_pays AS gp ON(gp.a2 = a.country) WHERE uid = {?} AND NOT FIND_IN_SET('pro', statut) ORDER BY adrid", - S::i('uid')); + $this->pid()); if ($res->numRows() == 0) { $this->values['addresses'] = array(); } else { $this->values['addresses'] = $res->fetchAllAssoc(); } - $res = XDB::iterator("SELECT adrid, tel_type AS type, tel_pub AS pub, tel - FROM tels - WHERE uid = {?} - ORDER BY adrid", - S::i('uid')); + $res = XDB::iterator("SELECT link_id AS adrid, tel_type AS type, pub, display_tel AS tel, comment + FROM profile_phones + WHERE uid = {?} AND link_type = 'address' + ORDER BY link_id", + $this->pid()); $i = 0; $adrNb = count($this->values['addresses']); while ($tel = $res->next()) {