X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fprofile%2Fgeneral.inc.php;h=7e2bfff83a1198c702f176d7dfa0234c685d8117;hb=87db81e71e24db248d1a5059dcd28781b0e2e75f;hp=4f9c1acd80a6c753de7c3ecdf51edea67e2e5e40;hpb=3ede4850569ec8e4930a5f403dc1a9590a7b5fec;p=platal.git diff --git a/modules/profile/general.inc.php b/modules/profile/general.inc.php index 4f9c1ac..7e2bfff 100644 --- a/modules/profile/general.inc.php +++ b/modules/profile/general.inc.php @@ -126,6 +126,10 @@ class ProfileSettingSearchNames implements ProfileSetting $value[] = $sn; } while ($sn = $sn_all->next()); } + $namesRequest = ProfileValidate::get_typed_requests($page->pid(), 'usage'); + if (count($namesRequest) > 0) { + Platal::page()->assign('validation', true); + } $value = $this->clean($value); } else { require_once 'name.func.inc.php'; @@ -206,7 +210,6 @@ class ProfileSettingSearchNames implements ProfileSetting public function save(ProfilePage &$page, $field, $value) { require_once 'name.func.inc.php'; - require_once 'validations.inc.php'; $sn_old = build_sn_pub($page->pid()); XDB::execute("DELETE FROM s @@ -226,9 +229,19 @@ class ProfileSettingSearchNames implements ProfileSetting $display_names = array(); build_display_names($display_names, $this->search_names, $page->profile->isFemale(), $this->private_name_end); - set_profile_display($display_names, $page->pid()); + set_profile_display($display_names, $page->profile); } } + + public function getText($value) { + $names = array(); + foreach ($value as $name) { + if ($name['name'] != '') { + $names[] = $name['type_name'] . ' : ' . $name['name']; + } + } + return implode(', ' , $names); + } } class ProfileSettingEdu implements ProfileSetting @@ -287,14 +300,30 @@ class ProfileSettingEdu implements ProfileSetting $page->pid()); foreach ($value as $eduid=>&$edu) { if ($edu['eduid'] != '') { + $fieldId = ($edu['fieldid'] == 0) ? null : $edu['fieldid']; XDB::execute("INSERT INTO profile_education SET id = {?}, pid = {?}, eduid = {?}, degreeid = {?}, fieldid = {?}, grad_year = {?}, program = {?}", $eduid, $page->pid(), $edu['eduid'], $edu['degreeid'], - $edu['fieldid'], $edu['grad_year'], $edu['program']); + $fieldId, $edu['grad_year'], $edu['program']); } } } + + public function getText($value) { + $schoolsList = DirEnum::getOptions(DirEnum::EDUSCHOOLS); + $degreesList = DirEnum::getOptions(DirEnum::EDUDEGREES); + $fieldsList = DirEnum::getOptions(DirEnum::EDUFIELDS); + $educations = array(); + foreach ($value as $education) { + $educations[] = 'Université : ' . $schoolsList[$education['eduid']] + . ', diplôme : ' . $degreesList[$education['degreeid']] + . ', domaine : ' . $fieldsList[$education['fieldid']] + . ', année d\'obtention : ' . $education['grad_year'] + . ', intitulé : ' . $education['program']; + } + return implode(', ', $educations); + } } class ProfileSettingEmailDirectory implements ProfileSetting @@ -320,6 +349,10 @@ class ProfileSettingEmailDirectory implements ProfileSetting } return $value; } + + public function getText($value) { + return $value; + } } class ProfileSettingNetworking implements ProfileSetting @@ -393,6 +426,15 @@ class ProfileSettingNetworking implements ProfileSetting $page->pid(), $id, $network['type'], $network['address'], $network['pub']); } } + + public function getText($value) { + $networkings = array(); + foreach ($value as $network) { + $networkings[] = 'nom : ' . $network['name'] . ', adresse : ' . $network['address'] + . ', affichage : ' . $network['pub']; + } + return implode(' ; ' , $networkings); + } } class ProfileSettingPromo implements ProfileSetting @@ -418,8 +460,6 @@ class ProfileSettingPromo implements ProfileSetting $gradYearNew, $page->profile->id()); Platal::page()->trigSuccess('Ton statut « orange » a été supprimé.'); } else { - require_once 'validations.inc.php'; - $myorange = new OrangeReq(S::user(), $page->profile, $gradYearNew); $myorange->submit(); Platal::page()->trigSuccess('Tu pourras changer l\'affichage de ta promotion dès que ta nouvelle promotion aura été validée.'); @@ -466,10 +506,14 @@ class ProfileSettingPromo implements ProfileSetting } return intval($value); } + + public function getText($value) { + return $value; + } } -class ProfileSettingGeneral extends ProfilePage +class ProfilePageGeneral extends ProfilePage { protected $pg_template = 'profile/general.tpl'; @@ -479,6 +523,9 @@ class ProfileSettingGeneral extends ProfilePage $this->settings['search_names'] = new ProfileSettingSearchNames(); $this->settings['birthdate'] = new ProfileSettingDate(); + if (!S::user()->isMe($this->owner)) { + $this->settings['deathdate'] = new ProfileSettingDate(); + } $this->settings['freetext_pub'] = $this->settings['photo_pub'] = new ProfileSettingPub(); @@ -494,7 +541,7 @@ class ProfileSettingGeneral extends ProfilePage $this->settings['email_directory_new'] = new ProfileSettingEmailDirectory(); $this->settings['networking'] = new ProfileSettingNetworking(); - $this->settings['tels'] = new ProfileSettingPhones('user', 0); + $this->settings['tels'] = new ProfileSettingPhones(); $this->settings['edus'] = new ProfileSettingEdu(); $this->settings['promo'] = new ProfileSettingPromo(); $this->watched= array('freetext' => true, 'tels' => true, @@ -507,17 +554,13 @@ class ProfileSettingGeneral extends ProfilePage { // Checkout all data... $res = XDB::query("SELECT p.nationality1, p.nationality2, p.nationality3, p.birthdate, - pp.display_tel as mobile, pp.pub as mobile_pub, p.email_directory as email_directory, pd.promo AS promo_display, - p.freetext, p.freetext_pub, p.ax_id AS matricule_ax, pd.yourself + p.freetext, p.freetext_pub, p.ax_id AS matricule_ax, pd.yourself, + p.deathdate FROM profiles AS p INNER JOIN profile_display AS pd ON (pd.pid = p.pid) - LEFT JOIN profile_phones AS pp ON (pp.pid = p.pid AND link_type = 'user') WHERE p.pid = {?}", $this->pid()); $this->values = $res->fetchOneAssoc(); - if ($this->owner) { - $this->values['yourself'] = $this->owner->displayName(); - } // Retreive photo informations $res = XDB::query("SELECT pub @@ -576,7 +619,7 @@ class ProfileSettingGeneral extends ProfilePage freetext = {?}, freetext_pub = {?}, email_directory = {?} WHERE pid = {?}", $this->values['nationality1'], $this->values['nationality2'], $this->values['nationality3'], - preg_replace('@(\d{2})/(\d{2})/(\d{4})@', '\3-\2-\1', $this->values['birthdate']), + ProfileSettingDate::toSQLDate($this->values['birthdate']), $this->values['freetext'], $this->values['freetext_pub'], $new_email, $this->pid()); } if ($this->changed['photo_pub']) { @@ -610,6 +653,25 @@ class ProfileSettingGeneral extends ProfilePage } } } + if ($this->changed['deathdate']) { + XDB::execute('UPDATE profiles + SET deathdate = {?}, deathdate_rec = NOW() + WHERE pid = {?} AND deathdate_rec IS NULL', + ProfileSettingDate::toSQLDate($this->values['deathdate']), $this->pid()); + if (XDB::affectedRows() > 0) { + $this->profile->clear(); + if ($this->owner) { + $this->owner->clear(true); + } + } else { + /* deathdate_rec was not NULL, this is just an update of the death date + */ + XDB::execute('UPDATE profiles + SET deathdate = {?} + WHERE pid = {?}', + ProfileSettingDate::toSQLDate($this->values['deathdate']), $this->pid()); + } + } } public function _prepare(PlPage &$page, $id) @@ -622,7 +684,7 @@ class ProfileSettingGeneral extends ProfilePage $page->assign('edu_fields', $res->fetchAllAssoc()); require_once "emails.combobox.inc.php"; - fill_email_combobox($page, $this->owner, $this->profile); + fill_email_combobox($page, $this->owner); $res = XDB::query("SELECT nw.nwid AS type, nw.name FROM profile_networking_enum AS nw