plugin refactoring continues
This commit is contained in:
parent
a73ce3a4b5
commit
a9e5a35917
@ -98,7 +98,65 @@ class Doctrine_Plugin
|
|||||||
{
|
{
|
||||||
return $this->_options;
|
return $this->_options;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* generates foreign keys for the plugin table based on the owner table
|
||||||
|
*
|
||||||
|
* the foreign keys generated by this method can be used for
|
||||||
|
* setting the relations between the owner and the plugin classes
|
||||||
|
*
|
||||||
|
* @param Doctrine_Table $table the table object that owns the plugin
|
||||||
|
* @return array an array of foreign key definitions
|
||||||
|
*/
|
||||||
|
public function generateForeignKeys(Doctrine_Table $table)
|
||||||
|
{
|
||||||
|
$fk = array();
|
||||||
|
|
||||||
|
foreach ((array) $table->getIdentifier() as $column) {
|
||||||
|
$def = $table->getDefinitionOf($column);
|
||||||
|
|
||||||
|
unset($def['autoincrement']);
|
||||||
|
unset($def['sequence']);
|
||||||
|
unset($def['primary']);
|
||||||
|
|
||||||
|
$col = strtolower(Doctrine::tableize($table->getComponentName()) . '_' . $column);
|
||||||
|
|
||||||
|
$def['primary'] = true;
|
||||||
|
$fk[$col] = $def;
|
||||||
|
}
|
||||||
|
return $fk;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* generates a relation array to given table
|
||||||
|
*
|
||||||
|
* this method can be used for generating the relation from the plugin
|
||||||
|
* table to the owner table
|
||||||
|
*
|
||||||
|
* @param Doctrine_Table $table the table object to construct the relation to
|
||||||
|
* @param array $foreignKeys an array of foreign keys
|
||||||
|
* @return array the generated relation array
|
||||||
|
*/
|
||||||
|
public function generateRelation(Doctrine_Table $table, array $foreignKeys)
|
||||||
|
{
|
||||||
|
$local = (count($foreignKeys) > 1) ? array_keys($foreignKeys) : key($foreignKeys);
|
||||||
|
|
||||||
|
$relation = array($table->getComponentName() =>
|
||||||
|
array('local' => $local,
|
||||||
|
'foreign' => $table->getIdentifier(),
|
||||||
|
'onDelete' => 'CASCADE',
|
||||||
|
'onUpdate' => 'CASCADE'));
|
||||||
|
|
||||||
|
return $relation;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* generates the class definition for plugin class
|
||||||
|
*
|
||||||
|
* @param array $options plugin class options, keys representing the option names
|
||||||
|
* and values as option values
|
||||||
|
* @param array $columns the plugin class columns, keys representing the column names
|
||||||
|
* and values as column definitions
|
||||||
|
* @param array $relations the bound relations of the plugin class
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function generateClass($options, $columns, $relations)
|
public function generateClass($options, $columns, $relations)
|
||||||
{
|
{
|
||||||
$builder = new Doctrine_Import_Builder();
|
$builder = new Doctrine_Import_Builder();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user