*
* ------------------------------------------------------------------------- *
* 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. *
\***************************************************************************/
include_once('class.abo_catalog.inc.php');
class bo_company_manager extends abo_catalog
{
var $fields = array(
'id_company' => true,
'company_name' => true,
'company_notes' => true,
/* Array fields */
'contacts' => true,
'relations' => true,
'addresses' => true,
'connections' => true,
'legals' => true
);
/*!
@function bo_contact_manager
@abstract Constructor
@author Raphael Derosso Pereira
*/
function bo_company_manager()
{
}
/*********************************************************************\
* Methods to Get Companies Info *
\*********************************************************************/
/*!
@function get_single_info
@abstract Returns all information requested about one company
@author Raphael Derosso Pereira
@param integer $id_company The company ID
@param array $fields The array returned by get_fields whith true
on the fields to be taken.
*/
function get_single_info ( $id_company, $fields )
{
if (!is_integer($id_company) or !is_array($fields))
{
if (is_object($GLOBALS['phpgw']->log))
{
$GLOBALS['phpgw']->log->message(array(
'text' => 'F-BadcontactcenterParam, wrong get_single_info parameters type.',
'line' => __LINE__,
'file' => __FILE__));
$GLOBALS['phpgw']->log->commit();
}
else
{
exit('Argument Error on:
File:'.__FILE__.'
Line:'.__LINE__.'
');
}
}
// Verify permitions
$permitions = $this->security->get_permissions($id_company);
if (!$permitions['read'])
{
return false;
}
$company_data = $this->fields;
$company = CreateObject('contactcenter.so_company', $id_company);
foreach ($fields as $field => $trueness)
{
if (!$trueness)
{
unset($company_data[$field]);
continue;
}
switch ($field)
{
case 'contacts':
$company_data['contacts'] = $this->get_contacts($id_company);
break;
case 'relations':
$company_data['relations'] = $this->get_relations($id_company);
break;
case 'addresses':
$company_data['addresses'] = $this->get_addresses($id_company);
break;
case 'connections':
$company_data['connections'] = $this->get_connections($id_company);
break;
case 'legals':
$company_data['legals'] = $this->get_legals($id_company);
break;
default:
$func_name = 'company->get_'.$field;
$company_data[$field] = $this->$func_name();
break;
}
}
if (!is_array($company_data))
{
return false;
}
return $company_data;
}
/*!
@function get_multiple_info
@abstract Returns multiple companies data into one array
@author Raphael Derosso Pereira
@param array $id_companies The companies IDs
@param array $fields The companies fields to be retrieved
@param array $other_data Other informations. The format is:
$other_data = array(
'offset' => ,
'limit' =>
);
*/
function get_multiple_info ( $id_companies, $fields, $other_data = false )
{
if (!is_array($id_companies) or !is_array($fields) or ($other_data != false and !is_array($other_data)))
{
if (is_object($GLOBALS['phpgw']->log))
{
$GLOBALS['phpgw']->log->message(array(
'text' => 'F-BadcontactcenterParam, wrong get_multiple_companies_info parameter type.',
'line' => __LINE__,
'file' => __FILE__));
$GLOBALS['phpgw']->log->commit();
}
else {
exit('Argument Error on:
File:'.__FILE__.'
Line:'.__LINE__.'
');
}
}
$companies = array();
if ($other_data)
{
//TODO
}
foreach ($id_companies as $id)
{
$companies[$id] = $this->get_single_info($id,$fields[$id]);
}
return $companies;
}
/*!
@function get_relations
@abstract Returns the IDs of all companies relations
@author Raphael Derosso Pereira
@param integer $id_company The company ID
@return The following array:
$return = array(
'relation1' => array(
'id_relation' => ,
'id_type' => ,
'type' => '',
'is_subordinated' =>
),
'relation2' => array(...),
...
);
*/
function get_relations ($id_company)
{
$company =& CreateObject('contactcenter.so_company', $id_company);
$relations = $company->get_relations();
$count = 1;
foreach($relations as $id => $type)
{
$relation =& CreateObject('contactcenter.so_company_relation_type',$type);
$return['relation'.$count]['id_relation'] = $id;
$return['relation'.$count]['id_type'] = $type;
$return['relation'.$count]['type'] = $relation->get_type_name();
$return['relation'.$count]['is_subordinated'] = $relation->get_is_subordinated();
$count++;
}
return $return;
}
/*!
@function get_addresses
@abstract Returns all companies Address Information
@author Raphael Derosso Pereira
@param integer $id_company The company ID
@return The following array:
$return = array(
'address1' => array(
'id_address' => ,
'id_type' => ,
'type' => '',
'address1' => '',
'address2' => '',
'complement' => '',
'address_other' => '',
'postal_code' => '',
'po_box' => '',
'id_city' => '',
'city_name' => '',
'city_timezone' => '',
'city_geo_location' => '',
'id_state' => '',
'state_name' => '',
'state_symbol' => '',
'id_country' => '',
'country_name' => '',
'address_is_default' =>
),
'address2' => array(...),
...
);
*/
function get_addresses ( $id_company )
{
$company =& CreateObject('contactcenter.so_company', $id_company);
$addresses = $company->get_addresses();
$count = 1;
foreach($addresses as $id => $type)
{
$address =& CreateObject('contactcenter.so_address',$id);
$address_type =& CreateObject('contactcenter.so_company_address_type',$type);
$return['address'.$count]['id_address'] = $id;
$return['address'.$count]['id_type'] = $type;
$return['address'.$count]['type'] = $address_type->get_type_name();
$return['address'.$count]['address1'] = $address->get_address1();
$return['address'.$count]['address2'] = $address->get_address2();
$return['address'.$count]['complement'] = $address->get_complement();
$return['address'.$count]['address_other'] = $address->get_address_other();
$return['address'.$count]['postal_code'] = $address->get_postal_code();
$return['address'.$count]['po_box'] = $address->get_po_box();
$return['address'.$count]['address_is_default'] = $address->is_default();
$return['address'.$count]['id_city'] = $address->get_id_city();
$return['address'.$count]['city_name'] = $address->get_city_name();
$return['address'.$count]['city_timezone'] = $address->get_city_timezone();
$return['address'.$count]['city_geo_location'] = $address->get_geo_location();
$return['address'.$count]['id_state'] = $address->get_id_state();
$return['address'.$count]['state_name'] = $address->get_state_name();
$return['address'.$count]['state_symbol'] = $address->get_state_symbol();
$return['address'.$count]['id_country'] = $address->get_id_country();
$return['address'.$count]['country_name'] = $address->get_country_name();
$count++;
}
return $return;
}
/*!
@function get_connections
@abstract Returns all companies connections information
@author Raphael Derosso Pereira
@param integer $id_company The company ID
@return The following array:
$return = array(
'connection1' => array(
'id_connection' => ,
'id_type' => ,
'type' => '',
'connection_name' => '',
'connection_value' => '',
'connection_is_default' => ''
),
'connection2' => array(...),
...
);
*/
function get_connections ( $id_company, $types )
{
$company =& CreateObject('contactcenter.so_company', $id_company);
$connections = $company->get_connections();
$count = 1;
foreach($connections as $id => $type)
{
$connection =& CreateObject('contactcenter.so_connection',$id);
$connection_type =& CreateObject('contactcenter.so_company_connection_type',$type);
$return['connection'.$count]['id_connection'] = $id;
$return['connection'.$count]['id_type'] = $type;
$return['connection'.$count]['type'] = $connection_type->get_type_name();
$return['connection'.$count]['connection_name'] = $connection->get_name();
$return['connection'.$count]['connection_value'] = $connection->get_value();
$return['connection'.$count]['connection_is_default'] = $connection->is_default();
$count++;
}
return $return;
}
/*!
@function get_companies
@abstract Returns all Companies Employees information
@author Raphael Derosso Pereira
@param integer $id_company The company ID
@return The following array:
$return = array(
'contact1' => array(
'id_contact' => ,
'title' => '',
'department' => '',
),
'contact2' => array(...),
...
);
*/
function get_contacts ( $id_company )
{
$company =& CreateObject('contactcenter.so_company', $id_company);
$companies = $company->get_contacts();
$count = 1;
foreach($companies as $id => $value)
{
$return['contact'.$count]['id_contact'] = $id;
$return['contact'.$count]['title'] = $value['title'];
$return['contact'.$count]['department'] = $value['department'];
$count++;
}
return $return;
}
/*!
@function get_legals
@abstract Returns all companies legals information
@author Raphael Derosso Pereira
@param integer $id_company The company ID
@return The following array:
$return = array(
'legal1' => array(
'id_legal' => ,
'id_type' => ,
'type' => '',
'legal_info_name' => '',
'legal_info_value' => ''
),
'legal2' => array(...),
...
);
*/
function get_legals ( $id_company, $types )
{
$company =& CreateObject('contactcenter.so_company', $id_company);
$legals = $company->get_legals();
$count = 1;
foreach($legals as $id => $type)
{
$legal =& CreateObject('contactcenter.so_legal',$id);
$legal_type =& CreateObject('contactcenter.so_company_legal_type',$type);
$return['legal'.$count]['id_legal'] = $id;
$return['legal'.$count]['id_type'] = $type;
$return['legal'.$count]['type'] = $legal_type->get_type_name();
$return['legal'.$count]['legal_info_name'] = $legal->get_name();
$return['legal'.$count]['legal_info_value'] = $legal->get_value();
$return['legal'.$count]['legal_is_default'] = $legal->is_default();
$count++;
}
return $return;
}
/*********************************************************************\
* Methods to get general fields *
\*********************************************************************/
/*!
@function get_all_relations_types
@abstract Returns all companies relations types
@author Raphael Derosso Pereira
@return array The format of the return is:
$return = array(
=> '',
=> '',
...);
*/
function get_all_relations_types ( )
{
$fields = array('id_typeof_company_relation', 'company_relation_name');
$relation_types = $this->find($fields);
if (!is_array($relation_types))
{
return false;
}
while ($relation_type = each($relation_types))
{
$result[$relation_type['id_typeof_company_relation']] = $relation_type['company_relation_name'];
}
return $result;
}
/*!
@function get_all_addresses_types
@abstract Returns all companies addresses types
@author Raphael Derosso Pereira
@return array The format of the return is:
$return = array(
=> '',
=> '',
...);
*/
function get_all_addresses_types ( )
{
$fields = array('id_typeof_company_address', 'company_address_type_name');
$address_types = $this->find($fields);
if (!is_array($address_types))
{
return false;
}
while ($address_type = each($address_types))
{
$result[$address_type['id_typeof_company_address']] = $address_type['company_address_name'];
}
return $result;
}
/*!
@function get_all_connections_types
@abstract Returns all companies connections types
@author Raphael Derosso Pereira
@return array The format of the return is:
$return = array(
=> '',
=> '',
...);
*/
function get_all_connections_types ( )
{
$fields = array('id_typeof_company_relation', 'company_connections_type_name');
$relation_types = $this->find($fields);
if (!is_array($relation_types))
{
return false;
}
while ($relation_type = each($relation_types))
{
$result[$relation_type['id_typeof_company_relation']] = $relation_type['company_connections_type_name'];
}
return $result;
}
/*!
@function get_all_legals_types
@abstract Returns all companies legals types
@author Raphael Derosso Pereira
@return array The format of the return is:
$return = array(
=> '',
=> '',
...);
*/
function get_all_legals_types ( )
{
$fields = array('id_typeof_company_legal', 'legal_type_name');
$relation_types = $this->find($fields);
if (!is_array($relation_types))
{
return false;
}
while ($relation_type = each($relation_types))
{
$result[$relation_type['id_typeof_company_legal']] = $relation_type['legal_type_name'];
}
return $result;
}
/*********************************************************************\
* Methods to Include Data *
\*********************************************************************/
/*!
@function add
@abstract Insert a new company record in the DB
@author Raphael Derosso Pereira
@param array $data The company Information.
Format:
$data = array(
'company_name' => '',
'company_notes' => '',
'contacts' => array(
contact1 => array(
'id_contact' => ,
'title' => ,
'department' =>
),
company2 => array(...),
...
),
'relations' => array(
'relation1' => array(
'id_relation' => ,
'id_typeof_relation' => ,
),
'relation2' => array(...),
...
),
'addresses' => array(
'address1' => array(
'id_typeof_address' => ,
'address1' => '',
'address2' => '',
'complement' => '',
'address_other' => '',
'postal_code' => '',
'po_box' => '',
'id_city' => '',
'id_state' => '',
'id_country' => '',
'address_is_default' =>
),
'address2' => array(...),
...
),
'connections' => array(
'connection1' => array(
'id_typeof_connection' => ,
'connection_name' => ,
'connection_value' => ,
'connection_is_default' =>
),
'connection2' => array(...),
...
),
'legals' => array(
'legal1' => array(
'id_typeof_legal' => ,
'legal_info_name' => ,
'legal_info_value' =>
),
'legal2' => array(...),
...
)
);
If any of the above fields doesn't have a value, it should hold false.
In the case of the multiple-values fields, instead of the array, there
should be a false.
*/
function add ( $data )
{
$permissions = $this->security->get_permissions();
if (!$permissions['create'])
{
return false;
}
$company =& CreateObject('contactcenter.so_company');
$company->reset_fields();
foreach($data as $field => $value)
{
if ($value === false)
{
continue;
}
switch($field)
{
case 'company_name':
case 'company_notes':
$func = 'set_'.$field;
$company->$func();
break;
case 'contacts':
foreach($value as $contact_fields)
{
$company->set_contact($contact_fields['id_contact'],
$company_fields['title'], $company_fields['department']);
}
break;
case 'relations':
foreach($value as $relation_fields)
{
$company->set_relation($relation_fields['id_relation'], $relation_fields['id_typeof_relation']);
}
break;
case 'addresses':
foreach($value as $address_fields)
{
$address =& CreateObject('contactcenter.so_address');
$address->reset_values();
foreach($address_fields as $a_field => $a_value)
{
if ($a_field !== 'id_typeof_address')
{
$func = 'set_'.$a_field;
$address->$func($a_value);
}
}
$address->commit();
$id_address = $address->get_id();
$company->set_address($id_address, $address_fields['id_typeof_address']);
}
break;
case 'connections':
foreach($value as $connection_fields)
{
$connection =& CreateObject('contactcenter.so_connection');
$connection->reset_values();
foreach($connection_fields as $a_field => $a_value)
{
if ($a_field !== 'id_typeof_connection')
{
$func = 'set_'.$a_field;
$connection->$func($a_value);
}
}
$connection->commit();
$id_connection = $connection->get_id();
$company->set_connection($id_connection, $connection_fields['id_typeof_connection']);
}
break;
case 'legals':
foreach($value as $connection_fields)
{
$legal =& CreateObject('contactcenter.so_legal');
$legal->reset_values();
foreach($legal_fields as $a_field => $a_value)
{
if ($a_field !== 'id_typeof_legal')
{
$func = 'set_'.$a_field;
$legal->$func($a_value);
}
}
$legal->commit();
$id_legal = $legal->get_id();
$company->set_legal($id_legal, $legal_fields['id_typeof_legal']);
}
break;
default:
return false;
break;
}
}
}
/*!
@function add_relation_type
@abstract Insert a new Relation Type in the DB
@author Raphael Derosso Pereira
@param string $type_name The Relation Type
@return integer The new ID
*/
function add_relation_type ( $type_name )
{
$permissions = $this->security->get_type_permissions();
if (!$permissions['create'])
{
return false;
}
}
/*!
@function add_address_type
@abstract Insert a new Address Type in the DB
@author Raphael Derosso Pereira
@param string $type_name The Address Type
@return integer The new ID
*/
function add_address_type ( $type_name )
{
$permissions = $this->security->get_type_permissions();
if (!$permissions['create'])
{
return false;
}
}
/*!
@function add_connection_type
@abstract Insert a new Connection Type in the DB
@author Raphael Derosso Pereira
@param string $type_name The Connection Type
@return integer The new ID
*/
function add_connection_type ( $type_name )
{
$permissions = $this->security->get_type_permissions();
if (!$permissions['create'])
{
return false;
}
}
/*!
@function add_legal_type
@abstract Insert a new legal Type in the DB
@author Raphael Derosso Pereira
@param string $type_name The legal Type
@return integer The new ID
*/
function add_legal_type ( $type_name )
{
$permissions = $this->security->get_type_permissions();
if (!$permissions['create'])
{
return false;
}
}
/*********************************************************************\
* Methods to Alter Data *
\*********************************************************************/
/*!
@function update_company_info
@abstract Update information of an existing company
@author Raphael Derosso Pereira
@param integer $id_status The company ID
@param string $status The new Status value
*/
function update_single_info ( $id_company, $data )
{
$permissions = $this->security->get_permissions($id_company);
if (!$permissions['alter'])
{
return false;
}
}
/*!
@function update_prefix
@abstract Update an existing Prefix
@author Raphael Derosso Pereira
@param integer $id_prefix The Prefix ID
@param string $prefix The new Prefix value
*/
function update_prefix ( $id_prefix, $prefix )
{
$permissions = $this->security->get_type_permissions();
if (!$permissions['alter'])
{
return false;
}
}
/*!
@function update_suffix
@abstract Update an existing Sulfix
@author Raphael Derosso Pereira
@param integer $id_suffix The Sulfix ID
@param string $suffix The new Sulfix value
*/
function update_suffix ( $id_suffix, $suffix )
{
$permissions = $this->security->get_type_permissions();
if (!$permissions['alter'])
{
return false;
}
}
/*!
@function update_status
@abstract Update an existing Status
@author Raphael Derosso Pereira
@param integer $id_status The Status ID
@param string $status The new Status value
*/
function update_status ( $id_status, $status )
{
$permissions = $this->security->get_type_permissions();
if (!$permissions['alter'])
{
return false;
}
}
/*!
@function update_relation_type
@abstract Update an existing Relation Type
@author Raphael Derosso Pereira
@param integer $id_type The Type ID
@param string $type The new type value
*/
function update_relation_type ( $old_name, $relation_name )
{
}
/*!
@function update_address_type
@abstract Update an existing Address Type
@author Raphael Derosso Pereira
@param integer $id_type The Type ID
@param string $type The new type value
*/
function update_address_type ( $id_type, $type )
{
}
/*!
@function update_connection_type
@abstract Update an existing Connection Type
@author Raphael Derosso Pereira
@param integer $id_type The Type ID
@param string $type The new type value
*/
function update_connection_type ( $id_type, $type )
{
}
/*!
@function update_legal_type
@abstract Update an existing legal Type
@author Raphael Derosso Pereira
@param integer $id_type The Type ID
@param string $type The new type value
*/
function update_legal_type ( $id_type, $type )
{
}
}
?>