X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=upgrade%2F1.1.1%2F06_accounts.sql;h=2919fa390f72ea0e74565fb30f1d51a458d9b6bf;hb=602119a260d65a6a9d146e01d43bc21358d706d9;hp=4327491c833ae4af40fd7fa91b6262dfcbe842c0;hpb=b7753795d0f18daffebc809da1db886365dc461c;p=platal.git diff --git a/upgrade/1.1.1/06_accounts.sql b/upgrade/1.1.1/06_accounts.sql index 4327491..2919fa3 100644 --- a/upgrade/1.1.1/06_accounts.sql +++ b/upgrade/1.1.1/06_accounts.sql @@ -1,21 +1,23 @@ ALTER TABLE accounts ADD COLUMN firstname VARCHAR(255) DEFAULT NULL AFTER email; ALTER TABLE accounts ADD COLUMN lastname VARCHAR(255) DEFAULT NULL AFTER firstname; -UPDATE TABLE accounts AS a - 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 (a.uid = l.uid AND le.id = l.typeid) - LEFT JOIN profile_name AS c ON (a.uid = c.uid AND ce.id = c.typeid) - SET a.lastname = IF(c.uid IS NULL, IF(l.particle != '', l.name, CONCAT(l.particle, ' ', l.name)) - IF(c.particle != '', c.name, CONCAT(c.particle, ' ', c.name))) - WHERE a.type IN ('x', 'master', 'phd'); + 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.type IN ('x', 'master', 'phd'); -UPDATE TABLE accounts AS a - 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 (a.uid = f.uid AND fe.id = f.typeid) - LEFT JOIN profile_name AS c ON (a.uid = c.uid AND ce.id = c.typeid) - SET a.firstname = IF(c.uid IS NULL, f.name, c.name) - WHERE a.type IN ('x', 'master', 'phd'); + 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.type IN ('x', 'master', 'phd'); -- vim:set syntax=mysql: