X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fprofile%2Fjobs.inc.php;h=18a8f6aafb13b9dbc035c5ec811521553cd00c34;hb=b281eb7bfc48b35cfc1842cd0e9fa19682d6063e;hp=1b7ce831fef06748bfa7bd7999c80856e4d38fcf;hpb=ecad8a08350703f181e1e11b822d1faf381fb51f;p=platal.git diff --git a/modules/profile/jobs.inc.php b/modules/profile/jobs.inc.php index 1b7ce83..18a8f6a 100644 --- a/modules/profile/jobs.inc.php +++ b/modules/profile/jobs.inc.php @@ -42,6 +42,77 @@ class ProfileJob extends ProfileGeocoding ); } + public function emptyJob() + { + return array( + 'id' => '0', + 'jobid' => '', + 'pub' => 'private', + 'name' => '', + 'hq_acronym' => '', + 'hq_url' => '', + 'hq_email' => '', + 'hq_address' => array( + 'text' => '', + 'accuracy' => '', + 'postalText' => '', + 'postalCode' => '', + 'administrativeAreaId' => '', + 'subAdministrativeAreaId' => '', + 'localityId' => '', + 'countryId' => '', + 'latitude' => '', + 'longitude' => '', + 'north' => '', + 'south' => '', + 'east' => '', + 'west' => '', + 'cedex' => '', + 'updateTime' => '', + 'changed' => '0', + 'removed' => '0', + ), + 'hq_phone' => '', + 'hq_fax' => '', + 'subSubSectorName' => null, + 'sector' => '0', + 'subSector' => '0', + 'subSubSector' => '0', + 'description' => '', + 'w_url' => '', + 'w_address' => array( + 'pub' => 'private', + 'text' => '', + 'accuracy' => '', + 'postalText' => '', + 'postalCode' => '', + 'administrativeAreaId' => '', + 'subAdministrativeAreaId' => '', + 'localityId' => '', + 'countryId' => '', + 'latitude' => '', + 'longitude' => '', + 'north' => '', + 'south' => '', + 'east' => '', + 'west' => '', + 'cedex' => '', + 'updateTime' => '', + 'changed' => '0', + 'removed' => '0', + ), + 'w_email' => '', + 'w_email_pub' => 'private', + 'w_email_new' => '', + 'w_phone' => array(0 => array( + 'type' => 'fixed', + 'tel' => '', + 'pub' => 'private', + 'comment' => '', + )), + ); + } + private function cleanJob(ProfilePage &$page, $jobid, array &$job, &$success) { $success = true; @@ -102,6 +173,7 @@ class ProfileJob extends ProfileGeocoding } $profiletel = new ProfilePhones('pro', $jobid); $job['w_phone'] = $profiletel->value($page, 'tel', $job['w_phone'], $s); + unset($job['removed']); unset($job['new']); } @@ -120,7 +192,7 @@ class ProfileJob extends ProfileGeocoding $success = true; foreach ($value as $key=>&$job) { $job['name'] = trim($job['name']); - if (!$job['name']) { + if (!$job['name'] && $entreprise) { $job['tmp_name'] = $entreprise[$entr_val]->name; $entr_val ++; } @@ -158,23 +230,25 @@ class ProfileJob extends ProfileGeocoding WHERE uid = {?} AND link_type = 'pro'", S::i('uid')); foreach ($value as $id=>&$job) { - if ($job['jobid']) { - XDB::execute("INSERT INTO profile_job (uid, id, description, sectorid, subsectorid, - subsubsectorid, email, url, pub, email_pub, jobid) - VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?})", - S::i('uid'), $id, $job['description'], $job['sector'], $job['subSector'], - $job['subSubSector'], $job['w_email'], $job['w_url'], $job['pub'], $job['w_email_pub'], $job['jobid']); - } else { - XDB::execute("INSERT INTO profile_job (uid, id, description, sectorid, subsectorid, - subsubsectorid, email, url, pub, email_pub) - VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?})", - S::i('uid'), $id, $job['description'], $job['sector'], $job['subSector'], - $job['subSubSector'], $job['w_email'], $job['w_url'], $job['pub'], $job['w_email_pub']); + if (isset($job['name']) && $job['name']) { + if (isset($job['jobid']) && $job['jobid']) { + XDB::execute("INSERT INTO profile_job (uid, id, description, sectorid, subsectorid, + subsubsectorid, email, url, pub, email_pub, jobid) + VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?})", + S::i('uid'), $id, $job['description'], $job['sector'], $job['subSector'], + $job['subSubSector'], $job['w_email'], $job['w_url'], $job['pub'], $job['w_email_pub'], $job['jobid']); + } else { + XDB::execute("INSERT INTO profile_job (uid, id, description, sectorid, subsectorid, + subsubsectorid, email, url, pub, email_pub) + VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?})", + S::i('uid'), $id, $job['description'], $job['sector'], $job['subSector'], + $job['subSubSector'], $job['w_email'], $job['w_url'], $job['pub'], $job['w_email_pub']); + } + $address = new ProfileAddress(); + $address->saveAddress($id, $job['w_address'], 'job'); + $profiletel = new ProfilePhones('pro', $id); + $profiletel->saveTels('tel', $job['w_phone']); } - $address = new ProfileAddress(); - $address->saveAddress($id, $job['w_address'], 'job'); - $profiletel = new ProfilePhones('pro', $id); - $profiletel->saveTels('tel', $job['w_phone']); } } } @@ -196,9 +270,9 @@ class ProfileJobs extends ProfilePage { // Checkout the CV $res = XDB::query("SELECT cv - FROM auth_user_md5 - WHERE user_id = {?}", - S::i('uid')); + FROM profiles + WHERE pid = {?}", + $this->pid()); $this->values['cv'] = $res->fetchOneCell(); // Checkout the corps @@ -206,7 +280,7 @@ class ProfileJobs extends ProfilePage rankid AS rank, corps_pub AS pub FROM profile_corps WHERE uid = {?}", - S::i('uid')); + $this->pid()); $this->values['corps'] = $res->fetchOneAssoc(); // Build the jobs tree @@ -229,109 +303,160 @@ class ProfileJobs extends ProfilePage LEFT JOIN profile_addresses AS ah ON (ah.jobid = j.jobid AND ah.type = 'hq') WHERE j.uid = {?} ORDER BY j.id", - S::i('uid')); + $this->pid()); $this->values['jobs'] = array(); - while (list($id, $jobid, $name, $sector, $subSector, $subSubSector, - $subSubSectorName, $description, $w_email, $w_emailPub, $w_url, $pub, - $hq_acronym, $hq_url, $hq_email, - $w_accuracy, $w_text, $w_postalText, $w_postalCode, $w_localityId, - $w_subAdministrativeAreaId, $w_administrativeAreaId, $w_countryId, - $w_latitude, $w_longitude, $w_pub, $w_updateTime, - $w_north, $w_south, $w_east, $w_west, - $hq_accuracy, $hq_text, $hq_postalText, $hq_postalCode, $hq_localityId, - $hq_subAdministrativeAreaId, $hq_administrativeAreaId, $hq_countryId, - $hq_latitude, $hq_longitude, $hq_pub, $hq_updateTime, - $hq_north, $hq_south, $hq_east, $hq_west, - ) = $res->next()) { - $this->values['jobs'][] = array('id' => $id, - 'jobid' => $jobid, - 'name' => $name, - 'sector' => $sector, - 'subSector' => $subSector, - 'subSubSector' => $subSubSector, - 'subSubSectorName' => $subSubSectorName, - 'description' => $description, - 'pub' => $pub, - 'w_email' => $w_email, - 'w_email_pub' => $w_email_pub, - 'w_url' => $w_url, - 'hq_acronym' => $hq_acronym, - 'hq_url' => $hq_url, - 'hq_email' => $hq_email, - 'w_address' => array('accuracy' => $w_accuracy, - 'text' => $w_text, - 'postalText' => $w_postalText, - 'postalCode' => $w_postalCode, - 'localityId' => $w_localityId, - 'subAdministrativeAreaId' => $w_subAdministrativeAreaId, - 'administrativeAreaId' => $w_administrativeAreaId, - 'countryId' => $w_countryId, - 'latitude' => $w_latitude, - 'longitude' => $w_longitude, - 'pub' => $w_pub, - 'updateTime' => $w_update, - 'north' => $w_north, - 'south' => $w_south, - 'east' => $w_east, - 'west' => $w_west, - ), - 'hq_address' => array('accuracy' => $hq_accuracy, - 'text' => $hq_text, - 'postalText' => $hq_postalText, - 'postalCode' => $hq_postalCode, - 'localityId' => $hq_localityId, - 'subAdministrativeAreaId' => $hq_subAdministrativeAreaId, - 'administrativeAreaId' => $hq_administrativeAreaId, - 'countryId' => $hq_countryId, - 'latitude' => $hq_latitude, - 'longitude' => $hq_longitude, - 'pub' => $hq_pub, - 'updateTime' => $hq_update, - 'north' => $hq_north, - 'south' => $hq_south, - 'east' => $hq_east, - 'west' => $hq_west, - ), - ); - } - $res = XDB::iterator("SELECT link_id AS jobid, tel_type AS type, pub, display_tel AS tel, comment - FROM profile_phones - WHERE uid = {?} AND link_type = 'pro' - ORDER BY link_id", - S::i('uid')); - $i = 0; - $jobNb = count($this->values['jobs']); - while ($phone = $res->next()) { - $jobid = $phone['jobid']; - while ($i < $jobNb && $this->values['jobs'][$i]['id'] < $jobid) { - $i++; + if ($res->numRows() > 0) { + while (list($id, $jobid, $name, $sector, $subSector, $subSubSector, + $subSubSectorName, $description, $w_email, $w_emailPub, $w_url, $pub, + $hq_acronym, $hq_url, $hq_email, + $w_accuracy, $w_text, $w_postalText, $w_postalCode, $w_localityId, + $w_subAdministrativeAreaId, $w_administrativeAreaId, $w_countryId, + $w_latitude, $w_longitude, $w_pub, $w_updateTime, + $w_north, $w_south, $w_east, $w_west, + $hq_accuracy, $hq_text, $hq_postalText, $hq_postalCode, $hq_localityId, + $hq_subAdministrativeAreaId, $hq_administrativeAreaId, $hq_countryId, + $hq_latitude, $hq_longitude, $hq_pub, $hq_updateTime, + $hq_north, $hq_south, $hq_east, $hq_west, + ) = $res->next()) { + $this->values['jobs'][] = array( + 'id' => $id, + 'jobid' => $jobid, + 'name' => $name, + 'sector' => $sector, + 'subSector' => $subSector, + 'subSubSector' => $subSubSector, + 'subSubSectorName' => $subSubSectorName, + 'description' => $description, + 'pub' => $pub, + 'w_email' => $w_email, + 'w_email_pub' => $w_emailPub, + 'w_url' => $w_url, + 'hq_acronym' => $hq_acronym, + 'hq_url' => $hq_url, + 'hq_email' => $hq_email, + 'w_address' => array( + 'accuracy' => $w_accuracy, + 'text' => $w_text, + 'postalText' => $w_postalText, + 'postalCode' => $w_postalCode, + 'localityId' => $w_localityId, + 'subAdministrativeAreaId' => $w_subAdministrativeAreaId, + 'administrativeAreaId' => $w_administrativeAreaId, + 'countryId' => $w_countryId, + 'latitude' => $w_latitude, + 'longitude' => $w_longitude, + 'pub' => $w_pub, + 'updateTime' => $w_updateTime, + 'north' => $w_north, + 'south' => $w_south, + 'east' => $w_east, + 'west' => $w_west, + ), + 'hq_address' => array( + 'accuracy' => $hq_accuracy, + 'text' => $hq_text, + 'postalText' => $hq_postalText, + 'postalCode' => $hq_postalCode, + 'localityId' => $hq_localityId, + 'subAdministrativeAreaId' => $hq_subAdministrativeAreaId, + 'administrativeAreaId' => $hq_administrativeAreaId, + 'countryId' => $hq_countryId, + 'latitude' => $hq_latitude, + 'longitude' => $hq_longitude, + 'pub' => $hq_pub, + 'updateTime' => $hq_updateTime, + 'north' => $hq_north, + 'south' => $hq_south, + 'east' => $hq_east, + 'west' => $hq_west, + ), + ); } - if ($i >= $jobNb) { - break; + + $res = XDB::iterator("SELECT link_id AS jobid, tel_type AS type, pub, display_tel AS tel, comment + FROM profile_phones + WHERE uid = {?} AND link_type = 'pro' + ORDER BY link_id", + S::i('uid')); + $i = 0; + $jobNb = count($this->values['jobs']); + while ($phone = $res->next()) { + $jobid = $phone['jobid']; + while ($i < $jobNb && $this->values['jobs'][$i]['id'] < $jobid) { + $i++; + } + if ($i >= $jobNb) { + break; + } + $job =& $this->values['jobs'][$i]; + if (!isset($job['w_phone'])) { + $job['w_phone'] = array(); + } + if ($job['id'] == $jobid) { + $job['w_phone'][] = $phone; + } + } + foreach ($this->values['jobs'] as $id => &$job) { + if (!isset($job['w_phone'])) { + $job['w_phone'] = array( + 0 => array( + 'type' => 'fixed', + 'tel' => '', + 'pub' => 'private', + 'comment' => '', + ) + ); + } } - $job =& $this->values['jobs'][$i]; - if (!isset($job['w_phone'])) { - $job['w_phone'] = array(); + + $job['w_email_new'] = ''; + if (!isset($job['hq_phone'])) { + $job['hq_phone'] = ''; } - if ($job['id'] == $jobid) { - $job['w_phone'][] = $phone; + if (!isset($job['hq_fax'])) { + $job['hq_fax'] = ''; } - } - foreach ($this->values['jobs'] as $id => &$job) { - if (!isset($job['w_phone'])) { - $job['w_phone'] = array(); + if (!isset($job['w_email_pub'])) { + $job['w_email_pub'] = 'private'; } + if (!$job['hq_address']['text']) { + $job['hq_address'] = array( + 'text' => '', + 'accuracy' => '', + 'postalText' => '', + 'postalCode' => '', + 'administrativeAreaId' => '', + 'subAdministrativeAreaId' => '', + 'localityId' => '', + 'countryId' => '', + 'latitude' => '', + 'longitude' => '', + 'north' => '', + 'south' => '', + 'east' => '', + 'west' => '', + 'cedex' => '', + 'updateTime' => '', + 'changed' => '0', + 'removed' => '0', + ); + } + $job['w_address']['cedex'] = ''; + $job['w_address']['changed'] = '0'; + $job['w_address']['removed'] = '0'; + } else { + $this->values['jobs'][] = $this->settings['jobs']->emptyJob(); } } protected function _saveData() { if ($this->changed['cv']) { - XDB::execute("UPDATE auth_user_md5 + XDB::execute("UPDATE profiles SET cv = {?} - WHERE user_id = {?}", - $this->values['cv'], S::i('uid')); + WHERE pid = {?}", + $this->values['cv'], $this->pid()); } if ($this->changed['corps']) { @@ -340,14 +465,14 @@ class ProfileJobs extends ProfilePage rankid = {?}, corps_pub = {?} WHERE uid = {?}", $this->values['corps']['original'], $this->values['corps']['current'], - $this->values['corps']['rank'], $this->values['corps']['pub'], S::i('uid')); + $this->values['corps']['rank'], $this->values['corps']['pub'], $this->pid()); } } public function _prepare(PlPage &$page, $id) { require_once "emails.combobox.inc.php"; - fill_email_combobox($page); + fill_email_combobox($page, $this->owner, $this->profile); $res = XDB::query("SELECT id, name AS label FROM profile_job_sector_enum");