X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fprofile%2Fjobs.inc.php;h=d29a5ef401a14ffdd3de436152bc6539f54fde28;hb=79d0b9af2cbd1d1a0683666cab99dafda15a313c;hp=b343ade39b93a528855a7852caf56bcd69003e57;hpb=c3951bbde67bb99da420af481b4b78c380e8fff5;p=platal.git diff --git a/modules/profile/jobs.inc.php b/modules/profile/jobs.inc.php index b343ade..d29a5ef 100644 --- a/modules/profile/jobs.inc.php +++ b/modules/profile/jobs.inc.php @@ -68,7 +68,7 @@ class ProfileSettingJob implements ProfileSetting $jobs = XDB::fetchAllAssoc('SELECT j.id, j.jobid, je.name, j.description, j.email AS w_email, j.email_pub AS w_email_pub, - j.url AS w_url, j.pub + j.url AS w_url, j.pub, j.entry_year AS w_entry_year FROM profile_job AS j LEFT JOIN profile_job_enum AS je ON (j.jobid = je.id) WHERE j.pid = {?} @@ -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,15 @@ class ProfileSettingJob implements ProfileSetting } } - if ($maxPublicity->isVisible($job['w_email_pub'])) { - $job['w_email_pub'] = $maxPublicity->level(); + if (Visibility::isLessRestrictive($job['w_email_pub'], $job_level)) { + $job['w_email_pub'] = $job_level; + } + $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; + $success = false; } - $job['w_phone'] = Phone::formatFormArray($job['w_phone'], $s, $maxPublicity); unset($job['removed']); unset($job['new']); @@ -239,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($address->pub, $job_level)) { + $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; } @@ -272,16 +280,16 @@ class ProfileSettingJob implements ProfileSetting foreach ($value as $id => &$job) { if (($job['pub'] != 'private' || $deletePrivate) && (isset($job['name']) && $job['name'])) { if (isset($job['jobid']) && $job['jobid']) { - XDB::execute('INSERT INTO profile_job (pid, id, description, email, + XDB::execute('INSERT INTO profile_job (pid, id, description, email, entry_year, url, pub, email_pub, jobid) - VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?})', - $page->pid(), $id, $job['description'], $job['w_email'], + VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?})', + $page->pid(), $id, $job['description'], $job['w_email'], $job['w_entry_year'], $job['w_url'], $job['pub'], $job['w_email_pub'], $job['jobid']); } else { - XDB::execute('INSERT INTO profile_job (pid, id, description, email, + XDB::execute('INSERT INTO profile_job (pid, id, description, email, entry_year, url, pub, email_pub) - VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?})', - $page->pid(), $id, $job['description'], $job['w_email'], + VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?})', + $page->pid(), $id, $job['description'], $job['w_email'], $job['w_entry_year'], $job['w_url'], $job['pub'], $job['w_email_pub']); $request = new EntrReq(S::user(), $page->profile, $id, $job['name'], $job['hq_acronym'], $job['hq_url'], $job['hq_email'], $job['hq_fixed'], $job['hq_fax'], $job['hq_address']); @@ -384,7 +392,7 @@ class ProfileSettingCorps implements ProfileSetting public function getText($value) { static $pubs = array('public' => 'publique', 'ax' => 'annuaire AX', 'private' => 'privé'); - $corpsList = DirEnum::getOptions(DirEnum::CORPS); + $corpsList = DirEnum::getOptions(DirEnum::ORIGINCORPS); $rankList = DirEnum::getOptions(DirEnum::CORPSRANKS); return $corpsList[$value['current']] . ', ' . $corpsList[$value['rank']] . ' (' . 'corps d\'origine : ' . $corpsList[$value['original']] . ', affichage ' . $pubs[$value['pub']] . ')'; @@ -404,6 +412,7 @@ class ProfilePageJobs extends ProfilePage $this->settings['corps'] = new ProfileSettingCorps(); $this->settings['jobs'] = new ProfileSettingJob(); $this->watched = array('cv' => true, 'jobs' => true, 'corps' => true); + Platal::page()->assign('geocoding_removal', true); } protected function _fetchData() @@ -433,7 +442,7 @@ class ProfilePageJobs extends ProfilePage public function _prepare(PlPage $page, $id) { require_once 'emails.combobox.inc.php'; - fill_email_combobox($page, $this->owner); + fill_email_combobox($page, array('redirect', 'job', 'stripped_directory'), $this->owner); if (!S::user()->isMe($this->owner)) { $res = XDB::iterator('SELECT id, name