4 * StatusNet - a distributed open-source microblogging tool
5 * Copyright (C) 2008, 2009, StatusNet, Inc.
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU Affero General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU Affero General Public License for more details.
17 * You should have received a copy of the GNU Affero General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
21 define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
23 $helptext = <<<END_OF_CHECKSCHEMA_HELP
24 Attempt to pull a schema definition for a given table.
26 END_OF_CHECKSCHEMA_HELP;
28 require_once INSTALLDIR.'/scripts/commandline.inc';
30 function indentOptions($indent)
33 if ($indent < $cutoff) {
34 $space = str_repeat(' ', $indent * 4);
37 $endspace = "$lf" . str_repeat(' ', ($indent - 1) * 4);
44 if ($indent - 1 < $cutoff) {
46 return array($space, $sep, $lf, $endspace);
49 function prettyDumpArray($arr, $key=null, $indent=0)
52 if ($key == 'primary key') {
53 $subIndent = $indent + 2;
55 $subIndent = $indent + 1;
58 list($space, $sep, $lf, $endspace) = indentOptions($indent);
59 list($inspace, $insep, $inlf, $inendspace) = indentOptions($subIndent);
62 if (!is_numeric($key)) {
66 print "array({$inlf}";
68 foreach ($arr as $key => $row) {
70 prettyDumpArray($row, $key, $subIndent);
71 if ($n < count($arr)) {
76 print "{$inendspace})";
78 print var_export($arr, true);
82 function dumpTable($tableName)
84 $schema = Schema::get();
85 $def = $schema->getTableDef($tableName);
86 prettyDumpArray($def, $tableName);
91 foreach ($args as $tableName) {
92 dumpTable($tableName);