{
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)
public function save(ProfilePage &$page, $field, $value)
{
require_once 'name.func.inc.php';
- $sn_old = build_sn_pub();
+ $sn_old = build_sn_pub($page->pid());
XDB::execute("DELETE FROM s
USING profile_name AS s
INNER JOIN profile_name_enum AS e ON (s.typeid = e.id)
WHERE s.pid = {?} AND NOT FIND_IN_SET('not_displayed', e.flags)",
$page->pid());
- $has_new = set_alias_names($this->search_names, $sn_old);
+ $has_new = set_alias_names($this->search_names, $sn_old, $page->pid(), $page->owner->id());
// Only requires validation if modification in public names
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);
- set_profile_display($display_names);
+ build_display_names($display_names, $this->search_names,
+ $page->profile->isFemale(), $this->private_name_end);
+ set_profile_display($display_names, $page->pid());
}
}
}
$res = $res->fetchOneRow();
$page->assign('public_name', $res[0]);
$page->assign('private_name', $res[1]);
+ $page->assign('isFemale', $this->profile->isFemale() ? 1 : 0);
}
}