CC-2166: Packaging Improvements. Moved the Zend app into airtime_mvc. It is now installed to /var/www/airtime. Storage is now set to /srv/airtime/stor. Utils are now installed to /usr/lib/airtime/utils/. Added install/airtime-dircheck.php as a simple test to see if everything is install/uninstalled correctly.
This commit is contained in:
parent
514777e8d2
commit
b11cbd8159
4546 changed files with 138 additions and 51 deletions
|
@ -0,0 +1,170 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* This file is part of the Propel package.
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*
|
||||
* @license MIT License
|
||||
*/
|
||||
|
||||
require_once 'task/AbstractPropelDataModelTask.php';
|
||||
require_once 'model/AppData.php';
|
||||
|
||||
/**
|
||||
* A task to generate Graphviz dot files from Propel datamodel.
|
||||
*
|
||||
* @author Mark Kimsal
|
||||
* @version $Revision: 1612 $
|
||||
* @package propel.generator.task
|
||||
*/
|
||||
class PropelGraphvizTask extends AbstractPropelDataModelTask
|
||||
{
|
||||
|
||||
/**
|
||||
* The properties file that maps an SQL file to a particular database.
|
||||
* @var PhingFile
|
||||
*/
|
||||
private $sqldbmap;
|
||||
|
||||
/**
|
||||
* Name of the database.
|
||||
*/
|
||||
private $database;
|
||||
|
||||
/**
|
||||
* Name of the output directory.
|
||||
*/
|
||||
private $outDir;
|
||||
|
||||
|
||||
/**
|
||||
* Set the sqldbmap.
|
||||
* @param PhingFile $sqldbmap The db map.
|
||||
*/
|
||||
public function setOutputDirectory(PhingFile $out)
|
||||
{
|
||||
if (!$out->exists()) {
|
||||
$out->mkdirs();
|
||||
}
|
||||
$this->outDir = $out;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the sqldbmap.
|
||||
* @param PhingFile $sqldbmap The db map.
|
||||
*/
|
||||
public function setSqlDbMap(PhingFile $sqldbmap)
|
||||
{
|
||||
$this->sqldbmap = $sqldbmap;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the sqldbmap.
|
||||
* @return PhingFile $sqldbmap.
|
||||
*/
|
||||
public function getSqlDbMap()
|
||||
{
|
||||
return $this->sqldbmap;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the database name.
|
||||
* @param string $database
|
||||
*/
|
||||
public function setDatabase($database)
|
||||
{
|
||||
$this->database = $database;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the database name.
|
||||
* @return string
|
||||
*/
|
||||
public function getDatabase()
|
||||
{
|
||||
return $this->database;
|
||||
}
|
||||
|
||||
|
||||
public function main()
|
||||
{
|
||||
|
||||
$count = 0;
|
||||
|
||||
$dotSyntax = '';
|
||||
|
||||
// file we are going to create
|
||||
|
||||
$dbMaps = $this->getDataModelDbMap();
|
||||
|
||||
foreach ($this->getDataModels() as $dataModel) {
|
||||
|
||||
$dotSyntax .= "digraph G {\n";
|
||||
foreach ($dataModel->getDatabases() as $database) {
|
||||
|
||||
$this->log("db: " . $database->getName());
|
||||
|
||||
//print the tables
|
||||
foreach ($database->getTables() as $tbl) {
|
||||
|
||||
$this->log("\t+ " . $tbl->getName());
|
||||
|
||||
++$count;
|
||||
$dotSyntax .= 'node'.$tbl->getName().' [label="{<table>'.$tbl->getName().'|<cols>';
|
||||
|
||||
foreach ($tbl->getColumns() as $col) {
|
||||
$dotSyntax .= $col->getName() . ' (' . $col->getType() . ')';
|
||||
if (count($col->getForeignKeys()) > 0) {
|
||||
$dotSyntax .= ' [FK]';
|
||||
} elseif ($col->isPrimaryKey()) {
|
||||
$dotSyntax .= ' [PK]';
|
||||
}
|
||||
$dotSyntax .= '\l';
|
||||
}
|
||||
$dotSyntax .= '}", shape=record];';
|
||||
$dotSyntax .= "\n";
|
||||
}
|
||||
|
||||
//print the relations
|
||||
|
||||
$count = 0;
|
||||
$dotSyntax .= "\n";
|
||||
foreach ($database->getTables() as $tbl) {
|
||||
++$count;
|
||||
|
||||
foreach ($tbl->getColumns() as $col) {
|
||||
$fk = $col->getForeignKeys();
|
||||
if ( count($fk) == 0 or $fk === null ) continue;
|
||||
if ( count($fk) > 1 ) throw( new Exception("not sure what to do here...") );
|
||||
$fk = $fk[0]; // try first one
|
||||
$dotSyntax .= 'node'.$tbl->getName() .':cols -> node'.$fk->getForeignTableName() . ':table [label="' . $col->getName() . '=' . implode(',', $fk->getForeignColumns()) . ' "];';
|
||||
$dotSyntax .= "\n";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
} // foreach database
|
||||
$dotSyntax .= "}\n";
|
||||
|
||||
$this->writeDot($dotSyntax,$this->outDir,$database->getName());
|
||||
|
||||
$dotSyntax = '';
|
||||
|
||||
} //foreach datamodels
|
||||
|
||||
} // main()
|
||||
|
||||
|
||||
/**
|
||||
* probably insecure
|
||||
*/
|
||||
function writeDot($dotSyntax, PhingFile $outputDir, $baseFilename) {
|
||||
$file = new PhingFile($outputDir, $baseFilename . '.schema.dot');
|
||||
$this->log("Writing dot file to " . $file->getAbsolutePath());
|
||||
file_put_contents($file->getAbsolutePath(), $dotSyntax);
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue