I forgot to commit the sql script for last commits.
[platal.git] / include / name.func.inc.php
index d2cbe65..1f78daf 100644 (file)
@@ -317,6 +317,30 @@ function set_alias_names(&$sn_new, $sn_old, $pid, PlUser $user, $update_new = fa
                             WHERE  name = {?}',
                      $new_alias, $user->id(), $user->mainEmailDomain());
     }
+
+    // XXX: Improve this when we optimize names handling.
+    // Updates accounts firt and last names.
+    XDB::execute('UPDATE  accounts          AS a
+              INNER JOIN  account_profiles  AS ap ON (ap.uid = a.uid AND FIND_IN_SET(\'owner\', ap.perms))
+              INNER JOIN  profile_name_enum AS le ON (le.type = \'lastname\')
+              INNER JOIN  profile_name_enum AS ce ON (ce.type = \'lastname_ordinary\')
+              INNER JOIN  profile_name      AS l  ON (ap.pid = l.pid AND le.id = l.typeid)
+               LEFT JOIN  profile_name      AS c  ON (ap.pid = c.pid AND ce.id = c.typeid)
+                     SET  a.lastname = IF(c.pid IS NULL, IF(l.particle != \'\', l.name, CONCAT(l.particle, \' \', l.name)),
+                                                         IF(c.particle != \'\', c.name, CONCAT(c.particle, \' \', c.name)))
+                   WHERE  a.uid = {?}',
+                 $user->id());
+
+    XDB::execute('UPDATE  accounts          AS a
+              INNER JOIN  account_profiles  AS ap ON (ap.uid = a.uid AND FIND_IN_SET(\'owner\', ap.perms))
+              INNER JOIN  profile_name_enum AS fe ON (fe.type = \'firstname\')
+              INNER JOIN  profile_name_enum AS ce ON (ce.type = \'firstname_ordinary\')
+              INNER JOIN  profile_name      AS f  ON (ap.pid = f.pid AND fe.id = f.typeid)
+               LEFT JOIN  profile_name      AS c  ON (ap.pid = c.pid AND ce.id = c.typeid)
+                     SET  a.firstname = IF(c.pid IS NULL, f.name, c.name)
+                   WHERE  a.uid = {?}',
+                 $user->id());
+
     Profile::rebuildSearchTokens($pid, false);
     return $has_new;
 }