X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fprofile%2Fpage.inc.php;h=628a9498a85e98b8df646ec50e823a6c5a9bbdfd;hb=98e827e273c7c5e473c0c8a4839efc4c5bb1225b;hp=7c60a6dd4faf6b32c7440afe6d7ed8c675c14ff9;hpb=acc9be56f2cc773f7e684f9cd3201141bc126ee2;p=platal.git diff --git a/modules/profile/page.inc.php b/modules/profile/page.inc.php index 7c60a6d..628a949 100644 --- a/modules/profile/page.inc.php +++ b/modules/profile/page.inc.php @@ -1,6 +1,6 @@ id = $id; + } else { + $this->id = S::i('uid'); + } $this->tel = new ProfileTel(); $this->pub = new ProfilePub(); $this->link_type = $type; - $this->link_id = $id; + $this->link_id = $link_id; } public function value(ProfilePage &$page, $field, $value, &$success) { $success = true; - if (is_null($value)) { - $value = isset($page->values[$field]) ? $page->values[$field] : array(); - } - if (!is_array($value)) { + if (is_null($value) || !is_array($value)) { $value = array(); + $res = XDB::iterator("SELECT t.display_tel AS tel, t.tel_type AS type, t.pub, t.comment + FROM profile_phones AS t + WHERE t.uid = {?} AND t.link_type = {?} + ORDER BY t.tel_id", + $this->id, $this->link_type); + $value = $res->fetchAllAssoc(); } foreach ($value as $key=>&$phone) { if (@$phone['removed']) { @@ -169,8 +178,8 @@ class ProfilePhones implements ProfileSetting search_tel, display_tel, pub, comment) VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?})", - S::i('uid'), $this->link_type, $this->link_id, $telid, $phone['type'], - format_phone_number($phone['tel']), $phone['tel'], $phone['pub'], $phone['comment']); + $this->id, $this->link_type, $this->link_id, $telid, $phone['type'], + format_phone_number($phone['tel']), $phone['tel'], $phone['pub'], $phone['comment']); } } @@ -178,7 +187,7 @@ class ProfilePhones implements ProfileSetting { XDB::execute("DELETE FROM profile_phones WHERE uid = {?} AND link_type = {?} AND link_id = {?}", - S::i('uid'), $this->link_type, $this->link_id); + $this->id, $this->link_type, $this->link_id); $this->saveTels($field, $value); } @@ -199,9 +208,9 @@ class ProfilePub extends ProfileNoSave if (is_null($value)) { return isset($page->values[$field]) ? $page->values[$field] : S::v($field); } - if (is_null($value) || !$value) { + if (!$value) { $value = 'private'; - } else if ($value == 'on') { // Checkbox + } elseif ($value == 'on') { // Checkbox $value = 'public'; } return $value; @@ -214,7 +223,7 @@ class ProfileBool extends ProfileNoSave { $success = true; if (is_null($value)) { - $value = @$page->values[$field]; + $value = isset($page->values[$field]) ? $page->values[$field] : null; } return $value ? "1" : ""; } @@ -245,44 +254,27 @@ class ProfileDate extends ProfileNoSave } } -abstract class ProfileGeoloc implements ProfileSetting +abstract class ProfileGeocoding implements ProfileSetting { - protected function geolocAddress(array &$address, &$success) + protected function geocodeAddress(array &$address, &$success) { - require_once 'geoloc.inc.php'; + require_once 'geocoding.inc.php'; $success = true; - unset($address['geoloc']); - unset($address['geoloc_cityid']); - if (@$address['parsevalid'] - || (@$address['text'] && @$address['changed']) - || (@$address['text'] && !@$address['cityid'])) { - $address = array_merge($address, empty_address()); - $new = get_address_infos(@$address['text']); - if (compare_addresses_text(@$address['text'], $geotxt = get_address_text($new)) - || (@$address['parsevalid'] && @$address['cityid'])) { - $address = array_merge($address, $new); - $address['checked'] = true; - } else if (@$address['parsevalid']) { - $address = array_merge($address, cut_address(@$address['text'])); - $address['checked'] = true; - $mailer = new PlMailer('geoloc/geoloc.mail.tpl'); - $mailer->assign('text', get_address_text($address)); - $mailer->assign('geoloc', $geotxt); - $mailer->send(); - } else if (@$address['changed'] || !@$address['checked']) { + if ($address['changed'] == 1) { + $gmapsGeocoder = new GMapsGeocoder(); + $address = $gmapsGeocoder->getGeocodedAddress($address); + if (isset($address['geoloc'])) { $success = false; - $address = array_merge($address, cut_address(@$address['text'])); - $address['checked'] = false; - $address['geoloc'] = $geotxt; - $address['geoloc_cityid'] = $new['cityid']; - } else { - $address = array_merge($address, cut_address(@$address['text'])); - $address['checked'] = true; } } - $address['precise_lat'] = rtrim($address['precise_lat'], '.0'); - $address['precise_lon'] = rtrim($address['precise_lon'], '.0'); - $address['text'] = get_address_text($address); + if (isset($address['geoloc_choice']) && ($address['geoloc_choice'] == 0)) { + $mailer = new PlMailer('geoloc/geoloc.mail.tpl'); + $mailer->assign('text', $address['text']); + $mailer->assign('geoloc', $address['geoloc']); + $mailer->send(); + $gmapsGeocoder = new GMapsGeocoder(); + $address = $gmapsGeocoder->stripGeocodingFromAddress($address); + } } } @@ -352,7 +344,6 @@ abstract class ProfilePage implements PlWizardPage register_watch_op(S::i('uid'), WATCH_FICHE); } global $platal; - $log =& $_SESSION['log']; S::logger()->log('profil', $platal->pl_self(1)); }