[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Phpgroupware-cvs] property/inc/class.boentity.inc.php, 1.2
From: |
nomail |
Subject: |
[Phpgroupware-cvs] property/inc/class.boentity.inc.php, 1.2 |
Date: |
Wed, 2 Jun 2004 20:54:27 +0200 |
Update of /property/inc
Added Files:
Branch:
class.boentity.inc.php
date: 2004/06/02 18:54:27; author: sigurdne; state: Exp; lines: +595 -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 boentity
{
var $start;
var $query;
var $filter;
var $sort;
var $order;
var $cat_id;
var $public_functions = array
(
'read' => True,
'read_single' => True,
'save' => True,
'delete' => True,
'check_perms' => True
);
var $soap_functions = array(
'list' => array(
'in' =>
array('int','int','struct','string','int'),
'out' => array('array')
),
'read' => array(
'in' => array('int','struct'),
'out' => array('array')
),
'save' => array(
'in' => array('int','struct'),
'out' => array()
),
'delete' => array(
'in' => array('int','struct'),
'out' => array()
)
);
function boentity($session=False)
{
$this->currentapp =
$GLOBALS['phpgw_info']['flags']['currentapp'];
$this->so =
CreateObject($this->currentapp.'.soentity');
$this->solocation =
CreateObject($this->currentapp.'.solocation');
$this->bocommon =
CreateObject($this->currentapp.'.bocommon');
$this->vfs =
CreateObject('phpgwapi.vfs');
$this->rootdir = $this->vfs->basedir;
$this->fakebase = $this->vfs->fakebase;
if ($session)
{
$this->read_sessiondata();
$this->use_session = True;
}
$start = get_var('start',array('POST','GET'));
$query = get_var('query',array('POST','GET'));
$sort = get_var('sort',array('POST','GET'));
$order = get_var('order',array('POST','GET'));
$filter = get_var('filter',array('POST','GET'));
$cat_id = get_var('cat_id',array('POST','GET'));
$district_id =
get_var('district_id',array('POST','GET'));
$entity_id =
get_var('entity_id',array('POST','GET'));
$status = get_var('status',array('POST','GET'));
$this->soadmin_entity =
CreateObject($this->currentapp.'.soadmin_entity',$entity_id,$cat_id);
$this->category_name =
$this->soadmin_entity->category_name;
if ($start)
{
$this->start=$start;
}
else
{
$this->start=0;
}
if(isset($query))
{
$this->query = $query;
}
if(isset($filter))
{
$this->filter = $filter;
}
if(isset($sort))
{
$this->sort = $sort;
}
if(isset($order))
{
$this->order = $order;
}
if(isset($cat_id))
{
$this->cat_id = $cat_id;
}
if(isset($district_id))
{
$this->district_id = $district_id;
}
if(isset($entity_id))
{
$this->entity_id = $entity_id;
}
if(isset($status))
{
$this->status = $status;
}
}
function save_sessiondata($data)
{
if ($this->use_session)
{
$GLOBALS['phpgw']->session->appsession('session_data','entity',$data);
}
}
function read_sessiondata()
{
$data =
$GLOBALS['phpgw']->session->appsession('session_data','entity');
//_debug_array($data);
$this->start = $data['start'];
$this->query = $data['query'];
$this->filter = $data['filter'];
$this->sort = $data['sort'];
$this->order = $data['order'];
$this->cat_id = $data['cat_id'];
$this->district_id = $data['district_id'];
$this->entity_id = $data['entity_id'];
$this->status = $data['status'];
}
function
column_list($selected='',$entity_id='',$cat_id,$allrows='')
{
$soadmin_entity =
CreateObject($this->currentapp.'.soadmin_entity');
if(!$selected)
{
$selected=$GLOBALS['phpgw_info']['user']['preferences'][$this->currentapp]["entity_columns_"
. $this->entity_id . '_' . $this->cat_id];
}
$columns =
$soadmin_entity->read_attrib(array('entity_id'=>$entity_id,'cat_id'=>$cat_id,'allrows'=>$allrows));
$column_list=$this->bocommon->select_multi_list($selected,$columns);
return $column_list;
}
function select_category_list($format='',$selected='')
{
switch($format)
{
case 'select':
$GLOBALS['phpgw']->xslttpl->add_file(array('cat_select'));
break;
case 'filter':
$GLOBALS['phpgw']->xslttpl->add_file(array('cat_filter'));
break;
}
$categories=
$this->soadmin_entity->read_category(array('allrows'=>True,'entity_id'=>$this->entity_id));
while (is_array($categories) && list(,$category) =
each($categories))
{
$sel_category = '';
if ($category['id']==$selected)
{
$sel_category = 'selected';
}
$category_list[] = array
(
'cat_id' => $category['id'],
'name' => $category['name'],
'selected' => $sel_category
);
}
for ($i=0;$i<count($category_list);$i++)
{
if ($category_list[$i]['selected'] !=
'selected')
{
unset($category_list[$i]['selected']);
}
}
return $category_list;
}
function select_status_list($format='',$selected='')
{
switch($format)
{
case 'select':
$GLOBALS['phpgw']->xslttpl->add_file(array('status_select'));
break;
case 'filter':
$GLOBALS['phpgw']->xslttpl->add_file(array('status_filter'));
break;
}
$status_entries=
$this->so->select_status_list($this->entity_id,$this->cat_id);
while (is_array($status_entries) && list(,$status) =
each($status_entries))
{
$sel_status = '';
if ($status['id']==$selected)
{
$sel_status = 'selected';
}
$status_list[] = array
(
'id' => $status['id'],
'name' => $status['name'],
'selected' => $sel_status
);
}
for ($i=0;$i<count($status_list);$i++)
{
if ($status_list[$i]['selected'] != 'selected')
{
unset($status_list[$i]['selected']);
}
}
return $status_list;
}
function read($data='')
{
$entity = $this->so->read(array('start' =>
$this->start,'query' => $this->query,'sort' => $this->sort,'order' =>
$this->order,
'filter' => $this->filter,'cat_id' => $this->cat_id,'district_id' =>
$this->district_id,
'lookup'=>$data['lookup'],'allrows'=>$data['allrows'],'entity_id'=>$this->entity_id,'cat_id'=>$this->cat_id,'status'=>$this->status,
'start_date'=>$this->bocommon->date_to_timestamp($data['start_date']),'end_date'=>$this->bocommon->date_to_timestamp($data['end_date']),
'allrows'=>$data['allrows']));
$this->total_records = $this->so->total_records;
$this->uicols = $this->so->uicols;
$cols_extra = $this->so->cols_extra;
$cols_return_lookup =
$this->so->cols_return_lookup;
//_debug_array($entity);
//_debug_array($cols_extra);
//_debug_array($cols_return_lookup);
if($data['lookup'])
{
for ($i=0;$i<count($entity);$i++)
{
$location_data=$this->solocation->read_single($entity[$i]['location_code']);
for ($j=0;$j<count($cols_extra);$j++)
{
$entity[$i][$cols_extra[$j]] =
$location_data[$cols_extra[$j]];
}
if($cols_return_lookup)
{
for
($k=0;$k<count($cols_return_lookup);$k++)
{
$entity[$i][$cols_return_lookup[$k]] = $location_data[$cols_return_lookup[$k]];
}
}
}
}
return $entity;
}
function read_single($data)
{
$soadmin_entity =
CreateObject($this->currentapp.'.soadmin_entity');
$contacts =
CreateObject('phpgwapi.contacts');
$entity = $this->so->read_single($data);
$dateformat =
$GLOBALS['phpgw_info']['user']['preferences']['common']['dateformat'];
$entity['date'] =
$GLOBALS['phpgw']->common->show_date($entity['date'],$dateformat);
if($entity['location_code'])
{
$entity['location_data']=$this->solocation->read_single($entity['location_code']);
if($entity['tenant_id'])
{
$tenant_data=$this->bocommon->read_single_tenant($entity['tenant_id']);
$entity['location_data']['tenant_id']
= $entity['tenant_id'];
$entity['location_data']['contact_phone']= $entity['contact_phone'];
$entity['location_data']['last_name']
= $tenant_data['last_name'];
$entity['location_data']['first_name']
= $tenant_data['first_name'];
}
}
if($entity['p_num'])
{
$category =
$soadmin_entity->read_single_category($entity['p_entity_id'],$entity['p_cat_id']);
$entity['p'][$entity['p_entity_id']]['p_num']=$entity['p_num'];
$entity['p'][$entity['p_entity_id']]['p_entity_id']=$entity['p_entity_id'];
$entity['p'][$entity['p_entity_id']]['p_cat_id']=$entity['p_cat_id'];
$entity['p'][$entity['p_entity_id']]['p_cat_name'] = $category['name'];
}
$input_type_array = array(
'R' => 'radio',
'CH' => 'checkbox',
'LB' => 'listbox'
);
$sep = '/';
$dlarr[strpos($dateformat,'Y')] = 'Y';
$dlarr[strpos($dateformat,'m')] = 'm';
$dlarr[strpos($dateformat,'d')] = 'd';
ksort($dlarr);
$dateformat= (implode($sep,$dlarr));
$m=0;
for ($i=0;$i<count($entity['attributes']);$i++)
{
if($entity['attributes'][$i]['datatype']=='D'
&& $entity['attributes'][$i]['value'])
{
$timestamp_date=
mktime(0,0,0,date(m,strtotime($entity['attributes'][$i]['value'])),date(d,strtotime($entity['attributes'][$i]['value'])),date(y,strtotime($entity['attributes'][$i]['value'])));
$entity['attributes'][$i]['value']
= $GLOBALS['phpgw']->common->show_date($timestamp_date,$dateformat);
}
if($entity['attributes'][$i]['datatype']=='AB')
{
if($entity['attributes'][$i]['value'])
{
$contact_data
=
$contacts->read_single_entry($entity['attributes'][$i]['value'],array('org_name'=>'org_name','email'=>'email'));
$entity['attributes'][$i]['org_name'] = $contact_data[0]['org_name'];
}
$insert_record_entity[] =
$entity['attributes'][$i]['name'];
$lookup_link =
$GLOBALS['phpgw']->link('/index.php','menuaction='.$this->currentapp.'.uilookup.addressbook&column='
. $entity['attributes'][$i]['name']);
$lookup_functions[$m]['name'] =
'lookup_'. $entity['attributes'][$i]['name'] .'()';
$lookup_functions[$m]['action'] =
'Window1=window.open('."'" . $lookup_link ."'"
.',"Search","width=800,height=700,toolbar=no,scrollbars=yes,resizable=yes");';
$m++;
}
if($entity['attributes'][$i]['datatype']=='R'
|| $entity['attributes'][$i]['datatype']=='CH' ||
$entity['attributes'][$i]['datatype']=='LB')
{
$entity['attributes'][$i]['choice']
=
$soadmin_entity->read_attrib_choice($data['entity_id'],$data['cat_id'],$entity['attributes'][$i]['attrib_id']);
$input_type=$input_type_array[$entity['attributes'][$i]['datatype']];
if($entity['attributes'][$i]['datatype']=='CH')
{
$entity['attributes'][$i]['value']=unserialize($entity['attributes'][$i]['value']);
$entity['attributes'][$i]['choice'] =
$this->bocommon->select_multi_list_2($entity['attributes'][$i]['value'],$entity['attributes'][$i]['choice'],$input_type);
}
else
{
for
($j=0;$j<count($entity['attributes'][$i]['choice']);$j++)
{
$entity['attributes'][$i]['choice'][$j]['input_type']=$input_type;
if($entity['attributes'][$i]['choice'][$j]['id']==$entity['attributes'][$i]['value'])
{
$entity['attributes'][$i]['choice'][$j]['checked']='checked';
}
}
}
}
$entity['attributes'][$i]['datatype_text'] =
$this->bocommon->translate_datatype($entity['attributes'][$i]['datatype']);
$entity['attributes'][$i]['counter'] = $i;
$entity['attributes'][$i]['type_id'] =
$data['type_id'];
}
for ($j=0;$j<count($lookup_functions);$j++)
{
$entity['lookup_functions'] .= 'function ' .
$lookup_functions[$j]['name'] ."\r\n";
$entity['lookup_functions'] .= '{'."\r\n";
$entity['lookup_functions'] .=
$lookup_functions[$j]['action'] ."\r\n";
$entity['lookup_functions'] .= '}'."\r\n";
}
$this->vfs->override_acl = 1;
$entity['files'] = $this->vfs->ls (array(
'string' => $this->fakebase. '/' .
$this->category_name . '/' . $entity['location_data']['loc1'] . '/' .
$data['id'],
'relatives' => array(RELATIVE_NONE)));
$this->vfs->override_acl = 0;
if(!$entity['files'][0]['file_id'])
{
unset($entity['files']);
}
$GLOBALS['phpgw']->session->appsession('insert_record_entity',$this->currentapp,$insert_record_entity);
//_debug_array($entity);
return $entity;
}
function create_home_dir()
{
if(!$this->vfs->file_exists(array(
'string' => $this->fakebase. SEP .
$this->category_name,
'relatives' => Array(RELATIVE_NONE)
)))
{
$this->vfs->override_acl = 1;
if(!$this->vfs->mkdir (array(
'string' => $this->fakebase. SEP .
$this->category_name,
'relatives' => array(
RELATIVE_NONE
)
)))
{
$receipt['error'][]=array('msg'=>lang('failed to create directory') . ' :'.
$this->fakebase. SEP . $this->category_name);
}
else
{
$receipt['message'][]=array('msg'=>lang('directory created') . ' :'.
$this->fakebase. SEP . $this->category_name);
}
$this->vfs->override_acl = 0;
}
return $receipt;
}
function create_document_dir($loc1='',$id='')
{
if(!$this->vfs->file_exists(array(
'string' => $this->fakebase. SEP .
$this->category_name . SEP . $loc1,
'relatives' => Array(RELATIVE_NONE)
)))
{
$this->vfs->override_acl = 1;
if(!$this->vfs->mkdir (array(
'string' => $this->fakebase. SEP .
$this->category_name . SEP . $loc1,
'relatives' => array(
RELATIVE_NONE
)
)))
{
$receipt['error'][]=array('msg'=>lang('failed to create directory') . ' :'.
$this->fakebase. SEP . $this->category_name . SEP . $loc1);
}
else
{
$receipt['message'][]=array('msg'=>lang('directory created') . ' :'.
$this->fakebase. SEP . $this->category_name . SEP . $loc1);
}
$this->vfs->override_acl = 0;
}
if(!$this->vfs->file_exists(array(
'string' => $this->fakebase. SEP .
$this->category_name . SEP . $loc1 . SEP . $id,
'relatives' => Array(RELATIVE_NONE)
)))
{
$this->vfs->override_acl = 1;
if(!$this->vfs->mkdir (array(
'string' => $this->fakebase. SEP .
$this->category_name . SEP . $loc1 . SEP . $id,
'relatives' => array(
RELATIVE_NONE
)
)))
{
$receipt['error'][]=array('msg'=>lang('failed to create directory') . ' :'.
$this->fakebase. SEP . $this->category_name . SEP . $loc1 . SEP . $id);
}
else
{
$receipt['message'][]=array('msg'=>lang('directory created') . ' :'.
$this->fakebase. SEP . $this->category_name . SEP . $loc1 . SEP . $id);
}
$this->vfs->override_acl = 0;
}
//_debug_array($receipt);
return $receipt;
}
function
save($values,$values_attribute,$action='',$entity_id,$cat_id)
{
while (is_array($values['location']) && list(,$value) =
each($values['location']))
{
if($value)
{
$location[] = $value;
}
}
$values['location_code']=implode("-", $location);
$values['date'] =
$this->bocommon->date_to_timestamp($values['date']);
for ($i=0;$i<count($values_attribute);$i++)
{
if($values_attribute[$i]['datatype']=='CH' &&
$values_attribute[$i]['value'])
{
$values_attribute[$i]['value'] =
serialize($values_attribute[$i]['value']);
}
if($values_attribute[$i]['datatype']=='R' &&
$values_attribute[$i]['value'])
{
$values_attribute[$i]['value'] =
$values_attribute[$i]['value'][0];
}
if($values_attribute[$i]['datatype']=='N' &&
$values_attribute[$i]['value'])
{
$values_attribute[$i]['value'] =
str_replace(",",".",$values_attribute[$i]['value']);
}
if($values_attribute[$i]['datatype']=='D' &&
$values_attribute[$i]['value'])
{
$values_attribute[$i]['value'] =
date($this->bocommon->dateformat,$this->bocommon->date_to_timestamp($values_attribute[$i]['value']));
}
}
if ($action=='edit')
{
$receipt =
$this->so->edit($values,$values_attribute,$entity_id,$cat_id);
if($values['delete_file'])
{
for
($i=0;$i<count($values['delete_file']);$i++)
{
$file = $this->fakebase. SEP .
$this->category_name . SEP . $location[0] . SEP . $values['id'] . SEP .
$values['delete_file'][$i];
if($this->vfs->file_exists(array(
'string' =>
$file,
'relatives' =>
Array(RELATIVE_NONE)
)))
{
$this->vfs->override_acl = 1;
if(!$this->vfs->rm
(array(
'string' =>
$file,
'relatives' =>
array(
RELATIVE_NONE
)
)))
{
$receipt['error'][]=array('msg'=>lang('failed to delete file') . ' :'.
$this->fakebase. SEP . $this->category_name . SEP . $location[0]. SEP .
$values['id'] . SEP .$values['delete_file'][$i]);
}
else
{
$receipt['message'][]=array('msg'=>lang('file deleted') . ' :'.
$this->fakebase. SEP . $this->category_name . SEP . $location[0]. SEP .
$values['id'] . SEP . $values['delete_file'][$i]);
}
$this->vfs->override_acl = 0;
}
}
}
}
else
{
$receipt =
$this->so->add($values,$values_attribute,$entity_id,$cat_id);
}
return $receipt;
}
function delete($id )
{
$this->so->delete($this->entity_id,$this->cat_id,$id);
}
function generate_id($data )
{
if($data['cat_id'])
{
return $this->so->generate_id($data);
}
}
}
?>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Phpgroupware-cvs] property/inc/class.boentity.inc.php, 1.2,
nomail <=