phpBB

Development Wiki

User:Pyramide/DB2wiki

From phpBB Development Wiki

Use this script to generate the lists and tables on Tables and its subpages.

<?php
//This script is used to generate the pages at http://olympuswiki.naderman.de/Tables
//usage: http://yourserver/db2wiki.php for the list of tables
//and http://yourserver/db2wiki.php?table=phpbb_foo for individual tables
//Author: Pyramide (Frank Dreyer)

define('IN_PHPBB'true);
$phpbb_root_path './';
$phpEx substr(strrchr(__FILE__'.'), 1);
include(
$phpbb_root_path 'common.' $phpEx);

if(!
defined('STDIN'))
{
    
header('Content-type:text/plain');
}

if(isset(
$_GET['table']))
{
    
$table $_GET['table'];
}
elseif(isset(
$argv[1]))
{
    
$table $argv[1];
}
else
{
    
//list of tables
    
?>
List of tables

{|border="1" cellspacing="0" cellpadding="3"
! name
! content
<?php

    $sql 
"SHOW TABLES";
    
$result $db->sql_query($sql);
    while(
$row $db->sql_fetchrow($result))
    {
        
$name $row[key($row)];
        echo 
"|-\n";
        echo 
"| [[/$name|$name]]\n";
        echo 
"| tbd\n";
    }
    echo 
"|}";
    exit;
}

if(
strstr($table'`'))
{
    die(
'hacking attempt');
}

?>
description goes here

== Fields ==
{|border="1" cellspacing="0" cellpadding="5"
! column
! type (MySQL)
! content
! default
<?php

$sql 
"desc `$table`";
$result $db->sql_query($sql);
while(
$row $db->sql_fetchrow($result))
{
    
$def $row['Default'];
    if(
$row['Extra'] == 'auto_increment')
    {
        
$def 'auto_increment';
    }
    if(
$def == '')
    {
        
$def '&nbsp;';
    }
    
$content 'tbd';
    if(
$row['Key'] == 'PRI')
    {
        
$content 'primary key';
    }
    echo 
"|-\n";
    echo 
"| $row[Field]\n";
    echo 
"| $row[Type]\n";
    echo 
"| $content\n";
    echo 
"| $def\n";
}
?>
|}


== Keys ==
{|border="1" cellspacing="0" cellpadding="5"
! name
! fields
<?php
$sql 
"SHOW KEYS FROM `$table`";
$result $db->sql_query($sql);

$keys = array();

while(
$row $db->sql_fetchrow($result))
{
    
$keys[$row['Key_name']][] = $row['Column_name'];
}
foreach(
$keys as $name => $fields)
{
    echo 
"|-\n";
    echo 
'|rowspan="' sizeof($fields) . '"| ' $name "\n";
    for(
$i=0$i<sizeof($fields); $i++)
    {
        if(
$i 0)
        {
            echo 
"|-\n";
        }
        echo 
'|' $fields[$i] . "\n";
    }
}
?>
|}
<?php if($table == 'phpbb_config') { ?>


== Config values ==
{|border="1" cellspacing="0" cellpadding="5"
! name
! type
! description
<?php

$sql 
"SELECT * FROM phpbb_config ORDER BY config_name ASC";
$result $db->sql_query($sql);
while(
$row $db->sql_fetchrow($result))
{
    
$value $row['config_value'];
    if(
$value == '0' || $value == '1')
    {
        
$type 'bool (0/1)';
    }
    elseif(
intval($value) == $value)
    {
        
$type 'integer';
    }
    else
    {
        
$type 'string';
    }
    echo 
"|-\n";
    echo 
"| $row[config_name]\n";
    echo 
"| $type\n";
    echo 
"| tbd\n";
}
?>
|}
<?php ?>