public function displayEmail()
{
$o = $this->owner();
- if ($o != null) {
+ if ($o != null && $this->isVisible(ProfileVisibility::VIS_PRIVATE)) {
return $o->bestEmail();
} else {
return $this->email_directory;
if (count($uids) == 0) {
return array();
}
- return self::getBulkProfilesWithPIDs(self::getPIDsFromUIDs($uids), $fields, ProfileVisibility $visibility);
+ return self::getBulkProfilesWithPIDs(self::getPIDsFromUIDs($uids), $fields, $visibility);
}
public static function isDisplayName($name)
{
if ($level != null && !$this->isVisible($level)) {
$level = $this->level();
- } else {
- $level = $this->level();
}
return new ProfileVisibility($level);
return $this->profile_visibility->level();
}
+ public function getVisibilityLevels()
+ {
+ return $this->profile_visibility->levels();
+ }
+
public function getVisibilityCondition($field)
{
- return XDB::format($field . ' >= {?}', $this->getVisibilityLevel());
+ // Fields are ordered as ('hidden', 'private', 'ax', 'public', 'none')
+ // Which gives 'ax' >= 'private'
+ return XDB::format($field . ' IN {?}', $this->getVisibilityLevels());
}
private function buildQuery()
if ($this->general_type) {
$c .= XDB::format(' AND ' . $sub . '.general_type = {?}', $this->general_type);
}
+ if (!$uf->isVisible(ProfileVisibility::VIS_PRIVATE)) {
+ $c .= XDB::format(' AND ' . $sub . '.general_type != \'nickname\'');
+ }
$conds[] = $c;
}
--- /dev/null
+ALTER TABLE profile_addresses CHANGE COLUMN pub pub ENUM('hidden', 'private', 'ax', 'public', 'none') NOT NULL DEFAULT 'private';
+ALTER TABLE profile_corps CHANGE COLUMN pub pub ENUM('hidden', 'private', 'ax', 'public', 'none') NOT NULL DEFAULT 'private';
+ALTER TABLE profile_job CHANGE COLUMN pub pub ENUM('hidden', 'private', 'ax', 'public', 'none') NOT NULL DEFAULT 'private';
+ALTER TABLE profile_job CHANGE COLUMN email_pub email_pub ENUM('hidden', 'private', 'ax', 'public', 'none') NOT NULL DEFAULT 'private';
+ALTER TABLE profile_phone CHANGE COLUMN pub pub ENUM('hidden', 'private', 'ax', 'public', 'none') NOT NULL DEFAULT 'private';