From e925669b7495e7064b2643c0570060e372090817 Mon Sep 17 00:00:00 2001 From: Andrey Kutejko Date: Sat, 30 Dec 2017 16:08:30 +0100 Subject: [PATCH] use PDO in syncperms command --- ipf/admin/commands/syncperms.php | 53 ++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 17 deletions(-) diff --git a/ipf/admin/commands/syncperms.php b/ipf/admin/commands/syncperms.php index c2a4319..3fa8e7b 100644 --- a/ipf/admin/commands/syncperms.php +++ b/ipf/admin/commands/syncperms.php @@ -30,34 +30,53 @@ class IPF_Admin_Command_SyncPerms } - $existing = \PFF\Container::databaseQuery() - ->from('auth_permission') - ->orderBy('name') - ->fetchAll('name'); - print "\nEXISTING PERMISSIONS:\n ".implode("\n ", array_keys($existing))."\n"; + $existing = $this->fetchExistingPermissions(); + print "\nEXISTING PERMISSIONS:\n ".implode("\n ", $existing)."\n"; - $toDel = array_diff(array_keys($existing), array_keys($permissions)); + $toDel = array_diff($existing, array_keys($permissions)); if (count($toDel)) { print "\nDELETING:\n ".implode("\n ", $toDel)."\n"; - \PFF\Container::databaseQuery() - ->deleteFrom('auth_permission') - ->where('name', $toDel) - ->execute(); + foreach ($toDel as $name) { + $this->deletePermission($name); + } } - $toAdd = array_diff(array_keys($permissions), array_keys($existing)); + $toAdd = array_diff(array_keys($permissions), $existing); if (count($toAdd)) { print "\nADDING:\n ".implode("\n ", $toAdd)."\n"; - foreach ($toAdd as $name) { - \PFF\Container::databaseQuery() - ->insertInto('auth_permission') - ->values(array('name' => $name)) - ->execute(); + $this->addPermission($name); } } } -} + private function fetchExistingPermissions() + { + $connection = \PFF\Container::databaseConnection(); + $stmt = $connection->prepare('SELECT name FROM auth_permission ORDER BY name'); + $stmt->execute(); + $existing = []; + foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) { + $existing[] = $row['name']; + } + return $existing; + } + + private function addPermission($permission) + { + $connection = \PFF\Container::databaseConnection(); + $stmt = $connection->prepare('INSERT INTO auth_permission (name) VALUES (:name)'); + $stmt->bindValue('name', $permission, PDO::PARAM_STR); + $stmt->execute(); + } + + private function deletePermission($permission) + { + $connection = \PFF\Container::databaseConnection(); + $stmt = $connection->prepare('DELETE FROM auth_permission WHERE name = :name'); + $stmt->bindValue('name', $permission, PDO::PARAM_STR); + $stmt->execute(); + } +} -- 2.49.0