2 /***************************************************************************
3 * Copyright (C) 2003-2011 Polytechnique.org *
4 * http://opensource.polytechnique.org/ *
6 * This program is free software; you can redistribute it and/or modify *
7 * it under the terms of the GNU General Public License as published by *
8 * the Free Software Foundation; either version 2 of the License, or *
9 * (at your option) any later version. *
11 * This program is distributed in the hope that it will be useful, *
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
14 * GNU General Public License for more details. *
16 * You should have received a copy of the GNU General Public License *
17 * along with this program; if not, write to the Free Software *
19 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
20 ***************************************************************************/
22 class ProfileSettingSearchNames
implements ProfileSetting
24 private function diff($pid, array $old, array $new)
27 foreach ($old as $field => $name) {
28 $diff = $diff ||
($name != $new[$field]);
34 private function matchWord($old, $new, $newLen)
36 return ($i = strpos($old, $new)) !== false
37 && ($i == 0 ||
$old{$i-1} == ' ')
38 && ($i +
$newLen == strlen($old) ||
$old{$i +
$newLen} == ' ');
41 private function prepare(ProfilePage
$page, array &$new_value)
43 $initial_value = XDB
::fetchOneAssoc('SELECT lastname_main, firstname_main
44 FROM profile_public_names
49 foreach ($initial_value as $field => $name) {
50 $initial = name_to_basename($name);
51 $new = name_to_basename($new_value[$field]);
53 if (!($this->matchWord($initial, $new, strlen($new))
54 ||
($field == 'lastname_main' && $new == 'DE ' . $initial))) {
55 $new_value[$field . '_error'] = true
;
57 Platal
::page()->trigError('Le nom choisi (' . $new . ') est trop loin de sa valeur initiale (' . $initial . ').');
64 public function value(ProfilePage
$page, $field, $value, &$success)
68 if (is_null($value)) {
69 $request = NamesReq
::getPublicNames($page->pid());
72 $value['public_names'] = XDB
::fetchOneAssoc('SELECT particles, lastname_main, lastname_marital, lastname_ordinary,
73 firstname_main, firstname_ordinary, pseudonym
74 FROM profile_public_names
78 $flags = new PlFlagSet($value['public_names']['particles']);
79 unset($value['public_names']['particles']);
80 static $suffixes = array('main', 'marital', 'ordinary');
82 foreach ($suffixes as $suffix) {
83 $value['public_names']['particle_' . $suffix] = $flags->hasFlag($suffix);
86 $value['public_names'] = $request;
87 Platal
::page()->assign('validation', true
);
90 $value['private_names'] = XDB
::fetchAllAssoc('SELECT type, name
91 FROM profile_private_names
96 foreach ($value['public_names'] as $key => $name) {
97 $value['public_names'][$key] = trim($name);
99 foreach ($value['private_names'] as $key => $name) {
100 $value['private_names'][$key]['name'] = trim($name['name']);
101 if ($value['private_names'][$key]['name'] == '') {
102 unset($value['private_names'][$key]);
106 if (S
::user()->isMe($page->owner
)) {
107 $success = $this->prepare($page, $value['public_names']);
111 require_once 'name.func.inc.php';
112 $public_name = build_first_name($value['public_names']) . ' ' . build_full_last_name($value['public_names'], $page->profile
->isFemale());
113 $private_name_end = build_private_name($value['private_names']);
114 $private_name = $public_name . $private_name_end;
116 Platal
::page()->assign('public_name', $public_name);
117 Platal
::page()->assign('private_name', $private_name);
122 public function save(ProfilePage
$page, $field, $value)
124 require_once 'name.func.inc.php';
126 $old = XDB
::fetchOneAssoc('SELECT lastname_main, lastname_marital, lastname_ordinary,
127 firstname_main, firstname_ordinary, pseudonym
128 FROM profile_public_names
132 if ($has_diff = $this->diff($page->pid(), $old, $value['public_names'])) {
133 $new_names = new NamesReq(S
::user(), $page->profile
, $value['public_names'], $old);
134 $new_names->submit();
135 Platal
::page()->assign('validation', true
);
136 Platal
::page()->trigWarning('La demande de modification des noms a bien été prise en compte.' .
137 ' Un email sera envoyé dès que ces changements auront été effectués.');
140 XDB
::execute('DELETE FROM profile_private_names
144 $nickname = $lastname = $firstname = 0;
145 foreach ($value['private_names'] as $name) {
146 $values[] = XDB
::format('({?}, {?}, {?}, {?})', $page->pid(), $name['type'], $
$name['type']++
, $name['name']);
148 if (count($values)) {
149 XDB
::rawExecute('INSERT INTO profile_private_names (pid, type, id, name)
150 VALUES ' . implode(',', $values));
154 update_display_names($page->profile
, $old, $value['private_names']);
156 update_display_names($page->profile
, $value['public_names'], $value['private_names']);
160 public function getText($value) {
161 $public_names = array();
162 foreach ($value['public_names'] as $name) {
164 $public_names[] = $name;
168 if (count($value['private_names'])) {
169 $private_names = array();
170 foreach ($value['private_names'] as $name) {
171 $private_names[] = $name['name'];
173 return 'noms publics : ' . implode(', ' , $public_names) . ', noms privés : ' . implode(', ' , $private_names);;
176 return 'noms publics : ' . implode(', ' , $public_names);
180 class ProfileSettingEdu
implements ProfileSetting
182 public function __construct() {
185 static function sortByGradYear($line1, $line2) {
186 $a = (isset($line1['grad_year'])) ?
(int) $line1['grad_year'] : 0;
187 $b = (isset($line2['grad_year'])) ?
(int) $line2['grad_year'] : 0;
191 return ($a < $b) ?
-1 : 1;
194 public function value(ProfilePage
$page, $field, $value, &$success)
197 if (is_null($value)) {
199 $value = XDB
::fetchAllAssoc("SELECT eduid, degreeid, fieldid, grad_year, program
200 FROM profile_education
201 WHERE pid = {?} AND !(FIND_IN_SET('primary', flags) OR FIND_IN_SET('secondary', flags))
204 } else if (!is_array($value)) {
208 foreach ($value as $key=>&$edu) {
209 if ($edu['eduid'] < 1 ||
!isset($edu['degreeid']) ||
$edu['degreeid'] < 1) {
210 Platal
::page()->trigError('L\'université ou le diplôme d\'une formation manque.');
213 if (($edu['grad_year'] < 1921) ||
($edu['grad_year'] > (date('Y') +
4))) {
214 Platal
::page()->trigWarning('L\'année d\'obtention du diplôme est mal ou non renseignée, elle doit être du type : 2004.');
215 $edu['grad_year'] = null
;
216 $edu['warning'] = true
;
224 usort($value, array("ProfileSettingEdu", "sortByGradYear"));
229 public function save(ProfilePage
$page, $field, $value)
231 XDB
::execute("DELETE FROM profile_education
232 WHERE pid = {?} AND !(FIND_IN_SET('primary', flags) OR FIND_IN_SET('secondary', flags))",
234 $schoolsList = DirEnum
::getOptions(DirEnum
::EDUSCHOOLS
);
235 foreach ($value as $eduid=>&$edu) {
236 if ($edu['eduid'] != '' && $schoolsList[$edu['eduid']] != Profile
::EDU_X
) {
237 $fieldId = ($edu['fieldid'] == 0) ? null
: $edu['fieldid'];
238 XDB
::execute("INSERT INTO profile_education
239 SET id = {?}, pid = {?}, eduid = {?}, degreeid = {?},
240 fieldid = {?}, grad_year = {?}, program = {?}",
241 $eduid, $page->pid(), $edu['eduid'], $edu['degreeid'],
242 $fieldId, $edu['grad_year'], $edu['program']);
247 public function getText($value) {
248 $schoolsList = DirEnum
::getOptions(DirEnum
::EDUSCHOOLS
);
249 $degreesList = DirEnum
::getOptions(DirEnum
::EDUDEGREES
);
250 $fieldsList = DirEnum
::getOptions(DirEnum
::EDUFIELDS
);
251 $educations = array();
252 foreach ($value as $id => $education) {
253 // XXX: the following condition should be removed once there are no more incomplete educations.
254 if (is_null($education['eduid']) ||
is_null($education['degreeid'])) {
255 if (is_null($education['eduid']) && is_null($education['degreeid'])) {
256 $educations[$id] = 'formation manquante';
258 $educations[$id] = (is_null($education['eduid']) ?
'université manquante' : $schoolsList[$education['eduid']]) . ', '
259 . (is_null($education['degreeid']) ?
'diplôme manquant' : $degreesList[$education['degreeid']]);
262 $educations[$id] = $schoolsList[$education['eduid']] . ', ' . $degreesList[$education['degreeid']];
266 if ($education['grad_year']) {
267 $details[] = $education['grad_year'];
269 if ($education['program']) {
270 $details[] = '« ' . $education['program'] . ' »';
272 if ($education['fieldid']) {
273 $details[] = $fieldsList[$education['fieldid']];
275 if (count($details)) {
276 $educations[$id] .= ' (' . implode(', ', $details) . ')';
279 return implode(', ', $educations);
283 class ProfileSettingMainEdu
implements ProfileSetting
287 public function __construct()
289 $eduDegrees = DirEnum
::getOptions(DirEnum
::EDUDEGREES
);
290 $eduDegrees = array_flip($eduDegrees);
291 $this->cycles
= array(
292 $eduDegrees[Profile
::DEGREE_X
] => 'Cycle polytechnicien',
293 $eduDegrees[Profile
::DEGREE_M
] => 'Cycle master',
294 $eduDegrees[Profile
::DEGREE_D
] => 'Cycle doctoral'
298 public function value(ProfilePage
$page, $field, $value, &$success)
301 if (is_null($value)) {
303 $value = XDB
::fetchAllAssoc("SELECT degreeid, fieldid, promo_year, program
304 FROM profile_education
305 WHERE pid = {?} AND (FIND_IN_SET('primary', flags) OR FIND_IN_SET('secondary', flags))
306 ORDER BY NOT FIND_IN_SET('primary', flags), degreeid",
309 foreach ($value as &$item) {
310 $item['cycle'] = $this->cycles
[$item['degreeid']];
312 } elseif (!is_array($value)) {
315 foreach ($value as $key => $item) {
316 if (!isset($item['degreeid'])) {
325 public function save(ProfilePage
$page, $field, $value)
327 foreach ($value as $item) {
328 $fieldId = ($item['fieldid'] == 0) ? null
: $item['fieldid'];
329 XDB
::execute("UPDATE profile_education
330 SET fieldid = {?}, program = {?}
331 WHERE pid = {?} AND (FIND_IN_SET('primary', flags) OR FIND_IN_SET('secondary', flags)) AND degreeid = {?}",
332 $fieldId, $item['program'], $page->pid(), $item['degreeid']);
336 public function getText($value) {
337 $fieldsList = DirEnum
::getOptions(DirEnum
::EDUFIELDS
);
338 $educations = array();
339 foreach ($value as $item) {
340 $details = array($this->cycles
[$item['degreeid']]);
341 if ($education['program']) {
342 $details[] = '« ' . $education['program'] . ' »';
344 if ($education['fieldid']) {
345 $details[] = $fieldsList[$education['fieldid']];
348 return implode(', ', $educations);
352 class ProfileSettingEmailDirectory
implements ProfileSetting
354 public function __construct(){}
355 public function save(ProfilePage
$page, $field, $value){}
357 public function value(ProfilePage
$page, $field, $value, &$success)
362 if (!is_null($value)) {
363 $email_stripped = strtolower(trim($value));
364 if ((!isvalid_email($email_stripped)) && ($email_stripped) && ($page->values
['email_directory'] == "new@example.org")) {
365 $p->assign('email_error', '1');
366 $p->assign('email_directory_error', $email_stripped);
367 $p->trigError('Adresse Email invalide');
370 $p->assign('email_error', '0');
376 public function getText($value) {
381 class ProfileSettingNetworking
implements ProfileSetting
388 public function __construct()
390 $this->email
= new ProfileSettingEmail();
391 $this->pub
= new ProfileSettingPub();
392 $this->web
= new ProfileSettingWeb();
393 $this->number
= new ProfileSettingNumber();
396 public function value(ProfilePage
$page, $field, $value, &$success)
398 if (is_null($value)) {
399 $value = XDB
::fetchAllAssoc("SELECT n.address, n.pub, n.nwid AS type
400 FROM profile_networking AS n
404 if (!is_array($value)) {
407 $filters = XDB
::fetchAllAssoc('type', 'SELECT filter, nwid AS type, name
408 FROM profile_networking_enum;');
410 foreach($value as $i=>&$network) {
411 if (!trim($network['address'])) {
414 if (!isset($network['pub'])) {
415 $network['pub'] = 'private';
417 $network['error'] = false
;
418 $network['pub'] = $this->pub
->value($page, 'pub', $network['pub'], $s);
420 $network['name'] = $filters[$network['type']]['name'];
421 if ($filters[$network['type']]['filter'] == 'web') {
422 $network['address'] = $this->web
->value($page, 'address', $network['address'], $s);
423 } elseif ($filters[$network['type']]['filter'] == 'email') {
424 $network['address'] = $this->email
->value($page, 'address', $network['address'], $s);
425 } elseif ($filters[$network['type']]['filter'] == 'number') {
426 $network['address'] = $this->number
->value($page, 'address', $network['address'], $s);
430 $network['error'] = true
;
437 public function save(ProfilePage
$page, $field, $value)
439 XDB
::execute("DELETE FROM profile_networking
442 if (!count($value)) {
446 foreach ($value as $id=>$network) {
447 XDB
::execute("INSERT INTO profile_networking (pid, id, nwid, address, pub)
448 VALUES ({?}, {?}, {?}, {?}, {?})",
449 $page->pid(), $id, $network['type'], $network['address'], $network['pub']);
453 public function getText($value) {
454 static $pubs = array('public' => 'publique', 'ax' => 'annuaire AX', 'private' => 'privé');
455 $networkings = array();
456 foreach ($value as $network) {
457 $networkings[] = $network['name'] . ' : ' . $network['address'] . ' (affichage ' . $pubs[$network['pub']] . ')';
459 return implode(', ' , $networkings);
463 class ProfileSettingPromo
implements ProfileSetting
465 public function __construct(){}
467 public function save(ProfilePage
$page, $field, $value)
469 $gradYearNew = $value;
470 if ($page->profile
->mainEducation() == 'X') {
471 $gradYearNew +
= $page->profile
->mainEducationDuration();
473 if (($page->profile
->mainEducation() != 'X'
474 && $value == $page->profile
->entry_year +
$page->profile
->mainEducationDuration())
475 ||
($page->profile
->mainEducation() == 'X' && $value == $page->profile
->entry_year
)) {
476 XDB
::execute('UPDATE profile_display
479 $page->profile
->mainEducation() . strval($value), $page->profile
->id());
480 XDB
::execute('UPDATE profile_education
482 WHERE pid = {?} AND FIND_IN_SET(\'primary\', flags)',
483 $gradYearNew, $page->profile
->id());
484 Platal
::page()->trigSuccess('Ton statut « orange » a été supprimé.');
486 $myorange = new OrangeReq(S
::user(), $page->profile
, $gradYearNew);
488 Platal
::page()->trigSuccess('Tu pourras changer l\'affichage de ta promotion dès que ta nouvelle promotion aura été validée.');
492 public function value(ProfilePage
$page, $field, $value, &$success)
494 $entryYear = $page->profile
->entry_year
;
495 $gradYear = $page->profile
->grad_year
;
496 $yearpromo = $page->profile
->yearpromo();
498 if (is_null($value) ||
$value == $yearpromo) {
499 if ($gradYear != $entryYear +
$page->profile
->mainEducationDuration()) {
500 $promoChoice = array();
501 for ($i = $entryYear; $i <= $gradYear - $page->profile
->mainEducationDuration(); ++
$i) {
502 if ($page->profile
->mainEducation() == 'X') {
503 $promoChoice[] = $page->profile
->mainEducation() . strval($i);
505 $promoChoice[] = $page->profile
->mainEducation() . strval($i +
$page->profile
->mainEducationDuration());
508 Platal
::page()->assign('promo_choice', $promoChoice);
511 // If this profile belongs to an X, return grad year minus education duration.
512 if ($page->profile
->mainEducation() == 'X') {
513 return $gradYear - $page->profile
->mainEducationDuration();
519 // If this profile belongs to an X, $promoNew needs to be changed to
520 // the graduation year.
521 $gradYearNew = $value;
522 if ($page->profile
->mainEducation() == 'X') {
523 $gradYearNew +
= $page->profile
->mainEducationDuration();
526 if ($value < 1000 ||
$value > 9999) {
527 Platal
::page()->trigError('L\'année de sortie doit être un nombre de quatre chiffres.');
529 } elseif ($gradYearNew < $entryYear +
$page->profile
->mainEducationDuration()) {
530 Platal
::page()->trigError('Trop tôt !');
533 return intval($value);
536 public function getText($value) {
542 class ProfilePageGeneral
extends ProfilePage
544 protected $pg_template = 'profile/general.tpl';
546 public function __construct(PlWizard
$wiz)
548 parent
::__construct($wiz);
549 $this->settings
['search_names']
550 = new ProfileSettingSearchNames();
551 $this->settings
['nationality1']
552 = $this->settings
['nationality2']
553 = $this->settings
['nationality3']
554 = $this->settings
['promo_display']
556 $this->settings
['email_directory']
557 = new ProfileSettingEmail();
558 $this->settings
['email_directory_new']
559 = new ProfileSettingEmailDirectory();
560 $this->settings
['networking'] = new ProfileSettingNetworking();
561 $this->settings
['tels'] = new ProfileSettingPhones();
562 $this->settings
['edus'] = new ProfileSettingEdu();
563 $this->settings
['main_edus'] = new ProfileSettingMainEdu();
564 $this->settings
['promo'] = new ProfileSettingPromo();
565 $this->watched
= array('tels' => true
,
566 'networking' => true
, 'edus' => true
,
567 'nationality1' => true
, 'nationality2' => true
,
568 'nationality3' => true
, 'search_names' => true
);
570 /* Some fields editable under condition */
571 if (!S
::user()->isMe($this->owner
)) {
572 $this->settings
['deathdate'] = new ProfileSettingDate(true
);
573 $this->settings
['birthdate'] = new ProfileSettingDate(true
);
574 $this->settings
['birthdate_ref'] = new ProfileSettingDate(true
);
576 $this->settings
['yourself'] = null
;
577 $this->settings
['birthdate'] = new ProfileSettingDate();
579 if (S
::user()->checkPerms('directory_private')
580 || S
::user()->isMyProfile($this->owner
)) {
581 $this->settings
['freetext'] = null
;
582 $this->settings
['freetext_pub']
583 = $this->settings
['photo_pub']
584 = new ProfileSettingPub();
585 $this->watched
['freetext'] = true
;
590 protected function _fetchData()
592 // Checkout all data...
593 $res = XDB
::query("SELECT p.nationality1, p.nationality2, p.nationality3, IF(p.birthdate = 0, '', p.birthdate) AS birthdate,
594 p.email_directory as email_directory, pd.promo AS promo_display,
595 p.freetext, p.freetext_pub, p.ax_id AS matricule_ax, pd.yourself,
596 p.deathdate, IF(p.birthdate_ref = 0, '', p.birthdate_ref) AS birthdate_ref
598 INNER JOIN profile_display AS pd ON (pd.pid = p.pid)
599 WHERE p.pid = {?}", $this->pid());
600 $this->values
= $res->fetchOneAssoc();
602 // Retreive photo informations
603 $res = XDB
::query("SELECT pub
605 WHERE pid = {?}", $this->pid());
606 if ($res->numRows() == 0) {
607 $this->values
['photo_pub'] = 'private';
609 $this->values
['photo_pub'] = $res->fetchOneCell();
613 $res = XDB
::query("SELECT COUNT(*)
615 WHERE type = 'photo' AND pid = {?}",
617 $this->values
['nouvellephoto'] = $res->fetchOneCell();
619 $this->values
['nouvellephoto'] = 0;
623 protected function _saveData()
625 if ($this->changed
['nationality1'] ||
$this->changed
['nationality2'] ||
$this->changed
['nationality3']
626 ||
$this->changed
['birthdate'] ||
$this->changed
['freetext'] ||
$this->changed
['freetext_pub']
627 ||
$this->changed
['email_directory']) {
628 if ($this->values
['nationality3'] == "") {
629 $this->values
['nationality3'] = NULL
;
631 if ($this->values
['nationality2'] == "") {
632 $this->values
['nationality2'] = $this->values
['nationality3'];
633 $this->values
['nationality3'] = NULL
;
635 if ($this->values
['nationality1'] == "") {
636 $this->values
['nationality1'] = $this->values
['nationality2'];
637 $this->values
['nationality2'] = $this->values
['nationality3'];
638 $this->values
['nationality3'] = NULL
;
640 if ($this->values
['nationality1'] == $this->values
['nationality2']
641 && $this->values
['nationality2'] == $this->values
['nationality3']) {
642 $this->values
['nationality2'] = NULL
;
643 $this->values
['nationality3'] = NULL
;
644 } else if ($this->values
['nationality1'] == $this->values
['nationality2']) {
645 $this->values
['nationality2'] = $this->values
['nationality3'];
646 $this->values
['nationality3'] = NULL
;
647 } else if ($this->values
['nationality2'] == $this->values
['nationality3']
648 ||
$this->values
['nationality1'] == $this->values
['nationality3']) {
649 $this->values
['nationality3'] = NULL
;
652 $new_email = ($this->values
['email_directory'] == "new@example.org") ?
653 $this->values
['email_directory_new'] : $this->values
['email_directory'];
654 if ($new_email == "") {
658 XDB
::execute("UPDATE profiles
659 SET nationality1 = {?}, nationality2 = {?}, nationality3 = {?}, birthdate = {?},
660 freetext = {?}, freetext_pub = {?}, email_directory = {?}
662 $this->values
['nationality1'], $this->values
['nationality2'], $this->values
['nationality3'],
663 ProfileSettingDate
::toSQLDate($this->values
['birthdate']),
664 $this->values
['freetext'], $this->values
['freetext_pub'], $new_email, $this->pid());
666 if ($this->changed
['photo_pub']) {
667 XDB
::execute("UPDATE profile_photos
670 $this->values
['photo_pub'], $this->pid());
672 if (S
::user()->isMe($this->owner
) && $this->changed
['yourself']) {
674 XDB
::execute('UPDATE accounts
675 SET display_name = {?}
677 $this->values
['yourself'], $this->owner
->id());
679 XDB
::execute('UPDATE profile_display
681 WHERE pid = {?}', $this->values
['yourself'],
684 if ($this->changed
['promo_display']) {
685 if ($this->values
['promo_display']{0} == $this->profile
->mainEducation()) {
686 $yearpromo = intval(substr($this->values
['promo_display'], 1, 4));
687 if (($this->profile
->mainEducation() == 'X' && $yearpromo >= $this->profile
->entry_year
)
688 ||
($this->profile
->mainEducation() != 'X'
689 && $yearpromo >= $this->profile
->entry_year +
$this->profile
->mainEducationDuration())) {
690 XDB
::execute('UPDATE profile_display
693 $this->values
['promo_display'], $this->pid());
694 XDB
::execute('UPDATE profile_education
696 WHERE pid = {?} AND FIND_IN_SET(\'primary\', flags)',
697 $yearpromo, $this->pid());
701 if ($this->orig
['birthdate_ref'] == 0 && !S
::user()->isMe($this->owner
) && $this->changed
['birthdate_ref']) {
702 XDB
::execute('UPDATE profiles
703 SET birthdate_ref = {?}
705 ProfileSettingDate
::toSQLDate($this->values
['birthdate_ref']), $this->pid());
707 if (!S
::user()->isMe($this->owner
) && $this->changed
['deathdate']) {
708 XDB
::execute('UPDATE profiles
709 SET deathdate = {?}, deathdate_rec = NOW()
710 WHERE pid = {?} AND deathdate_rec IS NULL',
711 ProfileSettingDate
::toSQLDate($this->values
['deathdate']), $this->pid());
712 if (XDB
::affectedRows() > 0) {
713 $this->profile
->clear();
715 $this->owner
->clear(true
);
718 /* deathdate_rec was not NULL, this is just an update of the death date
720 XDB
::execute('UPDATE profiles
723 ProfileSettingDate
::toSQLDate($this->values
['deathdate']), $this->pid());
728 public function _prepare(PlPage
$page, $id)
730 require_once "education.func.inc.php";
732 $res = XDB
::query("SELECT id, field
733 FROM profile_education_field_enum
735 $page->assign('edu_fields', $res->fetchAllAssoc());
737 require_once "emails.combobox.inc.php";
738 fill_email_combobox($page, array('source', 'redirect', 'job', 'directory'), $this->owner
);
740 $res = XDB
::query("SELECT nw.nwid AS type, nw.name
741 FROM profile_networking_enum AS nw
743 $page->assign('network_list', $res->fetchAllAssoc());
745 $page->assign('lastnames', array('main' => 'Nom patronymique', 'marital' => 'Nom marital', 'ordinary' => 'Nom usuel'));
746 $page->assign('firstnames', array('firstname_main' => 'Prénom', 'firstname_ordinary' => 'Prénom usuel', 'pseudonym' => 'Pseudonyme (nom de plume)'));
747 $page->assign('other_names', array('nickname' => 'Surnom', 'firstname' => 'Autre prénom', 'lastname' => 'Autre nom'));
748 $page->assign('isFemale', $this->profile
->isFemale() ?
1 : 0);
752 // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: