From 13433f8e63caf209e629e8ebc8fae32e18fc6a53 Mon Sep 17 00:00:00 2001 From: Andrey Kutejko Date: Mon, 17 Jun 2013 01:07:21 +0300 Subject: [PATCH] models in application --- ipf/project.php | 139 +++++++++++++++++++++++++++++++----------------- 1 file changed, 89 insertions(+), 50 deletions(-) diff --git a/ipf/project.php b/ipf/project.php index 3f2de1b..60328b3 100644 --- a/ipf/project.php +++ b/ipf/project.php @@ -1,37 +1,42 @@ apps[$appname] = null; } } - private function __clone(){ + private function __clone() + { } - private function appClassName($name){ - return $name.'_App'; + private function appClassName($name) + { + return $name . '_App'; } - public function appList(){ - foreach($this->apps as $appName=>&$app){ - if ($app==null){ + public function appList() + { + foreach($this->apps as $appName => &$app) { + if ($app == null) { $app = $this->getApp($appName); } } @@ -39,65 +44,94 @@ final class IPF_Project{ } // Lazy Application Loader - public function getApp($name){ - if (!array_key_exists($name,$this->apps)) + public function getApp($name) + { + if (!array_key_exists($name, $this->apps)) throw new IPF_Exception_Panic("Application \"$name\" not found"); - if ($this->apps[$name]==null){ - $className = $this->appClassName($name); - $this->apps[$name] = new $className(); + if ($this->apps[$name] == null) { + $className = $this->appClassName($name); + $this->apps[$name] = new $className(); } return $this->apps[$name]; } - public function checkApps(){ - foreach( $this->apps as $appname=>&$app) + public function checkApps() + { + foreach ($this->apps as $appname => &$app) $this->getApp($appname); } - public function generateModels(){ + protected function frameworkApps() + { + $result = array(); + foreach ($this->apps as $appname => &$app) { + if (substr($appname, 0, 4) === 'IPF_') + $result[] = $this->getApp($appname); + } + return $result; + } + + protected function customApps() + { + $result = array(); + foreach ($this->apps as $appname => &$app) { + if (substr($appname, 0, 4) !== 'IPF_') + $result[] = $this->getApp($appname); + } + return $result; + } + + public function generateModels() + { IPF_ORM::generateModelsFromYaml( IPF::get('project_path').DIRECTORY_SEPARATOR.'models.yml', IPF::get('project_path').DIRECTORY_SEPARATOR.'models' ); + foreach ($this->customApps() as $app) + $app->generateModels(); } - public function generateContribModels(){ - foreach( $this->apps as $appname=>&$app){ - if (substr($appname,0,4)=='IPF_') - $this->getApp($appname)->generateModels(); - } + public function generateContribModels() + { + foreach ($this->frameworkApps() as $app) + $app->generateModels(); } - public function createTablesFromModels(){ - foreach( $this->apps as $appname=>&$app){ - if (substr($appname,0,4)=='IPF_') - $this->getApp($appname)->createTablesFromModels(); - } - return IPF_ORM::createTablesFromModels(IPF::get('project_path').DIRECTORY_SEPARATOR.'models'); + public function createTablesFromModels() + { + foreach ($this->frameworkApps() as $app) + $app->createTablesFromModels(); + IPF_ORM::createTablesFromModels(IPF::get('project_path').DIRECTORY_SEPARATOR.'models'); + foreach ($this->customApps() as $app) + $app->createTablesFromModels(); } public function createPermissionsFromModels() { $pathes = array(); - - foreach( $this->apps as $appname=>&$app) - { - if (substr($appname,0,4)=='IPF_') - $pathes[] = $this->getApp($appname)->getPath().'models'; + + foreach ($this->apps as $appname => &$app) { + $app = $this->getApp($appName); + $pathes[] = $app->getPath().'models'; } - + $pathes[] = IPF::get('project_path').DIRECTORY_SEPARATOR.'models'; - + return IPF_Auth_App::createPermissionsFromModels($pathes); } - public function generateSql(){ + public function generateSql() + { $sql = ''; - foreach( $this->apps as $appname=>&$app){ - if (substr($appname,0,4)=='IPF_') - $sql .= $this->getApp($appname)->generateSql()."\n"; - } + + foreach ($this->frameworkApps() as $app) + $sql .= $app->generateSql()."\n"; + $sql .= IPF_ORM::generateSqlFromModels(IPF::get('project_path').DIRECTORY_SEPARATOR.'models')."\n"; + + foreach ($this->customApps() as $app) + $sql .= $app->generateSql()."\n"; + return $sql; } @@ -140,20 +174,25 @@ final class IPF_Project{ } } - public function loadModels(){ - foreach( $this->apps as $appname=>&$app){ - if (substr($appname,0,4)=='IPF_') - $this->getApp($appname)->loadModels(); - } + 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(); } - private function cli(){ + private function cli() + { $cli = new IPF_Cli(); $cli->run(); } - public function run() { + public function run() + { if (IPF::get('debug')) { $this->sqlProfiler = new IPF_ORM_Connection_Profiler(); IPF_ORM_Manager::getInstance()->dbListeners[] = $this->sqlProfiler; -- 2.49.0