X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=include%2Fprofil.func.inc.php;h=465108bf96da65481fa80c474874e0f8ff29198d;hb=173c80d7c9cd5fff543d86af380de6de028358eb;hp=0bd75d02db190f662bafe0708674b6eada89e6ab;hpb=f497128a7c26c25a64e05453ea479520149e2cb7;p=platal.git diff --git a/include/profil.func.inc.php b/include/profil.func.inc.php index 0bd75d0..465108b 100644 --- a/include/profil.func.inc.php +++ b/include/profil.func.inc.php @@ -1,6 +1,6 @@ $bvar) { - if (isset($a[$val])) { - if ($a[$val] == $bvar) - unset($c[$val]); - else { - switch ($val) { - case 'adr' : if (!($c['adr'] = diff_user_addresses($a[$val], $bvar, $view))) unset($c['adr']); break; - case 'adr_pro' : if (!($c['adr_pro'] = diff_user_pros($a[$val], $bvar, $view))) unset($c['adr_pro']); break; - case 'tels' : if (!($c['tels'] = diff_user_tels($a[$val], $bvar, $view))) unset($c['tels']); break; - } - } - } - } - // don't modify freetext if you don't have the right - if (isset($b['freetext_pub']) && !has_user_right($b['freetext_pub'], $view) && isset($c['freetext'])) - unset($c['freetext']); - if (!count($c)) - return false; - return $c; -} - -function same_tel(&$a, &$b) { - $numbera = format_phone_number((string) $a); - $numberb = format_phone_number((string) $b); - return $numbera === $numberb; -} -function same_address(&$a, &$b) { - return - (same_field($a['adr1'],$b['adr1'])) && - (same_field($a['adr2'],$b['adr2'])) && - (same_field($a['adr3'],$b['adr3'])) && - (same_field($a['postcode'],$b['postcode'])) && - (same_field($a['city'],$b['city'])) && - (same_field($a['countrytxt'],$b['countrytxt'])) && - true; -} -function same_pro(&$a, &$b) { - return - (same_field($a['entreprise'],$b['entreprise'])) && - (same_field($a['fonction'],$b['fonction'])) && - true; -} -function same_field(&$a, &$b) { - if ($a == $b) return true; - if (is_array($a)) { - if (!is_array($b) || count($a) != count($b)) return false; - foreach ($a as $val => $avar) - if (!isset($b[$val]) || !same_field($avar, $b[$val])) return false; - return true; - } elseif (is_string($a)) - return (strtoupper($a) == strtoupper($b)); -} -function diff_user_tel(&$a, &$b) { - $c = $a; - if (isset($b['tel_pub']) && isset($a['tel_pub']) && has_user_right($b['tel_pub'], $a['tel_pub'])) - $c['tel_pub'] = $b['tel_pub']; - foreach ($b as $val => $bvar) { - if (isset($a[$val])) { - if ($a[$val] == $bvar) - unset($c[$val]); - } - } - if (!count($c)) - return false; - $c['telid'] = $a['telid']; - return $c; -} - -function diff_user_tels(&$a, &$b) -{ - $c = $a; - $telids_b = array(); - foreach ($b as $i => $telb) $telids_b[$telb['telid']] = $i; - - foreach ($a as $j => $tela) { - if (isset($tela['telid'])) { - // if b has a tel with the same telid, compute diff - if (isset($telids_b[$tela['telid']])) { - if (!($c[$j] = diff_user_tel($tela, $b[$telids_b[$tela['adrid']]]))) { - unset($c[$j]); - } - unset($telids_b[$tela['telid']]); - } - } else { - // try to find a match in b - foreach ($b as $i => $telb) { - if (same_tel($tela['tel'], $telb['tel'])) { - $tela['telid'] = $telb['telid']; - if (!($c[$j] = diff_user_tel($tela, $telb))) { - unset($c[$j]); - } - unset($telids_b[$tela['telid']]); - break; - } - } - } - } - - foreach ($telids_b as $telidb => $i) - $c[] = array('telid' => $telidb, 'remove' => 1); - return $c; -} - -function diff_user_address($a, $b) { - if (isset($b['pub']) && isset($a['pub']) && has_user_right($b['pub'], $a['pub'])) - $a['pub'] = $b['pub']; - if (isset($b['tels'])) { - if (isset($a['tels'])) { - $avar = $a['tels']; - } else { - $avar = array(); - } - $ctels = diff_user_tels($avar, $b['tels']); - - if (!count($ctels)) { - $b['tels'] = $avar; - } else { - $a['tels'] = $ctels; - } - } - - foreach ($a as $val => $avar) { - if (!isset($b[$val]) || !same_field($avar,$b[$val])) { - return $a; - } - } - return false; -} - -// $b need to use adrids -function diff_user_addresses(&$a, &$b) { - $c = $a; - $adrids_b = array(); - foreach ($b as $i => $adrb) $adrids_b[$adrb['adrid']] = $i; - - foreach ($a as $j => $adra) { - if (isset($adra['adrid'])) { - // if b has an address with the same adrid, compute diff - if (isset($adrids_b[$adra['adrid']])) { - if (!($c[$j] = diff_user_address($adra, $b[$adrids_b[$adra['adrid']]]))) - unset($c[$j]); - unset($adrids_b[$adra['adrid']]); - } - } else { - // try to find a match in b - foreach ($b as $i => $adrb) { - if (same_address($adra, $adrb)) { - $adra['adrid'] = $adrb['adrid']; - if (!($c[$j] = diff_user_address($adra, $adrb))) - unset($c[$j]); - if ($c[$j]) $c[$j]['adrid'] = $adra['adrid']; - unset($adrids_b[$adra['adrid']]); - break; - } - } - } - } - - foreach ($adrids_b as $adridb => $i) - $c[] = array('adrid' => $adridb, 'remove' => 1); - - if (!count($c)) return false; - return $c; -} - -function diff_user_pro($a, &$b, $view = 'private') { - if (isset($b['pub']) && isset($a['pub']) && has_user_right($b['pub'], $a['pub'])) - $a['pub'] = $b['pub']; - if (isset($b['adr_pub']) && !has_user_right($b['adr_pub'], $view)) { - unset($a['adr1']); - unset($a['adr2']); - unset($a['adr3']); - unset($a['postcode']); - unset($a['city']); - unset($a['countrytxt']); - unset($a['region']); - } - if (isset($b['adr_pub']) && isset($a['adr_pub']) && has_user_right($b['adr_pub'], $a['adr_pub'])) - $a['adr_pub'] = $b['adr_pub']; - if (isset($b['tels'])) { - if (isset($a['tels'])) - $avar = $a['tels']; - else - $avar = array(); - $ctels = diff_user_tels($avar, $b['tels']); - - if (!count($ctels)) { - $b['tels'] = $avar; - } else - $a['tels'] = $ctels; - } - if (isset($b['email_pub']) && !has_user_right($b['email_pub'], $view)) - unset($a['email']); - if (isset($b['email_pub']) && isset($a['email_pub']) && has_user_right($b['email_pub'], $a['email_pub'])) - $a['email_pub'] = $b['email_pub']; - foreach ($a as $val => $avar) { - if (($avar && !isset($b[$val])) || !same_field($avar,$b[$val])) { - return $a; - } - } - return false; -} - -// $b need to use entrids -function diff_user_pros(&$a, &$b, $view = 'private') { - $c = $a; - $entrids_b = array(); - foreach ($b as $i => $prob) $entrids_b[$prob['entrid']] = $i; - - foreach ($a as $j => $proa) { - if (isset($proa['entrid'])) { - // if b has an address with the same adrid, compute diff - if (isset($entrids_b[$proa['entrid']])) { - if (!($c[$j] = diff_user_pro($proa, $b[$entrids_b[$proa['entrid']]], $view))) - unset($c[$j]); - unset($entrids_b[$proa['entrid']]); - } - } else { - // try to find a match in b - foreach ($b as $i => $prob) { - if (same_pro($proa, $prob)) { - $proa['entrid'] = $prob['entrid']; - if (!($c[$j] = diff_user_pro($proa, $prob, $view))) - unset($c[$j]); - if ($c[$j]) $c[$j]['entrid'] = $proa['entrid']; - unset($entrids_b[$proa['entrid']]); - break; - } - } - } - } - - foreach ($entrids_b as $entridb => $i) - $c[] = array('entrid' => $entridb, 'remove' => 1); - - if (!count($c)) return false; - return $c; -} - function format_phone_number($tel) { $tel = trim($tel); @@ -314,9 +41,9 @@ function format_display_number($tel, &$error, $format = array('format'=>'','phon $ret = ''; $tel_length = strlen($tel); if((!isset($format['phoneprf'])) || ($format['phoneprf'] == '')) { - $res = XDB::query("SELECT phoneprf, phoneformat AS format - FROM geoloc_pays - WHERE phoneprf = {?} OR phoneprf = {?} OR phoneprf = {?} + $res = XDB::query("SELECT phonePrefix AS phoneprf, phoneFormat AS format + FROM geoloc_countries + WHERE phonePrefix = {?} OR phonePrefix = {?} OR phonePrefix = {?} LIMIT 1", substr($tel, 0, 1), substr($tel, 0, 2), substr($tel, 0, 3)); if ($res->numRows() == 0) {