From e30bfa19a323c4c1e88c41460dbcacfdf243b2f2 Mon Sep 17 00:00:00 2001 From: Andrey Kutejko Date: Sat, 23 Aug 2014 08:08:09 +0300 Subject: [PATCH] sync permissions --- ipf/admin/commands/syncperms.php | 51 ++++++++++++++++---------------- ipf/auth/models.php | 15 ++++++++++ ipf/project.php | 4 +++ 3 files changed, 44 insertions(+), 26 deletions(-) create mode 100644 ipf/auth/models.php diff --git a/ipf/admin/commands/syncperms.php b/ipf/admin/commands/syncperms.php index c56430b..7940096 100644 --- a/ipf/admin/commands/syncperms.php +++ b/ipf/admin/commands/syncperms.php @@ -11,7 +11,7 @@ class IPF_Admin_Command_SyncPerms IPF_Admin_App::loadAllModels(); - print "COLLECTED PERMS:\n----\n"; + print "COLLECTED PERMISSIONS:\n"; $permissions = array(); foreach (IPF_Project::getInstance()->appList() as $appname => $app) { foreach (IPF_Legacy_ORM_App::appModelList($app) as $modelName) { @@ -20,46 +20,45 @@ class IPF_Admin_Command_SyncPerms foreach ($adminModel->getPerms(null) as $permName) { $name = get_class($app).'|'.$modelName.'|'.$permName; $permissions[$name] = array($app, $modelName, $permName); - print $name."\n"; + print ' '.$name."\n"; } } } } - print "\n"; - - print "EXISTING PERMS:\n----\n"; - $existingPerms = array(); - foreach (Permission::table()->findAll() as $model) { - $existingPerms[$model->name] = $model; - print $model->name."\n"; - } - print "\n"; - $toDel = array_diff(array_keys($existingPerms), array_keys($permissions)); + $existing = \PFF\Container::databaseQuery() + ->from('auth_permission') + ->orderBy('name') + ->fetchAll('name'); + print "\nEXISTING PERMISSIONS:\n ".implode("\n ", array_keys($existing))."\n"; - print "2DEL:\n----\n".implode("\n", $toDel)."\n----\n"; + $toDel = array_diff(array_keys($existing), array_keys($permissions)); if (count($toDel)) { - Permission::query() - ->delete() - ->where("name in ('".implode("','", $toDel)."')") + print "\nDELETING:\n ".implode("\n ", $toDel)."\n"; + \PFF\Container::databaseQuery() + ->deleteFrom('auth_permission') + ->where('name', $toDel) ->execute(); } - $toAdd = array_diff(array_keys($permissions), array_keys($existingPerms)); + $toAdd = array_diff(array_keys($permissions), array_keys($existing)); + if (count($toAdd)) { + print "\nADDING:\n ".implode("\n ", $toAdd)."\n"; - print "2ADD:\n----\n".implode("\n", $toAdd)."\n----\n"; + foreach ($toAdd as $name) { + $app = $permissions[$name][0]; + $admin = IPF_Admin_Model::getModelAdmin($permissions[$name][1]); - foreach ($toAdd as $name) { - $app = $permissions[$name][0]; - $admin = IPF_Admin_Model::getModelAdmin($permissions[$name][1]); - - $model = new Permission; - $model->name = $name; - $model->title = $app->getTitle().' | '.$admin->verbose_name().' | '.ucfirst($permissions[$name][2]); - $model->save(); + \PFF\Container::databaseQuery() + ->insertInto('auth_permission') + ->values(array( + 'name' => $name, + 'title' => $app->getTitle().' | '.$admin->verbose_name().' | '.ucfirst($permissions[$name][2]), + ))->execute(); + } } } } diff --git a/ipf/auth/models.php b/ipf/auth/models.php new file mode 100644 index 0000000..5012883 --- /dev/null +++ b/ipf/auth/models.php @@ -0,0 +1,15 @@ +from('auth_permission') + ->asObject('Permission') + ->orderBy('name'); + } +} + diff --git a/ipf/project.php b/ipf/project.php index 97e253a..8bb7ded 100644 --- a/ipf/project.php +++ b/ipf/project.php @@ -76,6 +76,10 @@ final class IPF_Project { \PFF\Container::setFactory('databaseConnection', array('IPF_Database', 'connect')); + \PFF\Container::setFunction('databaseQuery', function() { + return new FluentPDO(\PFF\Container::databaseConnection()); + }); + if (IPF::get('debug')) { error_reporting(E_ALL); } -- 2.49.0