'tel' => '',
'pub' => 'private',
'comment' => '',
- )),
+ ),
+ 'terms' => array()),
);
}
list($job['sector'], $job['subSector'], $job['subSubSector']) = $res->fetchOneRow();
}
}
+ if (count($job['terms'])) {
+ $termsid = array();
+ foreach ($job['terms'] as $term) {
+ if (!$term['full_name']) {
+ $termsid[] = $term['jtid'];
+ }
+ }
+ if (count($termsid)) {
+ $res = XDB::query("SELECT jtid, full_name
+ FROM profile_job_term_enum
+ WHERE jtid IN {?}",
+ $termsid);
+ $term_id_to_name = $res->fetchAllAssoc('jtid', false);
+ foreach ($job['terms'] as &$term) {
+ if (!$term['full_name']) {
+ $term['full_name'] = $term_id_to_name[$term['jtid']];
+ }
+ }
+ }
+ }
if ($job['name']) {
$res = XDB::query("SELECT id
FROM profile_job_enum
continue;
}
- $job['name_error'] = true;
- $success = false;
+ if (!$init) {
+ $job['name_error'] = true;
+ $success = false;
+ }
}
if (isset($job['removed']) && $job['removed']) {
}
array_splice($value, $key, 1);
}
+ foreach (array('sectorid', 'subsectorid', 'subsubsectorid') as $key) {
+ if ($job[$key] == 0) {
+ $job[$key] = null;
+ }
+ }
}
foreach ($value as $key => &$job) {
$ls = true;
WHERE pid = {?} AND type = 'job'",
$page->pid());
Phone::deletePhones($page->pid(), Phone::LINK_JOB);
+ $terms_values = array();
foreach ($value as $id => &$job) {
if (isset($job['name']) && $job['name']) {
if (isset($job['jobid']) && $job['jobid']) {
$address = new ProfileSettingAddress();
$address->saveAddress($page->pid(), $id, $job['w_address'], 'job');
Phone::savePhones($job['w_phone'], $page->pid(), Phone::LINK_JOB, $id);
+ if (isset($job['terms'])) {
+ foreach ($job['terms'] as $term) {
+ $terms_values[] = '('.XDB::escape($page->pid()).', '. XDB::escape($id).', '.XDB::escape($term['jtid']).', "original")';
+ }
+ }
}
}
+ if (count($terms_values) > 0) {
+ XDB::execute('INSERT INTO profile_job_term (pid, jid, jtid, computed)
+ VALUES '.implode(', ', $terms_values));
+ }
}
public function getText($value) {
public function __construct(PlWizard &$wiz)
{
parent::__construct($wiz);
- $this->settings['cv'] = null;
+ if (S::user()->checkPerms(User::PERM_DIRECTORY_PRIVATE)) {
+ $this->settings['cv'] = null;
+ }
$this->settings['corps'] = new ProfileSettingCorps();
$this->settings['jobs'] = new ProfileSettingJob();
$this->watched = array('cv' => true, 'jobs' => true, 'corps' => true);
protected function _fetchData()
{
- // Checkout the CV
- $res = XDB::query("SELECT cv
- FROM profiles
- WHERE pid = {?}",
- $this->pid());
- $this->values['cv'] = $res->fetchOneCell();
+ if (S::user()->checkPerms(User::PERM_DIRECTORY_PRIVATE)) {
+ // Checkout the CV
+ $res = XDB::query("SELECT cv
+ FROM profiles
+ WHERE pid = {?}",
+ $this->pid());
+ $this->values['cv'] = $res->fetchOneCell();
+ }
// Build the jobs tree
$res = XDB::iterRow("SELECT j.id, j.jobid, je.name, j.sectorid, j.subsectorid, j.subsubsectorid,
while ($phone = $it->next()) {
$this->values['jobs'][$phone->linkId()]['w_phone'][$phone->id()] = $phone->toFormArray();
}
+ $res = XDB::iterator("SELECT e.jtid, e.full_name, j.jid AS jobid
+ FROM profile_job_term_enum AS e
+ INNER JOIN profile_job_term AS j USING(jtid)
+ WHERE pid = {?}
+ ORDER BY j.jid",
+ $this->pid());
+ $i = 0;
+ $jobNb = count($this->values['jobs']);
+ while ($term = $res->next()) {
+ $jobid = $term['jobid'];
+ while ($i < $jobNb && $this->values['jobs'][$i]['id'] < $jobid) {
+ $i++;
+ }
+ if ($i >= $jobNb) {
+ break;
+ }
+ $job =& $this->values['jobs'][$i];
+ if ($job['id'] != $jobid) {
+ continue;
+ }
+ if (!isset($job['terms'])) {
+ $job['terms'] = array();
+ }
+ $job['terms'][] = $term;
+ }
+
foreach ($this->values['jobs'] as $id => &$job) {
$phone = new Phone();
if (!isset($job['w_phone'])) {
protected function _saveData()
{
- if ($this->changed['cv']) {
- XDB::execute("UPDATE profiles
- SET cv = {?}
- WHERE pid = {?}",
- $this->values['cv'], $this->pid());
+ if (S::user()->checkPerms(User::PERM_DIRECTORY_PRIVATE)) {
+ if ($this->changed['cv']) {
+ XDB::execute("UPDATE profiles
+ SET cv = {?}
+ WHERE pid = {?}",
+ $this->values['cv'], $this->pid());
+ }
}
}