X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fprofile%2Fpage.inc.php;h=78749ee17eda15f4b5fd44d948113e76ec7eb8ff;hb=e46cf8c46341b447cc3701c8afcc9baec3da11e5;hp=cd9d38c6f2b24abbe5634bdaa6f9c152d325400d;hpb=6d1747b3dbcf944c995dc2d87e8561c7a66f3aa6;p=platal.git diff --git a/modules/profile/page.inc.php b/modules/profile/page.inc.php index cd9d38c..78749ee 100644 --- a/modules/profile/page.inc.php +++ b/modules/profile/page.inc.php @@ -133,17 +133,28 @@ class ProfilePhones implements ProfileSetting public function value(ProfilePage &$page, $field, $value, &$success) { $success = true; - if (is_null($value) || !is_array($value)) { + if (is_null($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", + $res = XDB::iterator('SELECT display_tel AS tel, tel_type AS type, pub, comment + FROM profile_phones + WHERE uid = {?} AND link_type = {?} + ORDER BY tel_id', $page->pid(), $this->link_type); - $value = $res->fetchAllAssoc(); + if ($res->numRows() > 0) { + $value = $res->fetchAllAssoc(); + } else { + $value = array( + 0 => array( + 'type' => 'fixed', + 'tel' => '', + 'pub' => 'private', + 'comment' => '', + ) + ); + } } foreach ($value as $key=>&$phone) { - if (@$phone['removed']) { + if (isset($phone['removed']) && $phone['removed']) { unset($value[$key]); } else { unset($phone['removed']); @@ -202,9 +213,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; @@ -217,7 +228,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" : ""; } @@ -248,44 +259,30 @@ 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 (isset($address['changed']) && $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; } + } elseif (@$address['changed'] && !@$address['text']) { + $address = empty_address(); + $address['pub'] = 'private'; + } + 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); } - $address['precise_lat'] = rtrim($address['precise_lat'], '.0'); - $address['precise_lon'] = rtrim($address['precise_lon'], '.0'); - $address['text'] = get_address_text($address); } } @@ -347,17 +344,15 @@ abstract class ProfilePage implements PlWizardPage $setting->save($this, $field, $this->values[$field]); } if ($this->changed[$field] && @$this->watched[$field]) { - register_profile_update($this->pid(), $field); + WatchProfileUpdate::register($this->profile, $field); } } $this->_saveData(); // Update the last modification date - XDB::execute('REPLACE INTO user_changes - SET user_id = {?}', $this->pid()); - if (!S::suid()) { - register_watch_op($this->pid(), WATCH_FICHE); - } + XDB::execute('UPDATE profiles + SET last_change = NOW() + WHERE pid = {?}', $this->pid()); global $platal; S::logger()->log('profil', $platal->pl_self(2)); } @@ -418,7 +413,7 @@ abstract class ProfilePage implements PlWizardPage $page->assign('errors', $this->errors); } - public function process() + public function process(&$global_success) { $global_success = true; $this->fetchData(); @@ -441,9 +436,14 @@ abstract class ProfilePage implements PlWizardPage return Post::has('next_page') ? PlWizard::NEXT_PAGE : PlWizard::CURRENT_PAGE; } Platal::page()->trigError("Certains champs n'ont pas pu être validés, merci de corriger les informations " - . "de ton profil et de revalider ta demande"); + . "de ton profil et de revalider ta demande."); return PlWizard::CURRENT_PAGE; } + + public function success() + { + return 'Ton profil a bien été mis à jour.'; + } } require_once dirname(__FILE__) . '/general.inc.php';