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;
$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));
}
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;
}
}
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);
}
{
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) {
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';