X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fprofile%2Fjobs.inc.php;h=ea6d5edb03ff8c2b1a691f0092bcb24e34119d6f;hb=9f3f87bc8e2fc21c6b160f0db67bfd1b52d40007;hp=e0544048cb145f94a5cfcff9a67542748c270644;hpb=e156780ac71c0965c725edc1f88a70a8469e4b50;p=platal.git diff --git a/modules/profile/jobs.inc.php b/modules/profile/jobs.inc.php index e054404..ea6d5ed 100644 --- a/modules/profile/jobs.inc.php +++ b/modules/profile/jobs.inc.php @@ -1,6 +1,6 @@ pid()), array(Phone::LINK_JOB)); while ($phone = $it->next()) { - $jobs[$phone->linkId()]['w_phone'][$phone->id()] = $phone->toFormArray(); + $jobs[$phone->link_id]['w_phone'][$phone->id] = $phone->toFormArray(); } $res = XDB::iterator("SELECT e.jtid, e.full_name, j.jid FROM profile_job_term_enum AS e @@ -131,10 +131,8 @@ class ProfileSettingJob implements ProfileSetting return $jobs; } - private function cleanJob(ProfilePage &$page, $jobid, array &$job, &$success) + private function cleanJob(ProfilePage $page, $jobid, array &$job, &$success, $maxPublicity) { - static $publicity = array('private' => 0, 'ax' => 1, 'public' => 2); - if ($job['w_email'] == "new@example.org") { $job['w_email'] = $job['w_email_new']; } @@ -184,11 +182,10 @@ class ProfileSettingJob implements ProfileSetting } } - if ($publicity[$job['w_email_pub']] > $publicity[$job['pub']]) { - $job['w_email_pub'] = $job['pub']; + if ($maxPublicity->isVisible($job['w_email_pub'])) { + $job['w_email_pub'] = $maxPublicity->level(); } - - $job['w_phone'] = Phone::formatFormArray($job['w_phone'], $s, $job['pub']); + $job['w_phone'] = Phone::formatFormArray($job['w_phone'], $s, $maxPublicity); unset($job['removed']); unset($job['new']); @@ -196,10 +193,8 @@ class ProfileSettingJob implements ProfileSetting - public function value(ProfilePage &$page, $field, $value, &$success) + public function value(ProfilePage $page, $field, $value, &$success) { - static $publicity = array('private' => 0, 'ax' => 1, 'public' => 2); - $entreprise = ProfileValidate::get_typed_requests($page->pid(), 'entreprise'); $entr_val = 0; @@ -229,11 +224,16 @@ class ProfileSettingJob implements ProfileSetting } if (isset($job['removed']) && $job['removed']) { - if ($job['name'] == '' && $entreprise) { - $entreprise[$entr_val - 1]->clean(); + if (!S::user()->checkPerms('directory_private') + && (Phone::hasPrivate($job['w_phone']) || Address::hasPrivate($job['w_address']) || $job['w_email_pub'] == 'private')) { + Platal::page()->trigWarning("L'entreprise ne peut être supprimée car elle contient des informations pour lesquelles vous n'avez pas le droit d'édition."); + } else { + if ($job['name'] == '' && $entreprise && isset($entreprise[$entr_val - 1])) { + $entreprise[$entr_val - 1]->clean(); + } + unset($value[$key]); + continue; } - unset($value[$key]); - continue; } if (!isset($job['pub']) || !$job['pub']) { $job['pub'] = 'private'; @@ -243,19 +243,21 @@ class ProfileSettingJob implements ProfileSetting foreach ($value as $key => &$job) { $address = new Address($job['w_address']); $s = $address->format(); - if ($publicity[$address->pub] > $publicity[$job['pub']]) { - $address->pub = $job['pub']; + $maxPublicity = new ProfileVisibility($job['pub']); + if ($maxPublicity->isVisible($address->pub)) { + $address->pub = $maxPublicity->level(); } $job['w_address'] = $address->toFormArray(); - $this->cleanJob($page, $key, $job, $s); + $this->cleanJob($page, $key, $job, $s, $maxPublicity); if (!$init) { $success = ($success && $s); } } + usort($value, 'ProfileVisibility::comparePublicity'); return $value; } - public function save(ProfilePage &$page, $field, $value) + public function save(ProfilePage $page, $field, $value) { $deletePrivate = S::user()->isMe($page->owner) || S::admin(); XDB::execute('DELETE FROM pj, pjt @@ -263,11 +265,11 @@ class ProfileSettingJob implements ProfileSetting LEFT JOIN profile_job_term AS pjt ON (pj.pid = pjt.pid AND pj.id = pjt.jid) WHERE pj.pid = {?}' . (($deletePrivate) ? '' : ' AND pj.pub IN (\'public\', \'ax\')'), $page->pid()); - Address::deleteAddresses($page->pid(), Address::LINK_JOB, null, $deletePrivate); + Address::deleteAddresses($page->pid(), Address::LINK_JOB, null, null, $deletePrivate); Phone::deletePhones($page->pid(), Phone::LINK_JOB, null, $deletePrivate); $terms_values = array(); foreach ($value as $id => &$job) { - if (isset($job['name']) && $job['name']) { + 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, url, pub, email_pub, jobid) @@ -300,6 +302,9 @@ class ProfileSettingJob implements ProfileSetting VALUES ' . implode(', ', $terms_values) . ' ON DUPLICATE KEY UPDATE computed = VALUES(computed)'); } + if (S::user()->isMe($page->owner) && count($value) > 1) { + Platal::page()->trigWarning('Attention, tu as plusieurs emplois sur ton profil. Pense à supprimer ceux qui sont obsolètes.'); + } } public function getText($value) @@ -339,7 +344,7 @@ class ProfileSettingJob implements ProfileSetting class ProfileSettingCorps implements ProfileSetting { - public function value(ProfilePage &$page, $field, $value, &$success) + public function value(ProfilePage $page, $field, $value, &$success) { $success = true; if (is_null($value)) { @@ -354,7 +359,7 @@ class ProfileSettingCorps implements ProfileSetting return $value; } - public function save(ProfilePage &$page, $field, $value) + public function save(ProfilePage $page, $field, $value) { if (!S::user()->isMe($page->owner)) { XDB::execute('INSERT INTO profile_corps (original_corpsid, current_corpsid, rankid, corps_pub, pid) @@ -385,7 +390,7 @@ class ProfilePageJobs extends ProfilePage { protected $pg_template = 'profile/jobs.tpl'; - public function __construct(PlWizard &$wiz) + public function __construct(PlWizard $wiz) { parent::__construct($wiz); if (S::user()->checkPerms(User::PERM_DIRECTORY_PRIVATE)) { @@ -420,7 +425,7 @@ class ProfilePageJobs extends ProfilePage } } - public function _prepare(PlPage &$page, $id) + public function _prepare(PlPage $page, $id) { require_once 'emails.combobox.inc.php'; fill_email_combobox($page, $this->owner);