<?php
-final class IPF_Project{
-
+final class IPF_Project
+{
private $apps = array();
public $sqlProfiler = null;
static private $instance = NULL;
- static function getInstance(){
+ static function getInstance()
+ {
if (self::$instance == NULL)
- self::$instance = new IPF_Project();
+ self::$instance = new IPF_Project;
return self::$instance;
}
- private function __construct(){
+ private function __construct()
+ {
$applist = IPF::get('applications');
- foreach( $applist as &$appname){
+ foreach ($applist as &$appname) {
if (!IPF_Utils::isValidName($appname))
throw new IPF_Exception_Panic("Application name \"$name\" is incorrect");
$this->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);
}
}
}
// 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;
}
}
}
- 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;