Skip to content

Commit 8ab3252

Browse files
committed
add silent flag to ModelsCreator
1 parent 0b9ec4a commit 8ab3252

File tree

1 file changed

+43
-27
lines changed

1 file changed

+43
-27
lines changed

src/Ubiquity/orm/creator/ModelsCreator.php

Lines changed: 43 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,14 @@
1212
* This class is part of Ubiquity
1313
*
1414
* @author jcheron <[email protected]>
15-
* @version 1.0.8
15+
* @version 1.0.9
1616
* @category ubiquity.dev
1717
*
1818
*/
1919
abstract class ModelsCreator {
2020

21+
private $silent = false;
22+
2123
protected $config;
2224

2325
protected $tables = array();
@@ -34,12 +36,13 @@ abstract protected function getPrimaryKeys($tableName);
3436

3537
abstract protected function getForeignKeys($tableName, $pkName, $dbName = null);
3638

37-
protected function init($config, $offset = 'default') {
39+
protected function init(array $config, string $offset = 'default') {
3840
$this->config = DAO::getDbOffset($config, $offset);
3941
}
4042

41-
public function create($config, $initCache = true, $singleTable = null, $offset = 'default', $memberAccess = 'private') {
42-
$engine=CacheManager::getAnnotationsEngineInstance();
43+
public function create(array $config, bool $initCache = true, ?string $singleTable = null, string $offset = 'default', string $memberAccess = 'private') {
44+
\ob_start();
45+
$engine = CacheManager::getAnnotationsEngineInstance();
4346
$this->init($config, $offset);
4447
$this->memberAccess = $memberAccess;
4548
$dirPostfix = '';
@@ -54,14 +57,14 @@ public function create($config, $initCache = true, $singleTable = null, $offset
5457
CacheManager::checkCache($config);
5558

5659
foreach ($this->tables as $table) {
57-
$class = new Model($engine,$table, $config['mvcNS']['models'] . $nsPostfix, $memberAccess);
60+
$class = new Model($engine, $table, $config['mvcNS']['models'] . $nsPostfix, $memberAccess);
5861
$class->setDatabase($offset);
5962

6063
$fieldsInfos = $this->getFieldsInfos($table);
6164
$class->setSimpleMembers(\array_keys($fieldsInfos));
6265
$keys = $this->getPrimaryKeys($table);
6366
foreach ($fieldsInfos as $field => $info) {
64-
$member = new Member($class,$engine,$field, $memberAccess);
67+
$member = new Member($class, $engine, $field, $memberAccess);
6568
if (\in_array($field, $keys)) {
6669
$member->setPrimary();
6770
}
@@ -74,28 +77,33 @@ public function create($config, $initCache = true, $singleTable = null, $offset
7477
$this->classes[$table] = $class;
7578
}
7679
$this->createRelations();
77-
80+
7881
if (isset($singleTable)) {
7982
$this->createOneClass($singleTable, $modelsDir);
8083
} else {
8184
foreach ($this->classes as $table => $class) {
8285
$name = $class->getSimpleName();
8386
echo "Creating the {$name} class\n";
84-
$classContent=$class->__toString();
87+
$classContent = $class->__toString();
8588
$this->writeFile($modelsDir . \DS . $name . '.php', $classContent);
8689
}
8790
}
8891
if ($initCache === true) {
89-
CacheManager::initCache($config, 'models');
92+
CacheManager::initCache($config, 'models', $this->silent);
9093
}
9194
}
95+
$r = \ob_get_clean();
96+
if ($this->silent) {
97+
return $r;
98+
}
99+
echo $r;
92100
}
93101

94-
protected function createOneClass($singleTable, $modelsDir) {
102+
protected function createOneClass(string $singleTable, string $modelsDir) {
95103
if (isset($this->classes[$singleTable])) {
96104
$class = $this->classes[$singleTable];
97105
echo "Creating the {$class->getName()} class\n";
98-
$classContent=$class->__toString();
106+
$classContent = $class->__toString();
99107
$this->writeFile($modelsDir . \DS . $class->getSimpleName() . '.php', $classContent);
100108
} else {
101109
echo "The {$singleTable} table does not exist in the database\n";
@@ -110,30 +118,30 @@ protected function createRelations() {
110118
foreach ($fks as $fk) {
111119
$field = \lcfirst($table);
112120
$fkTable = $fk['TABLE_NAME'];
113-
$this->classes[$table]->addOneToMany(\lcfirst($fkTable) . 's', \lcfirst($table), $this->classes[$fkTable]->getName(), $this->getAlternateName($fk['COLUMN_NAME'], $fk['REFERENCED_COLUMN_NAME']??$field) . 's');
114-
$this->classes[$fkTable]->addManyToOne($field, \lcfirst($fk['COLUMN_NAME']), $class->getName(), $this->getAlternateName($fk['COLUMN_NAME'], $fk['REFERENCED_COLUMN_NAME']??$field));
121+
$this->classes[$table]->addOneToMany(\lcfirst($fkTable) . 's', \lcfirst($table), $this->classes[$fkTable]->getName(), $this->getAlternateName($fk['COLUMN_NAME'], $fk['REFERENCED_COLUMN_NAME'] ?? $field) . 's');
122+
$this->classes[$fkTable]->addManyToOne($field, \lcfirst($fk['COLUMN_NAME']), $class->getName(), $this->getAlternateName($fk['COLUMN_NAME'], $fk['REFERENCED_COLUMN_NAME'] ?? $field));
115123
}
116124
}
117125
}
118126
$this->createManyToMany();
119127
}
120128

121-
protected function getAlternateName($fkName, $pkName) {
122-
$alter=$fkName;
123-
$pkName=\ucfirst($pkName);
129+
protected function getAlternateName(string $fkName, string $pkName): string {
130+
$alter = $fkName;
131+
$pkName = \ucfirst($pkName);
124132
if (\substr($fkName, 0, \strlen($pkName)) == $pkName) {
125133
$alter = \substr($fkName, \strlen($pkName));
126134
}
127-
$needle_position = \strlen($pkName) * -1;
128-
135+
$needle_position = \strlen($pkName) * - 1;
136+
129137
if (\substr($alter, $needle_position) == $pkName) {
130138
$alter = \substr($alter, 0, $needle_position);
131139
}
132140
$alter = \trim($alter, '_');
133141
return \lcfirst($alter);
134142
}
135143

136-
protected function getTableName($classname) {
144+
protected function getTableName(string $classname): string {
137145
foreach ($this->classes as $table => $class) {
138146
if ($class->getName() === $classname) {
139147
return $table;
@@ -155,20 +163,20 @@ protected function createManyToMany() {
155163
$table2 = $this->getTableName($manyToOne2->className);
156164
$class1 = $this->classes[$table1];
157165
$class2 = $this->classes[$table2];
158-
$reflexive=($class1===$class2);
159-
if($reflexive){
160-
$table1Member=$table2Member=$table.'s';
161-
$altName1=$this->getAlternateName($manyToOne2->name, \current($this->getPrimaryKeys($table1))) . 's';
162-
}else{
166+
$reflexive = ($class1 === $class2);
167+
if ($reflexive) {
168+
$table1Member = $table2Member = $table . 's';
169+
$altName1 = $this->getAlternateName($manyToOne2->name, \current($this->getPrimaryKeys($table1))) . 's';
170+
} else {
163171
$table1Member = \lcfirst($table1) . 's';
164172
$table2Member = \lcfirst($table2) . 's';
165-
$altName1=$altName2=$table.'s';
173+
$altName1 = $altName2 = $table . 's';
166174
}
167175
$joinTable1 = $this->getJoinTableArray($class1, $manyToOne1);
168176
$joinTable2 = $this->getJoinTableArray($class2, $manyToOne2);
169177
$class1->removeOneToManyMemberByClassAssociation($class->getName());
170178
$class1->addManyToMany($table2Member, $manyToOne2->className, $table1Member, $table, $joinTable1, $joinTable2, $altName1);
171-
if(!$reflexive){
179+
if (! $reflexive) {
172180
$class2->removeOneToManyMemberByClassAssociation($class->getName());
173181
$class2->addManyToMany($table1Member, $manyToOne1->className, $table2Member, $table, $joinTable2, $joinTable1, $altName2);
174182
}
@@ -192,7 +200,15 @@ protected function getJoinTableArray(Model $class, object $joinColumn) {
192200
return [];
193201
}
194202

195-
protected function writeFile($filename, $data) {
203+
protected function writeFile(string $filename, string $data): int {
196204
return \file_put_contents($filename, $data);
197205
}
206+
207+
/**
208+
*
209+
* @param boolean $silent
210+
*/
211+
public function setSilent(bool $silent): void {
212+
$this->silent = $silent;
213+
}
198214
}

0 commit comments

Comments
 (0)