From: Florent Bruneau Date: Tue, 28 Aug 2007 20:50:03 +0000 (+0200) Subject: Fix the user URL, can save changes made on addresses X-Git-Tag: xorg/0.9.15~174^2~22 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=c24a06aa5a3bc925da5c94518cfcfacbf5615d8a;p=platal.git Fix the user URL, can save changes made on addresses Signed-off-by: Florent Bruneau --- diff --git a/modules/profile/addresses.inc.php b/modules/profile/addresses.inc.php index a66042a..e2360a8 100644 --- a/modules/profile/addresses.inc.php +++ b/modules/profile/addresses.inc.php @@ -33,6 +33,7 @@ class ProfileAddress private function geolocAddress(array &$address, &$success) { require_once 'geoloc.inc.php'; + $success = true; if (@$address['parsevalid'] || (@$address['text'] && @$address['changed']) || !@$address['cityid']) { $address = array_merge($address, empty_address()); $new = get_address_infos(@$address['text']); @@ -50,8 +51,6 @@ class ProfileAddress $address['datemaj'] = time(); } $address['text'] = get_address_text($address); - unset($address['parsevalid']); - unset($address['changed']); } private function cleanAddress(ProfilePage &$page, array &$address) @@ -65,13 +64,21 @@ class ProfileAddress } else { $tel['pub'] = $this->pub->value($page, 'pub', $tel['pub'], $success); } + unset($tel['removed']); } - $success; + if (@$address['changed']) { + $address['datemaj'] = time(); + } + $success = true; $address['secondaire'] = $this->bool->value($page, 'secondaire', $address['secondaire'], $success); $address['mail'] = $this->bool->value($page, 'mail', $address['mail'], $success); $address['temporary'] = $this->bool->value($page, 'temporary', $address['temporary'], $success); - $address['current'] = $this->bool->value($page, 'current', $address['current'], $success); + $address['current'] = $this->bool->value($page, 'current', @$address['current'], $success); $address['pub'] = $this->pub->value($page, 'pub', $address['pub'], $success); + unset($address['parsevalid']); + unset($address['changed']); + unset($address['removed']); + unset($address['display']); } public function value(ProfilePage &$page, $field, $value, &$success) @@ -123,7 +130,7 @@ class ProfileAddress $flags[] = 'active'; } $flags = implode(',', $flags); - XDB::execute("INSERT INTO addresses (adr1, adr2, adr3, + XDB::execute("INSERT INTO adresses (adr1, adr2, adr3, postcode, city, cityid, country, region, regiontxt, pub, datemaj, statut, @@ -187,7 +194,11 @@ class ProfileAddresses extends ProfilePage WHERE uid = {?} AND NOT FIND_IN_SET('pro', statut) ORDER BY adrid", S::i('uid')); - $this->values['addresses'] = $res->fetchAllAssoc(); + 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 @@ -195,12 +206,16 @@ class ProfileAddresses extends ProfilePage ORDER BY adrid", S::i('uid')); $i = 0; + $adrNb = count($this->values['addresses']); while ($tel = $res->next()) { $adrid = $tel['adrid']; unset($tel['adrid']); - while ($this->values['addresses'][$i]['id'] < $adrid) { + while ($i < $adrNb && $this->values['addresses'][$i]['id'] < $adrid) { $i++; } + if ($i >= $adrNb) { + break; + } $address =& $this->values['addresses'][$i]; if (!isset($address['tel'])) { $address['tel'] = array(); @@ -210,6 +225,9 @@ class ProfileAddresses extends ProfilePage } } foreach ($this->values['addresses'] as $id=>&$address) { + if (!isset($address['tel'])) { + $address['tel'] = array(); + } unset($address['id']); } parent::fetchData(); diff --git a/modules/profile/page.inc.php b/modules/profile/page.inc.php index d85bfce..0d8b29c 100644 --- a/modules/profile/page.inc.php +++ b/modules/profile/page.inc.php @@ -50,7 +50,7 @@ class ProfileWeb extends ProfileNoSave if (is_null($value)) { return isset($page->values[$field]) ? $page->values[$field] : S::v($field); } - $success = preg_match("{^(https?|ftp)://[a-zA-Z0-9._%#+/?=&~-]+$}i", $value); + $success = !trim($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://' @@ -99,7 +99,7 @@ class ProfileBool extends ProfileNoSave { $success = true; if (is_null($value)) { - $value = $page->values[$field]; + $value = @$page->values[$field]; } return $value ? 1 : 0; } diff --git a/templates/geoloc/form.address.tpl b/templates/geoloc/form.address.tpl index ef72a4c..ab94e5b 100644 --- a/templates/geoloc/form.address.tpl +++ b/templates/geoloc/form.address.tpl @@ -48,5 +48,7 @@ + + {* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/profile/adresses.tpl b/templates/profile/adresses.tpl index abe9ba9..1ee69f5 100644 --- a/templates/profile/adresses.tpl +++ b/templates/profile/adresses.tpl @@ -35,11 +35,12 @@ function removeObject(id, pref) {assign var=adpref value="addresses[$i]"} {assign var=adid value="addresses_$i"} +
-
@@ -51,7 +52,7 @@ function removeObject(id, pref)
-
{include file="include/flags.radio.tpl" name="$adpref[pub]" notable=true val=$adr.pub}
+
{include file="include/flags.radio.tpl" name="`$adpref`[pub]" notable=true val=$adr.pub}
{include file="geoloc/form.address.tpl" name=$adpref id=$adid adr=$adr}