retourne 1
return 1;
reset($adresses);
$i = 0;
$adrid_array = Array();
foreach($adresses as $numero => $adr){
$adrid_array[$i] = $numero;
$i++;
}
sort($adrid_array,SORT_NUMERIC); // classe les adrid dans l'ordre croissant
$new_adrid = 1;
while(list($key,$current_adrid) = each($adrid_array)){
if($current_adrid == $new_adrid)
$new_adrid++;
else
return $new_adrid; //s'ils sont differents, il y a un trou dans la liste des adrid donc new_adrid convient
}
//si aucun convient, on retourne le plus grand des adrid actuel + 1
return $new_adrid;
}
function replace_ifset_adr($varname, $i){
$tab = Env::getMixed($varname, Array());
if (isset($tab[$i]))
$GLOBALS['adresses'][$i][$varname] = $tab[$i];
}
function get_adr_arg($varname, $i) {
$tab = Env::getMixed($varname, Array());
return $tab[$i];
}
function set_flag_adr($varname,$i){
$tab = Env::getMixed($varname, Array());
if (isset($tab[$i])){
$GLOBALS['adresses'][$i][$varname] = 1;
}
else
$GLOBALS['adresses'][$i][$varname] = '0';
}
function replace_address($i){
global $adresses;
if(!isset($adresses[$i])){
$adresses[$i]['nouvelle'] = 'ajout';
$adresses[$i]['adrid'] = $i;
}
replace_ifset_adr('secondaire', $i);
set_flag_adr('courrier', $i);
replace_ifset_adr('temporaire', $i);
if(Env::getInt('adrid_active', $i+1) == $i)
$adresses[$i]['active'] = 1;
else
$adresses[$i]['active'] = 0;
replace_ifset_adr('adr1', $i);
replace_ifset_adr('adr2', $i);
replace_ifset_adr('adr3', $i);
replace_ifset_adr('postcode', $i);
replace_ifset_adr('city', $i);
replace_ifset_adr('cityid', $i);
replace_ifset_adr('country', $i);
replace_ifset_adr('region', $i);
replace_ifset_adr('tel', $i);
replace_ifset_adr('fax', $i);
replace_ifset_adr('pub', $i);
replace_ifset_adr('tel_pub', $i);
if (!get_adr_arg('parsevalid', $i)) replace_ifset_adr('txt', $i);
$tab = Env::getMixed('numero_formulaire', Array());
if($tab[$i])
$adresses[$i]['numero_formulaire'] = $tab[$i];
else
$adresses[$i]['numero_formulaire'] = -1;
}
function geoloc_adresse($i) {
global $adresses;
$change = Env::get('change'.$i);
if (get_adr_arg('parsevalid', $i) || ($adresses[$i]['txt'] && $change) || (!$adresses[$i]['cityid'])) {
require_once('geoloc.inc.php');
// erases the previous address (but not the phone or pub)
$adresses[$i] = array_merge($adresses[$i], empty_address());
// localize new address
$new = get_address_infos($adresses[$i]['txt']);
if (compare_addresses_text($adresses[$i]['txt'], $geotxt = get_address_text($new)) || get_adr_arg('parsevalid', $i))
$adresses[$i] = array_merge($adresses[$i], $new);
else {
$adresses[$i] = array_merge($adresses[$i], cut_address($adresses[$i]['txt']));
$adresses[$i]['geoloc'] = $geotxt;
$adresses[$i]['geoloc_cityid'] = $new['cityid'];
}
}
$adresses[$i]['txt'] = get_address_text($adresses[$i]);
}
//remplace par les eventuelles nouvelles valeurs :
for ($adrid = 1; $adrid <= $nb_adr_max; $adrid++) {
$tab = Env::getMixed('adrid', Array());
if(isset($tab[$adrid])){ //cet adrid etait donc present dans le formulaire
replace_address($adrid);
}
if (isset($adresses[$adrid]['txt']))
geoloc_adresse($adrid);
}
if(Env::get('old_tab', '') == 'adresses' && Env::has('modifier')){ // on ne valide que qd on vient du formulaire
$adresses_principales = 0;
reset($adresses);
foreach($adresses as $adrid => $adr) {
//validité de chaque adresse
$description = (($adr['numero_formulaire'] > 0)?"Adresse n°{$adr['numero_formulaire']}":"Nouvelle adresse");
if (strlen(strtok($adr['adr1'],"<>{}@~?!§*`|%$^=+")) < strlen($adr['adr1']))
{
$str_error = $str_error."Le champ '$description - Ligne 1' contient un caractère interdit.
";
}
if (strlen(strtok($adr['adr2'],"<>{}@~?!§*`|%$^=+")) < strlen($adr['adr2']))
{
$str_error = $str_error."Le champ '$description - Ligne 2' contient un caractère interdit.
";
}
if (strlen(strtok($adr['adr3'],"<>{}@~?!§*`|%$^=+")) < strlen($adr['adr3']))
{
$str_error = $str_error."Le champ '$description - Ligne 3' contient un caractère interdit.
";
}
if (strlen(strtok($adr['postcode'],"<>{}@~?!§*`|%$^=+")) < strlen($adr['postcode']))
{
$str_error = $str_error."Le champ '$description - Code Postal' contient un caractère interdit.
";
}
if (strlen(strtok($adr['city'],"<>{}@~?!§*`|%$^=+")) < strlen($adr['postcode']))
{
$str_error = $str_error."Le champ '$description - Ville' contient un caractère interdit.
";
}
if (strlen(strtok($adr['tel'],"<>{}@~\/:;?,!§*_`[]|%$^=\"")) < strlen($adr['tel']))
{
$str_error = $str_error."Le champ '$description - Téléphone' contient un caractère interdit.
";
}
if (strlen(strtok($adr['fax'],"<>{}@~\/:;?,!§*_`[]|%$^=\"")) < strlen($adr['fax']))
{
$str_error = $str_error."Le champ '$description - Fax' contient un caractère interdit.
";
}
if(!$adr['secondaire']){
if($adresses_principales == 1){ //deja une adresse principale
$str_error = $str_error."Tu ne peux avoir qu'une résidence principale.
";
$adresses_principales++;//pour eviter de repeter le message plusieurs fois
}
else $adresses_principales = 1;
}
}
}
//on vire les adresses vides :
if(isset($adresses)){ // s'il y en a
reset($adresses);
foreach($adresses as $adrid => $adr){
if(is_adr_empty($adrid)){
delete_address($adrid);
}
}
}
//on génère une éventuelle nouvelle adresse
if (!isset($adresses) || (count($adresses) < $nb_adr_max)){
$adrid = generate_new_adrid();
$adresses[$adrid]['adrid'] = $adrid;
$adr = &$adresses[$adrid];
$adr['adr1'] = '';
$adr['adr2'] = '';
$adr['adr3'] = '';
$adr['postcode'] = '';
$adr['city'] = '';
$adr['country'] = '00';
$adr['region'] = '';
$adr['tel'] = '';
$adr['fax'] = '';
$adr['secondaire'] = 1;
$adr['courrier'] = 0;
$adr['active'] = 0;
$adr['temporaire'] = 1;
$adr['pub'] = 'private';
$adr['tel_pub'] = 'private';
$adr['nouvelle'] = 'new'; //n'est pas issue d'un formulaire (sert dans update_adresses...)
}
unset($adr);
unset($adrid);
//tri des adresses :
reset($adresses);
$i = 1;
foreach($adresses as $adrid_ => $adr_){
if(($adresses[$adrid_]['active']) && ($adr_['nouvelle'] != 'new')){
$ordre_des_adrid[$i] = $adrid_;
$i++;
$est_attribuee[$adrid_] = 1;
}
else
$est_attribuee[$adrid_] = 0;
}
reset($adresses);
foreach($adresses as $adrid_ => $adr_){
if(($adresses[$adrid_]['secondaire'] == 0) && ($est_attribuee[$adrid_] == 0) && ($adr_['nouvelle'] != 'new')){ // principale et non attribuee
$ordre_des_adrid[$i] = $adrid_;
$i++;
$est_attribuee[$adrid_] = 1;
}
}
reset($adresses);
foreach($adresses as $adrid_ => $adr_){
if(($adresses[$adrid_]['temporaire'] == 0) && ($est_attribuee[$adrid_] == 0) && ($adr_['nouvelle'] != 'new')){ // permanente et non attribuee
$ordre_des_adrid[$i] = $adrid_;
$i++;
$est_attribuee[$adrid_] = 1;
}
}
reset($adresses);
foreach($adresses as $adrid_ => $adr_){
if($est_attribuee[$adrid_] == 0){ // non attribuee
$ordre_des_adrid[$i] = $adrid_;
$i++;
$est_attribuee[$adrid_] = 1;
}
}
$nb_adr = $i - 1;
$page->assign_by_ref('ordre_adrid',$ordre_des_adrid);
$page->assign('nb_adr',$nb_adr+1);
?>