X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fprofile%2Fpage.inc.php;h=411be4344f11f49805dadc7f388b2cc5c453d89a;hb=37d44b3b542764eda8d4f9c3febc814ae37f8157;hp=6decf819af396d0d09a05edcb202e5156fcf8a64;hpb=2dcac0f527e8207d754af8974d81b2bce3f433d9;p=platal.git diff --git a/modules/profile/page.inc.php b/modules/profile/page.inc.php index 6decf81..411be43 100644 --- a/modules/profile/page.inc.php +++ b/modules/profile/page.inc.php @@ -50,7 +50,8 @@ class ProfileWeb extends ProfileNoSave if (is_null($value)) { return isset($page->values[$field]) ? $page->values[$field] : S::v($field); } - $success = !trim($value) || preg_match("{^(https?|ftp)://[a-zA-Z0-9._%#+/?=&~-]+$}i", $value); + $value = trim($value); + $success = empty($value) || preg_match("{^(https?|ftp)://[a-zA-Z0-9._%#+/?=&~-]+$}i", $value); if (!$success) { global $page; $page->trig('URL Incorrecte : une url doit commencer par http:// ou https:// ou ftp://' @@ -60,6 +61,25 @@ class ProfileWeb extends ProfileNoSave } } +class ProfileEmail extends ProfileNoSave +{ + public function value(ProfilePage &$page, $field, $value, &$success) + { + if (is_null($value)) { + return isset($page->values[$field]) ? $page->values[$field] : S::v($field); + } + $value = trim($value); + require_once 'xorg.misc.inc.php'; + $success = empty($value) || isvalid_email($value); + if (!$success) { + global $page; + $page->trig('Adresse Email invalide'); + } + return $value; + } +} + + class ProfileTel extends ProfileNoSave { public function value(ProfilePage &$page, $field, $value, &$success) @@ -105,6 +125,34 @@ class ProfileBool extends ProfileNoSave } } +abstract class ProfileGeoloc implements ProfileSetting +{ + protected function geolocAddress(array &$address, &$success) + { + require_once 'geoloc.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(@$adress['text'], $geotxt = get_address_text($new)) + || @$address['parsevalid']) { + $address = array_merge($address, $new); + } else { + $success = false; + $address = array_merge($address, cut_address(@$address['text'])); + $address['geoloc'] = $geotxt; + $address['geoloc_cityid'] = $new['cityid']; + } + } + $address['text'] = get_address_text($address); + } +} + + abstract class ProfilePage implements PlWizardPage { protected $wizard;