X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fprofile%2Faddresses.inc.php;h=27c2362cfa3b9fadc2b422b7332caf2330945a02;hb=10a574ea3b9a39b61ca7280278be7fe2b84aa3d0;hp=34e36afba9f88c08e5908cbe47add7235510ebba;hpb=7568a515d7e3c4c992dd98b784165aa36b575ff9;p=platal.git diff --git a/modules/profile/addresses.inc.php b/modules/profile/addresses.inc.php index 34e36af..27c2362 100644 --- a/modules/profile/addresses.inc.php +++ b/modules/profile/addresses.inc.php @@ -1,6 +1,6 @@ values['addresses']; - $init = true; - } - foreach ($value as $key=>&$adr) { - if (@$adr['removed']) { - unset($value[$key]); + $it = Address::iterate(array($page->pid()), array(Address::LINK_PROFILE), array(0)); + while ($address = $it->next()) { + $addresses[] = $address->toFormArray(); } - } - $success = true; - foreach ($value as $key=>&$adr) { - $this->geolocAddress($adr, $s); - if (!$init) { - $success = $success && $s; + if (count($addresses) == 0) { + $address = new Address(); + $addresses[] = $address->toFormArray(); } + return $addresses; } - return $value; - } -} -class ProfileAddresses extends ProfilePage -{ - protected $pg_template = 'profile/adresses.tpl'; - - public function __construct(PlWizard &$wiz) - { - parent::__construct($wiz); - $this->settings['addresses'] = new ProfileAddress(); + return Address::formatFormArray($value, $success); } - protected function fetchData() + public function save(ProfilePage &$page, $field, $value) { - if (count($this->orig) > 0) { - $this->values = $this->orig; - return; - } - // Build the addresses tree - $res = XDB::query("SELECT a.adrid AS id, a.adr1, a.adr2, a.adr3, - a.postcode, a.city, a.cityid, a.region, a.regiontxt, - a.fax, a.glat, a.glng, a.datemaj, a.pub, - a.country, gp.pays AS countrytxt, gp.display, - FIND_IN_SET('res-secondaire', a.statut) AS secondaire, - FIND_IN_SET('courrier', a.statut) AS mail, - FIND_IN_SET('temporary', a.statut) AS temporary, - FIND_IN_SET('active', a.statut) AS current - FROM adresses AS a - 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->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')); - $i = 0; - while ($tel = $res->next()) { - $adrid = $tel['adrid']; - unset($tel['adrid']); - while ($this->values['addresses'][$i]['id'] < $adrid) { - $i++; - } - $address =& $this->values['addresses'][$i]; - if (!isset($address['tel'])) { - $address['tel'] = array(); - } - if ($address['id'] == $adrid) { - $address['tel'][] = $tel; - } - } - foreach ($this->values['addresses'] as $id=>&$address) { - unset($address['id']); - } - parent::fetchData(); + Phone::deletePhones($page->pid(), Phone::LINK_ADDRESS); + Address::delete($page->pid(), Address::LINK_PROFILE); + Address::saveFromArray($value, $page->pid(), Address::LINK_PROFILE); } - protected function saveData() + public function getText($value) { - parent::saveData(); + return Address::formArrayToString($value); } +} - public function prepare(PlatalPage &$page) +class ProfilePageAddresses extends ProfilePage +{ + protected $pg_template = 'profile/adresses.tpl'; + + public function __construct(PlWizard &$wiz) { - parent::prepare($page); + parent::__construct($wiz); + $this->settings['addresses'] = new ProfileSettingAddresses(); + $this->watched['addresses'] = true; } }