]> git.andy128k.dev Git - ipf.git/commitdiff
cleanup
authorAndrey Kutejko <andy128k@gmail.com>
Sun, 14 Jul 2013 09:37:21 +0000 (12:37 +0300)
committerAndrey Kutejko <andy128k@gmail.com>
Sun, 14 Jul 2013 09:37:21 +0000 (12:37 +0300)
12 files changed:
ipf/application.php
ipf/auth/app.php
ipf/command/createsuperuser.php
ipf/command/fixtures.php
ipf/command/sql.php
ipf/command/syncdb.php
ipf/command/syncperms.php
ipf/orm.php
ipf/orm/export.php
ipf/orm/import/builder.php
ipf/orm/table.php
ipf/project.php

index 73f370979437b7438df720df3779454280e6a231..47006cbf62018c3a4623da791594dee1c20043dc 100644 (file)
@@ -33,11 +33,6 @@ abstract class IPF_Application
         }
     }
 
-    public function generateSql()
-    {
-        return IPF_ORM::generateSqlFromModels($this->path.'models');
-    }
-
     public function modelList()
     {
         return $this->models;
@@ -74,16 +69,6 @@ abstract class IPF_Application
         return strtolower($e[count($e)-1]);
     }
 
-    public function createTablesFromModels()
-    {
-        return IPF_ORM::createTablesFromModels($this->path.'models');
-    }
-
-    public function loadModels()
-    {
-        IPF_ORM::loadModels($this->path.'models');
-    }
-
     /**
      * Returns additional context for templates
      *
index 5568addfef9b0fd8841bfd15ef71cf754f74532f..a5295a9962a6a7c87979321255ee3fb5e8b5a0fe 100644 (file)
@@ -33,32 +33,17 @@ class IPF_Auth_App extends IPF_Application
         $request->session->setData('logout_time', gmdate('Y-m-d H:i:s'));
     }
 
-    static function createPermissionsFromModels(array $pathesToModels)
+    static function createPermissionsFromModels(array $apps)
     {
-        $baseAdmin  = new IPF_Admin_Model();
-        $basePerms  = $baseAdmin->getPerms();
         $permsTable = IPF_ORM::getTable('Permission');
-        $appList    = IPF_Project::getInstance()->appList();
 
         $permissions = array();
-
-        foreach ($pathesToModels as $path)
-        {
-            foreach (IPF_ORM::filterInvalidModels(IPF_ORM::loadModels($path)) as $modelName)
-            {
+        foreach ($apps as $appname => $app) {
+            foreach ($app->modelList() as $modelName) {
                 $adminModel = IPF_Admin_Model::getModelAdmin($modelName);
-
-                if ($adminModel)
-                {
-                    $perms = method_exists($adminModel, 'getPerms') ? $adminModel->getPerms(null) : $basePerms;
-
-                    foreach ($appList as $app)
-                    {
-                        if (in_array($modelName, $app->modelList()) && (!method_exists($app, 'NoPermsFor') || !in_array($modelName, $app->NoPermsFor())))
-                        {
-                            foreach ($perms as $permName)
-                                $permissions[] = get_class($app).'|'.$modelName.'|'.$permName;
-                        }
+                if ($adminModel) {
+                    foreach ($adminModel->getPerms(null) as $permName) {
+                        $permissions[] = $appname.'|'.$modelName.'|'.$permName;
                     }
                 }
             }
@@ -66,8 +51,7 @@ class IPF_Auth_App extends IPF_Application
 
         print "COLLECTED PERMS:\n----\n".implode("\n", $permissions)."\n----\n";
 
-        if (count($permissions))
-        {
+        if (count($permissions)) {
             $existingPerms = array();
 
             foreach ($permsTable->findAll() as $model)
@@ -75,14 +59,12 @@ class IPF_Auth_App extends IPF_Application
 
             print "EXISTING PERMS:\n----\n".implode("\n",$existingPerms)."\n----\n";
 
-            if (count($existingPerms))
-            {
+            if (count($existingPerms)) {
                 $toDel = array_diff($existingPerms, $permissions);
 
                 print "2DEL:\n----\n".implode("\n",$toDel)."\n----\n";
 
-                if (count($toDel))
-                {
+                if (count($toDel)) {
                     $permsTable->createQuery()
                         ->delete()
                         ->where("name in ('".implode("','", $toDel)."')")
@@ -90,9 +72,8 @@ class IPF_Auth_App extends IPF_Application
                 }
 
                 $toAdd = array_diff($permissions, $existingPerms);
-            }
-            else    // first time
-            {
+            } else {
+                // first time
                 // *** FIX: previously, the following models haven't "onDelete: CASCADE" constrain ***
                 print "DROP RolePermission, UserRole, UserPermission\n";
                 $export = IPF_ORM_Manager::connection()->export;
@@ -100,23 +81,19 @@ class IPF_Auth_App extends IPF_Application
                 $export->dropTable(IPF_ORM::getTable('UserRole')->getTableName());
                 $export->dropTable(IPF_ORM::getTable('UserPermission')->getTableName());
                 $auth_app = new IPF_Auth_App();
-                $auth_app->createTablesFromModels();
-                // *** FIX ***
+                IPF_ORM::createTablesFromModels($auth_app);
 
                 $toAdd = $permissions;
             }
 
             print "2ADD:\n----\n".implode("\n",$toAdd)."\n----\n";
 
-            foreach ($toAdd as $name)
-            {
+            foreach ($toAdd as $name) {
                 $model = new Permission();
                 $model->name = $name;
                 $model->save();
             }
-        }
-        else
-        {
+        } else {
             print "REMOVE ALL\n";
 
             $permsTable->createQuery()->delete()->execute();   // no women, no cry...
index e230e2c7bca8cd50f242bafe3850d438bd631ba2..780f6dd946fe0eb5c7efc820c09b4e04041b7134 100644 (file)
@@ -15,8 +15,6 @@ class IPF_Command_CreateSuperUser
 
         $project = IPF_Project::getInstance();
 
-        $project->loadModels();
-
         $su = new User;
         $su->username     = $username;
         $su->email        = $email;
index 7bb6154d782b317e9f6317b37f655b9b2639f9cf..0ed9fff35d4f1fa9c0c7b90508e16a9e631aa3c0 100644 (file)
@@ -27,8 +27,6 @@ class IPF_Command_Fixtures
             return;
         }
 
-        $project->loadModels();
-
         foreach ($fixtures as $fixture) {
             $modelClass = $fixture['model'];
             $key = $fixture['key'];
index ac22e70326beb0748ac00ea38861337ee986277a..4124cbc56e3d237271ba86a56b8d9c1685ec2d79 100644 (file)
@@ -14,12 +14,10 @@ class IPF_Command_Sql
         $sql = '';
 
         foreach ($project->frameworkApps() as $app)
-            $sql .= $app->generateSql()."\n";
-
-        $sql .= IPF_ORM::generateSqlFromModels(IPF::get('project_path').DIRECTORY_SEPARATOR.'models')."\n";
+            $sql .= IPF_ORM::generateSqlFromModels($app)."\n";
 
         foreach ($project->customApps() as $app)
-            $sql .= $app->generateSql()."\n";
+            $sql .= IPF_ORM::generateSqlFromModels($app)."\n";
 
         print $sql;
     }
index 9c52373f1aa190d52c4a25cb762d4fdb0e4e0269..9841e294f1366e297a8cc06df926106fa8dfeada 100644 (file)
@@ -11,11 +11,8 @@ class IPF_Command_SyncDB
 
         $project = IPF_Project::getInstance();
 
-        foreach ($project->frameworkApps() as $app)
-            $app->createTablesFromModels();
-        IPF_ORM::createTablesFromModels(IPF::get('project_path').DIRECTORY_SEPARATOR.'models');
-        foreach ($project->customApps() as $app)
-            $app->createTablesFromModels();
+        foreach ($project->appList() as $app)
+            IPF_ORM::createTablesFromModels($app);
     }
 }
 
index e2a5e5c220cd880c0cea4d7233f9c9653d18e62e..9aadb85167625a3f3852c02cd95fe2e13096522a 100644 (file)
@@ -10,17 +10,7 @@ class IPF_Command_SyncPerms
         print "Create/Update permissions from model classes\n";
 
         $project = IPF_Project::getInstance();
-
-        $pathes = array();
-
-        foreach ($project->apps as $appname => &$app) {
-            $app = $project->getApp($appName);
-            $pathes[] = $app->getPath().'models';
-        }
-
-        $pathes[] = IPF::get('project_path').DIRECTORY_SEPARATOR.'models';
-
-        return IPF_Auth_App::createPermissionsFromModels($pathes);
+        return IPF_Auth_App::createPermissionsFromModels($project->appList());
     }
 }
 
index bb5854ddb18e6f74b6f40dce804ff613cf16c939..78cc0cec98c3779e4d82c3989e8172c1ffdf8622 100644 (file)
@@ -177,8 +177,6 @@ final class IPF_ORM
     
     const BASE_CLASSES_DIRECTORY    = '_generated';
 
-    private static $_loadedModelFiles = array();
-
     private function __construct() {}
 
     public static function getTable($componentName)
@@ -207,80 +205,20 @@ final class IPF_ORM
         return $models;
     }
 
-    public static function createTablesFromModels($directory)
+    public static function createTablesFromModels($app)
     {
-        return IPF_ORM_Manager::connection()->export->exportSchema($directory);
+        IPF_ORM_Manager::connection()->export->exportClasses($app->modelList());
     }
-    
-    public static function generateSqlFromModels($directory = null)
+
+    public static function generateSqlFromModels($app)
     {
-        $sql = IPF_ORM_Manager::connection()->export->exportSql($directory);
+        $sql = IPF_ORM_Manager::connection()->export->exportSortedClassesSql($app->modelList(), false);
+
         $build = '';
         foreach ($sql as $query) {
             $build .= $query.";\n\n";
         }
         return $build;
-    }    
-    
-    public static function loadModel($className, $path = null)
-    {
-        self::$_loadedModelFiles[$className] = $path;
-    }
-
-    public static function filterInvalidModels($classes)
-    {
-        $validModels = array();
-        foreach ((array) $classes as $name) {
-            if (self::isValidModelClass($name) && ! in_array($name, $validModels)) {
-                $validModels[] = $name;
-            }
-        }
-
-        return $validModels;
-    }
-
-    public static function loadModels($directory, $modelLoading = null)
-    {
-        $loadedModels = array();
-        try{
-            $it = new DirectoryIterator($directory.DIRECTORY_SEPARATOR.IPF_ORM::BASE_CLASSES_DIRECTORY);
-        }catch(RuntimeException $e){
-            return $loadedModels;
-        }
-        foreach ($it as $file) {
-            $e = explode('.', $file->getFileName());
-            if (end($e) === 'php') {
-               $className = $e[0];
-               require_once($file->getPathName());
-            }
-        }
-        $it = new DirectoryIterator($directory);
-        foreach ($it as $file) {
-            $e = explode('.', $file->getFileName());
-            if (end($e) === 'php') {
-               $className = $e[0];
-               require_once($file->getPathName());
-               $loadedModels[$className] = $className;
-            }
-        }
-        return $loadedModels;
-    }
-
-
-    public static function isValidModelClass($class)
-    {
-        if ($class instanceof IPF_ORM_Record) {
-            $class = get_class($class);
-        }
-        if (is_string($class) && class_exists($class)) {
-            $class = new ReflectionClass($class);
-        }
-        if ($class instanceof ReflectionClass) {
-            if ( ! $class->isAbstract() && $class->isSubClassOf('IPF_ORM_Record')) {
-                return true;
-            }
-        }
-        return false;
     }
 
     public static function dump($var, $output = true, $indent = "")
@@ -311,3 +249,4 @@ final class IPF_ORM
         return implode("\n", $ret);
     }
 }
+
index 10db5f321d1f1453ad627421cccc8aa15b120c93..43b76ed947ff94d701bb586ad5c2ba2a552d5379 100644 (file)
@@ -128,15 +128,6 @@ class IPF_ORM_Export extends IPF_ORM_Connection_Module
         return $sql;
     }
 
-    public function createTable($name, array $fields, array $options = array())
-    {
-        $sql = (array) $this->createTableSql($name, $fields, $options);
-
-        foreach ($sql as $query) {
-            $this->conn->execute($query);
-        }
-    }
-
     public function createSequence($seqName, $start = 1, array $options = array())
     {
         return $this->conn->execute($this->createSequenceSql($seqName, $start = 1, $options));
@@ -443,16 +434,6 @@ class IPF_ORM_Export extends IPF_ORM_Connection_Module
         return '';
     }
 
-    public function exportSchema($directory = null)
-    {
-        if ($directory !== null) {
-            $models = IPF_ORM::filterInvalidModels(IPF_ORM::loadModels($directory));
-        } else {
-            $models = IPF_ORM::getLoadedModels();
-        }
-        $this->exportClasses($models);
-    }
-
     public function exportSortedClassesSql($classes, $groupByConnection = true)
     {
          $connections = array();
@@ -548,10 +529,8 @@ class IPF_ORM_Export extends IPF_ORM_Connection_Module
          }
      }
 
-    public function exportClassesSql(array $classes)
+    public function exportClassesSql(array $models)
     {
-        $models = IPF_ORM::filterInvalidModels($classes);
-        
         $sql = array();
         
         foreach ($models as $name) {
@@ -630,29 +609,5 @@ class IPF_ORM_Export extends IPF_ORM_Connection_Module
 
         return $sql;
     }
+}
 
-    public function exportSql($directory = null)
-    {
-        if ($directory !== null) {
-            $models = IPF_ORM::filterInvalidModels(IPF_ORM::loadModels($directory));
-        } else {
-            $models = IPF_ORM::getLoadedModels();
-        }
-        
-        return $this->exportSortedClassesSql($models, false);
-    }
-
-    public function exportTable(IPF_ORM_Table $table)
-    {
-        try {
-            $data = $table->getExportableFormat();
-
-            $this->conn->export->createTable($data['tableName'], $data['columns'], $data['options']);
-        } catch(IPF_ORM_Exception $e) {
-            // we only want to silence table already exists errors
-            if ($e->getPortableCode() !== IPF_ORM::ERR_ALREADY_EXISTS) {
-                throw $e;
-            }
-        }
-    }
-}
\ No newline at end of file
index 09330d2bf47e9c8994fc3ffe98a40f6d03885e74..dd9dfc32498d628758ae0aeb91ad809b3eaf5317 100644 (file)
@@ -452,8 +452,6 @@ class IPF_ORM_Import_Builder
         IPF_Utils::makeDirectories($targetPath);
         if (file_put_contents($writePath, implode(PHP_EOL, $code)) === false)
             throw new IPF_ORM_Exception("Couldn't write file " . $writePath);
-
-        IPF_ORM::loadModel($className, $writePath);
     }
 }
 
index d4e566e92958a99ab963d84f587073af66a47722..af399f6b49c3c73679087fed9032c0a655cd34c0 100644 (file)
@@ -326,11 +326,7 @@ class IPF_ORM_Table extends IPF_ORM_Configurable implements Countable
     public function getTemplates()
     {
         return $this->_templates;
-    }
 
-    public function export()
-    {
-        $this->_conn->export->exportTable($this);
     }
 
     public function getExportableFormat($parseForeignKeys = true)
index aebcf8bfec84d50aa004238d70e05a2bad04c25a..37eb76410d09ff8e9c8b412ebaa65599ae4dd77f 100644 (file)
@@ -82,17 +82,6 @@ final class IPF_Project
         return $result;
     }
 
-    public function loadModels()
-    {
-        foreach ($this->frameworkApps() as $app)
-            $app->loadModels();
-
-        IPF_ORM::loadModels(IPF::get('project_path').DIRECTORY_SEPARATOR.'models');
-
-        foreach ($this->customApps() as $app)
-            $app->loadModels();
-    }
-
     public function run()
     {
         if (IPF::get('debug')) {
@@ -108,7 +97,6 @@ final class IPF_Project
             $cli = new IPF_Cli;
             $cli->run();
         } else {
-            $this->loadModels();
             $this->router = new IPF_Router();
             $this->router->dispatch(IPF_HTTP_URL::getAction());
         }