<?php

// File: $Id: update_functions.php,v 1.2 2002/03/16 15:24:37 johnnyrocket Exp $ $Name:  $
// ----------------------------------------------------------------------
// POST-NUKE Content Management System
// Copyright (C) 2001 by the Post-Nuke Development Team.
// http://www.postnuke.com/
// ----------------------------------------------------------------------
// Based on:
// PHP-NUKE Web Portal System - http://phpnuke.org/
// Thatware - http://thatware.org/
// ----------------------------------------------------------------------
// LICENSE
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License (GPL)
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// To read the license please visit http://www.gnu.org/copyleft/gpl.html
// ----------------------------------------------------------------------
// Original Author of file:
// Purpose of file: Include the functions needed for the table validation
// ----------------------------------------------------------------------

/************************************************************************/
/* Function: CheckForField                                              */
/* Purpose: Returns true if field exists, false otherwise               */
/************************************************************************/
function CheckForField($field_name, $table_name)
{
    $result = mysql_query("desc $GLOBALS[prefix]_$table_name");
    while ($row = mysql_fetch_array($result)) {
        if ($row[Field] == $field_name) {
            return (true);
        }
    }

    return(false);
}

/***********************************************************************/
/* Function: GetFieldType                                              */
/* Purpose: Returns a string containing the datatype, false on error   */
/***********************************************************************/
function GetFieldType($field_name, $table_name)
{
    $result = mysql_query("desc $GLOBALS[prefix]_$table_name");
    while ($row = mysql_fetch_array($result)) {
        if ($row[Field] == $field_name) {
            return ($row[Type]);
        }
    }
    return (false);
}

/************************************************************************/
/* Function: CheckTableExists                                           */
/* Purpose: Returns true if the table exists.  False if not             */
/************************************************************************/
function CheckTableExists($table_name)
{
    $result = mysql_list_tables($GLOBALS[dbname]);
    while ($row = mysql_fetch_row($result))
    {
        if ($row[0] == "$GLOBALS[prefix]_$table_name")
        {
            return true;
        }
    }
    return false;
}

/************************************************************************/
/* Function: GetFields                                                  */
/* Purpose: Returns an array of the fields                              */
/************************************************************************/
function GetFields($table_name)
{
    $result = mysql_list_fields($GLOBALS[dbname], "$GLOBALS[prefix]_$table_name");
    $total = mysql_num_fields($result);
    for ($i = 0; $i < $total; $i++)
    {
        // name
        $field_name = mysql_field_name($result, $i);
        // type & size
        $result2 = mysql_query("desc $GLOBALS[prefix]_$table_name");
        while ($row = mysql_fetch_array($result2))
        {
            if ($row[Field] == $field_name)
            {
                $field_type = $row[Type];
                $field_default = $row['Default'];
            }
        }
        if (strstr($field_type, '('))
        {
            $data = explode('(', $field_type);
            $data2 = explode(')', $data[1]);
            $field_type = $data[0];
            $field_size = $data2[0];
        } else {
            $field_size = mysql_field_len($result, $i);
        }
        // flags
        $field_flags = '';
        $flags = explode(' ',mysql_field_flags($result, $i));
        foreach ($flags as $k=>$v)
        { // just makes things easer :-)
            $field_flags[$v] = true;
        }
        // put it all together
        $fields[$field_name] = array (
            'type'              => $field_type,
            'def'               => $field_default,
            'auto_increment'    => $field_flags[auto_increment],
            'binary'            => $field_flags[binary],
            'blob'              => $field_flags[blob],
            'enum'              => $field_flags[enum],
            'multiple_key'      => $field_flags[multiple_key],
            'not_null'          => $field_flags[not_null],
            'primary_key'       => $field_flags[primary_key],
            'timestamp'         => $field_flags[timestamp],
            'unique_key'        => $field_flags[unique_key],
            'unsigned'          => $field_flags[unsigned],
            'zerofill'          => $field_flags[zero_fill]
        );
        switch ($field_type)
        { // need to add enum/set code someday
            case 'float':
            case 'decimal':
                $fsize = explode(',',$field_size);
                $fields[$field_name][size] = $fsize[0];
                $fields[$field_name][fraction] = $fsize[1];
                break;
            default:
                $fields[$field_name][size] = $field_size;
                break;
        }
    }
    return $fields;
}
?>