<?php
/***************************************************************************
- * Copyright (C) 2003-2011 Polytechnique.org *
+ * Copyright (C) 2003-2014 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
public function value(ProfilePage $page, $field, $value, &$success)
{
+ require_once 'name.func.inc.php';
$success = true;
if (is_null($value)) {
$request = NamesReq::getPublicNames($page->pid());
if (!$request) {
- $value['public_names'] = XDB::fetchOneAssoc('SELECT particles, lastname_main, lastname_marital, lastname_ordinary,
+ $value['public_names'] = XDB::fetchOneAssoc('SELECT lastname_main, lastname_marital, lastname_ordinary,
firstname_main, firstname_ordinary, pseudonym
FROM profile_public_names
WHERE pid = {?}',
$page->pid());
-
- $flags = new PlFlagSet($value['public_names']['particles']);
- unset($value['public_names']['particles']);
- static $suffixes = array('main', 'marital', 'ordinary');
-
- foreach ($suffixes as $suffix) {
- $value['public_names']['particle_' . $suffix] = $flags->hasFlag($suffix);
- }
} else {
$value['public_names'] = $request;
Platal::page()->assign('validation', true);
$page->pid());
} else {
foreach ($value['public_names'] as $key => $name) {
- $value['public_names'][$key] = trim($name);
+ $value['public_names'][$key] = capitalize_name(trim($name));
}
- foreach ($value['private_names'] as $key => $name) {
- $value['private_names'][$key]['name'] = trim($name['name']);
- if ($value['private_names'][$key]['name'] == '') {
- unset($value['private_names'][$key]);
+ if (isset($value['private_names'])) {
+ foreach ($value['private_names'] as $key => $name) {
+ $value['private_names'][$key]['name'] = trim($name['name']);
+ if ($value['private_names'][$key]['name'] == '') {
+ unset($value['private_names'][$key]);
+ }
}
}
}
}
- require_once 'name.func.inc.php';
$public_name = build_first_name($value['public_names']) . ' ' . build_full_last_name($value['public_names'], $page->profile->isFemale());
- $private_name_end = build_private_name($value['private_names']);
- $private_name = $public_name . $private_name_end;
+ if (isset($value['private_names'])) {
+ $private_name_end = build_private_name($value['private_names']);
+ $private_name = $public_name . $private_name_end;
+ } else {
+ $value['private_names'] = array();
+ $private_name = $public_name;
+ }
Platal::page()->assign('public_name', $public_name);
Platal::page()->assign('private_name', $private_name);
$page->pid());
$values = array();
$nickname = $lastname = $firstname = 0;
- foreach ($value['private_names'] as $name) {
- $values[] = XDB::format('({?}, {?}, {?}, {?})', $page->pid(), $name['type'], $$name['type']++, $name['name']);
+ if (isset($value['private_names'])) {
+ foreach ($value['private_names'] as $name) {
+ $values[] = XDB::format('({?}, {?}, {?}, {?})', $page->pid(), $name['type'], $$name['type']++, $name['name']);
+ }
}
if (count($values)) {
XDB::rawExecute('INSERT INTO profile_private_names (pid, type, id, name)
if ($has_diff) {
update_display_names($page->profile, $old, $value['private_names']);
} else {
- update_display_names($page->profile, $value['public_names'], $value['private_names']);
+ update_display_names($page->profile,
+ $value['public_names'], (isset($value['private_names']) ? $value['private_names'] : null));
}
}
}
}
- if (count($value['private_names'])) {
+ if (isset($value['private_names']) && count($value['private_names'])) {
$private_names = array();
foreach ($value['private_names'] as $name) {
$private_names[] = $name['name'];
$educations = array();
foreach ($value as $item) {
$details = array($this->cycles[$item['degreeid']]);
- if ($education['program']) {
- $details[] = '« ' . $education['program'] . ' »';
+ if ($item['program']) {
+ $details[] = '« ' . $item['program'] . ' »';
}
- if ($education['fieldid']) {
- $details[] = $fieldsList[$education['fieldid']];
+ if ($item['fieldid']) {
+ $details[] = $fieldsList[$item['fieldid']];
}
}
return implode(', ', $educations);
}
public function getText($value) {
- static $pubs = array('public' => 'publique', 'ax' => 'annuaire AX', 'private' => 'privé');
+ static $pubs = array('public' => 'publique', 'ax' => 'annuaire papier', 'private' => 'privé', 'hidden' => 'administrateurs');
$networkings = array();
foreach ($value as $network) {
$networkings[] = $network['name'] . ' : ' . $network['address'] . ' (affichage ' . $pubs[$network['pub']] . ')';
}
}
+class ProfileSettingHobby implements ProfileSetting
+{
+ private $pub;
+ static private $type = array('Sport', 'Loisir', 'Hobby');
+
+ public function __construct()
+ {
+ $this->pub = new ProfileSettingPub();
+ }
+
+ public function value(ProfilePage $page, $field, $value, &$success)
+ {
+ $success = true;
+ if (is_null($value)) {
+ $value = XDB::fetchAllAssoc('SELECT type, text, pub
+ FROM profile_hobby
+ WHERE pid = {?}',
+ $page->pid());
+ }
+ if (!is_array($value)) {
+ return array();
+ }
+ foreach($value as $i => &$hobby) {
+ $hobby['text'] = trim($hobby['text']);
+ if (!$hobby['text'] ||!in_array($hobby['type'], self::$type)) {
+ unset($value[$i]);
+ } else {
+ if (!isset($hobby['pub'])) {
+ $hobby['pub'] = 'private';
+ }
+ $s = true;
+ $hobby['pub'] = $this->pub->value($page, 'pub', $hobby['pub'], $s);
+ $success = $success && $s;
+ }
+ }
+ return $value;
+ }
+
+ public function save(ProfilePage $page, $field, $value)
+ {
+ XDB::execute('DELETE FROM profile_hobby
+ WHERE pid = {?}',
+ $page->pid());
+ if (!count($value)) {
+ return;
+ }
+ foreach ($value as $id => $hobby) {
+ XDB::execute("INSERT INTO profile_hobby (pid, id, type, text, pub)
+ VALUES ({?}, {?}, {?}, {?}, {?})",
+ $page->pid(), $id, $hobby['type'], $hobby['text'], $hobby['pub']);
+ }
+ }
+
+ public function getText($value) {
+ static $pubs = array('public' => 'publique', 'ax' => 'annuaire papier', 'private' => 'privé', 'hidden' => 'administrateurs');
+ $hobbies = array();
+ foreach (self::$type as $type) {
+ $hobbies[$type] = array();
+ }
+ foreach ($value as $hobby) {
+ $hobbies[$hobby['type']][] = $hobby['text'] . ' (affichage ' . $pubs[$hobby['pub']] . ')';
+ }
+ $text = array();
+ foreach (self::$type as $type) {
+ if (!empty($hobbies[$type])) {
+ $text[] = $hobbies[$type] . ' : ' . implode(', ' , $hobbies[$type]);
+ }
+ }
+ return implode(', ' , $text);
+ }
+}
+
+
class ProfileSettingPromo implements ProfileSetting
{
public function __construct(){}
public function __construct(PlWizard $wiz)
{
parent::__construct($wiz);
- $this->settings['search_names']
- = new ProfileSettingSearchNames();
- $this->settings['nationality1']
- = $this->settings['nationality2']
- = $this->settings['nationality3']
- = $this->settings['promo_display']
- = null;
- $this->settings['email_directory']
- = new ProfileSettingEmail();
- $this->settings['email_directory_new']
- = new ProfileSettingEmailDirectory();
- $this->settings['networking'] = new ProfileSettingNetworking();
- $this->settings['tels'] = new ProfileSettingPhones();
- $this->settings['edus'] = new ProfileSettingEdu();
+ $this->settings['search_names'] = new ProfileSettingSearchNames();
+ $this->settings['nationality1'] = $this->settings['nationality2']
+ = $this->settings['nationality3']
+ = $this->settings['promo_display']
+ = $this->settings['profile_title']
+ = null;
+ $this->settings['email_directory'] = new ProfileSettingEmail();
+ $this->settings['email_directory_new'] = new ProfileSettingEmailDirectory();
+ $this->settings['tels'] = new ProfileSettingPhones();
+ $this->settings['edus'] = new ProfileSettingEdu();
$this->settings['main_edus'] = new ProfileSettingMainEdu();
$this->settings['promo'] = new ProfileSettingPromo();
- $this->watched= array('tels' => true,
- 'networking' => true, 'edus' => true,
- 'nationality1' => true, 'nationality2' => true,
- 'nationality3' => true, 'search_names' => true);
+ $this->settings['networking'] = new ProfileSettingNetworking();
+ $this->settings['hobbies'] = new ProfileSettingHobby();
+ $this->watched = array('tels' => true,
+ 'networking' => true, 'edus' => true,
+ 'nationality1' => true, 'nationality2' => true,
+ 'nationality3' => true, 'search_names' => true);
/* Some fields editable under condition */
if (!S::user()->isMe($this->owner)) {
$this->settings['deathdate'] = new ProfileSettingDate(true);
$this->settings['birthdate'] = new ProfileSettingDate(true);
$this->settings['birthdate_ref'] = new ProfileSettingDate(true);
+ $this->settings['axfreetext'] = null;
} else {
$this->settings['yourself'] = null;
$this->settings['birthdate'] = new ProfileSettingDate();
if (S::user()->checkPerms('directory_private')
|| S::user()->isMyProfile($this->owner)) {
$this->settings['freetext'] = null;
- $this->settings['freetext_pub']
- = $this->settings['photo_pub']
- = new ProfileSettingPub();
+ $this->settings['freetext_pub'] = $this->settings['photo_pub']
+ = new ProfileSettingPub();
$this->watched['freetext'] = true;
}
+ Platal::page()->assign('is_registered', ($this->owner->perms ? true : false));
}
protected function _fetchData()
// Checkout all data...
$res = XDB::query("SELECT p.nationality1, p.nationality2, p.nationality3, IF(p.birthdate = 0, '', p.birthdate) AS birthdate,
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.deathdate, IF(p.birthdate_ref = 0, '', p.birthdate_ref) AS birthdate_ref
+ p.freetext, p.freetext_pub, p.axfreetext, p.ax_id AS matricule_ax, pd.yourself,
+ p.deathdate, IF(p.birthdate_ref = 0, '', p.birthdate_ref) AS birthdate_ref,
+ p.title AS profile_title
FROM profiles AS p
INNER JOIN profile_display AS pd ON (pd.pid = p.pid)
WHERE p.pid = {?}", $this->pid());
{
if ($this->changed['nationality1'] || $this->changed['nationality2'] || $this->changed['nationality3']
|| $this->changed['birthdate'] || $this->changed['freetext'] || $this->changed['freetext_pub']
- || $this->changed['email_directory']) {
+ || $this->changed['axfreetext'] || $this->changed['email_directory'] || $this->changed['profile_title']) {
if ($this->values['nationality3'] == "") {
$this->values['nationality3'] = NULL;
}
XDB::execute("UPDATE profiles
SET nationality1 = {?}, nationality2 = {?}, nationality3 = {?}, birthdate = {?},
- freetext = {?}, freetext_pub = {?}, email_directory = {?}
+ freetext = {?}, freetext_pub = {?}, axfreetext = {?}, email_directory = {?}, title = {?}
WHERE pid = {?}",
$this->values['nationality1'], $this->values['nationality2'], $this->values['nationality3'],
ProfileSettingDate::toSQLDate($this->values['birthdate']),
- $this->values['freetext'], $this->values['freetext_pub'], $new_email, $this->pid());
+ $this->values['freetext'], $this->values['freetext_pub'], $this->values['axfreetext'], $new_email,
+ $this->values['profile_title'], $this->pid());
}
if ($this->changed['photo_pub']) {
XDB::execute("UPDATE profile_photos
}
}
}
- if ($this->orig['birthdate_ref'] == 0 && !S::user()->isMe($this->owner) && $this->changed['birthdate_ref']) {
+ if ($this->changed['birthdate_ref'] && S::admin() && !$this->owner->perms) {
XDB::execute('UPDATE profiles
SET birthdate_ref = {?}
WHERE pid = {?}',
}
}
-// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker fenc=utf-8:
?>