X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fprofile%2Fjobs.inc.php;h=43c70d1bb16be85805c1b33df3451a991832a183;hb=07e4a9a091ac34c84129c230cde455de34e1ae91;hp=b31f327a6f694a4d574bc2246ef76725f2c2ac71;hpb=e22ff176d83e1f4ffd866e6ad928ee247906c6a5;p=platal.git diff --git a/modules/profile/jobs.inc.php b/modules/profile/jobs.inc.php index b31f327..43c70d1 100644 --- a/modules/profile/jobs.inc.php +++ b/modules/profile/jobs.inc.php @@ -1,6 +1,6 @@ pid()), array(Address::LINK_JOB)); + $it = Address::iterate(array($page->pid()), array(Address::LINK_JOB), array(), Visibility::get(Visibility::VIEW_ADMIN)); while ($address = $it->next()) { $jobs[$address->id]['w_address'] = $address->toFormArray(); } - $it = Phone::iterate(array($page->pid()), array(Phone::LINK_JOB)); + $it = Phone::iterate(array($page->pid()), array(Phone::LINK_JOB), array(), Visibility::get(Visibility::VIEW_ADMIN)); while ($phone = $it->next()) { $jobs[$phone->link_id]['w_phone'][$phone->id] = $phone->toFormArray(); } @@ -131,7 +131,7 @@ class ProfileSettingJob implements ProfileSetting return $jobs; } - private function cleanJob(ProfilePage $page, $jobid, array &$job, &$success, $maxPublicity) + private function cleanJob(ProfilePage $page, $jobid, array &$job, &$success, $job_level) { if ($job['w_email'] == "new@example.org") { $job['w_email'] = $job['w_email_new']; @@ -178,10 +178,10 @@ class ProfileSettingJob implements ProfileSetting } } - if ($maxPublicity->isVisible($job['w_email_pub'])) { - $job['w_email_pub'] = $maxPublicity->level(); + if (Visibility::isLessRestrictive($job_level, $job['w_email_pub'])) { + $job['w_email_pub'] = $job_level; } - $job['w_phone'] = Phone::formatFormArray($job['w_phone'], $s, $maxPublicity); + $job['w_phone'] = Phone::formatFormArray($job['w_phone'], $s, $job_level); if ($job['w_entry_year'] && strlen($job['w_entry_year']) != 4) { $job['w_entry_year_error'] = true; @@ -244,17 +244,20 @@ class ProfileSettingJob implements ProfileSetting foreach ($value as $key => &$job) { $address = new Address($job['w_address']); $s = $address->format(); - $maxPublicity = new ProfileVisibility($job['pub']); - if ($maxPublicity->isVisible($address->pub)) { - $address->pub = $maxPublicity->level(); + + // Force the address publicity to be at least as restricted as + // the job publicity. + $job_level = $job['pub']; + if (Visibility::isLessRestrictive($job_level, $address->pub)) { + $address->pub = $job_level; } $job['w_address'] = $address->toFormArray(); - $this->cleanJob($page, $key, $job, $s, $maxPublicity); + $this->cleanJob($page, $key, $job, $s, $job_level); if (!$init) { $success = ($success && $s); } } - usort($value, 'ProfileVisibility::comparePublicity'); + usort($value, 'Visibility::comparePublicity'); return $value; }