Completed
Pull Request — 3.4 (#46)
by David
23:45 queued 27s
created
src/views/installStep2.php 1 patch
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -29,7 +29,7 @@
 block discarded – undo
29 29
 <div class="control-group">
30 30
 	<label class="control-label">Store dates / timestamps in UTC:</label>
31 31
 	<div class="controls">
32
-		<input type="checkbox" name="storeInUtc" value="1" <?php echo $this->storeInUtc?'checked="checked"':"" ?>></input>
32
+		<input type="checkbox" name="storeInUtc" value="1" <?php echo $this->storeInUtc ? 'checked="checked"' : "" ?>></input>
33 33
 		<span class="help-block">Select this option if you want timestamps to be stored in UTC.
34 34
 		If your application supports several time zones, you should select this option to store all dates in
35 35
 		the same time zone.</span>
Please login to merge, or discard this patch.
src/Mouf/Database/TDBM/PageIterator.php 1 patch
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -112,7 +112,7 @@
 block discarded – undo
112 112
 	 */
113 113
 	public function getCurrentPage()
114 114
 	{
115
-		return floor($this->offset / $this->limit) + 1;
115
+		return floor($this->offset/$this->limit)+1;
116 116
 	}
117 117
 
118 118
 	/**
Please login to merge, or discard this patch.
src/Mouf/Database/TDBM/TDBMObject.php 2 patches
Indentation   +113 added lines, -113 removed lines patch added patch discarded remove patch
@@ -35,117 +35,117 @@
 block discarded – undo
35 35
 class TDBMObject extends AbstractTDBMObject implements \ArrayAccess, \Iterator
36 36
 {
37 37
 
38
-    public function __get($var)
39
-    {
40
-        return $this->get($var);
41
-    }
42
-
43
-    /**
44
-     * Returns true if a column is set, false otherwise.
45
-     *
46
-     * @param string $var
47
-     * @return boolean
48
-     */
49
-    public function __isset($var)
50
-    {
51
-        return $this->has($var);
52
-    }
53
-
54
-    public function __set($var, $value)
55
-    {
56
-        $this->set($var, $value);
57
-    }
58
-
59
-    /**
60
-     * Implements array behaviour for our object.
61
-     *
62
-     * @param string $offset
63
-     * @param string $value
64
-     */
65
-    public function offsetSet($offset, $value)
66
-    {
67
-        $this->__set($offset, $value);
68
-    }
69
-
70
-    /**
71
-     * Implements array behaviour for our object.
72
-     *
73
-     * @param string $offset
74
-     * @return bool
75
-     */
76
-    public function offsetExists($offset)
77
-    {
78
-        $this->_dbLoadIfNotLoaded();
79
-        return isset($this->dbRow[$offset]);
80
-    }
81
-
82
-    /**
83
-     * Implements array behaviour for our object.
84
-     *
85
-     * @param string $offset
86
-     */
87
-    public function offsetUnset($offset)
88
-    {
89
-        $this->__set($offset, null);
90
-    }
91
-
92
-    /**
93
-     * Implements array behaviour for our object.
94
-     *
95
-     * @param string $offset
96
-     * @return mixed|null
97
-     */
98
-    public function offsetGet($offset)
99
-    {
100
-        return $this->__get($offset);
101
-    }
102
-
103
-    private $_validIterator = false;
104
-
105
-    /**
106
-     * Implements iterator behaviour for our object (so we can each column).
107
-     */
108
-    public function rewind()
109
-    {
110
-        $this->_dbLoadIfNotLoaded();
111
-        if (count($this->dbRow) > 0) {
112
-            $this->_validIterator = true;
113
-        } else {
114
-            $this->_validIterator = false;
115
-        }
116
-        reset($this->dbRow);
117
-    }
118
-
119
-    /**
120
-     * Implements iterator behaviour for our object (so we can each column).
121
-     */
122
-    public function next()
123
-    {
124
-        $val = next($this->dbRow);
125
-        $this->_validIterator = !($val === false);
126
-    }
127
-
128
-    /**
129
-     * Implements iterator behaviour for our object (so we can each column).
130
-     */
131
-    public function key()
132
-    {
133
-        return key($this->dbRow);
134
-    }
135
-
136
-    /**
137
-     * Implements iterator behaviour for our object (so we can each column).
138
-     */
139
-    public function current()
140
-    {
141
-        return current($this->dbRow);
142
-    }
143
-
144
-    /**
145
-     * Implements iterator behaviour for our object (so we can each column).
146
-     */
147
-    public function valid()
148
-    {
149
-        return $this->_validIterator;
150
-    }
38
+	public function __get($var)
39
+	{
40
+		return $this->get($var);
41
+	}
42
+
43
+	/**
44
+	 * Returns true if a column is set, false otherwise.
45
+	 *
46
+	 * @param string $var
47
+	 * @return boolean
48
+	 */
49
+	public function __isset($var)
50
+	{
51
+		return $this->has($var);
52
+	}
53
+
54
+	public function __set($var, $value)
55
+	{
56
+		$this->set($var, $value);
57
+	}
58
+
59
+	/**
60
+	 * Implements array behaviour for our object.
61
+	 *
62
+	 * @param string $offset
63
+	 * @param string $value
64
+	 */
65
+	public function offsetSet($offset, $value)
66
+	{
67
+		$this->__set($offset, $value);
68
+	}
69
+
70
+	/**
71
+	 * Implements array behaviour for our object.
72
+	 *
73
+	 * @param string $offset
74
+	 * @return bool
75
+	 */
76
+	public function offsetExists($offset)
77
+	{
78
+		$this->_dbLoadIfNotLoaded();
79
+		return isset($this->dbRow[$offset]);
80
+	}
81
+
82
+	/**
83
+	 * Implements array behaviour for our object.
84
+	 *
85
+	 * @param string $offset
86
+	 */
87
+	public function offsetUnset($offset)
88
+	{
89
+		$this->__set($offset, null);
90
+	}
91
+
92
+	/**
93
+	 * Implements array behaviour for our object.
94
+	 *
95
+	 * @param string $offset
96
+	 * @return mixed|null
97
+	 */
98
+	public function offsetGet($offset)
99
+	{
100
+		return $this->__get($offset);
101
+	}
102
+
103
+	private $_validIterator = false;
104
+
105
+	/**
106
+	 * Implements iterator behaviour for our object (so we can each column).
107
+	 */
108
+	public function rewind()
109
+	{
110
+		$this->_dbLoadIfNotLoaded();
111
+		if (count($this->dbRow) > 0) {
112
+			$this->_validIterator = true;
113
+		} else {
114
+			$this->_validIterator = false;
115
+		}
116
+		reset($this->dbRow);
117
+	}
118
+
119
+	/**
120
+	 * Implements iterator behaviour for our object (so we can each column).
121
+	 */
122
+	public function next()
123
+	{
124
+		$val = next($this->dbRow);
125
+		$this->_validIterator = !($val === false);
126
+	}
127
+
128
+	/**
129
+	 * Implements iterator behaviour for our object (so we can each column).
130
+	 */
131
+	public function key()
132
+	{
133
+		return key($this->dbRow);
134
+	}
135
+
136
+	/**
137
+	 * Implements iterator behaviour for our object (so we can each column).
138
+	 */
139
+	public function current()
140
+	{
141
+		return current($this->dbRow);
142
+	}
143
+
144
+	/**
145
+	 * Implements iterator behaviour for our object (so we can each column).
146
+	 */
147
+	public function valid()
148
+	{
149
+		return $this->_validIterator;
150
+	}
151 151
 }
152 152
\ No newline at end of file
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -108,7 +108,7 @@
 block discarded – undo
108 108
     public function rewind()
109 109
     {
110 110
         $this->_dbLoadIfNotLoaded();
111
-        if (count($this->dbRow) > 0) {
111
+        if (count($this->dbRow)>0) {
112 112
             $this->_validIterator = true;
113 113
         } else {
114 114
             $this->_validIterator = false;
Please login to merge, or discard this patch.
src/Mouf/Database/TDBM/TDBMSchemaAnalyzer.php 1 patch
Indentation   +79 added lines, -79 removed lines patch added patch discarded remove patch
@@ -15,96 +15,96 @@
 block discarded – undo
15 15
 class TDBMSchemaAnalyzer
16 16
 {
17 17
 
18
-    private $connection;
18
+	private $connection;
19 19
 
20
-    /**
21
-     * @var Schema
22
-     */
23
-    private $schema;
20
+	/**
21
+	 * @var Schema
22
+	 */
23
+	private $schema;
24 24
 
25
-    /**
26
-     * @var string
27
-     */
28
-    private $cachePrefix;
25
+	/**
26
+	 * @var string
27
+	 */
28
+	private $cachePrefix;
29 29
 
30
-    /**
31
-     * @var Cache
32
-     */
33
-    private $cache;
30
+	/**
31
+	 * @var Cache
32
+	 */
33
+	private $cache;
34 34
 
35
-    /**
36
-     * @var SchemaAnalyzer
37
-     */
38
-    private $schemaAnalyzer;
35
+	/**
36
+	 * @var SchemaAnalyzer
37
+	 */
38
+	private $schemaAnalyzer;
39 39
 
40
-    /**
41
-     * @param Connection $connection The DBAL DB connection to use
42
-     * @param Cache $cache A cache service to be used
43
-     * @param SchemaAnalyzer $schemaAnalyzer The schema analyzer that will be used to find shortest paths...
44
-     * 										 Will be automatically created if not passed.
45
-     */
46
-    public function __construct(Connection $connection, Cache $cache, SchemaAnalyzer $schemaAnalyzer) {
47
-        $this->connection = $connection;
48
-        $this->cache = $cache;
49
-        $this->schemaAnalyzer = $schemaAnalyzer;
50
-    }
40
+	/**
41
+	 * @param Connection $connection The DBAL DB connection to use
42
+	 * @param Cache $cache A cache service to be used
43
+	 * @param SchemaAnalyzer $schemaAnalyzer The schema analyzer that will be used to find shortest paths...
44
+	 * 										 Will be automatically created if not passed.
45
+	 */
46
+	public function __construct(Connection $connection, Cache $cache, SchemaAnalyzer $schemaAnalyzer) {
47
+		$this->connection = $connection;
48
+		$this->cache = $cache;
49
+		$this->schemaAnalyzer = $schemaAnalyzer;
50
+	}
51 51
 
52
-    /**
53
-     * Returns a unique ID for the current connection. Useful for namespacing cache entries in the current connection.
54
-     * @return string
55
-     */
56
-    public function getCachePrefix() {
57
-        if ($this->cachePrefix === null) {
58
-            $this->cachePrefix = hash('md4', $this->connection->getHost()."-".$this->connection->getPort()."-".$this->connection->getDatabase()."-".$this->connection->getDriver()->getName());
59
-        }
60
-        return $this->cachePrefix;
61
-    }
52
+	/**
53
+	 * Returns a unique ID for the current connection. Useful for namespacing cache entries in the current connection.
54
+	 * @return string
55
+	 */
56
+	public function getCachePrefix() {
57
+		if ($this->cachePrefix === null) {
58
+			$this->cachePrefix = hash('md4', $this->connection->getHost()."-".$this->connection->getPort()."-".$this->connection->getDatabase()."-".$this->connection->getDriver()->getName());
59
+		}
60
+		return $this->cachePrefix;
61
+	}
62 62
 
63
-    /**
64
-     * Returns the (cached) schema.
65
-     *
66
-     * @return Schema
67
-     */
68
-    public function getSchema() {
69
-        if ($this->schema === null) {
70
-            $cacheKey = $this->getCachePrefix().'_schema';
71
-            if ($this->cache->contains($cacheKey)) {
72
-                $this->schema = $this->cache->fetch($cacheKey);
73
-            } else {
74
-                $this->schema = $this->connection->getSchemaManager()->createSchema();
75
-                $this->cache->save($cacheKey, $this->schema);
76
-            }
77
-        }
78
-        return $this->schema;
79
-    }
63
+	/**
64
+	 * Returns the (cached) schema.
65
+	 *
66
+	 * @return Schema
67
+	 */
68
+	public function getSchema() {
69
+		if ($this->schema === null) {
70
+			$cacheKey = $this->getCachePrefix().'_schema';
71
+			if ($this->cache->contains($cacheKey)) {
72
+				$this->schema = $this->cache->fetch($cacheKey);
73
+			} else {
74
+				$this->schema = $this->connection->getSchemaManager()->createSchema();
75
+				$this->cache->save($cacheKey, $this->schema);
76
+			}
77
+		}
78
+		return $this->schema;
79
+	}
80 80
 
81
-    /**
82
-     * Returns the list of pivot tables linked to table $tableName
83
-     * @param string $tableName
84
-     * @return array|string[]
85
-     */
86
-    public function getPivotTableLinkedToTable($tableName) {
87
-        $cacheKey = $this->getCachePrefix().'_pivottables_link';
88
-        if ($this->cache->contains($cacheKey)) {
89
-            return $this->cache->fetch($cacheKey);
90
-        }
81
+	/**
82
+	 * Returns the list of pivot tables linked to table $tableName
83
+	 * @param string $tableName
84
+	 * @return array|string[]
85
+	 */
86
+	public function getPivotTableLinkedToTable($tableName) {
87
+		$cacheKey = $this->getCachePrefix().'_pivottables_link';
88
+		if ($this->cache->contains($cacheKey)) {
89
+			return $this->cache->fetch($cacheKey);
90
+		}
91 91
 
92
-        $pivotTables = [];
92
+		$pivotTables = [];
93 93
 
94
-        $junctionTables = $this->schemaAnalyzer->detectJunctionTables();
95
-        foreach ($junctionTables as $table) {
96
-            $fks = $table->getForeignKeys();
97
-            foreach ($fks as $fk) {
98
-                if ($fk->getForeignTableName() == $tableName) {
99
-                    $pivotTables[] = $table->getName();
100
-                    break;
101
-                }
102
-            }
103
-        }
94
+		$junctionTables = $this->schemaAnalyzer->detectJunctionTables();
95
+		foreach ($junctionTables as $table) {
96
+			$fks = $table->getForeignKeys();
97
+			foreach ($fks as $fk) {
98
+				if ($fk->getForeignTableName() == $tableName) {
99
+					$pivotTables[] = $table->getName();
100
+					break;
101
+				}
102
+			}
103
+		}
104 104
 
105
-        $this->cache->save($cacheKey, $pivotTables);
106
-        return $pivotTables;
107
-    }
105
+		$this->cache->save($cacheKey, $pivotTables);
106
+		return $pivotTables;
107
+	}
108 108
 
109 109
 
110 110
 }
Please login to merge, or discard this patch.
src/Mouf/Database/TDBM/Utils/ObjectBeanPropertyDescriptor.php 2 patches
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -62,7 +62,7 @@  discard block
 block discarded – undo
62 62
     public function getUpperCamelCaseName() {
63 63
         // First, are there many column or only one?
64 64
         // If one column, we name the setter after it. Otherwise, we name the setter after the table name
65
-        if (count($this->foreignKey->getLocalColumns()) > 1) {
65
+        if (count($this->foreignKey->getLocalColumns())>1) {
66 66
             $name = TDBMDaoGenerator::toSingular(TDBMDaoGenerator::toCamelCase($this->foreignKey->getForeignTableName()));
67 67
             if ($this->alternativeName) {
68 68
                 $camelizedColumns = array_map(['Mouf\\Database\\TDBM\\Utils\\TDBMDaoGenerator', 'toCamelCase'], $this->foreignKey->getLocalColumns());
@@ -144,7 +144,7 @@  discard block
 block discarded – undo
144 144
      * @param '.$referencedBeanName.' $object
145 145
      */
146 146
     public function '.$setterName.'('.$referencedBeanName.' $object = null) {
147
-        $this->setRef(' . var_export($this->foreignKey->getName(), true) . ', $object, '.var_export($tableName, true).');
147
+        $this->setRef(' . var_export($this->foreignKey->getName(), true).', $object, '.var_export($tableName, true).');
148 148
     }
149 149
 
150 150
 ';
Please login to merge, or discard this patch.
Indentation   +128 added lines, -128 removed lines patch added patch discarded remove patch
@@ -14,122 +14,122 @@  discard block
 block discarded – undo
14 14
 class ObjectBeanPropertyDescriptor extends AbstractBeanPropertyDescriptor
15 15
 {
16 16
 
17
-    /**
18
-     * @var ForeignKeyConstraint
19
-     */
20
-    private $foreignKey;
21
-
22
-    /**
23
-     * @var SchemaAnalyzer
24
-     */
25
-    private $schemaAnalyzer;
26
-
27
-    public function __construct(Table $table, ForeignKeyConstraint $foreignKey, SchemaAnalyzer $schemaAnalyzer) {
28
-        parent::__construct($table);
29
-        $this->foreignKey = $foreignKey;
30
-        $this->schemaAnalyzer = $schemaAnalyzer;
31
-    }
32
-
33
-
34
-
35
-    /**
36
-     * Returns the foreignkey the column is part of, if any. null otherwise.
37
-     *
38
-     * @return ForeignKeyConstraint|null
39
-     */
40
-    public function getForeignKey() {
41
-        return $this->foreignKey;
42
-    }
43
-
44
-    /**
45
-     * Returns the name of the class linked to this property or null if this is not a foreign key
46
-     * @return null|string
47
-     */
48
-    public function getClassName() {
49
-        return TDBMDaoGenerator::getBeanNameFromTableName($this->foreignKey->getForeignTableName());
50
-    }
51
-
52
-    /**
53
-     * Returns the param annotation for this property (useful for constructor).
54
-     *
55
-     * @return string
56
-     */
57
-    public function getParamAnnotation() {
58
-        $str = "     * @param %s %s";
59
-        return sprintf($str, $this->getClassName(), $this->getVariableName());
60
-    }
61
-
62
-    public function getUpperCamelCaseName() {
63
-        // First, are there many column or only one?
64
-        // If one column, we name the setter after it. Otherwise, we name the setter after the table name
65
-        if (count($this->foreignKey->getLocalColumns()) > 1) {
66
-            $name = TDBMDaoGenerator::toSingular(TDBMDaoGenerator::toCamelCase($this->foreignKey->getForeignTableName()));
67
-            if ($this->alternativeName) {
68
-                $camelizedColumns = array_map(['Mouf\\Database\\TDBM\\Utils\\TDBMDaoGenerator', 'toCamelCase'], $this->foreignKey->getLocalColumns());
69
-
70
-                $name .= 'By'.implode('And', $camelizedColumns);
71
-            }
72
-        } else {
73
-            $column = $this->foreignKey->getLocalColumns()[0];
74
-            // Let's remove any _id or id_.
75
-            if (strpos(strtolower($column), "id_") === 0) {
76
-                $column = substr($column, 3);
77
-            }
78
-            if (strrpos(strtolower($column), "_id") === strlen($column)-3) {
79
-                $column = substr($column, 0, strlen($column)-3);
80
-            }
81
-            $name = TDBMDaoGenerator::toCamelCase($column);
82
-            if ($this->alternativeName) {
83
-                $name .= 'Object';
84
-            }
85
-        }
86
-        return $name;
87
-    }
88
-
89
-    /**
90
-     * Returns true if the property is compulsory (and therefore should be fetched in the constructor).
91
-     * @return bool
92
-     */
93
-    public function isCompulsory() {
94
-        // Are all columns nullable?
95
-        $localColumnNames = $this->foreignKey->getLocalColumns();
96
-
97
-        foreach ($localColumnNames as $name) {
98
-            $column = $this->table->getColumn($name);
99
-            if ($column->getNotnull()) {
100
-                return true;
101
-            }
102
-        }
103
-
104
-        return false;
105
-    }
106
-
107
-    /**
108
-     * Returns true if the property is the primary key
109
-     * @return bool
110
-     */
111
-    public function isPrimaryKey() {
112
-        $fkColumns = $this->foreignKey->getLocalColumns();
113
-        sort($fkColumns);
114
-
115
-        $pkColumns = $this->table->getPrimaryKeyColumns();
116
-        sort($pkColumns);
117
-
118
-        return $fkColumns == $pkColumns;
119
-    }
120
-
121
-    /**
122
-     * Returns the PHP code for getters and setters
123
-     * @return string
124
-     */
125
-    public function getGetterSetterCode() {
126
-        $tableName = $this->table->getName();
127
-        $getterName = $this->getGetterName();
128
-        $setterName = $this->getSetterName();
129
-
130
-        $referencedBeanName = TDBMDaoGenerator::getBeanNameFromTableName($this->foreignKey->getForeignTableName());
131
-
132
-        $str = '    /**
17
+	/**
18
+	 * @var ForeignKeyConstraint
19
+	 */
20
+	private $foreignKey;
21
+
22
+	/**
23
+	 * @var SchemaAnalyzer
24
+	 */
25
+	private $schemaAnalyzer;
26
+
27
+	public function __construct(Table $table, ForeignKeyConstraint $foreignKey, SchemaAnalyzer $schemaAnalyzer) {
28
+		parent::__construct($table);
29
+		$this->foreignKey = $foreignKey;
30
+		$this->schemaAnalyzer = $schemaAnalyzer;
31
+	}
32
+
33
+
34
+
35
+	/**
36
+	 * Returns the foreignkey the column is part of, if any. null otherwise.
37
+	 *
38
+	 * @return ForeignKeyConstraint|null
39
+	 */
40
+	public function getForeignKey() {
41
+		return $this->foreignKey;
42
+	}
43
+
44
+	/**
45
+	 * Returns the name of the class linked to this property or null if this is not a foreign key
46
+	 * @return null|string
47
+	 */
48
+	public function getClassName() {
49
+		return TDBMDaoGenerator::getBeanNameFromTableName($this->foreignKey->getForeignTableName());
50
+	}
51
+
52
+	/**
53
+	 * Returns the param annotation for this property (useful for constructor).
54
+	 *
55
+	 * @return string
56
+	 */
57
+	public function getParamAnnotation() {
58
+		$str = "     * @param %s %s";
59
+		return sprintf($str, $this->getClassName(), $this->getVariableName());
60
+	}
61
+
62
+	public function getUpperCamelCaseName() {
63
+		// First, are there many column or only one?
64
+		// If one column, we name the setter after it. Otherwise, we name the setter after the table name
65
+		if (count($this->foreignKey->getLocalColumns()) > 1) {
66
+			$name = TDBMDaoGenerator::toSingular(TDBMDaoGenerator::toCamelCase($this->foreignKey->getForeignTableName()));
67
+			if ($this->alternativeName) {
68
+				$camelizedColumns = array_map(['Mouf\\Database\\TDBM\\Utils\\TDBMDaoGenerator', 'toCamelCase'], $this->foreignKey->getLocalColumns());
69
+
70
+				$name .= 'By'.implode('And', $camelizedColumns);
71
+			}
72
+		} else {
73
+			$column = $this->foreignKey->getLocalColumns()[0];
74
+			// Let's remove any _id or id_.
75
+			if (strpos(strtolower($column), "id_") === 0) {
76
+				$column = substr($column, 3);
77
+			}
78
+			if (strrpos(strtolower($column), "_id") === strlen($column)-3) {
79
+				$column = substr($column, 0, strlen($column)-3);
80
+			}
81
+			$name = TDBMDaoGenerator::toCamelCase($column);
82
+			if ($this->alternativeName) {
83
+				$name .= 'Object';
84
+			}
85
+		}
86
+		return $name;
87
+	}
88
+
89
+	/**
90
+	 * Returns true if the property is compulsory (and therefore should be fetched in the constructor).
91
+	 * @return bool
92
+	 */
93
+	public function isCompulsory() {
94
+		// Are all columns nullable?
95
+		$localColumnNames = $this->foreignKey->getLocalColumns();
96
+
97
+		foreach ($localColumnNames as $name) {
98
+			$column = $this->table->getColumn($name);
99
+			if ($column->getNotnull()) {
100
+				return true;
101
+			}
102
+		}
103
+
104
+		return false;
105
+	}
106
+
107
+	/**
108
+	 * Returns true if the property is the primary key
109
+	 * @return bool
110
+	 */
111
+	public function isPrimaryKey() {
112
+		$fkColumns = $this->foreignKey->getLocalColumns();
113
+		sort($fkColumns);
114
+
115
+		$pkColumns = $this->table->getPrimaryKeyColumns();
116
+		sort($pkColumns);
117
+
118
+		return $fkColumns == $pkColumns;
119
+	}
120
+
121
+	/**
122
+	 * Returns the PHP code for getters and setters
123
+	 * @return string
124
+	 */
125
+	public function getGetterSetterCode() {
126
+		$tableName = $this->table->getName();
127
+		$getterName = $this->getGetterName();
128
+		$setterName = $this->getSetterName();
129
+
130
+		$referencedBeanName = TDBMDaoGenerator::getBeanNameFromTableName($this->foreignKey->getForeignTableName());
131
+
132
+		$str = '    /**
133 133
      * Returns the '.$referencedBeanName.' object bound to this object via the '.implode(" and ", $this->foreignKey->getLocalColumns()).' column.
134 134
      *
135 135
      * @return '.$referencedBeanName.'
@@ -148,19 +148,19 @@  discard block
 block discarded – undo
148 148
     }
149 149
 
150 150
 ';
151
-        return $str;
152
-    }
153
-
154
-    /**
155
-     * Returns the part of code useful when doing json serialization.
156
-     *
157
-     * @return string
158
-     */
159
-    public function getJsonSerializeCode()
160
-    {
161
-        return '        if (!$stopRecursion) {
151
+		return $str;
152
+	}
153
+
154
+	/**
155
+	 * Returns the part of code useful when doing json serialization.
156
+	 *
157
+	 * @return string
158
+	 */
159
+	public function getJsonSerializeCode()
160
+	{
161
+		return '        if (!$stopRecursion) {
162 162
             $array['.var_export($this->getLowerCamelCaseName(), true).'] = $this->'.$this->getGetterName().'()->jsonSerialize(true);
163 163
         }
164 164
 ';
165
-    }
165
+	}
166 166
 }
Please login to merge, or discard this patch.
src/Mouf/Database/TDBM/Utils/TDBMDaoGenerator.php 2 patches
Spacing   +13 added lines, -13 removed lines patch added patch discarded remove patch
@@ -206,7 +206,7 @@  discard block
 block discarded – undo
206 206
 
207 207
 }";
208 208
             $this->ensureDirectoryExist($possibleFileName);
209
-            file_put_contents($possibleFileName ,$str);
209
+            file_put_contents($possibleFileName, $str);
210 210
             @chmod($possibleFileName, 0664);
211 211
         }
212 212
     }
@@ -226,11 +226,11 @@  discard block
 block discarded – undo
226 226
         foreach ($table->getColumns() as $column) {
227 227
             $comments = $column->getComment();
228 228
             $matches = array();
229
-            if (preg_match('/@defaultSort(\((desc|asc)\))*/', $comments, $matches) != 0){
229
+            if (preg_match('/@defaultSort(\((desc|asc)\))*/', $comments, $matches) != 0) {
230 230
                 $defaultSort = $data['column_name'];
231
-                if (count($matches == 3)){
231
+                if (count($matches == 3)) {
232 232
                     $defaultSortDirection = $matches[2];
233
-                }else{
233
+                } else {
234 234
                     $defaultSortDirection = 'ASC';
235 235
                 }
236 236
             }
@@ -416,7 +416,7 @@  discard block
 block discarded – undo
416 416
         $possibleBaseFileName = $this->rootPath.$possibleBaseFileNames[0];
417 417
 
418 418
         $this->ensureDirectoryExist($possibleBaseFileName);
419
-        file_put_contents($possibleBaseFileName ,$str);
419
+        file_put_contents($possibleBaseFileName, $str);
420 420
         @chmod($possibleBaseFileName, 0664);
421 421
 
422 422
         $possibleFileNames = $classNameMapper->getPossibleFileNames($daonamespace."\\".$className);
@@ -447,7 +447,7 @@  discard block
 block discarded – undo
447 447
 }
448 448
 ";
449 449
             $this->ensureDirectoryExist($possibleFileName);
450
-            file_put_contents($possibleFileName ,$str);
450
+            file_put_contents($possibleFileName, $str);
451 451
             @chmod($possibleFileName, 0664);
452 452
         }
453 453
     }
@@ -523,7 +523,7 @@  discard block
 block discarded – undo
523 523
         $possibleFileName = $this->rootPath.$possibleFileNames[0];
524 524
 
525 525
         $this->ensureDirectoryExist($possibleFileName);
526
-        file_put_contents($possibleFileName ,$str);
526
+        file_put_contents($possibleFileName, $str);
527 527
     }
528 528
 
529 529
     /**
@@ -534,7 +534,7 @@  discard block
 block discarded – undo
534 534
      * @return string
535 535
      */
536 536
     public static function toCamelCase($str) {
537
-        $str = strtoupper(substr($str,0,1)).substr($str,1);
537
+        $str = strtoupper(substr($str, 0, 1)).substr($str, 1);
538 538
         while (true) {
539 539
             if (strpos($str, "_") === false && strpos($str, " ") === false) {
540 540
                 break;
@@ -544,9 +544,9 @@  discard block
 block discarded – undo
544 544
             if ($pos === false) {
545 545
                 $pos = strpos($str, " ");
546 546
             }
547
-            $before = substr($str,0,$pos);
548
-            $after = substr($str,$pos+1);
549
-            $str = $before.strtoupper(substr($after,0,1)).substr($after,1);
547
+            $before = substr($str, 0, $pos);
548
+            $after = substr($str, $pos+1);
549
+            $str = $before.strtoupper(substr($after, 0, 1)).substr($after, 1);
550 550
         }
551 551
         return $str;
552 552
     }
@@ -627,7 +627,7 @@  discard block
 block discarded – undo
627 627
             Type::GUID => 'string'
628 628
         ];
629 629
 
630
-        return isset($map[$type->getName()])?$map[$type->getName()]:$type->getName();
630
+        return isset($map[$type->getName()]) ? $map[$type->getName()] : $type->getName();
631 631
     }
632 632
 
633 633
     /**
@@ -642,7 +642,7 @@  discard block
 block discarded – undo
642 642
 
643 643
         foreach ($tables as $table) {
644 644
             $tableName = $table->getName();
645
-            $tableToBeanMap[$tableName] = $beanNamespace . "\\" . self::getBeanNameFromTableName($tableName);
645
+            $tableToBeanMap[$tableName] = $beanNamespace."\\".self::getBeanNameFromTableName($tableName);
646 646
         }
647 647
         return $tableToBeanMap;
648 648
     }
Please login to merge, or discard this patch.
Indentation   +372 added lines, -372 removed lines patch added patch discarded remove patch
@@ -20,178 +20,178 @@  discard block
 block discarded – undo
20 20
  */
21 21
 class TDBMDaoGenerator {
22 22
 
23
-    /**
24
-     * 
25
-     * @var SchemaAnalyzer
26
-     */
27
-    private $schemaAnalyzer;
28
-
29
-    /**
30
-     *
31
-     * @var Schema
32
-     */
33
-    private $schema;
34
-
35
-    /**
36
-     * The root directory of the project.
37
-     *
38
-     * @var string
39
-     */
40
-    private $rootPath;
41
-
42
-    /**
43
-     * @var TDBMSchemaAnalyzer
44
-     */
45
-    private $tdbmSchemaAnalyzer;
46
-
47
-    /**
48
-     * Constructor.
49
-     *
50
-     * @param Connection $dbConnection The connection to the database.
51
-     */
52
-    public function __construct(SchemaAnalyzer $schemaAnalyzer, Schema $schema, TDBMSchemaAnalyzer $tdbmSchemaAnalyzer) {
53
-        $this->schemaAnalyzer = $schemaAnalyzer;
54
-        $this->schema = $schema;
55
-        $this->tdbmSchemaAnalyzer = $tdbmSchemaAnalyzer;
56
-        $this->rootPath = __DIR__."/../../../../../../../../";
57
-    }
58
-
59
-    /**
60
-     * Generates all the daos and beans.
61
-     *
62
-     * @param string $daoFactoryClassName The classe name of the DAO factory
63
-     * @param string $daonamespace The namespace for the DAOs, without trailing \
64
-     * @param string $beannamespace The Namespace for the beans, without trailing \
65
-     * @param bool $storeInUtc If the generated daos should store the date in UTC timezone instead of user's timezone.
66
-     * @return \string[] the list of tables
67
-     * @throws TDBMException
68
-     */
69
-    public function generateAllDaosAndBeans($daoFactoryClassName, $daonamespace, $beannamespace, $storeInUtc) {
70
-        // TODO: extract ClassNameMapper in its own package!
71
-        $classNameMapper = ClassNameMapper::createFromComposerFile($this->rootPath.'composer.json');
72
-
73
-        // TODO: check that no class name ends with "Base". Otherwise, there will be name clash.
74
-
75
-        $tableList = $this->schema->getTables();
76
-
77
-        // Remove all beans and daos from junction tables
78
-        $junctionTables = $this->schemaAnalyzer->detectJunctionTables();
79
-        $junctionTableNames = array_map(function(Table $table) {
80
-            return $table->getName();
81
-        }, $junctionTables);
82
-
83
-        $tableList = array_filter($tableList, function(Table $table) use ($junctionTableNames) {
84
-            return !in_array($table->getName(), $junctionTableNames);
85
-        });
86
-
87
-        foreach ($tableList as $table) {
88
-            $this->generateDaoAndBean($table, $daonamespace, $beannamespace, $classNameMapper, $storeInUtc);
89
-        }
23
+	/**
24
+	 * 
25
+	 * @var SchemaAnalyzer
26
+	 */
27
+	private $schemaAnalyzer;
28
+
29
+	/**
30
+	 *
31
+	 * @var Schema
32
+	 */
33
+	private $schema;
34
+
35
+	/**
36
+	 * The root directory of the project.
37
+	 *
38
+	 * @var string
39
+	 */
40
+	private $rootPath;
41
+
42
+	/**
43
+	 * @var TDBMSchemaAnalyzer
44
+	 */
45
+	private $tdbmSchemaAnalyzer;
46
+
47
+	/**
48
+	 * Constructor.
49
+	 *
50
+	 * @param Connection $dbConnection The connection to the database.
51
+	 */
52
+	public function __construct(SchemaAnalyzer $schemaAnalyzer, Schema $schema, TDBMSchemaAnalyzer $tdbmSchemaAnalyzer) {
53
+		$this->schemaAnalyzer = $schemaAnalyzer;
54
+		$this->schema = $schema;
55
+		$this->tdbmSchemaAnalyzer = $tdbmSchemaAnalyzer;
56
+		$this->rootPath = __DIR__."/../../../../../../../../";
57
+	}
58
+
59
+	/**
60
+	 * Generates all the daos and beans.
61
+	 *
62
+	 * @param string $daoFactoryClassName The classe name of the DAO factory
63
+	 * @param string $daonamespace The namespace for the DAOs, without trailing \
64
+	 * @param string $beannamespace The Namespace for the beans, without trailing \
65
+	 * @param bool $storeInUtc If the generated daos should store the date in UTC timezone instead of user's timezone.
66
+	 * @return \string[] the list of tables
67
+	 * @throws TDBMException
68
+	 */
69
+	public function generateAllDaosAndBeans($daoFactoryClassName, $daonamespace, $beannamespace, $storeInUtc) {
70
+		// TODO: extract ClassNameMapper in its own package!
71
+		$classNameMapper = ClassNameMapper::createFromComposerFile($this->rootPath.'composer.json');
72
+
73
+		// TODO: check that no class name ends with "Base". Otherwise, there will be name clash.
74
+
75
+		$tableList = $this->schema->getTables();
76
+
77
+		// Remove all beans and daos from junction tables
78
+		$junctionTables = $this->schemaAnalyzer->detectJunctionTables();
79
+		$junctionTableNames = array_map(function(Table $table) {
80
+			return $table->getName();
81
+		}, $junctionTables);
82
+
83
+		$tableList = array_filter($tableList, function(Table $table) use ($junctionTableNames) {
84
+			return !in_array($table->getName(), $junctionTableNames);
85
+		});
86
+
87
+		foreach ($tableList as $table) {
88
+			$this->generateDaoAndBean($table, $daonamespace, $beannamespace, $classNameMapper, $storeInUtc);
89
+		}
90 90
         
91
-        $this->generateFactory($tableList, $daoFactoryClassName, $daonamespace, $classNameMapper);
91
+		$this->generateFactory($tableList, $daoFactoryClassName, $daonamespace, $classNameMapper);
92 92
 
93
-        // Ok, let's return the list of all tables.
94
-        // These will be used by the calling script to create Mouf instances.
93
+		// Ok, let's return the list of all tables.
94
+		// These will be used by the calling script to create Mouf instances.
95 95
         
96
-        return array_map(function(Table $table) { return $table->getName(); },$tableList);
97
-    }
96
+		return array_map(function(Table $table) { return $table->getName(); },$tableList);
97
+	}
98 98
     
99
-    /**
100
-     * Generates in one method call the daos and the beans for one table.
101
-     * 
102
-     * @param $tableName
103
-     */
104
-    public function generateDaoAndBean(Table $table, $daonamespace, $beannamespace, ClassNameMapper $classNameMapper, $storeInUtc) {
99
+	/**
100
+	 * Generates in one method call the daos and the beans for one table.
101
+	 * 
102
+	 * @param $tableName
103
+	 */
104
+	public function generateDaoAndBean(Table $table, $daonamespace, $beannamespace, ClassNameMapper $classNameMapper, $storeInUtc) {
105 105
 		$tableName = $table->getName();
106
-        $daoName = $this->getDaoNameFromTableName($tableName);
107
-        $beanName = $this->getBeanNameFromTableName($tableName);
108
-        $baseBeanName = $this->getBaseBeanNameFromTableName($tableName);
109
-        $baseDaoName = $this->getBaseDaoNameFromTableName($tableName);
110
-
111
-        $this->generateBean($beanName, $baseBeanName, $table, $beannamespace, $classNameMapper, $storeInUtc);
112
-        $this->generateDao($daoName, $baseDaoName, $beanName, $table, $daonamespace, $beannamespace, $classNameMapper);
113
-    }
106
+		$daoName = $this->getDaoNameFromTableName($tableName);
107
+		$beanName = $this->getBeanNameFromTableName($tableName);
108
+		$baseBeanName = $this->getBaseBeanNameFromTableName($tableName);
109
+		$baseDaoName = $this->getBaseDaoNameFromTableName($tableName);
110
+
111
+		$this->generateBean($beanName, $baseBeanName, $table, $beannamespace, $classNameMapper, $storeInUtc);
112
+		$this->generateDao($daoName, $baseDaoName, $beanName, $table, $daonamespace, $beannamespace, $classNameMapper);
113
+	}
114 114
     
115
-    /**
116
-     * Returns the name of the bean class from the table name.
117
-     * 
118
-     * @param $tableName
119
-     * @return string
120
-     */
121
-    public static function getBeanNameFromTableName($tableName) {
122
-        return TDBMDaoGenerator::toSingular(TDBMDaoGenerator::toCamelCase($tableName))."Bean";
123
-    }
115
+	/**
116
+	 * Returns the name of the bean class from the table name.
117
+	 * 
118
+	 * @param $tableName
119
+	 * @return string
120
+	 */
121
+	public static function getBeanNameFromTableName($tableName) {
122
+		return TDBMDaoGenerator::toSingular(TDBMDaoGenerator::toCamelCase($tableName))."Bean";
123
+	}
124 124
     
125
-    /**
126
-     * Returns the name of the DAO class from the table name.
127
-     * 
128
-     * @param $tableName
129
-     * @return string
130
-     */
131
-    public static function getDaoNameFromTableName($tableName) {
132
-        return TDBMDaoGenerator::toSingular(TDBMDaoGenerator::toCamelCase($tableName))."Dao";
133
-    }
125
+	/**
126
+	 * Returns the name of the DAO class from the table name.
127
+	 * 
128
+	 * @param $tableName
129
+	 * @return string
130
+	 */
131
+	public static function getDaoNameFromTableName($tableName) {
132
+		return TDBMDaoGenerator::toSingular(TDBMDaoGenerator::toCamelCase($tableName))."Dao";
133
+	}
134 134
     
135
-    /**
136
-     * Returns the name of the base bean class from the table name.
137
-     * 
138
-     * @param $tableName
139
-     * @return string
140
-     */
141
-    public static function getBaseBeanNameFromTableName($tableName) {
142
-        return TDBMDaoGenerator::toSingular(TDBMDaoGenerator::toCamelCase($tableName))."BaseBean";
143
-    }
144
-
145
-    /**
146
-     * Returns the name of the base DAO class from the table name.
147
-     *
148
-     * @param $tableName
149
-     * @return string
150
-     */
151
-    public static function getBaseDaoNameFromTableName($tableName) {
152
-        return TDBMDaoGenerator::toSingular(TDBMDaoGenerator::toCamelCase($tableName))."BaseDao";
153
-    }
154
-
155
-    /**
156
-     * Writes the PHP bean file with all getters and setters from the table passed in parameter.
157
-     *
158
-     * @param string $className The name of the class
159
-     * @param string $baseClassName The name of the base class which will be extended (name only, no directory)
160
-     * @param Table $table The table
161
-     * @param string $beannamespace The namespace of the bean
162
-     * @param ClassNameMapper $classNameMapper
163
-     * @throws TDBMException
164
-     */
165
-    public function generateBean($className, $baseClassName, Table $table, $beannamespace, ClassNameMapper $classNameMapper, $storeInUtc) {
166
-
167
-        $beanDescriptor = new BeanDescriptor($table, $this->schemaAnalyzer, $this->schema);
168
-
169
-        $str = $beanDescriptor->generatePhpCode($beannamespace);
170
-
171
-        $possibleBaseFileNames = $classNameMapper->getPossibleFileNames($beannamespace."\\".$baseClassName);
172
-        if (!$possibleBaseFileNames) {
173
-            throw new TDBMException('Sorry, autoload namespace issue. The class "'.$beannamespace."\\".$baseClassName.'" is not autoloadable.');
174
-        }
175
-        $possibleBaseFileName = $this->rootPath.$possibleBaseFileNames[0];
176
-
177
-        $this->ensureDirectoryExist($possibleBaseFileName);
178
-        file_put_contents($possibleBaseFileName, $str);
179
-        @chmod($possibleBaseFileName, 0664);
180
-
181
-
182
-
183
-        $possibleFileNames = $classNameMapper->getPossibleFileNames($beannamespace."\\".$className);
184
-        if (!$possibleFileNames) {
185
-            // @codeCoverageIgnoreStart
186
-            throw new TDBMException('Sorry, autoload namespace issue. The class "'.$beannamespace."\\".$className.'" is not autoloadable.');
187
-            // @codeCoverageIgnoreEnd
188
-        }
189
-        $possibleFileName = $this->rootPath.$possibleFileNames[0];
190
-
191
-        if (!file_exists($possibleFileName)) {
192
-            $tableName = $table->getName();
193
-
194
-            $str = "<?php
135
+	/**
136
+	 * Returns the name of the base bean class from the table name.
137
+	 * 
138
+	 * @param $tableName
139
+	 * @return string
140
+	 */
141
+	public static function getBaseBeanNameFromTableName($tableName) {
142
+		return TDBMDaoGenerator::toSingular(TDBMDaoGenerator::toCamelCase($tableName))."BaseBean";
143
+	}
144
+
145
+	/**
146
+	 * Returns the name of the base DAO class from the table name.
147
+	 *
148
+	 * @param $tableName
149
+	 * @return string
150
+	 */
151
+	public static function getBaseDaoNameFromTableName($tableName) {
152
+		return TDBMDaoGenerator::toSingular(TDBMDaoGenerator::toCamelCase($tableName))."BaseDao";
153
+	}
154
+
155
+	/**
156
+	 * Writes the PHP bean file with all getters and setters from the table passed in parameter.
157
+	 *
158
+	 * @param string $className The name of the class
159
+	 * @param string $baseClassName The name of the base class which will be extended (name only, no directory)
160
+	 * @param Table $table The table
161
+	 * @param string $beannamespace The namespace of the bean
162
+	 * @param ClassNameMapper $classNameMapper
163
+	 * @throws TDBMException
164
+	 */
165
+	public function generateBean($className, $baseClassName, Table $table, $beannamespace, ClassNameMapper $classNameMapper, $storeInUtc) {
166
+
167
+		$beanDescriptor = new BeanDescriptor($table, $this->schemaAnalyzer, $this->schema);
168
+
169
+		$str = $beanDescriptor->generatePhpCode($beannamespace);
170
+
171
+		$possibleBaseFileNames = $classNameMapper->getPossibleFileNames($beannamespace."\\".$baseClassName);
172
+		if (!$possibleBaseFileNames) {
173
+			throw new TDBMException('Sorry, autoload namespace issue. The class "'.$beannamespace."\\".$baseClassName.'" is not autoloadable.');
174
+		}
175
+		$possibleBaseFileName = $this->rootPath.$possibleBaseFileNames[0];
176
+
177
+		$this->ensureDirectoryExist($possibleBaseFileName);
178
+		file_put_contents($possibleBaseFileName, $str);
179
+		@chmod($possibleBaseFileName, 0664);
180
+
181
+
182
+
183
+		$possibleFileNames = $classNameMapper->getPossibleFileNames($beannamespace."\\".$className);
184
+		if (!$possibleFileNames) {
185
+			// @codeCoverageIgnoreStart
186
+			throw new TDBMException('Sorry, autoload namespace issue. The class "'.$beannamespace."\\".$className.'" is not autoloadable.');
187
+			// @codeCoverageIgnoreEnd
188
+		}
189
+		$possibleFileName = $this->rootPath.$possibleFileNames[0];
190
+
191
+		if (!file_exists($possibleFileName)) {
192
+			$tableName = $table->getName();
193
+
194
+			$str = "<?php
195 195
 /*
196 196
  * This file has been automatically generated by TDBM.
197 197
  * You can edit this file as it will not be overwritten.
@@ -206,44 +206,44 @@  discard block
 block discarded – undo
206 206
 {
207 207
 
208 208
 }";
209
-            $this->ensureDirectoryExist($possibleFileName);
210
-            file_put_contents($possibleFileName ,$str);
211
-            @chmod($possibleFileName, 0664);
212
-        }
213
-    }
214
-
215
-    /**
216
-     * Writes the PHP bean DAO with simple functions to create/get/save objects.
217
-     *
218
-     * @param string $fileName The file that will be written (without the directory)
219
-     * @param string $className The name of the class
220
-     * @param string $tableName The name of the table
221
-     */
222
-    public function generateDao($className, $baseClassName, $beanClassName, Table $table, $daonamespace, $beannamespace, ClassNameMapper $classNameMapper) {
223
-        $tableName = $table->getName();
224
-        $primaryKeyColumns = $table->getPrimaryKeyColumns();
225
-
226
-        $defaultSort = null;
227
-        foreach ($table->getColumns() as $column) {
228
-            $comments = $column->getComment();
229
-            $matches = array();
230
-            if (preg_match('/@defaultSort(\((desc|asc)\))*/', $comments, $matches) != 0){
231
-                $defaultSort = $data['column_name'];
232
-                if (count($matches == 3)){
233
-                    $defaultSortDirection = $matches[2];
234
-                }else{
235
-                    $defaultSortDirection = 'ASC';
236
-                }
237
-            }
238
-        }
209
+			$this->ensureDirectoryExist($possibleFileName);
210
+			file_put_contents($possibleFileName ,$str);
211
+			@chmod($possibleFileName, 0664);
212
+		}
213
+	}
214
+
215
+	/**
216
+	 * Writes the PHP bean DAO with simple functions to create/get/save objects.
217
+	 *
218
+	 * @param string $fileName The file that will be written (without the directory)
219
+	 * @param string $className The name of the class
220
+	 * @param string $tableName The name of the table
221
+	 */
222
+	public function generateDao($className, $baseClassName, $beanClassName, Table $table, $daonamespace, $beannamespace, ClassNameMapper $classNameMapper) {
223
+		$tableName = $table->getName();
224
+		$primaryKeyColumns = $table->getPrimaryKeyColumns();
225
+
226
+		$defaultSort = null;
227
+		foreach ($table->getColumns() as $column) {
228
+			$comments = $column->getComment();
229
+			$matches = array();
230
+			if (preg_match('/@defaultSort(\((desc|asc)\))*/', $comments, $matches) != 0){
231
+				$defaultSort = $data['column_name'];
232
+				if (count($matches == 3)){
233
+					$defaultSortDirection = $matches[2];
234
+				}else{
235
+					$defaultSortDirection = 'ASC';
236
+				}
237
+			}
238
+		}
239 239
 
240
-        // FIXME: lowercase tables with _ in the name should work!
241
-        $tableCamel = self::toSingular(self::toCamelCase($tableName));
240
+		// FIXME: lowercase tables with _ in the name should work!
241
+		$tableCamel = self::toSingular(self::toCamelCase($tableName));
242 242
         
243
-        $beanClassWithoutNameSpace = $beanClassName;
244
-        $beanClassName = $beannamespace."\\".$beanClassName;
243
+		$beanClassWithoutNameSpace = $beanClassName;
244
+		$beanClassName = $beannamespace."\\".$beanClassName;
245 245
         
246
-        $str = "<?php
246
+		$str = "<?php
247 247
 
248 248
 /*
249 249
  * This file has been automatically generated by TDBM.
@@ -330,9 +330,9 @@  discard block
 block discarded – undo
330 330
     }
331 331
     ";
332 332
 
333
-        if (count($primaryKeyColumns) === 1) {
334
-            $primaryKeyColumn = $primaryKeyColumns[0];
335
-            $str .= "
333
+		if (count($primaryKeyColumns) === 1) {
334
+			$primaryKeyColumn = $primaryKeyColumns[0];
335
+			$str .= "
336 336
     /**
337 337
      * Get $beanClassWithoutNameSpace specified by its ID (its primary key)
338 338
      * If the primary key does not exist, an exception is thrown.
@@ -347,8 +347,8 @@  discard block
 block discarded – undo
347 347
         return \$this->tdbmService->findObjectByPk('$tableName', ['$primaryKeyColumn' => \$id], [], \$lazyLoading);
348 348
     }
349 349
     ";
350
-        }
351
-        $str .= "
350
+		}
351
+		$str .= "
352 352
     /**
353 353
      * Deletes the $beanClassWithoutNameSpace passed in parameter.
354 354
      *
@@ -410,29 +410,29 @@  discard block
 block discarded – undo
410 410
 }
411 411
 ";
412 412
 
413
-        $possibleBaseFileNames = $classNameMapper->getPossibleFileNames($daonamespace."\\".$baseClassName);
414
-        if (!$possibleBaseFileNames) {
415
-            // @codeCoverageIgnoreStart
416
-            throw new TDBMException('Sorry, autoload namespace issue. The class "'.$baseClassName.'" is not autoloadable.');
417
-            // @codeCoverageIgnoreEnd
418
-        }
419
-        $possibleBaseFileName = $this->rootPath.$possibleBaseFileNames[0];
420
-
421
-        $this->ensureDirectoryExist($possibleBaseFileName);
422
-        file_put_contents($possibleBaseFileName ,$str);
423
-        @chmod($possibleBaseFileName, 0664);
424
-
425
-        $possibleFileNames = $classNameMapper->getPossibleFileNames($daonamespace."\\".$className);
426
-        if (!$possibleFileNames) {
427
-            // @codeCoverageIgnoreStart
428
-            throw new TDBMException('Sorry, autoload namespace issue. The class "'.$className.'" is not autoloadable.');
429
-            // @codeCoverageIgnoreEnd
430
-        }
431
-        $possibleFileName = $this->rootPath.$possibleFileNames[0];
413
+		$possibleBaseFileNames = $classNameMapper->getPossibleFileNames($daonamespace."\\".$baseClassName);
414
+		if (!$possibleBaseFileNames) {
415
+			// @codeCoverageIgnoreStart
416
+			throw new TDBMException('Sorry, autoload namespace issue. The class "'.$baseClassName.'" is not autoloadable.');
417
+			// @codeCoverageIgnoreEnd
418
+		}
419
+		$possibleBaseFileName = $this->rootPath.$possibleBaseFileNames[0];
420
+
421
+		$this->ensureDirectoryExist($possibleBaseFileName);
422
+		file_put_contents($possibleBaseFileName ,$str);
423
+		@chmod($possibleBaseFileName, 0664);
424
+
425
+		$possibleFileNames = $classNameMapper->getPossibleFileNames($daonamespace."\\".$className);
426
+		if (!$possibleFileNames) {
427
+			// @codeCoverageIgnoreStart
428
+			throw new TDBMException('Sorry, autoload namespace issue. The class "'.$className.'" is not autoloadable.');
429
+			// @codeCoverageIgnoreEnd
430
+		}
431
+		$possibleFileName = $this->rootPath.$possibleFileNames[0];
432 432
         
433
-        // Now, let's generate the "editable" class
434
-        if (!file_exists($possibleFileName)) {
435
-            $str = "<?php
433
+		// Now, let's generate the "editable" class
434
+		if (!file_exists($possibleFileName)) {
435
+			$str = "<?php
436 436
 
437 437
 /*
438 438
  * This file has been automatically generated by TDBM.
@@ -449,23 +449,23 @@  discard block
 block discarded – undo
449 449
 
450 450
 }
451 451
 ";
452
-            $this->ensureDirectoryExist($possibleFileName);
453
-            file_put_contents($possibleFileName ,$str);
454
-            @chmod($possibleFileName, 0664);
455
-        }
456
-    }
452
+			$this->ensureDirectoryExist($possibleFileName);
453
+			file_put_contents($possibleFileName ,$str);
454
+			@chmod($possibleFileName, 0664);
455
+		}
456
+	}
457 457
 
458 458
 
459 459
 
460
-    /**
461
-     * Generates the factory bean.
462
-     * 
463
-     * @param Table[] $tableList
464
-     */
465
-    private function generateFactory(array $tableList, $daoFactoryClassName, $daoNamespace, ClassNameMapper $classNameMapper) {
466
-        // For each table, let's write a property.
460
+	/**
461
+	 * Generates the factory bean.
462
+	 * 
463
+	 * @param Table[] $tableList
464
+	 */
465
+	private function generateFactory(array $tableList, $daoFactoryClassName, $daoNamespace, ClassNameMapper $classNameMapper) {
466
+		// For each table, let's write a property.
467 467
         
468
-        $str = "<?php
468
+		$str = "<?php
469 469
 
470 470
 /*
471 471
  * This file has been automatically generated by TDBM.
@@ -482,12 +482,12 @@  discard block
 block discarded – undo
482 482
 {
483 483
 ";
484 484
 
485
-        foreach ($tableList as $table) {
486
-            $tableName = $table->getName();
487
-            $daoClassName = $this->getDaoNameFromTableName($tableName);
488
-            $daoInstanceName = self::toVariableName($daoClassName);
485
+		foreach ($tableList as $table) {
486
+			$tableName = $table->getName();
487
+			$daoClassName = $this->getDaoNameFromTableName($tableName);
488
+			$daoInstanceName = self::toVariableName($daoClassName);
489 489
             
490
-            $str .= '    /**
490
+			$str .= '    /**
491 491
      * @var '.$daoClassName.'
492 492
      */
493 493
     private $'.$daoInstanceName.';
@@ -512,141 +512,141 @@  discard block
 block discarded – undo
512 512
     }
513 513
     
514 514
 ';
515
-        }
515
+		}
516 516
         
517 517
         
518
-        $str .= '
518
+		$str .= '
519 519
 }
520 520
 ';
521 521
 
522
-        $possibleFileNames = $classNameMapper->getPossibleFileNames($daoNamespace."\\".$daoFactoryClassName);
523
-        if (!$possibleFileNames) {
524
-            throw new TDBMException('Sorry, autoload namespace issue. The class "'.$daoNamespace."\\".$daoFactoryClassName.'" is not autoloadable.');
525
-        }
526
-        $possibleFileName = $this->rootPath.$possibleFileNames[0];
527
-
528
-        $this->ensureDirectoryExist($possibleFileName);
529
-        file_put_contents($possibleFileName ,$str);
530
-    }
531
-
532
-    /**
533
-     * Transforms a string to camelCase (except the first letter will be uppercase too).
534
-     * Underscores and spaces are removed and the first letter after the underscore is uppercased.
535
-     * 
536
-     * @param $str string
537
-     * @return string
538
-     */
539
-    public static function toCamelCase($str) {
540
-        $str = strtoupper(substr($str,0,1)).substr($str,1);
541
-        while (true) {
542
-            if (strpos($str, "_") === false && strpos($str, " ") === false) {
543
-                break;
522
+		$possibleFileNames = $classNameMapper->getPossibleFileNames($daoNamespace."\\".$daoFactoryClassName);
523
+		if (!$possibleFileNames) {
524
+			throw new TDBMException('Sorry, autoload namespace issue. The class "'.$daoNamespace."\\".$daoFactoryClassName.'" is not autoloadable.');
525
+		}
526
+		$possibleFileName = $this->rootPath.$possibleFileNames[0];
527
+
528
+		$this->ensureDirectoryExist($possibleFileName);
529
+		file_put_contents($possibleFileName ,$str);
530
+	}
531
+
532
+	/**
533
+	 * Transforms a string to camelCase (except the first letter will be uppercase too).
534
+	 * Underscores and spaces are removed and the first letter after the underscore is uppercased.
535
+	 * 
536
+	 * @param $str string
537
+	 * @return string
538
+	 */
539
+	public static function toCamelCase($str) {
540
+		$str = strtoupper(substr($str,0,1)).substr($str,1);
541
+		while (true) {
542
+			if (strpos($str, "_") === false && strpos($str, " ") === false) {
543
+				break;
544 544
 			}
545 545
                 
546
-            $pos = strpos($str, "_");
547
-            if ($pos === false) {
548
-                $pos = strpos($str, " ");
549
-            }
550
-            $before = substr($str,0,$pos);
551
-            $after = substr($str,$pos+1);
552
-            $str = $before.strtoupper(substr($after,0,1)).substr($after,1);
553
-        }
554
-        return $str;
555
-    }
546
+			$pos = strpos($str, "_");
547
+			if ($pos === false) {
548
+				$pos = strpos($str, " ");
549
+			}
550
+			$before = substr($str,0,$pos);
551
+			$after = substr($str,$pos+1);
552
+			$str = $before.strtoupper(substr($after,0,1)).substr($after,1);
553
+		}
554
+		return $str;
555
+	}
556 556
     
557
-    /**
558
-     * Tries to put string to the singular form (if it is plural).
559
-     * We assume the table names are in english.
560
-     *
561
-     * @param $str string
562
-     * @return string
563
-     */
564
-    public static function toSingular($str) {
565
-        return Inflector::get('en')->singularize($str);
566
-    }
557
+	/**
558
+	 * Tries to put string to the singular form (if it is plural).
559
+	 * We assume the table names are in english.
560
+	 *
561
+	 * @param $str string
562
+	 * @return string
563
+	 */
564
+	public static function toSingular($str) {
565
+		return Inflector::get('en')->singularize($str);
566
+	}
567 567
     
568
-    /**
569
-     * Put the first letter of the string in lower case.
570
-     * Very useful to transform a class name into a variable name.
571
-     * 
572
-     * @param $str string
573
-     * @return string
574
-     */
575
-    public static function toVariableName($str) {
576
-        return strtolower(substr($str, 0, 1)).substr($str, 1);
577
-    }
578
-
579
-    /**
580
-     * Ensures the file passed in parameter can be written in its directory.
581
-     * @param string $fileName
582
-     * @throws TDBMException
583
-     */
584
-    private function ensureDirectoryExist($fileName) {
585
-        $dirName = dirname($fileName);
586
-        if (!file_exists($dirName)) {
587
-            $old = umask(0);
588
-            $result = mkdir($dirName, 0775, true);
589
-            umask($old);
590
-            if ($result === false) {
591
-                throw new TDBMException("Unable to create directory: '".$dirName."'.");
592
-            }
593
-        }
594
-    }
595
-
596
-    /**
597
-     * @param string $rootPath
598
-     */
599
-    public function setRootPath($rootPath)
600
-    {
601
-        $this->rootPath = $rootPath;
602
-    }
603
-
604
-    /**
605
-     * Transforms a DBAL type into a PHP type (for PHPDoc purpose)
606
-     *
607
-     * @param Type $type The DBAL type
608
-     * @return string The PHP type
609
-     */
610
-    public static function dbalTypeToPhpType(Type $type) {
611
-        $map = [
612
-            Type::TARRAY => 'array',
613
-            Type::SIMPLE_ARRAY => 'array',
614
-            Type::JSON_ARRAY => 'array',
615
-            Type::BIGINT => 'string',
616
-            Type::BOOLEAN => 'bool',
617
-            Type::DATETIME => '\DateTimeInterface',
618
-            Type::DATETIMETZ => '\DateTimeInterface',
619
-            Type::DATE => '\DateTimeInterface',
620
-            Type::TIME => '\DateTimeInterface',
621
-            Type::DECIMAL => 'float',
622
-            Type::INTEGER => 'int',
623
-            Type::OBJECT => 'string',
624
-            Type::SMALLINT => 'int',
625
-            Type::STRING => 'string',
626
-            Type::TEXT => 'string',
627
-            Type::BINARY => 'string',
628
-            Type::BLOB => 'string',
629
-            Type::FLOAT => 'float',
630
-            Type::GUID => 'string'
631
-        ];
632
-
633
-        return isset($map[$type->getName()])?$map[$type->getName()]:$type->getName();
634
-    }
635
-
636
-    /**
637
-     *
638
-     * @param string $beanNamespace
639
-     * @return \string[] Returns a map mapping table name to beans name
640
-     */
641
-    public function buildTableToBeanMap($beanNamespace) {
642
-        $tableToBeanMap = [];
643
-
644
-        $tables = $this->schema->getTables();
645
-
646
-        foreach ($tables as $table) {
647
-            $tableName = $table->getName();
648
-            $tableToBeanMap[$tableName] = $beanNamespace . "\\" . self::getBeanNameFromTableName($tableName);
649
-        }
650
-        return $tableToBeanMap;
651
-    }
568
+	/**
569
+	 * Put the first letter of the string in lower case.
570
+	 * Very useful to transform a class name into a variable name.
571
+	 * 
572
+	 * @param $str string
573
+	 * @return string
574
+	 */
575
+	public static function toVariableName($str) {
576
+		return strtolower(substr($str, 0, 1)).substr($str, 1);
577
+	}
578
+
579
+	/**
580
+	 * Ensures the file passed in parameter can be written in its directory.
581
+	 * @param string $fileName
582
+	 * @throws TDBMException
583
+	 */
584
+	private function ensureDirectoryExist($fileName) {
585
+		$dirName = dirname($fileName);
586
+		if (!file_exists($dirName)) {
587
+			$old = umask(0);
588
+			$result = mkdir($dirName, 0775, true);
589
+			umask($old);
590
+			if ($result === false) {
591
+				throw new TDBMException("Unable to create directory: '".$dirName."'.");
592
+			}
593
+		}
594
+	}
595
+
596
+	/**
597
+	 * @param string $rootPath
598
+	 */
599
+	public function setRootPath($rootPath)
600
+	{
601
+		$this->rootPath = $rootPath;
602
+	}
603
+
604
+	/**
605
+	 * Transforms a DBAL type into a PHP type (for PHPDoc purpose)
606
+	 *
607
+	 * @param Type $type The DBAL type
608
+	 * @return string The PHP type
609
+	 */
610
+	public static function dbalTypeToPhpType(Type $type) {
611
+		$map = [
612
+			Type::TARRAY => 'array',
613
+			Type::SIMPLE_ARRAY => 'array',
614
+			Type::JSON_ARRAY => 'array',
615
+			Type::BIGINT => 'string',
616
+			Type::BOOLEAN => 'bool',
617
+			Type::DATETIME => '\DateTimeInterface',
618
+			Type::DATETIMETZ => '\DateTimeInterface',
619
+			Type::DATE => '\DateTimeInterface',
620
+			Type::TIME => '\DateTimeInterface',
621
+			Type::DECIMAL => 'float',
622
+			Type::INTEGER => 'int',
623
+			Type::OBJECT => 'string',
624
+			Type::SMALLINT => 'int',
625
+			Type::STRING => 'string',
626
+			Type::TEXT => 'string',
627
+			Type::BINARY => 'string',
628
+			Type::BLOB => 'string',
629
+			Type::FLOAT => 'float',
630
+			Type::GUID => 'string'
631
+		];
632
+
633
+		return isset($map[$type->getName()])?$map[$type->getName()]:$type->getName();
634
+	}
635
+
636
+	/**
637
+	 *
638
+	 * @param string $beanNamespace
639
+	 * @return \string[] Returns a map mapping table name to beans name
640
+	 */
641
+	public function buildTableToBeanMap($beanNamespace) {
642
+		$tableToBeanMap = [];
643
+
644
+		$tables = $this->schema->getTables();
645
+
646
+		foreach ($tables as $table) {
647
+			$tableName = $table->getName();
648
+			$tableToBeanMap[$tableName] = $beanNamespace . "\\" . self::getBeanNameFromTableName($tableName);
649
+		}
650
+		return $tableToBeanMap;
651
+	}
652 652
 }
Please login to merge, or discard this patch.
src/Mouf/Database/TDBM/Utils/BeanDescriptor.php 2 patches
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -288,7 +288,7 @@  discard block
 block discarded – undo
288 288
         $fksByMethodName = [];
289 289
 
290 290
         foreach ($fksByTable as $tableName => $fksForTable) {
291
-            if (count($fksForTable) > 1) {
291
+            if (count($fksForTable)>1) {
292 292
                 foreach ($fksForTable as $fk) {
293 293
                     $methodName = 'get'.TDBMDaoGenerator::toCamelCase($fk->getLocalTableName()).'By';
294 294
 
@@ -388,7 +388,7 @@  discard block
 block discarded – undo
388 388
 
389 389
         $finalDescs = [];
390 390
         foreach ($descs as $descArray) {
391
-            if (count($descArray) > 1) {
391
+            if (count($descArray)>1) {
392 392
                 foreach ($descArray as $desc) {
393 393
                     $desc['name'] = TDBMDaoGenerator::toCamelCase($desc['remoteFK']->getForeignTableName())."By".TDBMDaoGenerator::toCamelCase($desc['table']->getName());
394 394
                     $finalDescs[] = $desc;
Please login to merge, or discard this patch.
Indentation   +441 added lines, -441 removed lines patch added patch discarded remove patch
@@ -15,232 +15,232 @@  discard block
 block discarded – undo
15 15
  */
16 16
 class BeanDescriptor
17 17
 {
18
-    /**
19
-     * @var Table
20
-     */
21
-    private $table;
22
-
23
-    /**
24
-     * @var SchemaAnalyzer
25
-     */
26
-    private $schemaAnalyzer;
27
-
28
-    /**
29
-     * @var Schema
30
-     */
31
-    private $schema;
32
-
33
-    /**
34
-     * @var AbstractBeanPropertyDescriptor[]
35
-     */
36
-    private $beanPropertyDescriptors = [];
37
-
38
-    public function __construct(Table $table, SchemaAnalyzer $schemaAnalyzer, Schema $schema) {
39
-        $this->table = $table;
40
-        $this->schemaAnalyzer = $schemaAnalyzer;
41
-        $this->schema = $schema;
42
-        $this->initBeanPropertyDescriptors();
43
-    }
44
-
45
-    private function initBeanPropertyDescriptors() {
46
-        $this->beanPropertyDescriptors = $this->getProperties($this->table);
47
-    }
48
-
49
-    /**
50
-     * Returns the foreignkey the column is part of, if any. null otherwise.
51
-     *
52
-     * @param Table $table
53
-     * @param Column $column
54
-     * @return ForeignKeyConstraint|null
55
-     */
56
-    private function isPartOfForeignKey(Table $table, Column $column) {
57
-        $localColumnName = $column->getName();
58
-        foreach ($table->getForeignKeys() as $foreignKey) {
59
-            foreach ($foreignKey->getColumns() as $columnName) {
60
-                if ($columnName === $localColumnName) {
61
-                    return $foreignKey;
62
-                }
63
-            }
64
-        }
65
-        return null;
66
-    }
67
-
68
-    /**
69
-     * @return AbstractBeanPropertyDescriptor[]
70
-     */
71
-    public function getBeanPropertyDescriptors()
72
-    {
73
-        return $this->beanPropertyDescriptors;
74
-    }
75
-
76
-    /**
77
-     * Returns the list of columns that are not nullable and not autogenerated for a given table and its parent.
78
-     *
79
-     * @return AbstractBeanPropertyDescriptor[]
80
-     */
81
-    public function getConstructorProperties() {
82
-
83
-        $constructorProperties = array_filter($this->beanPropertyDescriptors, function(AbstractBeanPropertyDescriptor $property) {
84
-           return $property->isCompulsory();
85
-        });
86
-
87
-        return $constructorProperties;
88
-    }
89
-
90
-    /**
91
-     * Returns the list of properties exposed as getters and setters in this class.
92
-     *
93
-     * @return AbstractBeanPropertyDescriptor[]
94
-     */
95
-    public function getExposedProperties() {
96
-        $exposedProperties = array_filter($this->beanPropertyDescriptors, function(AbstractBeanPropertyDescriptor $property) {
97
-            return $property->getTable()->getName() == $this->table->getName();
98
-        });
99
-
100
-        return $exposedProperties;
101
-    }
102
-
103
-    /**
104
-     * Returns the list of foreign keys pointing to the table represented by this bean, excluding foreign keys
105
-     * from junction tables and from inheritance.
106
-     *
107
-     * @return ForeignKeyConstraint[]
108
-     */
109
-    public function getIncomingForeignKeys() {
110
-
111
-        $junctionTables = $this->schemaAnalyzer->detectJunctionTables();
112
-        $junctionTableNames = array_map(function(Table $table) { return $table->getName(); }, $junctionTables);
113
-        $childrenRelationships = $this->schemaAnalyzer->getChildrenRelationships($this->table->getName());
114
-
115
-        $fks = [];
116
-        foreach ($this->schema->getTables() as $table) {
117
-            foreach ($table->getForeignKeys() as $fk) {
118
-                if ($fk->getForeignTableName() === $this->table->getName()) {
119
-                    if (in_array($fk->getLocalTableName(), $junctionTableNames)) {
120
-                        continue;
121
-                    }
122
-                    foreach ($childrenRelationships as $childFk) {
123
-                        if ($fk->getLocalTableName() === $childFk->getLocalTableName() && $fk->getLocalColumns() === $childFk->getLocalColumns()) {
124
-                            continue 2;
125
-                        }
126
-                    }
127
-                    $fks[] = $fk;
128
-                }
129
-            }
130
-        }
131
-
132
-        return $fks;
133
-    }
134
-
135
-    /**
136
-     * Returns the list of properties for this table (including parent tables).
137
-     *
138
-     * @param Table $table
139
-     * @return AbstractBeanPropertyDescriptor[]
140
-     */
141
-    private function getProperties(Table $table)
142
-    {
143
-        $parentRelationship = $this->schemaAnalyzer->getParentRelationship($table->getName());
144
-        if ($parentRelationship) {
145
-            $parentTable = $this->schema->getTable($parentRelationship->getForeignTableName());
146
-            $properties = $this->getProperties($parentTable);
147
-            // we merge properties by overriding property names.
148
-            $localProperties = $this->getPropertiesForTable($table);
149
-            foreach ($localProperties as $name => $property) {
150
-                // We do not override properties if this is a primary key!
151
-                if ($property->isPrimaryKey()) {
152
-                    continue;
153
-                }
154
-                $properties[$name] = $property;
155
-            }
156
-            //$properties = array_merge($properties, $localProperties);
157
-
158
-        } else {
159
-            $properties = $this->getPropertiesForTable($table);
160
-        }
161
-
162
-        return $properties;
163
-    }
164
-
165
-        /**
166
-     * Returns the list of properties for this table (ignoring parent tables).
167
-     *
168
-     * @param Table $table
169
-     * @return AbstractBeanPropertyDescriptor[]
170
-     */
171
-    private function getPropertiesForTable(Table $table)
172
-    {
173
-        $parentRelationship = $this->schemaAnalyzer->getParentRelationship($table->getName());
174
-        if ($parentRelationship) {
175
-            $ignoreColumns = $parentRelationship->getLocalColumns();
176
-        } else {
177
-            $ignoreColumns = [];
178
-        }
179
-
180
-        $beanPropertyDescriptors = [];
181
-
182
-        foreach ($table->getColumns() as $column) {
183
-            if (array_search($column->getName(), $ignoreColumns) !== false) {
184
-                continue;
185
-            }
186
-
187
-            $fk = $this->isPartOfForeignKey($table, $column);
188
-            if ($fk !== null) {
189
-                // Check that previously added descriptors are not added on same FK (can happen with multi key FK).
190
-                foreach ($beanPropertyDescriptors as $beanDescriptor) {
191
-                    if ($beanDescriptor instanceof ObjectBeanPropertyDescriptor && $beanDescriptor->getForeignKey() === $fk) {
192
-                        continue 2;
193
-                    }
194
-                }
195
-                // Check that this property is not an inheritance relationship
196
-                $parentRelationship = $this->schemaAnalyzer->getParentRelationship($table->getName());
197
-                if ($parentRelationship === $fk) {
198
-                    continue;
199
-                }
200
-
201
-                $beanPropertyDescriptors[] = new ObjectBeanPropertyDescriptor($table, $fk, $this->schemaAnalyzer);
202
-            } else {
203
-                $beanPropertyDescriptors[] = new ScalarBeanPropertyDescriptor($table, $column);
204
-            }
205
-        }
206
-
207
-        // Now, let's get the name of all properties and let's check there is no duplicate.
208
-        /** @var $names AbstractBeanPropertyDescriptor[] */
209
-        $names = [];
210
-        foreach ($beanPropertyDescriptors as $beanDescriptor) {
211
-            $name = $beanDescriptor->getUpperCamelCaseName();
212
-            if (isset($names[$name])) {
213
-                $names[$name]->useAlternativeName();
214
-                $beanDescriptor->useAlternativeName();
215
-            } else {
216
-                $names[$name] = $beanDescriptor;
217
-            }
218
-        }
219
-
220
-        // Final check (throw exceptions if problem arises)
221
-        $names = [];
222
-        foreach ($beanPropertyDescriptors as $beanDescriptor) {
223
-            $name = $beanDescriptor->getUpperCamelCaseName();
224
-            if (isset($names[$name])) {
225
-                throw new TDBMException("Unsolvable name conflict while generating method name");
226
-            } else {
227
-                $names[$name] = $beanDescriptor;
228
-            }
229
-        }
230
-
231
-        // Last step, let's rebuild the list with a map:
232
-        $beanPropertyDescriptorsMap = [];
233
-        foreach ($beanPropertyDescriptors as $beanDescriptor) {
234
-            $beanPropertyDescriptorsMap[$beanDescriptor->getLowerCamelCaseName()] = $beanDescriptor;
235
-        }
236
-
237
-        return $beanPropertyDescriptorsMap;
238
-    }
239
-
240
-    public function generateBeanConstructor() {
241
-        $constructorProperties = $this->getConstructorProperties();
242
-
243
-        $constructorCode = "    /**
18
+	/**
19
+	 * @var Table
20
+	 */
21
+	private $table;
22
+
23
+	/**
24
+	 * @var SchemaAnalyzer
25
+	 */
26
+	private $schemaAnalyzer;
27
+
28
+	/**
29
+	 * @var Schema
30
+	 */
31
+	private $schema;
32
+
33
+	/**
34
+	 * @var AbstractBeanPropertyDescriptor[]
35
+	 */
36
+	private $beanPropertyDescriptors = [];
37
+
38
+	public function __construct(Table $table, SchemaAnalyzer $schemaAnalyzer, Schema $schema) {
39
+		$this->table = $table;
40
+		$this->schemaAnalyzer = $schemaAnalyzer;
41
+		$this->schema = $schema;
42
+		$this->initBeanPropertyDescriptors();
43
+	}
44
+
45
+	private function initBeanPropertyDescriptors() {
46
+		$this->beanPropertyDescriptors = $this->getProperties($this->table);
47
+	}
48
+
49
+	/**
50
+	 * Returns the foreignkey the column is part of, if any. null otherwise.
51
+	 *
52
+	 * @param Table $table
53
+	 * @param Column $column
54
+	 * @return ForeignKeyConstraint|null
55
+	 */
56
+	private function isPartOfForeignKey(Table $table, Column $column) {
57
+		$localColumnName = $column->getName();
58
+		foreach ($table->getForeignKeys() as $foreignKey) {
59
+			foreach ($foreignKey->getColumns() as $columnName) {
60
+				if ($columnName === $localColumnName) {
61
+					return $foreignKey;
62
+				}
63
+			}
64
+		}
65
+		return null;
66
+	}
67
+
68
+	/**
69
+	 * @return AbstractBeanPropertyDescriptor[]
70
+	 */
71
+	public function getBeanPropertyDescriptors()
72
+	{
73
+		return $this->beanPropertyDescriptors;
74
+	}
75
+
76
+	/**
77
+	 * Returns the list of columns that are not nullable and not autogenerated for a given table and its parent.
78
+	 *
79
+	 * @return AbstractBeanPropertyDescriptor[]
80
+	 */
81
+	public function getConstructorProperties() {
82
+
83
+		$constructorProperties = array_filter($this->beanPropertyDescriptors, function(AbstractBeanPropertyDescriptor $property) {
84
+		   return $property->isCompulsory();
85
+		});
86
+
87
+		return $constructorProperties;
88
+	}
89
+
90
+	/**
91
+	 * Returns the list of properties exposed as getters and setters in this class.
92
+	 *
93
+	 * @return AbstractBeanPropertyDescriptor[]
94
+	 */
95
+	public function getExposedProperties() {
96
+		$exposedProperties = array_filter($this->beanPropertyDescriptors, function(AbstractBeanPropertyDescriptor $property) {
97
+			return $property->getTable()->getName() == $this->table->getName();
98
+		});
99
+
100
+		return $exposedProperties;
101
+	}
102
+
103
+	/**
104
+	 * Returns the list of foreign keys pointing to the table represented by this bean, excluding foreign keys
105
+	 * from junction tables and from inheritance.
106
+	 *
107
+	 * @return ForeignKeyConstraint[]
108
+	 */
109
+	public function getIncomingForeignKeys() {
110
+
111
+		$junctionTables = $this->schemaAnalyzer->detectJunctionTables();
112
+		$junctionTableNames = array_map(function(Table $table) { return $table->getName(); }, $junctionTables);
113
+		$childrenRelationships = $this->schemaAnalyzer->getChildrenRelationships($this->table->getName());
114
+
115
+		$fks = [];
116
+		foreach ($this->schema->getTables() as $table) {
117
+			foreach ($table->getForeignKeys() as $fk) {
118
+				if ($fk->getForeignTableName() === $this->table->getName()) {
119
+					if (in_array($fk->getLocalTableName(), $junctionTableNames)) {
120
+						continue;
121
+					}
122
+					foreach ($childrenRelationships as $childFk) {
123
+						if ($fk->getLocalTableName() === $childFk->getLocalTableName() && $fk->getLocalColumns() === $childFk->getLocalColumns()) {
124
+							continue 2;
125
+						}
126
+					}
127
+					$fks[] = $fk;
128
+				}
129
+			}
130
+		}
131
+
132
+		return $fks;
133
+	}
134
+
135
+	/**
136
+	 * Returns the list of properties for this table (including parent tables).
137
+	 *
138
+	 * @param Table $table
139
+	 * @return AbstractBeanPropertyDescriptor[]
140
+	 */
141
+	private function getProperties(Table $table)
142
+	{
143
+		$parentRelationship = $this->schemaAnalyzer->getParentRelationship($table->getName());
144
+		if ($parentRelationship) {
145
+			$parentTable = $this->schema->getTable($parentRelationship->getForeignTableName());
146
+			$properties = $this->getProperties($parentTable);
147
+			// we merge properties by overriding property names.
148
+			$localProperties = $this->getPropertiesForTable($table);
149
+			foreach ($localProperties as $name => $property) {
150
+				// We do not override properties if this is a primary key!
151
+				if ($property->isPrimaryKey()) {
152
+					continue;
153
+				}
154
+				$properties[$name] = $property;
155
+			}
156
+			//$properties = array_merge($properties, $localProperties);
157
+
158
+		} else {
159
+			$properties = $this->getPropertiesForTable($table);
160
+		}
161
+
162
+		return $properties;
163
+	}
164
+
165
+		/**
166
+		 * Returns the list of properties for this table (ignoring parent tables).
167
+		 *
168
+		 * @param Table $table
169
+		 * @return AbstractBeanPropertyDescriptor[]
170
+		 */
171
+	private function getPropertiesForTable(Table $table)
172
+	{
173
+		$parentRelationship = $this->schemaAnalyzer->getParentRelationship($table->getName());
174
+		if ($parentRelationship) {
175
+			$ignoreColumns = $parentRelationship->getLocalColumns();
176
+		} else {
177
+			$ignoreColumns = [];
178
+		}
179
+
180
+		$beanPropertyDescriptors = [];
181
+
182
+		foreach ($table->getColumns() as $column) {
183
+			if (array_search($column->getName(), $ignoreColumns) !== false) {
184
+				continue;
185
+			}
186
+
187
+			$fk = $this->isPartOfForeignKey($table, $column);
188
+			if ($fk !== null) {
189
+				// Check that previously added descriptors are not added on same FK (can happen with multi key FK).
190
+				foreach ($beanPropertyDescriptors as $beanDescriptor) {
191
+					if ($beanDescriptor instanceof ObjectBeanPropertyDescriptor && $beanDescriptor->getForeignKey() === $fk) {
192
+						continue 2;
193
+					}
194
+				}
195
+				// Check that this property is not an inheritance relationship
196
+				$parentRelationship = $this->schemaAnalyzer->getParentRelationship($table->getName());
197
+				if ($parentRelationship === $fk) {
198
+					continue;
199
+				}
200
+
201
+				$beanPropertyDescriptors[] = new ObjectBeanPropertyDescriptor($table, $fk, $this->schemaAnalyzer);
202
+			} else {
203
+				$beanPropertyDescriptors[] = new ScalarBeanPropertyDescriptor($table, $column);
204
+			}
205
+		}
206
+
207
+		// Now, let's get the name of all properties and let's check there is no duplicate.
208
+		/** @var $names AbstractBeanPropertyDescriptor[] */
209
+		$names = [];
210
+		foreach ($beanPropertyDescriptors as $beanDescriptor) {
211
+			$name = $beanDescriptor->getUpperCamelCaseName();
212
+			if (isset($names[$name])) {
213
+				$names[$name]->useAlternativeName();
214
+				$beanDescriptor->useAlternativeName();
215
+			} else {
216
+				$names[$name] = $beanDescriptor;
217
+			}
218
+		}
219
+
220
+		// Final check (throw exceptions if problem arises)
221
+		$names = [];
222
+		foreach ($beanPropertyDescriptors as $beanDescriptor) {
223
+			$name = $beanDescriptor->getUpperCamelCaseName();
224
+			if (isset($names[$name])) {
225
+				throw new TDBMException("Unsolvable name conflict while generating method name");
226
+			} else {
227
+				$names[$name] = $beanDescriptor;
228
+			}
229
+		}
230
+
231
+		// Last step, let's rebuild the list with a map:
232
+		$beanPropertyDescriptorsMap = [];
233
+		foreach ($beanPropertyDescriptors as $beanDescriptor) {
234
+			$beanPropertyDescriptorsMap[$beanDescriptor->getLowerCamelCaseName()] = $beanDescriptor;
235
+		}
236
+
237
+		return $beanPropertyDescriptorsMap;
238
+	}
239
+
240
+	public function generateBeanConstructor() {
241
+		$constructorProperties = $this->getConstructorProperties();
242
+
243
+		$constructorCode = "    /**
244 244
      * The constructor takes all compulsory arguments.
245 245
      *
246 246
 %s
@@ -250,64 +250,64 @@  discard block
 block discarded – undo
250 250
     }
251 251
     ";
252 252
 
253
-        $paramAnnotations = [];
254
-        $arguments = [];
255
-        $assigns = [];
256
-        $parentConstructorArguments = [];
257
-
258
-        foreach ($constructorProperties as $property) {
259
-            $className = $property->getClassName();
260
-            if ($className) {
261
-                $arguments[] = $className.' '.$property->getVariableName();
262
-            } else {
263
-                $arguments[] = $property->getVariableName();
264
-            }
265
-            $paramAnnotations[] = $property->getParamAnnotation();
266
-            if ($property->getTable()->getName() === $this->table->getName()) {
267
-                $assigns[] = $property->getConstructorAssignCode();
268
-            } else {
269
-                $parentConstructorArguments[] = $property->getVariableName();
270
-            }
271
-        }
253
+		$paramAnnotations = [];
254
+		$arguments = [];
255
+		$assigns = [];
256
+		$parentConstructorArguments = [];
272 257
 
273
-        $parentConstrutorCode = sprintf("        parent::__construct(%s);\n", implode(', ', $parentConstructorArguments));
258
+		foreach ($constructorProperties as $property) {
259
+			$className = $property->getClassName();
260
+			if ($className) {
261
+				$arguments[] = $className.' '.$property->getVariableName();
262
+			} else {
263
+				$arguments[] = $property->getVariableName();
264
+			}
265
+			$paramAnnotations[] = $property->getParamAnnotation();
266
+			if ($property->getTable()->getName() === $this->table->getName()) {
267
+				$assigns[] = $property->getConstructorAssignCode();
268
+			} else {
269
+				$parentConstructorArguments[] = $property->getVariableName();
270
+			}
271
+		}
274 272
 
275
-        return sprintf($constructorCode, implode("\n", $paramAnnotations), implode(", ", $arguments), $parentConstrutorCode, implode("\n", $assigns));
276
-    }
273
+		$parentConstrutorCode = sprintf("        parent::__construct(%s);\n", implode(', ', $parentConstructorArguments));
277 274
 
278
-    public function generateDirectForeignKeysCode() {
279
-        $fks = $this->getIncomingForeignKeys();
275
+		return sprintf($constructorCode, implode("\n", $paramAnnotations), implode(", ", $arguments), $parentConstrutorCode, implode("\n", $assigns));
276
+	}
280 277
 
281
-        $fksByTable = [];
278
+	public function generateDirectForeignKeysCode() {
279
+		$fks = $this->getIncomingForeignKeys();
282 280
 
283
-        foreach ($fks as $fk) {
284
-            $fksByTable[$fk->getLocalTableName()][] = $fk;
285
-        }
281
+		$fksByTable = [];
286 282
 
287
-        /* @var $fksByMethodName ForeignKeyConstraint[] */
288
-        $fksByMethodName = [];
283
+		foreach ($fks as $fk) {
284
+			$fksByTable[$fk->getLocalTableName()][] = $fk;
285
+		}
289 286
 
290
-        foreach ($fksByTable as $tableName => $fksForTable) {
291
-            if (count($fksForTable) > 1) {
292
-                foreach ($fksForTable as $fk) {
293
-                    $methodName = 'get'.TDBMDaoGenerator::toCamelCase($fk->getLocalTableName()).'By';
287
+		/* @var $fksByMethodName ForeignKeyConstraint[] */
288
+		$fksByMethodName = [];
294 289
 
295
-                    $camelizedColumns = array_map(['Mouf\\Database\\TDBM\\Utils\\TDBMDaoGenerator', 'toCamelCase'], $fk->getLocalColumns());
290
+		foreach ($fksByTable as $tableName => $fksForTable) {
291
+			if (count($fksForTable) > 1) {
292
+				foreach ($fksForTable as $fk) {
293
+					$methodName = 'get'.TDBMDaoGenerator::toCamelCase($fk->getLocalTableName()).'By';
296 294
 
297
-                    $methodName .= implode('And', $camelizedColumns);
295
+					$camelizedColumns = array_map(['Mouf\\Database\\TDBM\\Utils\\TDBMDaoGenerator', 'toCamelCase'], $fk->getLocalColumns());
298 296
 
299
-                    $fksByMethodName[$methodName] = $fk;
300
-                }
301
-            } else {
302
-                $methodName = 'get'.TDBMDaoGenerator::toCamelCase($fksForTable[0]->getLocalTableName());
303
-                $fksByMethodName[$methodName] = $fk;
304
-            }
305
-        }
297
+					$methodName .= implode('And', $camelizedColumns);
306 298
 
307
-        $code = '';
299
+					$fksByMethodName[$methodName] = $fk;
300
+				}
301
+			} else {
302
+				$methodName = 'get'.TDBMDaoGenerator::toCamelCase($fksForTable[0]->getLocalTableName());
303
+				$fksByMethodName[$methodName] = $fk;
304
+			}
305
+		}
308 306
 
309
-        foreach ($fksByMethodName as $methodName => $fk) {
310
-            $getterCode = '    /**
307
+		$code = '';
308
+
309
+		foreach ($fksByMethodName as $methodName => $fk) {
310
+			$getterCode = '    /**
311 311
      * Returns the list of %s pointing to this bean via the %s column.
312 312
      *
313 313
      * @return %s[]|ResultIterator
@@ -319,109 +319,109 @@  discard block
 block discarded – undo
319 319
 
320 320
 ';
321 321
 
322
-            list($sql, $parametersCode) = $this->getFilters($fk);
323
-
324
-            $beanClass = TDBMDaoGenerator::getBeanNameFromTableName($fk->getLocalTableName());
325
-            $code .= sprintf($getterCode,
326
-                $beanClass,
327
-                implode(', ', $fk->getColumns()),
328
-                $beanClass,
329
-                $methodName,
330
-                var_export($fk->getLocalTableName(), true),
331
-                $sql,
332
-                $parametersCode
333
-            );
334
-        }
335
-
336
-        return $code;
337
-    }
338
-
339
-    private function getFilters(ForeignKeyConstraint $fk) {
340
-        $sqlParts = [];
341
-        $counter = 0;
342
-        $parameters = [];
343
-
344
-        $pkColumns = $this->table->getPrimaryKeyColumns();
345
-
346
-        foreach ($fk->getLocalColumns() as $columnName) {
347
-            $paramName = "tdbmparam".$counter;
348
-            $sqlParts[] = $fk->getLocalTableName().'.'.$columnName." = :".$paramName;
349
-
350
-            $pkColumn = $pkColumns[$counter];
351
-            $parameters[] = sprintf('%s => $this->get(%s, %s)', var_export($paramName, true), var_export($pkColumn, true), var_export($this->table->getName(), true));
352
-            $counter++;
353
-        }
354
-        $sql = "'".implode(' AND ', $sqlParts)."'";
355
-        $parametersCode = '[ '.implode(', ', $parameters).' ]';
356
-
357
-        return [$sql, $parametersCode];
358
-    }
359
-
360
-    /**
361
-     * Generate code section about pivot tables
362
-     *
363
-     * @return string;
364
-     */
365
-    public function generatePivotTableCode() {
366
-
367
-        $finalDescs = $this->getPivotTableDescriptors();
368
-
369
-        $code = '';
370
-
371
-        foreach ($finalDescs as $desc) {
372
-            $code .= $this->getPivotTableCode($desc['name'], $desc['table'], $desc['localFK'], $desc['remoteFK']);
373
-        }
374
-
375
-        return $code;
376
-    }
377
-
378
-    private function getPivotTableDescriptors() {
379
-        $descs = [];
380
-        foreach ($this->schemaAnalyzer->detectJunctionTables() as $table) {
381
-            // There are exactly 2 FKs since this is a pivot table.
382
-            $fks = array_values($table->getForeignKeys());
383
-
384
-            if ($fks[0]->getForeignTableName() === $this->table->getName()) {
385
-                $localFK = $fks[0];
386
-                $remoteFK = $fks[1];
387
-            } elseif ($fks[1]->getForeignTableName() === $this->table->getName()) {
388
-                $localFK = $fks[1];
389
-                $remoteFK = $fks[0];
390
-            } else {
391
-                continue;
392
-            }
393
-
394
-            $descs[$remoteFK->getForeignTableName()][] = [
395
-                'table' => $table,
396
-                'localFK' => $localFK,
397
-                'remoteFK' => $remoteFK
398
-            ];
399
-
400
-        }
401
-
402
-        $finalDescs = [];
403
-        foreach ($descs as $descArray) {
404
-            if (count($descArray) > 1) {
405
-                foreach ($descArray as $desc) {
406
-                    $desc['name'] = TDBMDaoGenerator::toCamelCase($desc['remoteFK']->getForeignTableName())."By".TDBMDaoGenerator::toCamelCase($desc['table']->getName());
407
-                    $finalDescs[] = $desc;
408
-                }
409
-            } else {
410
-                $desc = $descArray[0];
411
-                $desc['name'] = TDBMDaoGenerator::toCamelCase($desc['remoteFK']->getForeignTableName());
412
-                $finalDescs[] = $desc;
413
-            }
414
-        }
415
-
416
-        return $finalDescs;
417
-    }
418
-
419
-    public function getPivotTableCode($name, Table $table, ForeignKeyConstraint $localFK, ForeignKeyConstraint $remoteFK) {
420
-        $singularName = TDBMDaoGenerator::toSingular($name);
421
-        $remoteBeanName = TDBMDaoGenerator::getBeanNameFromTableName($remoteFK->getForeignTableName());
422
-        $variableName = '$'.TDBMDaoGenerator::toVariableName($remoteBeanName);
423
-
424
-        $str = '    /**
322
+			list($sql, $parametersCode) = $this->getFilters($fk);
323
+
324
+			$beanClass = TDBMDaoGenerator::getBeanNameFromTableName($fk->getLocalTableName());
325
+			$code .= sprintf($getterCode,
326
+				$beanClass,
327
+				implode(', ', $fk->getColumns()),
328
+				$beanClass,
329
+				$methodName,
330
+				var_export($fk->getLocalTableName(), true),
331
+				$sql,
332
+				$parametersCode
333
+			);
334
+		}
335
+
336
+		return $code;
337
+	}
338
+
339
+	private function getFilters(ForeignKeyConstraint $fk) {
340
+		$sqlParts = [];
341
+		$counter = 0;
342
+		$parameters = [];
343
+
344
+		$pkColumns = $this->table->getPrimaryKeyColumns();
345
+
346
+		foreach ($fk->getLocalColumns() as $columnName) {
347
+			$paramName = "tdbmparam".$counter;
348
+			$sqlParts[] = $fk->getLocalTableName().'.'.$columnName." = :".$paramName;
349
+
350
+			$pkColumn = $pkColumns[$counter];
351
+			$parameters[] = sprintf('%s => $this->get(%s, %s)', var_export($paramName, true), var_export($pkColumn, true), var_export($this->table->getName(), true));
352
+			$counter++;
353
+		}
354
+		$sql = "'".implode(' AND ', $sqlParts)."'";
355
+		$parametersCode = '[ '.implode(', ', $parameters).' ]';
356
+
357
+		return [$sql, $parametersCode];
358
+	}
359
+
360
+	/**
361
+	 * Generate code section about pivot tables
362
+	 *
363
+	 * @return string;
364
+	 */
365
+	public function generatePivotTableCode() {
366
+
367
+		$finalDescs = $this->getPivotTableDescriptors();
368
+
369
+		$code = '';
370
+
371
+		foreach ($finalDescs as $desc) {
372
+			$code .= $this->getPivotTableCode($desc['name'], $desc['table'], $desc['localFK'], $desc['remoteFK']);
373
+		}
374
+
375
+		return $code;
376
+	}
377
+
378
+	private function getPivotTableDescriptors() {
379
+		$descs = [];
380
+		foreach ($this->schemaAnalyzer->detectJunctionTables() as $table) {
381
+			// There are exactly 2 FKs since this is a pivot table.
382
+			$fks = array_values($table->getForeignKeys());
383
+
384
+			if ($fks[0]->getForeignTableName() === $this->table->getName()) {
385
+				$localFK = $fks[0];
386
+				$remoteFK = $fks[1];
387
+			} elseif ($fks[1]->getForeignTableName() === $this->table->getName()) {
388
+				$localFK = $fks[1];
389
+				$remoteFK = $fks[0];
390
+			} else {
391
+				continue;
392
+			}
393
+
394
+			$descs[$remoteFK->getForeignTableName()][] = [
395
+				'table' => $table,
396
+				'localFK' => $localFK,
397
+				'remoteFK' => $remoteFK
398
+			];
399
+
400
+		}
401
+
402
+		$finalDescs = [];
403
+		foreach ($descs as $descArray) {
404
+			if (count($descArray) > 1) {
405
+				foreach ($descArray as $desc) {
406
+					$desc['name'] = TDBMDaoGenerator::toCamelCase($desc['remoteFK']->getForeignTableName())."By".TDBMDaoGenerator::toCamelCase($desc['table']->getName());
407
+					$finalDescs[] = $desc;
408
+				}
409
+			} else {
410
+				$desc = $descArray[0];
411
+				$desc['name'] = TDBMDaoGenerator::toCamelCase($desc['remoteFK']->getForeignTableName());
412
+				$finalDescs[] = $desc;
413
+			}
414
+		}
415
+
416
+		return $finalDescs;
417
+	}
418
+
419
+	public function getPivotTableCode($name, Table $table, ForeignKeyConstraint $localFK, ForeignKeyConstraint $remoteFK) {
420
+		$singularName = TDBMDaoGenerator::toSingular($name);
421
+		$remoteBeanName = TDBMDaoGenerator::getBeanNameFromTableName($remoteFK->getForeignTableName());
422
+		$variableName = '$'.TDBMDaoGenerator::toVariableName($remoteBeanName);
423
+
424
+		$str = '    /**
425 425
      * Returns the list of %s associated to this bean via the %s pivot table.
426 426
      *
427 427
      * @return %s[]
@@ -431,9 +431,9 @@  discard block
 block discarded – undo
431 431
     }
432 432
 ';
433 433
 
434
-        $getterCode = sprintf($str, $remoteBeanName, $table->getName(), $remoteBeanName, $name, var_export($remoteFK->getLocalTableName(), true));
434
+		$getterCode = sprintf($str, $remoteBeanName, $table->getName(), $remoteBeanName, $name, var_export($remoteFK->getLocalTableName(), true));
435 435
 
436
-        $str = '    /**
436
+		$str = '    /**
437 437
      * Adds a relationship with %s associated to this bean via the %s pivot table.
438 438
      *
439 439
      * @param %s %s
@@ -443,9 +443,9 @@  discard block
 block discarded – undo
443 443
     }
444 444
 ';
445 445
 
446
-        $adderCode = sprintf($str, $remoteBeanName, $table->getName(), $remoteBeanName, $variableName, $singularName, $remoteBeanName, $variableName, var_export($remoteFK->getLocalTableName(), true), $variableName);
446
+		$adderCode = sprintf($str, $remoteBeanName, $table->getName(), $remoteBeanName, $variableName, $singularName, $remoteBeanName, $variableName, var_export($remoteFK->getLocalTableName(), true), $variableName);
447 447
 
448
-        $str = '    /**
448
+		$str = '    /**
449 449
      * Deletes the relationship with %s associated to this bean via the %s pivot table.
450 450
      *
451 451
      * @param %s %s
@@ -455,9 +455,9 @@  discard block
 block discarded – undo
455 455
     }
456 456
 ';
457 457
 
458
-        $removerCode = sprintf($str, $remoteBeanName, $table->getName(), $remoteBeanName, $variableName, $singularName, $remoteBeanName, $variableName, var_export($remoteFK->getLocalTableName(), true), $variableName);
458
+		$removerCode = sprintf($str, $remoteBeanName, $table->getName(), $remoteBeanName, $variableName, $singularName, $remoteBeanName, $variableName, var_export($remoteFK->getLocalTableName(), true), $variableName);
459 459
 
460
-        $str = '    /**
460
+		$str = '    /**
461 461
      * Returns whether this bean is associated with %s via the %s pivot table.
462 462
      *
463 463
      * @param %s %s
@@ -468,24 +468,24 @@  discard block
 block discarded – undo
468 468
     }
469 469
 ';
470 470
 
471
-        $hasCode = sprintf($str, $remoteBeanName, $table->getName(), $remoteBeanName, $variableName, $singularName, $remoteBeanName, $variableName, var_export($remoteFK->getLocalTableName(), true), $variableName);
471
+		$hasCode = sprintf($str, $remoteBeanName, $table->getName(), $remoteBeanName, $variableName, $singularName, $remoteBeanName, $variableName, var_export($remoteFK->getLocalTableName(), true), $variableName);
472 472
 
473 473
 
474
-        $code = $getterCode.$adderCode.$removerCode.$hasCode;
474
+		$code = $getterCode.$adderCode.$removerCode.$hasCode;
475 475
 
476
-        return $code;
477
-    }
476
+		return $code;
477
+	}
478 478
 
479
-    public function generateJsonSerialize() {
480
-        $tableName = $this->table->getName();
481
-        $parentFk = $this->schemaAnalyzer->getParentRelationship($tableName);
482
-        if ($parentFk !== null) {
483
-            $initializer = '$array = parent::jsonSerialize();';
484
-        } else {
485
-            $initializer = '$array = [];';
486
-        }
479
+	public function generateJsonSerialize() {
480
+		$tableName = $this->table->getName();
481
+		$parentFk = $this->schemaAnalyzer->getParentRelationship($tableName);
482
+		if ($parentFk !== null) {
483
+			$initializer = '$array = parent::jsonSerialize();';
484
+		} else {
485
+			$initializer = '$array = [];';
486
+		}
487 487
 
488
-        $str = '
488
+		$str = '
489 489
     /**
490 490
      * Serializes the object for JSON encoding
491 491
      *
@@ -501,53 +501,53 @@  discard block
 block discarded – undo
501 501
     }
502 502
 ';
503 503
 
504
-        $propertiesCode = '';
505
-        foreach ($this->beanPropertyDescriptors as $beanPropertyDescriptor) {
506
-            $propertiesCode .= $beanPropertyDescriptor->getJsonSerializeCode();
507
-        }
504
+		$propertiesCode = '';
505
+		foreach ($this->beanPropertyDescriptors as $beanPropertyDescriptor) {
506
+			$propertiesCode .= $beanPropertyDescriptor->getJsonSerializeCode();
507
+		}
508 508
 
509
-        // Many to many relationships:
509
+		// Many to many relationships:
510 510
 
511
-        $descs = $this->getPivotTableDescriptors();
511
+		$descs = $this->getPivotTableDescriptors();
512 512
 
513
-        $many2manyCode = '';
513
+		$many2manyCode = '';
514 514
 
515
-        foreach ($descs as $desc) {
516
-            $remoteFK = $desc['remoteFK'];
517
-            $remoteBeanName = TDBMDaoGenerator::getBeanNameFromTableName($remoteFK->getForeignTableName());
518
-            $variableName = '$'.TDBMDaoGenerator::toVariableName($remoteBeanName);
515
+		foreach ($descs as $desc) {
516
+			$remoteFK = $desc['remoteFK'];
517
+			$remoteBeanName = TDBMDaoGenerator::getBeanNameFromTableName($remoteFK->getForeignTableName());
518
+			$variableName = '$'.TDBMDaoGenerator::toVariableName($remoteBeanName);
519 519
 
520
-            $many2manyCode .= '        if (!$stopRecursion) {
520
+			$many2manyCode .= '        if (!$stopRecursion) {
521 521
             $array[\''.lcfirst($desc['name']).'\'] = array_map(function('.$remoteBeanName.' '.$variableName.') {
522 522
                 return '.$variableName.'->jsonSerialize(true);
523 523
             }, $this->get'.$desc['name'].'());
524 524
         }
525 525
         ';
526
-        }
527
-
528
-        return sprintf($str, $initializer, $propertiesCode, $many2manyCode);
529
-    }
530
-
531
-    /**
532
-     * Writes the PHP bean file with all getters and setters from the table passed in parameter.
533
-     *
534
-     * @param string $beannamespace The namespace of the bean
535
-     */
536
-    public function generatePhpCode($beannamespace) {
537
-        $baseClassName = TDBMDaoGenerator::getBaseBeanNameFromTableName($this->table->getName());
538
-        $className = TDBMDaoGenerator::getBeanNameFromTableName($this->table->getName());
539
-        $tableName = $this->table->getName();
540
-
541
-        $parentFk = $this->schemaAnalyzer->getParentRelationship($tableName);
542
-        if ($parentFk !== null) {
543
-            $extends = TDBMDaoGenerator::getBeanNameFromTableName($parentFk->getForeignTableName());
544
-            $use = "";
545
-        } else {
546
-            $extends = "AbstractTDBMObject";
547
-            $use = "use Mouf\\Database\\TDBM\\AbstractTDBMObject;\n\n";
548
-        }
549
-
550
-        $str = "<?php
526
+		}
527
+
528
+		return sprintf($str, $initializer, $propertiesCode, $many2manyCode);
529
+	}
530
+
531
+	/**
532
+	 * Writes the PHP bean file with all getters and setters from the table passed in parameter.
533
+	 *
534
+	 * @param string $beannamespace The namespace of the bean
535
+	 */
536
+	public function generatePhpCode($beannamespace) {
537
+		$baseClassName = TDBMDaoGenerator::getBaseBeanNameFromTableName($this->table->getName());
538
+		$className = TDBMDaoGenerator::getBeanNameFromTableName($this->table->getName());
539
+		$tableName = $this->table->getName();
540
+
541
+		$parentFk = $this->schemaAnalyzer->getParentRelationship($tableName);
542
+		if ($parentFk !== null) {
543
+			$extends = TDBMDaoGenerator::getBeanNameFromTableName($parentFk->getForeignTableName());
544
+			$use = "";
545
+		} else {
546
+			$extends = "AbstractTDBMObject";
547
+			$use = "use Mouf\\Database\\TDBM\\AbstractTDBMObject;\n\n";
548
+		}
549
+
550
+		$str = "<?php
551 551
 namespace {$beannamespace};
552 552
 
553 553
 use Mouf\\Database\\TDBM\\ResultIterator;
@@ -565,20 +565,20 @@  discard block
 block discarded – undo
565 565
 {
566 566
 ";
567 567
 
568
-        $str .= $this->generateBeanConstructor();
568
+		$str .= $this->generateBeanConstructor();
569 569
 
570 570
 
571 571
 
572
-        foreach ($this->getExposedProperties() as $property) {
573
-            $str .= $property->getGetterSetterCode();
574
-        }
572
+		foreach ($this->getExposedProperties() as $property) {
573
+			$str .= $property->getGetterSetterCode();
574
+		}
575 575
 
576
-        $str .= $this->generateDirectForeignKeysCode();
577
-        $str .= $this->generatePivotTableCode();
578
-        $str .= $this->generateJsonSerialize();
576
+		$str .= $this->generateDirectForeignKeysCode();
577
+		$str .= $this->generatePivotTableCode();
578
+		$str .= $this->generateJsonSerialize();
579 579
 
580
-        $str .= "}
580
+		$str .= "}
581 581
 ";
582
-        return $str;
583
-    }
582
+		return $str;
583
+	}
584 584
 }
Please login to merge, or discard this patch.
src/Mouf/Database/TDBM/Controllers/TdbmController.php 2 patches
Indentation   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -59,10 +59,10 @@  discard block
 block discarded – undo
59 59
 		}
60 60
 				
61 61
 		if ($this->daoNamespace == null && $this->beanNamespace == null) {
62
-            $classNameMapper = ClassNameMapper::createFromComposerFile(__DIR__.'/../../../../../../../../composer.json');
62
+			$classNameMapper = ClassNameMapper::createFromComposerFile(__DIR__.'/../../../../../../../../composer.json');
63 63
 
64 64
 			$autoloadNamespaces = $classNameMapper->getManagedNamespaces();
65
-            if ($autoloadNamespaces) {
65
+			if ($autoloadNamespaces) {
66 66
 				$this->autoloadDetected = true;
67 67
 				$rootNamespace = $autoloadNamespaces[0];
68 68
 				$this->daoNamespace = $rootNamespace."Dao";
@@ -138,7 +138,7 @@  discard block
 block discarded – undo
138 138
 		
139 139
 		$tdbmService = new InstanceProxy($name);
140 140
 		/* @var $tdbmService TDBMService */
141
-        $tables = $tdbmService->generateAllDaosAndBeans($daofactoryclassname, $daonamespace, $beannamespace, $storeInUtc);
141
+		$tables = $tdbmService->generateAllDaosAndBeans($daofactoryclassname, $daonamespace, $beannamespace, $storeInUtc);
142 142
 
143 143
 
144 144
 		$moufManager->declareComponent($daofactoryinstancename, $daonamespace."\\".$daofactoryclassname, false, MoufManager::DECLARE_ON_EXIST_KEEP_INCOMING_LINKS);
Please login to merge, or discard this patch.
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -40,7 +40,7 @@  discard block
 block discarded – undo
40 40
 	 * @Action
41 41
 	 * //@Admin
42 42
 	 */
43
-	public function defaultAction($name, $selfedit="false") {
43
+	public function defaultAction($name, $selfedit = "false") {
44 44
 		$this->initController($name, $selfedit);
45 45
 		
46 46
 		// Fill variables
@@ -87,7 +87,7 @@  discard block
 block discarded – undo
87 87
 	 * @param string $name
88 88
 	 * @param bool $selfedit
89 89
 	 */
90
-	public function generate($name, $daonamespace, $beannamespace, $daofactoryclassname, $daofactoryinstancename, $storeInUtc = 0, $selfedit="false") {
90
+	public function generate($name, $daonamespace, $beannamespace, $daofactoryclassname, $daofactoryinstancename, $storeInUtc = 0, $selfedit = "false") {
91 91
 		$this->initController($name, $selfedit);
92 92
 
93 93
 		self::generateDaos($this->moufManager, $name, $daonamespace, $beannamespace, $daofactoryclassname, $daofactoryinstancename, $selfedit, $storeInUtc);
@@ -108,7 +108,7 @@  discard block
 block discarded – undo
108 108
 	 * @param bool $storeInUtc
109 109
 	 * @throws \Mouf\MoufException
110 110
 	 */
111
-	public static function generateDaos(MoufManager $moufManager, $name, $daonamespace, $beannamespace, $daofactoryclassname, $daofactoryinstancename, $selfedit="false", $storeInUtc = null) {
111
+	public static function generateDaos(MoufManager $moufManager, $name, $daonamespace, $beannamespace, $daofactoryclassname, $daofactoryinstancename, $selfedit = "false", $storeInUtc = null) {
112 112
 		$moufManager->setVariable("tdbmDefaultDaoNamespace_".$name, $daonamespace);
113 113
 		$moufManager->setVariable("tdbmDefaultBeanNamespace_".$name, $beannamespace);
114 114
 		$moufManager->setVariable("tdbmDefaultDaoFactoryName_".$name, $daofactoryclassname);
@@ -155,7 +155,7 @@  discard block
 block discarded – undo
155 155
 			$moufManager->bindComponentViaSetter($instanceName, "setTdbmService", $name);
156 156
 			$moufManager->bindComponentViaSetter($daofactoryinstancename, "set".$daoName, $instanceName);
157 157
 
158
-			$tableToBeanMap[$table] = $beannamespace . "\\" . TDBMDaoGenerator::getBeanNameFromTableName($table);
158
+			$tableToBeanMap[$table] = $beannamespace."\\".TDBMDaoGenerator::getBeanNameFromTableName($table);
159 159
 		}
160 160
 		$tdbmServiceDescriptor = $moufManager->getInstanceDescriptor($name);
161 161
 		$tdbmServiceDescriptor->getSetterProperty("setTableToBeanMap")->setValue($tableToBeanMap);
Please login to merge, or discard this patch.
src/Mouf/Database/TDBM/Controllers/TdbmInstallController.php 2 patches
Indentation   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -109,12 +109,12 @@  discard block
 block discarded – undo
109 109
 		$this->beanNamespace = $this->moufManager->getVariable("tdbmDefaultBeanNamespace_tdbmService");
110 110
 		
111 111
 		if ($this->daoNamespace == null && $this->beanNamespace == null) {
112
-            $classNameMapper = ClassNameMapper::createFromComposerFile(__DIR__.'/../../../../../../../../composer.json');
112
+			$classNameMapper = ClassNameMapper::createFromComposerFile(__DIR__.'/../../../../../../../../composer.json');
113 113
 
114
-            $autoloadNamespaces = $classNameMapper->getManagedNamespaces();
114
+			$autoloadNamespaces = $classNameMapper->getManagedNamespaces();
115 115
 			if ($autoloadNamespaces) {
116 116
 				$this->autoloadDetected = true;
117
-                $rootNamespace = $autoloadNamespaces[0];
117
+				$rootNamespace = $autoloadNamespaces[0];
118 118
 				$this->daoNamespace = $rootNamespace."Dao";
119 119
 				$this->beanNamespace = $rootNamespace."Dao\\Bean";
120 120
 			} else {
@@ -144,7 +144,7 @@  discard block
 block discarded – undo
144 144
 	 * @param string $selfedit
145 145
 	 * @throws \Mouf\MoufException
146 146
 	 */
147
-    public function generate($daonamespace, $beannamespace, $storeInUtc = 0, $selfedit="false") {
147
+	public function generate($daonamespace, $beannamespace, $storeInUtc = 0, $selfedit="false") {
148 148
 		$this->selfedit = $selfedit;
149 149
 		
150 150
 		if ($selfedit == "true") {
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -144,7 +144,7 @@
 block discarded – undo
144 144
 	 * @param string $selfedit
145 145
 	 * @throws \Mouf\MoufException
146 146
 	 */
147
-    public function generate($daonamespace, $beannamespace, $storeInUtc = 0, $selfedit="false") {
147
+    public function generate($daonamespace, $beannamespace, $storeInUtc = 0, $selfedit = "false") {
148 148
 		$this->selfedit = $selfedit;
149 149
 		
150 150
 		if ($selfedit == "true") {
Please login to merge, or discard this patch.