| @@ -4,9 +4,8 @@ | ||
| 4 | 4 | |
| 5 | 5 | namespace UserAccessManager\Setup\Update; |
| 6 | 6 | |
| 7 | 7 | use UserAccessManager\Object\ObjectHandler; |
| 8 | -use UserAccessManager\Setup\Database\DatabaseUpdate; | |
| 9 | 8 | |
| 10 | 9 | class DatabaseUpdate4 extends DatabaseUpdate |
| 11 | 10 | { |
| 12 | 11 | public function getVersion(): string |
| @@ -16,54 +15,34 @@ | ||
| 16 | 15 | |
| 17 | 16 | public function update(): bool |
| 18 | 17 | { |
| 19 | 18 | $dbAccessGroupToObject = $this->database->getUserGroupToObjectTable(); |
| 20 | - $alterQuery = "ALTER TABLE {$dbAccessGroupToObject} | |
| 21 | - ADD general_object_type VARCHAR(64) NOT NULL AFTER object_id"; | |
| 19 | + $alterQuery = "ALTER TABLE `{$dbAccessGroupToObject}` | |
| 20 | + ADD `general_object_type` VARCHAR(64) NOT NULL AFTER `object_id`"; | |
| 22 | 21 | |
| 23 | 22 | $success = $this->database->query($alterQuery) !== false; |
| 24 | 23 | |
| 25 | - // Update post entries | |
| 26 | - $generalPostType = ObjectHandler::GENERAL_POST_OBJECT_TYPE; | |
| 27 | - | |
| 28 | - $query = "UPDATE {$dbAccessGroupToObject} | |
| 29 | - SET general_object_type = '$generalPostType' | |
| 30 | - WHERE object_type IN ('post', 'page', 'attachment')"; | |
| 31 | - | |
| 32 | - $success = $success && $this->database->query($query) !== false; | |
| 33 | - | |
| 34 | - // Update role entries | |
| 35 | - $generalRoleType = ObjectHandler::GENERAL_ROLE_OBJECT_TYPE; | |
| 36 | - | |
| 37 | - $query = "UPDATE {$dbAccessGroupToObject} | |
| 38 | - SET general_object_type = '$generalRoleType' | |
| 39 | - WHERE object_type = 'role'"; | |
| 40 | - | |
| 41 | - $success = $success && $this->database->query($query) !== false; | |
| 42 | - | |
| 43 | - // Update user entries | |
| 44 | - $generalUserType = ObjectHandler::GENERAL_USER_OBJECT_TYPE; | |
| 45 | - | |
| 46 | - $query = "UPDATE {$dbAccessGroupToObject} | |
| 47 | - SET general_object_type = '$generalUserType' | |
| 48 | - WHERE object_type = 'user'"; | |
| 49 | - | |
| 50 | - $success = $success && $this->database->query($query) !== false; | |
| 51 | - | |
| 52 | - // Update term entries | |
| 53 | 24 | $generalTermType = ObjectHandler::GENERAL_TERM_OBJECT_TYPE; |
| 25 | + $objectTypeConditions = [ | |
| 26 | + ObjectHandler::GENERAL_POST_OBJECT_TYPE => "`object_type` IN ('post', 'page', 'attachment')", | |
| 27 | + ObjectHandler::GENERAL_ROLE_OBJECT_TYPE => "`object_type` = 'role'", | |
| 28 | + ObjectHandler::GENERAL_USER_OBJECT_TYPE => "`object_type` = 'user'", | |
| 29 | + $generalTermType => "`object_type` = 'term'" | |
| 30 | + ]; | |
| 54 | 31 | |
| 55 | - $query = "UPDATE {$dbAccessGroupToObject} | |
| 56 | - SET general_object_type = '$generalTermType' | |
| 57 | - WHERE object_type = 'term'"; | |
| 32 | + foreach ($objectTypeConditions as $generalObjectType => $condition) { | |
| 33 | + $query = "UPDATE `{$dbAccessGroupToObject}` | |
| 34 | + SET `general_object_type` = '$generalObjectType' | |
| 35 | + WHERE $condition"; | |
| 58 | 36 | |
| 59 | - $success = $success && $this->database->query($query) !== false; | |
| 37 | + $success = $success && $this->database->query($query) !== false; | |
| 38 | + } | |
| 60 | 39 | |
| 61 | - $query = "UPDATE $dbAccessGroupToObject AS gto | |
| 62 | - LEFT JOIN {$this->database->getTermTaxonomyTable()} AS tt | |
| 63 | - ON gto.object_id = tt.term_id | |
| 64 | - SET gto.object_type = tt.taxonomy | |
| 65 | - WHERE gto.general_object_type = '$generalTermType'"; | |
| 40 | + $query = "UPDATE `$dbAccessGroupToObject` AS `gto` | |
| 41 | + LEFT JOIN `{$this->database->getTermTaxonomyTable()}` AS `tt` | |
| 42 | + ON `gto`.`object_id` = `tt`.`term_id` | |
| 43 | + SET `gto`.`object_type` = `tt`.`taxonomy` | |
| 44 | + WHERE `gto`.`general_object_type` = '$generalTermType'"; | |
| 66 | 45 | |
| 67 | 46 | return $success && $this->database->query($query) !== false; |
| 68 | 47 | } |
| 69 | 48 | } |