phpgroupware-cvs
[Top][All Lists]
Advanced

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

[Phpgroupware-cvs] property/inc/class.sodrawing.inc.php, 1.2


From: nomail
Subject: [Phpgroupware-cvs] property/inc/class.sodrawing.inc.php, 1.2
Date: Wed, 2 Jun 2004 20:54:28 +0200

Update of /property/inc
Added Files:
        Branch: 
          class.sodrawing.inc.php

date: 2004/06/02 18:54:28;  author: sigurdne;  state: Exp;  lines: +427 -0

Log Message:
no message
=====================================================================
<?php
        
/**************************************************************************\
        * phpGroupWare - property                                               
   *
        * http://www.phpgroupware.org                                           
   *
        *                                                                       
   *
        * Facilities Management                                                 
   *
        * Written by Sigurd Nes [sigurdne at online.no]                         
   *
        * 
------------------------------------------------------------------------ *
        * Copyright 2000 - 2003 Free Software Foundation, Inc                   
   *
        * This program is part of the GNU project, see http://www.gnu.org/      
   *
        * 
------------------------------------------------------------------------ *
        * This program is free software; you can redistribute it and/or modify 
it  *
        * under the terms of the GNU General Public License as published by the 
   *
        * Free Software Foundation; either version 2 of the License, or (at 
your   *
        * option) any later version.                                            
   *
        
\**************************************************************************/

        class sodrawing
        {

                function sodrawing()
                {
                        $this->currentapp       = 
$GLOBALS['phpgw_info']['flags']['currentapp'];
                        $this->db                       = $GLOBALS['phpgw']->db;
                        $this->db2                      = $this->db;
                        $this->account          = 
$GLOBALS['phpgw_info']['user']['account_id'];
                        $this->bocommon         = 
CreateObject($this->currentapp.'.bocommon',True);
                        $this->historylog       = 
CreateObject($this->currentapp.'.historylog','drawing');
                        $this->vfs                      = 
CreateObject('phpgwapi.vfs');
                        $this->rootdir          = $this->vfs->basedir;
                        $this->fakebase         = $this->vfs->fakebase;
                        $this->socommon         = 
CreateObject($this->currentapp.'.socommon');

                        $this->join                     = $this->socommon->join;
                }

                function select_category_list()
                {
                        $this->db->query("SELECT id, descr FROM 
fm_drawing_category  ORDER BY descr ");

                        $i = 0;
                        while ($this->db->next_record())
                        {
                                $categories[$i]['id']                           
= $this->db->f('id');
                                $categories[$i]['name']                         
= stripslashes($this->db->f('descr'));
                                $i++;
                        }
                        return $categories;
                }

                function read_single_category($id='')
                {
                        $this->db->query("SELECT descr FROM fm_drawing_category 
where id='$id' ");
                        $this->db->next_record();
                        return $this->db->f('descr');
                }

                function select_status_list()
                {
                        $this->db->query("SELECT id, descr FROM 
fm_drawing_status ORDER BY id ");

                        $i = 0;
                        while ($this->db->next_record())
                        {
                                $status_entries[$i]['id']                       
        = $this->db->f('id');
                                $status_entries[$i]['name']                     
        = stripslashes($this->db->f('descr'));
                                $i++;
                        }
                        return $status_entries;
                }

                function select_branch_list()
                {
                        $this->db->query("SELECT id, descr FROM fm_branch ORDER 
BY id ");

                        $i = 0;
                        while ($this->db->next_record())
                        {
                                $branch_entries[$i]['id']                       
        = $this->db->f('id');
                                $branch_entries[$i]['name']                     
        = stripslashes($this->db->f('descr'));
                                $i++;
                        }
                        return $branch_entries;
                }

                function read($data)
                {
                        if(is_array($data))
                        {
                                if ($data['start'])
                                {
                                        $start=$data['start'];
                                }
                                else
                                {
                                        $start=0;
                                }
                                $filter = 
(isset($data['filter'])?$data['filter']:'');
                                $query = 
(isset($data['query'])?$data['query']:'');
                                $sort = 
(isset($data['sort'])?$data['sort']:'DESC');
                                $order = 
(isset($data['order'])?$data['order']:'');
                                $cat_id = 
(isset($data['cat_id'])?$data['cat_id']:0);
                                $status_id = 
(isset($data['status_id'])?$data['status_id']:0);
                        }

                        $entity_table = 'fm_drawing';

                        $cols .= $entity_table . '.location_code';
                        $cols_return[] = 'location_code';

                        $cols .= ",$entity_table.id as drawing_id";
                        $cols_return[]                          = 'drawing_id';

                        $cols .= ",$entity_table.drawing_name";
                        $cols_return[]                          = 
'drawing_name';
                        $uicols['input_type'][]         = 'text';
                        $uicols['name'][]                       = 
'drawing_name';
                        $uicols['descr'][]                      = lang('drawing 
name');
                        $uicols['statustext'][]         = lang('drawing name');

                        $cols .= ",fm_drawing_category.descr as category";
                        $cols_return[]                          = 'category';
                        $uicols['input_type'][]         = 'text';
                        $uicols['name'][]                       = 'category';
                        $uicols['descr'][]                      = 
lang('category');
                        $uicols['statustext'][]         = lang('category');

                        $joinmethod .= " $this->join  fm_drawing_category ON 
($entity_table.category = fm_drawing_category.id))";
                        $paranthesis .='(';


                        $sql    = 
$this->bocommon->generate_sql(array('entity_table'=>$entity_table,'cols'=>$cols,'cols_return'=>$cols_return,
                                                                                
                                        
'uicols'=>$uicols,'joinmethod'=>$joinmethod,'paranthesis'=>$paranthesis,'query'=>$query));

                        if ($order)
                        {
                                $ordermethod = " order by fm_drawing.$order 
$sort";
                        }
                        else
                        {
                                $ordermethod = ' order by 
fm_drawing.location_code ASC';
                        }

                        $where= 'WHERE';

                        if ($cat_id > 0)
                        {
                                $filtermethod .= " $where 
fm_drawing.category='$cat_id' ";
                                $where= 'AND';
                        }

                        if ($status_id)
                        {
                                $filtermethod .= " $where 
fm_drawing.status='$status_id' ";
                                $where= 'AND';
                        }

                        if ($filter)
                        {
                                $filtermethod .= " $where 
fm_drawing.coordinator='$filter' ";
                                $where= 'AND';
                        }

                        if($query)
                        {
                                $query = ereg_replace("'",'',$query);
                                $query = ereg_replace('"','',$query);

                                $querymethod = " $where (fm_drawing.address 
LIKE '%$query%' or fm_drawing.location_code LIKE '%$query%')";
                        }


                        $sql .= " $filtermethod $querymethod";
//echo $sql;
                        $this->uicols           = $this->bocommon->uicols;
                        $cols_return            = $this->bocommon->cols_return;
                        $type_id                        = 
$this->bocommon->type_id;
                        $this->cols_extra       = $this->bocommon->cols_extra;

                        $this->db2->query($sql,__LINE__,__FILE__);
                        $this->total_records = $this->db2->num_rows();
                        $this->db->limit_query($sql . 
$ordermethod,$start,__LINE__,__FILE__);

                        $j=0;
                        while ($this->db->next_record())
                        {
                                for ($i=0;$i<count($cols_return);$i++)
                                {
                                        $drawing_list[$j][$cols_return[$i]] = 
$this->db->f($cols_return[$i]);
                                }

                                $location_code= $this->db->f('location_code');
                                $location = split('-',$location_code);
                                for ($m=0;$m<count($location);$m++)
                                {
                                        $drawing_list[$j]['loc' . ($m+1)] = 
$location[$m];
                                        
$drawing_list[$j]['query_location']['loc' . ($m+1)]=implode("-", 
array_slice($location, 0, ($m+1)));
                                }

                                $j++;
                        }
                        return $drawing_list;
                }

                function read_single($drawing_id)
                {
                        $sql = "SELECT * from fm_drawing where 
id='$drawing_id'";

                        $this->db->query($sql,__LINE__,__FILE__);

                        if ($this->db->next_record())
                        {
                                $drawing['drawing_id']                  = 
$this->db->f('id');
                                $drawing['title']                               
= $this->db->f('title');
                                $drawing['drawing_name']                = 
$this->db->f('drawing_name');
                                $drawing['location_code']               = 
$this->db->f('location_code');
                                $drawing['branch_id']                   = 
$this->db->f('branch_id');
                                $drawing['version']                             
= $this->db->f('version');
                                $drawing['vendor_id']                   = 
$this->db->f('vendor_id');
                                $drawing['floor_id']                    = 
$this->db->f('floor_id');
                                $drawing['charge_tenant']               = 
$this->db->f('charge_tenant');
                                $drawing['descr']                               
= $this->db->f('descr');
                                $drawing['status']                              
= $this->db->f('status');
                                $drawing['tenant_id']                   = 
$this->db->f('tenant_id');
                                $drawing['user_id']                             
= $this->db->f('user_id');
                                $drawing['coordinator']                 = 
$this->db->f('coordinator');
                                $drawing['access']                              
= $this->db->f('access');
                                $drawing['drawing_date']                = 
$this->db->f('drawing_date');
                                $drawing['cat_id']                              
= $this->db->f('category');
                                $drawing['p_num']                               
= $this->db->f('p_num');
                                $drawing['p_entity_id']                 = 
$this->db->f('p_entity_id');
                                $drawing['p_cat_id']                    = 
$this->db->f('p_cat_id');
                        }

//_debug_array($drawing);
                                return $drawing;
                }

                function add($drawing)
                {

                        while (is_array($drawing['location']) && 
list($input_name,$value) = each($drawing['location']))
                        {
                                if($value)
                                {
                                        $cols[] = $input_name;
                                        $vals[] = $value;
                                }
                        }

                        while (is_array($drawing['extra']) && 
list($input_name,$value) = each($drawing['extra']))
                        {
                                if($value)
                                {
                                        $cols[] = $input_name;
                                        $vals[] = $value;
                                }
                        }

                        if($cols)
                        {
                                $cols   = "," . implode(",", $cols);
                                $vals   = ",'" . implode("','", $vals) . "'";
                        }

                        if($drawing['street_name'])
                        {
                                $address[]= $drawing['street_name'];
                                $address[]= $drawing['street_number'];
                                $address        = implode(" ", $address);
                        }

                        if(!$address)
                        {
                                $address = $drawing['location_name'];
                        }

                        $drawing['descr'] = 
$this->db->db_addslashes($drawing['descr']);
                        $drawing['name'] = 
$this->db->db_addslashes($drawing['name']);
                        $drawing['title'] = 
$this->db->db_addslashes($drawing['title']);
//_debug_array($drawing);
                        $this->db->query("INSERT INTO fm_drawing 
(drawing_name,title,access,category,entry_date,drawing_date,version,coordinator,status,"
                                . 
"descr,location_code,floor_id,address,branch_id,vendor_id,user_id $cols) "
                                . "VALUES ('"
                                . $drawing['drawing_name']. "','"
                                . $drawing['title']. "','"
                                . "public','"
                                . $drawing['cat_id']. "','"
                                . time() . "','"
                                . $drawing['drawing_date']. "','"
                                . $drawing['version']. "','"
                                . $drawing['coordinator']. "','"
                                . $drawing['status']. "','"
                                . $drawing['descr']. "','"
                                . $drawing['location_code']. "','"
                                . $drawing['floor_id'] . "','"
                                . $address . "','"
                                . $drawing['branch_id']. "','"
                                . $drawing['vendor_id']. "','"
                                . $this->account. "' $vals)",__LINE__,__FILE__);

                        $receipt['drawing_id'] = 
$this->db->get_last_insert_id('fm_drawing','id');

                        
$this->historylog->add('SO',$receipt['drawing_id'],$drawing['status']);
                        
$this->historylog->add('TO',$receipt['drawing_id'],$drawing['cat_id']);
                        
$this->historylog->add('CO',$receipt['drawing_id'],$drawing['coordinator']);

                        $receipt['message'][] = array('msg'=>lang('drawing %1 
has been saved',"'".$drawing['drawing_name']."'"));
                        return $receipt;
                }

                function edit($drawing)
                {
                        while (is_array($drawing['location']) && 
list($input_name,$value) = each($drawing['location']))
                        {
                                $vals[] = "$input_name = '$value'";
                        }

                        while (is_array($drawing['extra']) && 
list($input_name,$value) = each($drawing['extra']))
                        {
                                $vals[] = "$input_name = '$value'";
                        }

                        if($vals)
                        {
                                $vals   = "," . implode(",",$vals);
                        }

                        if($drawing['street_name'])
                        {
                                $address[]= $drawing['street_name'];
                                $address[]= $drawing['street_number'];
                                $address        = implode(" ", $address);
                        }

                        if(!$address)
                        {
                                $address = $drawing['location_name'];
                        }

                        $this->db->query("SELECT status,category,coordinator 
FROM fm_drawing where id='" .$drawing['drawing_id']."'",__LINE__,__FILE__);
                        $this->db->next_record();

                        $old_status = $this->db->f('status');
                        $old_categroy = $this->db->f('category');
                        $old_coordinator = $this->db->f('coordinator');
                        if ($old_status != $drawing['status'])
                        {
                                
$this->historylog->add('S',$drawing['drawing_id'],$drawing['status']);
                        }
                        if ($old_categroy != $drawing['cat_id'])
                        {
                                
$this->historylog->add('T',$drawing['drawing_id'],$drawing['cat_id']);
                        }
                        if ((int)$old_coordinator != 
(int)$drawing['coordinator'])
                        {
                                
$this->historylog->add('C',$drawing['drawing_id'],$drawing['coordinator']);
                        }

                        if($drawing['drawing_name_orig'] && 
!$drawing['drawing_name'] )
                        {
                                $drawing['drawing_name'] = 
$drawing['drawing_name_orig'];
                        }


                        $drawing['descr'] = 
$this->db->db_addslashes($drawing['descr']);
                        $drawing['name'] = 
$this->db->db_addslashes($drawing['name']);
                        $drawing['title'] = 
$this->db->db_addslashes($drawing['title']);
//_debug_array($drawing);

                        $this->db->query("UPDATE fm_drawing set
                                drawing_name    ='" . $drawing['drawing_name'] 
. "',
                                title                   ='"     . 
$drawing['title'] . "',
                                branch_id               ='" . 
$drawing['branch_id'] . "',
                                status                  ='" . 
$drawing['status'] . "',
                                category                ='" . 
$drawing['cat_id'] . "',
                                drawing_date    ='" . $drawing['drawing_date'] 
. "',
                                coordinator             ='" . 
$drawing['coordinator'] . "',
                                descr                   ='" . $drawing['descr'] 
. "',
                                version                 ='" . 
$drawing['version'] . "',
                                location_code   ='" . $drawing['location_code'] 
. "',
                                floor_id                ='" . 
$drawing['floor_id'] . "',
                                vendor_id               ='" . 
$drawing['vendor_id'] . "',
                                address                 ='" . $address
                                . "' $vals WHERE id= '" . 
$drawing['drawing_id'] ."'",__LINE__,__FILE__);

                        $receipt['drawing_id'] = $drawing['drawing_id'];
                        $receipt['message'][] = array('msg'=>lang('drawing %1 
has been edited',"'".$drawing['drawing_name']."'"));
                        return $receipt;

                }

                function delete($drawing_id )
                {
                        $this->db->query("SELECT drawing_name FROM fm_drawing 
where id='$drawing_id'",__LINE__,__FILE__);
                        $this->db->next_record();
                        $drawing_name = $this->db->f('drawing_name');

//echo $this->fakebase. SEP . 'drawing'. SEP . $drawing_name;
                        if($this->vfs->file_exists(array(
                                        'string' => $this->fakebase. SEP . 
'drawing'. SEP . $drawing_name,
                                        'relatives' => Array(RELATIVE_NONE)
                                )))
                        {
                                $this->vfs->override_acl = 1;

                                if(!$this->vfs->rm (array(
                                        'string' => $this->fakebase. SEP . 
'drawing'. SEP . $drawing_name,
                                     'relatives' => array(
                                          RELATIVE_NONE
                                     )
                                )))
                                {
                                        
$receipt['error'][]=array('msg'=>lang('failed to delete file') . ' :'. 
$this->fakebase. SEP . 'drawing'. SEP . $drawing_name);
                                }
                                else
                                {
                                        
$receipt['message'][]=array('msg'=>lang('file deleted') . ' :'. 
$this->fakebase. SEP . 'drawing'. SEP . $drawing_name);
                                }
                                $this->vfs->override_acl = 0;
                        }

                        $this->db->query("DELETE FROM fm_drawing WHERE 
id='$drawing_id'",__LINE__,__FILE__);
                        $this->db->query("DELETE FROM fm_drawing_history  WHERE 
 history_record_id='$drawing_id'",__LINE__,__FILE__);
                }
        }
?>




reply via email to

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