* being DE_$basename).
*/
const NAMETYPES = 'nametypes';
+ const NAMES = 'names';
const BINETS = 'binets';
const GROUPESX = 'groupesx';
}
// }}}
+// {{{ class DE_Names
+// returns 'system' names ('lastname', 'lastname_marital', ...)
+class DE_Names extends DirEnumeration
+{
+ public $capabilities = 0x005; // self::HAS_OPTIONS | self::SAVE_IN_SESSION;
+
+ protected $from = 'profile_name_enum';
+ protected $idfield = 'type';
+ protected $valfield = 'name';
+}
+// }}}
+
/** GROUPS
*/
// {{{ class DE_Binets
{
private $private_name_end;
private $search_names;
+ private $name_types;
+
+ public function __construct() {
+ $this->name_types = DirEnum::getOptions(DirEnum::NAMES);
+ }
private function matchWord($old, $new, $newLen)
{
|| ($field == 'lastname' && $new == 'DE ' . $ini);
if (!$success) {
$field = strtolower($field);
- Platal::page()->trigError("Le " . $field . " que tu as choisi (" . $value .
- ") est trop loin de ton " . $field . " initial (" . $init . ").");
+ Platal::page()->trigError("Le " . $this->name_types[$field] . " que tu as choisi (" . $value .
+ ") est trop loin de ton " . $this->name_types[$field] . " initial (" . $init . ").");
}
return $success ? $value : $init;
}
+ /* Removes duplicated entries for the fields that do not allow them. */
+ private function clean($value)
+ {
+ $single_types = XDB::fetchAllAssoc('id',
+ 'SELECT id, 0
+ FROM profile_name_enum
+ WHERE NOT FIND_IN_SET(\'allow_duplicates\', flags)');
+
+ foreach ($value as $key => $item) {
+ if (isset($single_types[$item['typeid']])) {
+ if ($single_types[$item['typeid']] === true) {
+ unset($value[$key]);
+ } else {
+ $single_types[$item['typeid']] = true;
+ }
+ }
+ }
+
+ return $value;
+ }
+
public function value(ProfilePage &$page, $field, $value, &$success)
{
$success = true;
$value[] = $sn;
} while ($sn = $sn_all->next());
}
+ $value = $this->clean($value);
} else {
require_once 'name.func.inc.php';
+ $value = $this->clean($value);
$res = XDB::query("SELECT s.particle, s.name
FROM profile_name AS s
INNER JOIN profile_name_enum AS e ON (e.id = s.typeid)
if ($has_new) {
$new_names = new NamesReq(S::user(), $this->search_names, $this->private_name_end);
$new_names->submit();
- Platal::page()->trigWarning("La demande de modification de tes noms a bien été prise en compte." .
- " Tu recevras un email dès que ces changements auront été effectués.");
+ Platal::page()->trigWarning('La demande de modification de tes noms a bien été prise en compte.' .
+ ' Tu recevras un email dès que ces changements auront été effectués.');
} else {
$display_names = array();
build_display_names($display_names, $this->search_names, $this->private_name_end);
name VARCHAR(255) NOT NULL,
explanations VARCHAR(255) NOT NULL,
type VARCHAR(255) NOT NULL,
- flags SET('has_particle', 'not_displayed', 'always_displayed', 'public') NOT NULL,
+ flags SET('has_particle', 'not_displayed', 'always_displayed', 'public', 'allow_duplicates') NOT NULL,
score TINYINT(2) UNSIGNED NOT NULL DEFAULT 10,
PRIMARY KEY (id),
UNIQUE (name)
('Prénom', 'always_displayed,public', 'Ton prénom', 'firstname', 10),
('Pseudonyme (nom de plume)', 'always_displayed,public',
'Pseudonyme pour les artistes, gens de lettres', 'pseudonym', 10),
- ('Surnom', '', 'Surnom à l\'École ou ailleurs', 'nickname', 2),
+ ('Surnom', 'allow_duplicates', 'Surnom à l\'École ou ailleurs', 'nickname', 2),
('Prénom usuel', 'public', 'Si tu utilises une version raccourcie, francisée... de ton prénom',
'firstname_ordinary', 10),
- ('Autre prénom', '', 'Si tu as d\'autres prénoms et que tu souhaites les faire apparaître',
+ ('Autre prénom', 'allow_duplicates', 'Si tu as d\'autres prénoms et que tu souhaites les faire apparaître',
'firstname_other', 1),
- ('Autre nom', '', 'Si tu as d\'autres noms et que tu souhaites les faire apparaître',
+ ('Autre nom', 'allow_duplicates', 'Si tu as d\'autres noms et que tu souhaites les faire apparaître',
'name_other', 1),
('Nom initial', 'has_particle,not_displayed,public', '', 'name_ini', 10),
('Prénom initial', 'has_particle,not_displayed,public', '', 'firstname_ini', 10);