X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=classes%2Fphone.php;h=be6f3ad80fbd432795e44739f2ddd42d0fefb454;hb=5f9ad38e8805cd275f2943494b8b692601a39c9c;hp=0cb0703de5305025e33552678c822278c75b2544;hpb=d89a495539357b3ad30f7b891bd23d1805355a52;p=platal.git diff --git a/classes/phone.php b/classes/phone.php index 0cb0703..be6f3ad 100644 --- a/classes/phone.php +++ b/classes/phone.php @@ -187,9 +187,10 @@ class Phone if ((!isset($format['phoneprf'])) || ($format['phoneprf'] == '')) { $res = XDB::query('SELECT phonePrefix AS phoneprf, phoneFormat AS format FROM geoloc_countries - WHERE phonePrefix = {?} OR phonePrefix = {?} OR phonePrefix = {?} + WHERE phonePrefix = SUBSTRING({?}, 1, LENGTH(phonePrefix)) + ORDER BY LENGTH(phonePrefix) DESC LIMIT 1', - substr($tel, 0, 1), substr($tel, 0, 2), substr($tel, 0, 3)); + $tel); if ($res->numRows() == 0) { // No country found, does not format more than prepending a '+' sign. $this->error = true; @@ -333,7 +334,7 @@ class Phone $success = (!$phone->error && ($phone->format() || $phone->isEmpty()) && $success); if (!$phone->isEmpty()) { // Restrict phone visibility to $maxPublicity - if (!is_null($maxPublicity) && Visibility::isLessRestrictive($phone->pub, $maxPublicity)) { + if (!is_null($maxPublicity) && Visibility::isLessRestrictive($maxPublicity, $phone->pub)) { $phone->pub = $maxPublicity; } $phones[] = call_user_func(array($phone, $function)); @@ -341,7 +342,7 @@ class Phone } if (count($phones) == 0 && $requiresEmptyPhone) { $phone = new Phone(); - if (!is_null($maxPublicity) && Visibility::isLessRestrictive($phone->pub, $maxPublicity)) { + if (!is_null($maxPublicity) && Visibility::isLessRestrictive($maxPublicity, $phone->pub)) { // Restrict phone visibility to $maxPublicity $phone->pub = $maxPublicity; } @@ -374,7 +375,7 @@ class Phone } static public function iterate(array $pids = array(), array $link_types = array(), - array $link_ids = array(), Visibility $visibility) + array $link_ids = array(), $visibility = null) { return new PhoneIterator($pids, $link_types, $link_ids, $visibility); } @@ -391,7 +392,7 @@ class PhoneIterator implements PlIterator { private $dbiter; - public function __construct(array $pids, array $link_types, array $link_ids, Visibility $visibility) + public function __construct(array $pids, array $link_types, array $link_ids, $visibility) { $where = array(); if (count($pids) != 0) { @@ -403,7 +404,7 @@ class PhoneIterator implements PlIterator if (count($link_ids) != 0) { $where[] = XDB::format('(link_id IN {?})', $link_ids); } - if ($visibility == null) { + if ($visibility == null || !($visibility instanceof Visibility)) { $visibility = Visibility::defaultForRead(); } $where[] = 'pve.best_display_level+0 <= pub+0';