Revision: 21195
          
http://svn.sv.gnu.org/viewvc/?view=rev&root=phpgroupware&revision=21195
Author:   sigurdne
Date:     2010-04-14 19:26:00 +0000 (Wed, 14 Apr 2010)
Log Message:
-----------
Improvement: add organisation as datatype 4746:5203

Modified Paths:
--------------
    people/sigurdne/modules/phpgwapi/trunk/inc/class.custom_fields.inc.php

Modified: people/sigurdne/modules/phpgwapi/trunk/inc/class.custom_fields.inc.php
===================================================================
--- people/sigurdne/modules/phpgwapi/trunk/inc/class.custom_fields.inc.php      
2010-04-14 19:23:52 UTC (rev 21194)
+++ people/sigurdne/modules/phpgwapi/trunk/inc/class.custom_fields.inc.php      
2010-04-14 19:26:00 UTC (rev 21195)
@@ -1,16 +1,16 @@
 <?php
        /**
-       * phpGroupWare custom fields
-       *
-       * @author Sigurd Nes <sigur...@online.no>
-       * @author Dave Hall dave.hall at skwashd.com
-       * @copyright Copyright (C) 2003-2006 Free Software Foundation 
http://www.fsf.org/
+        * phpGroupWare custom fields
+        *
+        * @author Sigurd Nes <sigur...@online.no>
+        * @author Dave Hall dave.hall at skwashd.com
+        * @copyright Copyright (C) 2003-2006 Free Software Foundation 
http://www.fsf.org/
         * @license http://www.gnu.org/licenses/gpl.html GNU General Public 
License v2 or later
-       * @internal Development of this application was funded by 
http://www.bergen.kommune.no/bbb_/ekstern/
+        * @internal Development of this application was funded by 
http://www.bergen.kommune.no/bbb_/ekstern/
         * @package phpgroupware
         * @subpackage phpgwapi
         * @version $Id$
-       */
+        */
 
        /*
           This program is free software: you can redistribute it and/or modify
@@ -43,14 +43,14 @@
                
                /**
                * @var array $receipt messages from the prosessing of functions
-                */
+               */
                public $receipt = array();
                
                /**
                * @var array $datatype_text the translated end user field types
-                */
+               */
                public $datatype_text = array();
-               
+
                /**
                 * @var string $_appname the name of the current application
                 */
@@ -63,7 +63,7 @@
 
                /**
                 * @var string $_join SQL JOIN statement
-               */
+                */
                protected $_join;
 
                /**
@@ -109,7 +109,8 @@
                                'R'             => lang('Muliple radio'),
                                'CH'    => lang('Muliple checkbox'),
                                'LB'    => lang('Listbox'),
-                               'AB'    => lang('Contact'),
+                               'AB'    => lang('Contact'),// Addressbook person
+                               'ABO'   => lang('Organisation'),// Addressbook 
organisation
                                'VENDOR'=> lang('Vendor'),
                                'email' => lang('Email'),
                                'link'  => lang('Link'),
@@ -174,7 +175,7 @@
                        unset($group);
 
                        $this->_db->transaction_begin();
-                       
+
                        $sql = "SELECT id FROM phpgw_cust_attribute_group"
                                . " WHERE location_id = 
{$values['location_id']}"
                                        . " AND name = '{$values['name']}'";
@@ -203,9 +204,9 @@
                        $receipt['id'] = $values['id'];
 
                        if ( $this->_db->transaction_commit() )
-                               {
+                       {
                                return $values['id'];
-                               }
+                       }
 
                        return 0;
                }
@@ -301,12 +302,13 @@
                                case 'CH':
                                case 'LB':
                                case 'AB':
+                               case 'ABO':
                                case 'VENDOR':
                                case 'event':
                                        if ( $attrib['history'] )
-                               {
+                                       {
                                                $receipt['error'][] = 
array('msg' => lang('History not allowed for this datatype'));
-                               }
+                                       }
                                        $values['history'] = false;
                                        break;
 
@@ -353,15 +355,15 @@
                        unset($cols, $vals);
 
                        $receipt['id'] = $values['id'];
-                       
+
                        if ( !$values['precision_'] > 0)
                        {
                                $precision = 
$this->_translate_datatype_precision($values['datatype']);
                                if ( $precision )
-                       {
+                               {
                                        $values['precision_'] = $precision;
+                               }
                        }
-                       }
 
                        $col_info = array
                        (
@@ -378,7 +380,7 @@
                                {
                                        unset($col_info['default']);
                                }
-                               }
+                       }
 
                        $this->_oProc->AddColumn($attrib_table, 
$values['column_name'], $col_info);
 
@@ -392,7 +394,7 @@
 
                /**
                 * Prepare an attribute value so it can be saved in the database
-                * 
+                *
                 * @param array $values_attribute an attribute structure
                 *
                 * @return array the structure with the value prepared
@@ -411,7 +413,7 @@
                                if ( !$attrib['value'] )
                                {
                                        continue;
-                       }
+                               }
 
                                switch ( $attrib['datatype'] )
                                {
@@ -484,7 +486,7 @@
                 * @param string $appname where to delete the attrib
                 * @param integer $attrib_id id of attrib to delete
                 * @param bool $doubled sometimes the attribute fits into a 
history-table as a double
-                * 
+                *
                 * @return boolean was the record deleted?
                 */
                public function delete($appname, $location, $attrib_id, $table 
= '',$doubled = false )
@@ -493,7 +495,7 @@
                        $attrib_id      = (int) $attrib_id;
 
                        if(!$table)
-               {
+                       {
                                $table  = 
$GLOBALS['phpgw']->locations->get_attrib_table($appname, $location);
                        }
 
@@ -533,7 +535,7 @@
                                $max_sort       = $this->_db->f('max_sort');
                        
                                if ( $max_sort > $attrib_sort )
-                       {
+                               {
                                        $sql = "UPDATE phpgw_cust_attribute SET 
attrib_sort = attrib_sort - 1"
                                                . " WHERE location_id = 
{$loc_id} AND attrib_sort > {$attrib_sort} AND group_id = {$group_id}";
                                        $this->_db->query($sql, __LINE__, 
__FILE__);
@@ -541,7 +543,7 @@
                                $sql = "DELETE FROM phpgw_cust_attribute"
                                                . " WHERE location_id = 
{$loc_id} AND id = {$attrib_id}";
                                $this->_db->query($sql, __LINE__,__FILE__);
-                       }
+                       }       
                        return $this->_db->transaction_commit();
                }
 
@@ -574,14 +576,14 @@
                        if ( $this->_db->transaction_commit() )
                        {
                                return $group_id;
-               }
-               
+                       }
+
                        return false;
                }
                /**
                 * Edit a custom field
                 * 
-                * @param array $attrib the field data
+                * @param array  $attrib       the field data
                 * @param string $attrib_table which table the attribute is 
part of
                 * @param bool $doubled sometimes the attribute fits into a 
history-table as a double
                 *
@@ -595,7 +597,7 @@
                        $attrib['history'] = isset($attrib['history']) ? 
!!$attrib['history'] : false;
                        $attrib['lookup_form'] = isset($attrib['lookup_form']) 
? !!$attrib['lookup_form'] : false;
                        $attrib['group_id']             = (int) 
$attrib['group_id'];
-                       
+
                        if(!$attrib_table)
                        {
                                $attrib_table = 
$GLOBALS['phpgw']->locations->get_attrib_table($attrib['appname'],$attrib['location']);
@@ -616,13 +618,14 @@
                                case 'CH':
                                case 'LB':
                                case 'AB':
+                               case 'ABO':
                                case 'VENDOR':
                                case 'event':
                                        if ( $attrib['history'] )
-                               {
+                                       {
                                                $this->receipt['error'][] = 
array('msg' => lang('History not allowed for this datatype'));
-                               }
-                               $attrib['history'] = false;
+                                       }
+                                       $attrib['history'] = false;
                                        break;
 
                                default: // all is good
@@ -641,26 +644,26 @@
                        $OldDataType            = $this->_db->f('datatype');
                        $OldPrecision           = $this->_db->f('precision_');
                        $OldGroup                       = (int) 
$this->_db->f('group_id');                      
-                       
+
                        $table_def = $this->get_table_def($attrib_table);       
 
                        $this->_db->transaction_begin();
 
                        if( !$doubled )
                        {
-                       $value_set = array
-                       (
-                               'input_text'    => $attrib['input_text'],
-                               'statustext'    => $attrib['statustext'],
-                               'search'                => 
isset($attrib['search']) ? $attrib['search'] : '',
-                               'list'                  => 
isset($attrib['list']) ? $attrib['list'] : '',
-                               'history'               => 
isset($attrib['history']) ? $attrib['history'] : '',
-                               'nullable'              => 
$attrib['column_info']['nullable'] == 'False' ? 'False' : 'True',
-                               'disabled'              => 
isset($attrib['disabled']) ? $attrib['disabled'] : '',
-                               'helpmsg'               => $attrib['helpmsg'],
+                               $value_set = array
+                               (
+                                       'input_text'    => 
$attrib['input_text'],
+                                       'statustext'    => 
$attrib['statustext'],
+                                       'search'                => 
isset($attrib['search']) ? $attrib['search'] : '',
+                                       'list'                  => 
isset($attrib['list']) ? $attrib['list'] : '',
+                                       'history'               => 
isset($attrib['history']) ? $attrib['history'] : '',
+                                       'nullable'              => 
$attrib['column_info']['nullable'] == 'False' ? 'False' : 'True',
+                                       'disabled'              => 
isset($attrib['disabled']) ? $attrib['disabled'] : '',
+                                       'helpmsg'               => 
$attrib['helpmsg'],
                                        'lookup_form'   => 
isset($attrib['lookup_form']) ? $attrib['lookup_form'] : '',
                                        'group_id'              => 
$attrib['group_id']
-                       );
+                               );
 
                                if($OldGroup != $attrib['group_id'])
                                {
@@ -684,7 +687,7 @@
                                        $this->_db->query($sql, __LINE__, 
__FILE__);
                                        $this->_db->next_record();
                                        $max_sort       = 
$this->_db->f('max_sort');
-
+                       
                                        if ( $max_sort > $attrib_sort )
                                        {
                                                $sql = "UPDATE 
phpgw_cust_attribute SET attrib_sort = attrib_sort - 1"
@@ -774,20 +777,51 @@
                        if(isset($attrib['new_choice']) && 
$attrib['new_choice'] && !$doubled )
                        {
                                $choice_id = 
$this->_next_id('phpgw_cust_choice' ,array('location_id'=> $location_id, 
'attrib_id'=>$attrib_id));
+                               $choice_sort = $choice_id;
 
                                $values= array(
                                        $location_id,
                                        $attrib_id,
                                        $choice_id,
+                                       $choice_sort,
                                        $attrib['new_choice']
                                        );
 
                                $values = $this->_db->validate_insert($values);
 
-                               $this->_db->query("INSERT INTO 
phpgw_cust_choice (location_id, attrib_id, id, value) "
+                               $this->_db->query("INSERT INTO 
phpgw_cust_choice (location_id, attrib_id, id,choice_sort, value) "
                                . "VALUES ($values)",__LINE__,__FILE__);
                        }
 
+
+                       if ( count($attrib['edit_choice'])  && !$doubled )
+                       {
+                               foreach ($attrib['edit_choice'] as $choice_id 
=> $value)
+                               {
+                                       $choice_id = (int) $choice_id;
+                                       $value = 
$this->_db->db_addslashes($value);
+                                       $sql = "UPDATE phpgw_cust_choice SET 
value = '{$value}'"
+                                               . " WHERE location_id = 
{$location_id}"
+                                                       . " AND attrib_id = 
{$attrib_id}"
+                                                       . " AND id = 
{$choice_id}";
+                                       $this->_db->query($sql, __LINE__, 
__FILE__);
+                               }
+                       }
+
+                       if ( count($attrib['order_choice'])  && !$doubled )
+                       {
+                               foreach ($attrib['order_choice'] as $choice_id 
=> $order)
+                               {
+                                       $choice_id = (int) $choice_id;
+                                       $order = (int) $order;
+                                       $sql = "UPDATE phpgw_cust_choice SET 
choice_sort = {$order}"
+                                               . " WHERE location_id = 
{$location_id}"
+                                                       . " AND attrib_id = 
{$attrib_id}"
+                                                       . " AND id = 
{$choice_id}";
+                                       $this->_db->query($sql, __LINE__, 
__FILE__);
+                               }
+                       }
+
                        if ( count($attrib['delete_choice'])  && !$doubled )
                        {
                                foreach ($attrib['delete_choice'] as $choice_id)
@@ -813,8 +847,8 @@
                /**
                 * Get a list of attributes
                 * 
-                * @param string $appname the name of the application
-                * @param string $location the name of the location
+                * @param string $appname      the name of the application
+                * @param string $location     the name of the location
                 * @param integer $start
                 * @param string query         
                 * @param string $sort         
@@ -829,10 +863,10 @@
                                $order = 'attrib_sort', $allrows = false, 
$inc_choices = false, $filter = array())
                {
                        $location_id    = 
$GLOBALS['phpgw']->locations->get_id($appname, $location);
-                       $start          = (int) $start;
+                       $start                  = (int) $start;
                        $query                  = 
$this->_db->db_addslashes($query);
                        $order                  = 
$this->_db->db_addslashes($order);
-                       $allrows        = !!$allrows;
+                       $allrows                = !!$allrows;
 
                        
                        $filtermethod   = '';
@@ -840,7 +874,7 @@
                        {
                                $condition = array();
                                foreach ($filter as $column => $value)
-                       {
+                               {
                                        if($value)
                                        {
                                                $condition[] = "$column = 
'{$value}'";
@@ -849,10 +883,10 @@
                                        {
                                                $condition[] = "$column IS 
NULL";                                       
                                        }
-                       }
+                               }
 
                                if( $condition )
-                       {
+                               {
                                        $filtermethod = 'AND ' . implode(" AND 
", $condition);
                                }
 
@@ -862,7 +896,7 @@
                        if ( $order )
                        {
                                if ( $sort == 'DESC')
-                       {
+                               {
                                        $sort = 'DESC';
                                }
 
@@ -953,7 +987,7 @@
                }
                /**
                 * Get a list of groups availlable for attributes within a 
location
-               *
+                * 
                 * @param string $appname      the name of the application
                 * @param string $location     the name of the location
                 * @param ?????? $start        ask sigurd
@@ -961,12 +995,12 @@
                 * @param ?????? $sort         ask sigurd
                 * @param ?????? $order        ask sigurd
                 * @param ?????? $allrows      ask sigurd
-               *
+                *
                 * @return ???? something
-               */
+                */
                public function find_group($appname, $location, $start = 0, 
$query = '', $sort = 'ASC', 
                                $order = 'group_sort', $allrows = false)
-                       {
+               {
                        $location_id    = 
$GLOBALS['phpgw']->locations->get_id($appname, $location);
                        $start                  = (int) $start;
                        $query                  = 
$this->_db->db_addslashes($query);
@@ -977,9 +1011,9 @@
                        if ( $order )
                        {
                                if ( $sort == 'DESC')
-                       {
+                               {
                                        $sort = 'DESC';
-                       }
+                               }
 
                                $ordermethod = "ORDER BY {$order} {$sort}";
                        }
@@ -1028,7 +1062,7 @@
 
                        return $attrib_groups;
                }
-               
+
                /**
                * Read a single attribute group record
                *
@@ -1042,7 +1076,7 @@
                {
                        $location_id = 
$GLOBALS['phpgw']->locations->get_id($appname, $location);
                        $id = (int) $id;
-                       
+
                        $sql = "SELECT * FROM phpgw_cust_attribute_group "
                                . " WHERE location_id = {$location_id} AND id = 
{$id}";
                        $this->_db->query($sql, __LINE__, __FILE__);
@@ -1053,30 +1087,30 @@
                        }
 
                        $group = array
-                               (
+                       (
                                'id'                    => $this->_db->f('id'),
                                'group_name'    => $this->_db->f('name', true),
                                'descr'                 => 
$this->_db->f('descr', true),
                                'remark'                => 
$this->_db->f('remark', true),
                                'group_sort'    => $this->_db->f('group_sort')
-                               );
+                       );
 
                        return $group;
                }
                /**
                * Read a single attribute record
-                * 
+               *
                * @param string  $appname     the name of the module for the 
attribute
                * @param string  $location    the name of the location of the 
attribute
                * @param integer $id          the id of the attribute
                * @param boolean $inc_choices include choices if a lookup field
                *
                * @return array the attribute record
-                */
+               */
                public function get($appname, $location, $id, $inc_choices = 
true)
                {
                        $location_id = 
$GLOBALS['phpgw']->locations->get_id($appname, $location);
-                       $id                     = (int) $id;
+                       $id = (int) $id;
 
                        $sql = "SELECT phpgw_cust_attribute.* FROM 
phpgw_cust_attribute " 
                                . " WHERE location_id = {$location_id}"
@@ -1122,19 +1156,19 @@
                        if ( $inc_choices )
                        {
                                switch ( $this->_db->f('datatype') )
-                                       {
-                               default:
+                               {
+                                       default:
                                                // bail out quickly
                                                break;
                                        case 'R':
                                        case 'CH':
                                        case 'LB':
                                                $attrib['choice'] = 
$this->_get_choices($location_id, $id);
-                                       break;
-                                       }
+                                               break;
                                }
+                       }
                        return $attrib;
-                       }
+               }
 
                /**
                * Arrange attributes within groups
@@ -1156,26 +1190,26 @@
                                        'name'  => lang('attributes'),
                                        'descr' => lang('attributes')
                                )
-                               );
+                       );
                        $groups = $this->find_group($appname, $location, 0, '', 
'ASC', 'group_sort', true);
                        $groups = array_merge($no_group, $groups);
-
+               
                        foreach ($groups as &$group)
+                       {
+                               foreach ($attributes as $attribute)
                                {
-                               foreach ($attributes as $attribute)
-               {
                                        if($attribute['group_id'] == 
$group['id'])
-                       {
+                                       {
                                                $group['attributes'][] = 
$attribute;
+                                       }
+                               }
                        }
-               }
-               }
                        return $groups;
                }
 
                /**
                 * Get the definition of a table
-                * 
+                *
                 * @param string $table     the name of the table to look up
                 * @param array  $table_def ask sigurd
                 *
@@ -1202,22 +1236,22 @@
                        $table_def[$table]['fk'] = 
isset($table_def[$table]['fk']) && $table_def[$table]['fk'] ? 
$table_def[$table]['fk'] : $tableinfo[2];              
                        $table_def[$table]['ix'] = 
isset($table_def[$table]['ix']) && $table_def[$table]['ix'] ? 
$table_def[$table]['ix'] : $tableinfo[3];
                        $table_def[$table]['uc'] = 
isset($table_def[$table]['uc']) && $table_def[$table]['uc'] ? 
$table_def[$table]['uc'] : $tableinfo[4];
-                       
+
                        return $table_def;
                }
-               
+
                /**
                * Preserve attribute values from post in case of an error
-                * 
+               *
                * @param array $values value set with
                * @param array $values_attributes attribute definitions and 
values from posting
                *
                * @return array attribute definitions and values
-                */
+               */
                public function preserve_attribute_values($values, 
$values_attributes)
-                               {
+               {
                        if ( !is_array($values_attributes ) )
-                                       {
+                       {
                                return array();
                        }
 
@@ -1228,45 +1262,45 @@
                                        if ( $val_attrib['id'] != 
$attribute['attrib_id'] )
                                        {
                                                continue;
-               }
+                                       }
 
                                        if( !isset($attribute['value']) )
-               {
+                                       {
                                                continue;
                                        }
 
                                        if ( is_array($attribute['value']) )
-                       {
+                                       {
                                                foreach ( $val_attrib['choice'] 
as &$choice )
-                               {
+                                               {
                                                        foreach ( 
$attribute['value'] as $selected )
-                                       {
+                                                       {
                                                                if ( $selected 
== $choice['id'] )
-                                       {
+                                                               {
                                                                        
$choice['checked'] = 'checked';
+                                                               }
+                                                       }
+                                               }
                                        }
-                                       }
-                                       }
-                               }
                                        else if ( isset($val_attrib['choice'])
                                                && 
is_array($val_attrib['choice']) )
-                               {
+                                       {
                                                foreach ( $val_attrib['choice'] 
as &$choice)
-                                       {
+                                               {
                                                        if ( $choice['id'] == 
$attribute['value'] )
                                                        {
                                                                
$choice['checked'] = 'checked';
+                                                       }
+                                               }
                                        }
-                               }
-                                       }
                                        else
-                                                       {
+                                       {
                                                $val_attrib['value'] = 
$attribute['value'];
                                        }
-                                                       }
-                                               }
+                               }
+                       }
                        return $values;
-                                       }
+               }
 
 
 
@@ -1281,13 +1315,13 @@
                        $id             = (int) $id;
 
                        if ( $resort == 'down' )
-                               {
+                       {
                                $resort = 'down';
                        }
                        else
-                                       {
+                       {
                                $resort = 'up';
-                                       }
+                       }
 
                        $location_id = 
$GLOBALS['phpgw']->locations->get_id($appname, $location);
 
@@ -1307,13 +1341,13 @@
 
                        $update = false;
                        switch($resort)
-                                                                       {
+                       {
                                case 'down':
                                        if($max_sort > $attrib_sort)
-                                                                               
{
+                                       {
                                                $new_sort = $attrib_sort + 1;
                                                $update = true;
-                                                                               
}
+                                       }
                                        break;
 
                                case 'up':
@@ -1322,15 +1356,15 @@
                                        {
                                                $new_sort = $attrib_sort - 1;
                                                $update = true;
-                                                                       }
+                                       }
                                        break;
-                                                               }
+                       }
 
                        if ( !$update )
                        {
                                // nothing to do
                                return true;
-                                                       }
+                       }
 
                        $sql = "UPDATE phpgw_cust_attribute_group SET 
group_sort = {$attrib_sort}"
                                . " WHERE location_id = {$location_id} AND 
group_sort = {$new_sort}";
@@ -1341,7 +1375,7 @@
                        $this->_db->query($sql, __LINE__, __FILE__);
 
                        return $this->_db->transaction_commit();
-                                               }
+               }
 
                /**
                 * Resort an attribute's position in relation to other 
attributes
@@ -1356,9 +1390,9 @@
                        if ( $resort == 'down' )
                        {
                                $resort = 'down';
-                                       }
-                                       else
-                                       {
+                       }
+                       else
+                       {
                                $resort = 'up';
                        }
 
@@ -1386,13 +1420,13 @@
 
                        $update = false;
                        switch($resort)
-                                               {
+                       {
                                case 'down':
                                        if($max_sort > $attrib_sort)
-                                                       {
+                                       {
                                                $new_sort = $attrib_sort + 1;
                                                $update = true;
-                                               }
+                                       }
                                        break;
 
                                case 'up':
@@ -1403,13 +1437,13 @@
                                                $update = true;
                                        }
                                        break;
-                               }
+                       }
 
                        if ( !$update )
-                               {
+                       {
                                // nothing to do
                                return true;
-                               }
+                       }
 
                        $sql = "UPDATE phpgw_cust_attribute SET attrib_sort = 
{$attrib_sort}"
                                . " WHERE location_id = {$location_id} AND 
attrib_sort = {$new_sort} AND group_id = {$group_id}";
@@ -1420,7 +1454,7 @@
                        $this->_db->query($sql, __LINE__, __FILE__);
 
                        return $this->_db->transaction_commit();
-                       }
+               }
 
                /**
                 * Convert a datatype to a human readable label
@@ -1430,13 +1464,13 @@
                 * @return string the user readable string
                 */
                public function translate_datatype($datatype)
-                       { 
+               {
                        if ( isset($this->datatype_text[$datatype]) )
-                               {
+                       {
                                return $this->datatype_text[$datatype];
-                               }
+                       }
                        return '';
-                       }
+               }
 
                /**
                 * Get the list of available choices for a lookup field
@@ -1445,14 +1479,14 @@
                 * @param integer $attrib_id   the field being looked up
                 */
                protected function _get_choices($location_id, $attrib_id)
-                       {
+               {
                        $location_id    = (int) $location_id;
                        $attrib_id              = (int) $attrib_id;
-
+                       
                        $sql = "SELECT * FROM phpgw_cust_choice " 
                                . " WHERE location_id = {$location_id}"
                                        . " AND attrib_id = {$attrib_id}"
-                               . " ORDER BY value";
+                               . " ORDER BY choice_sort ASC, value";
                        $this->_db->query($sql,__LINE__,__FILE__);
 
                        $choices = array();
@@ -1463,7 +1497,8 @@
                                $choices[] = array
                                (
                                        'id'    => $this->_db->f('id'),
-                                       'value' => $this->_db->f('value', true)
+                                       'value' => $this->_db->f('value', true),
+                                       'order' => $this->_db->f('choice_sort')
                                );
                        }
                        return $choices;
@@ -1471,47 +1506,47 @@
 
                /**
                 * Finds the next ID for a record at a table
-               *
+                * 
                 * @param string $table tablename in question
                 * @param array  $key   conditions for finding the next id
                 *
                 * @return int the next id
-               */
+                */
                protected function _next_id($table = null, $key = null)
-                                                       {
+               {
                        if ( !$table )
-                                                               {
+                       {
                                return 0;
-                                                       }
+                       }
 
                        $next_id = 0;
 
                        $where = '';
                        if ( is_array($key) )
-                                               {
+                       {
                                foreach ( $key as $col => $val )
-                                                       {
+                               {
                                        if ( $val )
-                                                               {
+                                       {
                                                $val = 
$this->_db->db_addslashes($val);
                                                $condition[] = "{$col} = 
'{$val}";
-                                                       }
-                                               }
+                                       }
+                               }
 
                                $where='WHERE ' . implode("' AND ", $condition) 
. "'";
-                                       }
+                       }
 
                        $sql = "SELECT max(id) as maximum FROM {$table} 
{$where}";
                        $this->_db->query($sql, __LINE__, __FILE__);
                        if ( $this->_db->next_record() )
                        {
                                $next_id = $this->_db->f('maximum');
-                               }
+                       }
 
                        ++$next_id;
                        return $next_id;
-                       }
-                       
+               }
+
                /**
                 * Preapre a datatype for insert
                 *
@@ -1520,7 +1555,7 @@
                 * @return string the converted datatype or empty string is 
invalid
                 */
                protected function _translate_datatype_insert($datatype)
-                               {
+               {
                        $datatype_text = array
                        (
                                'V'                     => 'varchar',
@@ -1532,7 +1567,8 @@
                                'R'                     => 'int',
                                'CH'            => 'text',
                                'LB'            => 'int',
-                               'AB'            => 'int',
+                               'AB'            => 'int',// Addressbook person
+                               'ABO'           => 'int',// Addressbook 
organisation
                                'VENDOR'        => 'int',
                                'email'         => 'varchar',
                                'link'          => 'varchar',
@@ -1542,12 +1578,12 @@
                        );
 
                        if ( !isset($datatype_text[$datatype]) )
-                                       {
+                       {
                                return '';
-                                       }
+                       }
 
                        return $datatype_text[$datatype];
-                                       }
+               }
 
                /**
                 * Get the precision for a datatype
@@ -1557,13 +1593,14 @@
                 * @return integer the precision - 0 for n/a or invalid
                 */
                protected function _translate_datatype_precision($datatype)
-                                       {
+               {
                        $datatype_precision = array
                        (
                                'I'                     => 4,
                                'R'                     => 4,
                                'LB'            => 4,
                                'AB'            => 4,
+                               'ABO'           => 4,
                                'VENDOR'        => 4,
                                'email'         => 64,
                                'link'          => 255,
@@ -1571,11 +1608,11 @@
                                'user'          => 4,
                                'event'         => 4
                        );
-       
+
                        if ( !isset($datatype_precision[$datatype]) )
-                                       {
+                       {
                                return 0;
-                                       }
+                       }
                        return $datatype_precision[$datatype];
-                               }
-                       }
+               }
+       }



_______________________________________________
phpGroupWare-cvs mailing list
phpGroupWare-cvs@gnu.org
http://lists.gnu.org/mailman/listinfo/phpgroupware-cvs

Reply via email to