phpgroupware-developers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

SV: [Phpgroupware-developers] Schema Availability to Apps


From: Sigurd Nes
Subject: SV: [Phpgroupware-developers] Schema Availability to Apps
Date: Wed, 21 May 2003 11:18:07 +0200

Here is how I decide date and money format in 'property' for mssql:

if ($GLOBALS['phpgw_info']['server']['db_type']=='mssql')
{
        $this->dateformat       = "M d Y";
        $this->datetimeformat   = "M d Y g:iA";
}
else
{
        $this->dateformat       = "Y-m-d";
        $this->datetimeformat   = "Y-m-d G:i:s";
}


function moneyformat($amount)
{
        if ($GLOBALS['phpgw_info']['server']['db_type']=='mssql')
        {
                $moneyformat    = "CONVERT(MONEY,"."'$amount'".",0)";
        }
        else
        {
                $moneyformat    = "'" . $amount . "'";
        }

return $moneyformat;
}

Sigurd

> Ralf: 
> I use something similar in some of my apps:
> 
> It's an (abstract) base-class for an so-layer. It includes the schema
> and works on that information. It has functions for reading, writeting
> or searching in the table and two function to convert the
> db-representation of the data-object in the internal one and back
(with
> can be extended / overwritten in the extending class).
> 
> If you want to check it out: etemplate/inc/so_sql.inc.php
> 
> Examples how to use the class are in the etemplte tutorial and each
> function has ein extensive include-doc.
> 
> Ralf
> 
> PS It does not deal with MSSQL or Sybase (missing) datetime types at
the
> moment, but its easy to add, as the class is aware of the type of each
> colum and abstracts the sql to access the table (you dont need to
write
> sql direct).
> 
> Michael Dean schrieb:
> > I remember raising this issue when I first proposed the schema_proc
> > classes to phpGW, and while working with DCL recently, I have come
> > across a need for loading table schemas dynamically so I can use the
> > metadata to generate SQL.  This is necessary for a class I have that
> > generates SQL based on several attributes, including column list,
> > filters, joins, etc.
> >
> > The issue at hand is that MSSQL and Sybase do not have native
datetime
> > support in DCL.  I am currently implementing this functionality (and
it
> > can/will be pushed to phpGW classes).  The reason the native support
did
> > not exist was because the client libraries returned the default
format
> > (Day Mon DD YYYY HH:MM:SS AM/PM), which isn't something you want to
> > parse.  To work around this, I need to wrap all column list
references
> > in an abstract function.
> >
> > So, what I have decided to do (rather than hard code all my dates
and
> > timestamps) is break up the schema defined in phpgw_baseline into
> > multiple files under dcl/schema.  I have then created a method to
load
> > this based on table name (LoadSchema).  The dcl/schema directory has
a
> > bunch of schema.*.php files that individually set the table's
metadata
> > in the phpgw_baseline array.  This means the tables_current.php
would
> > just include all of the schema.*.php files instead of being one huge
> > array definition.
> >
> > Anyway, I thought I'd share this function and if anyone finds it to
be
> > useful in phpGW (I know I would), we can add this to the API.
> >
> > Mike
> >
> > ********** Code Samples ************
> >
> > /////////////// LoadSchema definition - global in scope
> > //
> > function LoadSchema($sTableName)
> > {
> >     $sConst = sprintf('SCHEMA_%s_INCLUDED', $sTableName);
> >     if (!defined($sConst))
> >     {
> >             if (!is_array($GLOBALS['phpgw_baseline']))
> >                     $GLOBALS['phpgw_baseline'] = array();
> >
> >             define($sConst, 1);
> >             include(sprintf($GLOBALS['dcl_root'] .
'schema/schema.%s.php',
> > $sTableName));
> >     }
> > }
> >
> > /////////////// schema.dcl_preferences.php file from app/schema dir
> > //
> > <?php
> > $GLOBALS['phpgw_baseline']['dcl_preferences'] = array(
> >     'fd' => array(
> >             'personnel_id' => array('type' => 'int', 'precision' =>
4,
> 'nullable'
> > => false),
> >             'preferences_data' => array('type' => 'text')
> >     ),
> >     'pk' => array('personnel_id'),
> >     'fk' => array(),
> >     'ix' => array(),
> >     'uc' => array()
> > );
> > ?>
> >
> >
> >
> > _______________________________________________
> > Phpgroupware-developers mailing list
> > address@hidden
> > http://mail.gnu.org/mailman/listinfo/phpgroupware-developers
> 
> 
> --
> ----------------------------------------------------------------------
> Ralf Becker
> OUTDOOR UNLIMITED Training GmbH                Telefon 0631 / 31657-0
> Leibnizstraße 17                               Telefax 0631 / 31657-26
> D-67663 Kaiserslautern            EMail address@hidden
> 
> 
> 
> _______________________________________________
> Phpgroupware-developers mailing list
> address@hidden
> http://mail.gnu.org/mailman/listinfo/phpgroupware-developers
> 







reply via email to

[Prev in Thread] Current Thread [Next in Thread]