'changed' => '0',
'removed' => '0',
),
- 'hq_phone' => '',
+ 'hq_fixed' => '',
'hq_fax' => '',
'subSubSectorName' => null,
'sector' => '0',
'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
}
}
$job['w_address']['pub'] = $this->pub->value($page, 'address_pub', $job['w_address']['pub'], $s);
- if (!isset($job['w_phone'])) {
- $job['w_phone'] = array();
- }
- $profiletel = new ProfileSettingPhones('pro', $jobid);
- $job['w_phone'] = $profiletel->value($page, 'tel', $job['w_phone'], $s);
+ $job['w_phone'] = Phone::formatFormArray($job['w_phone'], $s);
unset($job['removed']);
unset($job['new']);
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;
public function save(ProfilePage &$page, $field, $value)
{
- // TODO: use address and phone classes to update profile_job_enum and profile_phones once they are done.
-
- require_once 'profil.func.inc.php';
-
+ // TODO: use address class to update profile_job_enum once it is done.
XDB::execute("DELETE FROM profile_job
WHERE pid = {?}",
$page->pid());
XDB::execute("DELETE FROM profile_addresses
WHERE pid = {?} AND type = 'job'",
$page->pid());
- XDB::execute("DELETE FROM profile_phones
- WHERE pid = {?} AND link_type = 'pro'",
- $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');
- $profiletel = new ProfileSettingPhones('pro', $id);
- $profiletel->saveTels($page->pid(), 'tel', $job['w_phone']);
+ 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) {
$jobs = array();
foreach ($value as $id => $job) {
$address = new ProfileSettingAddress();
- $phones = new ProfileSettingPhones('pro', $id);
+ $phones = Phone::formArrayToString($job['w_phone']);
$jobs[] = 'Entreprise : ' . $job['name'] . ', secteur : ' . $job['subSubSectorName']
. ', description : ' . $job['description'] . ', web : ' . $job['w_url']
. ', email : ' . $job['w_email']
- . ', ' . $phones->getText($job['w_phone']) . ', ' . $address->getText($job['w_address']);
+ . ($phones ? ', ' . $phones : '') . ', ' . $address->getText($job['w_address']);
}
return implode(' ; ' , $jobs);
}
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,
);
}
- $res = XDB::iterator("SELECT link_id AS jobid, tel_type AS type, pub, display_tel AS tel, comment
- FROM profile_phones
- WHERE pid = {?} AND link_type = 'pro'
- ORDER BY link_id",
+ $it = Phone::iterate(array($this->pid()), array(Phone::LINK_JOB));
+ 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 ($phone = $res->next()) {
- $jobid = $phone['jobid'];
+ while ($term = $res->next()) {
+ $jobid = $term['jobid'];
while ($i < $jobNb && $this->values['jobs'][$i]['id'] < $jobid) {
$i++;
}
break;
}
$job =& $this->values['jobs'][$i];
- if (!isset($job['w_phone'])) {
- $job['w_phone'] = array();
+ if ($job['id'] != $jobid) {
+ continue;
}
- if ($job['id'] == $jobid) {
- $job['w_phone'][] = $phone;
+ 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'])) {
- $job['w_phone'] = array(
- 0 => array(
- 'type' => 'fixed',
- 'tel' => '',
- 'pub' => 'private',
- 'comment' => '',
- )
- );
+ $job['w_phone'] = array(0 => $phone->toFormArray());
}
}
$job['w_email_new'] = '';
- if (!isset($job['hq_phone'])) {
- $job['hq_phone'] = '';
+ if (!isset($job['hq_fixed'])) {
+ $job['hq_fixed'] = '';
}
if (!isset($job['hq_fax'])) {
$job['hq_fax'] = '';
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());
+ }
}
}