mirror of
https://github.com/postfixadmin/postfixadmin.git
synced 2024-09-19 19:22:14 +02:00
Add CliScheme.php:
- displays the database scheme (for usage in upgrade.php) PFAHandler: - add "Scheme" to the list of available tasks postfixadmin-cli.php: - add "scheme" to help This is the first patch of a series sponsored by Bund der Deutschen Landjugend (german rural youth) http://bdl.landjugend.info/ git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1710 a1433add-5e2c-0410-b055-b7f2511e0802
This commit is contained in:
parent
22839d3695
commit
d9e30fb41b
104
model/CliScheme.php
Normal file
104
model/CliScheme.php
Normal file
@ -0,0 +1,104 @@
|
||||
<?php
|
||||
# $Id$
|
||||
/**
|
||||
* class to display the database scheme (for usage in upgrade.php) in Cli
|
||||
*
|
||||
* extends the "Shell" class
|
||||
*/
|
||||
|
||||
class CliScheme extends Shell {
|
||||
|
||||
public $handler_to_use = "";
|
||||
public $new = 0;
|
||||
|
||||
|
||||
/**
|
||||
* Execution method always used for tasks
|
||||
*/
|
||||
public function execute() {
|
||||
|
||||
$module = preg_replace('/Handler$/', '', $this->handler_to_use);
|
||||
$module = strtolower($module);
|
||||
|
||||
$handler = new $this->handler_to_use($this->new);
|
||||
$struct = $handler->getStruct();
|
||||
|
||||
foreach (array_keys($struct) as $field) {
|
||||
if ($field == 'created') {
|
||||
$struct[$field]['db_code'] = '{DATE}';
|
||||
} elseif ($field == 'modified') {
|
||||
$struct[$field]['db_code'] = '{DATECURRENT}';
|
||||
} else {
|
||||
switch ($struct[$field]['type']) {
|
||||
case 'int':
|
||||
$struct[$field]['db_code'] = '{BIGINT}';
|
||||
break;
|
||||
case 'bool':
|
||||
$struct[$field]['db_code'] = '{BOOLEAN}';
|
||||
break;
|
||||
default:
|
||||
$struct[$field]['db_code'] = 'VARCHAR(255) {LATIN1} NOT NULL';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->out("For creating a new table with upgrade.php:");
|
||||
$this->out("");
|
||||
|
||||
$this->out('db_query_parsed("');
|
||||
$this->out(' CREATE TABLE {IF_NOT_EXISTS} " . table_by_key("' . $module . '") . " (');
|
||||
# TODO: $module is not really correct - $handler->db_table would be
|
||||
|
||||
foreach (array_keys($struct) as $field) {
|
||||
if ($struct[$field]['not_in_db'] == 0 && $struct[$field]['dont_write_to_db'] == 0) {
|
||||
$this->out(" $field " . $struct[$field]['db_code'] . ",");
|
||||
}
|
||||
}
|
||||
|
||||
$this->out(" INDEX domain(domain,username), // <--- change as needed");
|
||||
$this->out(" PRIMARY KEY (" . $handler->getId_field() . ")");
|
||||
$this->out(' ) {MYISAM} ');
|
||||
$this->out('");');
|
||||
|
||||
$this->out('');
|
||||
$this->hr();
|
||||
$this->out('For adding fields with upgrade.php:');
|
||||
$this->out('');
|
||||
|
||||
$prev_field = '';
|
||||
foreach (array_keys($struct) as $field) {
|
||||
if ($struct[$field]['not_in_db'] == 0 && $struct[$field]['dont_write_to_db'] == 0) {
|
||||
$this->out(" _db_add_field('$module', '$field',\t'" . $struct[$field]['db_code'] . "',\t'$prev_field');");
|
||||
$prev_field = $field;
|
||||
}
|
||||
}
|
||||
|
||||
$this->out('');
|
||||
$this->hr();
|
||||
$this->out('Note that the above is only a template.');
|
||||
$this->out('You might need to adjust some parts.');
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays help contents
|
||||
*/
|
||||
public function help() {
|
||||
$module = preg_replace('/Handler$/', '', $this->handler_to_use);
|
||||
$module = strtolower($module);
|
||||
|
||||
$this->out(
|
||||
"Usage:
|
||||
|
||||
postfixadmin-cli $module scheme
|
||||
|
||||
Print the $module database scheme in a way that can be
|
||||
pasted into upgrade.php.
|
||||
|
||||
");
|
||||
|
||||
$this->_stop();
|
||||
}
|
||||
|
||||
}
|
||||
/* vim: set expandtab softtabstop=4 tabstop=4 shiftwidth=4: */
|
@ -12,7 +12,7 @@ abstract class PFAHandler {
|
||||
public $infomsg = array();
|
||||
|
||||
# array of tasks available in CLI
|
||||
public $taskNames = array('Help', 'Add', 'Update', 'Delete', 'View');
|
||||
public $taskNames = array('Help', 'Add', 'Update', 'Delete', 'View', 'Scheme');
|
||||
|
||||
/**
|
||||
* variables that must be defined in all *Handler classes
|
||||
|
@ -472,6 +472,7 @@ class PostfixAdmin {
|
||||
$this->stdout(" add Add an item");
|
||||
$this->stdout(" update Update an item");
|
||||
$this->stdout(" delete Delete an item");
|
||||
$this->stdout(" scheme Print database scheme (useful for developers only)");
|
||||
$this->stdout(" help Print help output");
|
||||
$this->stdout("");
|
||||
$this->stdout("");
|
||||
|
Loading…
Reference in New Issue
Block a user