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']);
$address['datemaj'] = time();
}
$address['text'] = get_address_text($address);
- unset($address['parsevalid']);
- unset($address['changed']);
}
private function cleanAddress(ProfilePage &$page, array &$address)
} 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)
$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,
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
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();
}
}
foreach ($this->values['addresses'] as $id=>&$address) {
+ if (!isset($address['tel'])) {
+ $address['tel'] = array();
+ }
unset($address['id']);
}
parent::fetchData();
{assign var=adpref value="addresses[$i]"}
{assign var=adid value="addresses_$i"}
<input type="hidden" name="{$adpref}[removed]" value="0"/>
+<input type="hidden" name="{$adpref}[datemaj]" value="{$adr.datemaj}"/>
<table class="bicol" id="{$adid}" style="margin-bottom: 1em">
<tr>
<th>
<div style="float: left">
- <input name="{$adpref}[active]" type="radio" value="{$adr.id}" {if $adr.current}checked="checked"{/if}
+ <input name="{$adpref}[current]" type="radio" value="1" {if $adr.current}checked="checked"{/if}
id="{$adid}_active"/>
<label for="{$adid}_active" class="smaller" style="font-weight: normal">actuelle</label>
</div>
</tr>
<tr>
<td>
- <div>{include file="include/flags.radio.tpl" name="$adpref[pub]" notable=true val=$adr.pub}</div>
+ <div>{include file="include/flags.radio.tpl" name="`$adpref`[pub]" notable=true val=$adr.pub}</div>
<div style="clear: both"></div>
<div style="float: left">{include file="geoloc/form.address.tpl" name=$adpref id=$adid adr=$adr}</div>
<div style="float: right">