Files
crm.e5.pl/include/SugarFields/Fields/Relate/SugarFieldRelate.php
2024-04-27 09:23:34 +02:00

254 lines
12 KiB
PHP
Executable File

<?php
/*********************************************************************************
* SugarCRM is a customer relationship management program developed by
* SugarCRM, Inc. Copyright (C) 2004-2010 SugarCRM Inc.
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU Affero General Public License version 3 as published by the
* Free Software Foundation with the addition of the following permission added
* to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
* IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
* OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
* details.
*
* You should have received a copy of the GNU Affero General Public License along with
* this program; if not, see http://www.gnu.org/licenses or write to the Free
* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA.
*
* You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
* SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "Powered by
* SugarCRM" logo. If the display of the logo is not reasonably feasible for
* technical reasons, the Appropriate Legal Notices must display the words
* "Powered by SugarCRM".
********************************************************************************/
require_once('include/SugarFields/Fields/Base/SugarFieldBase.php');
class SugarFieldRelate extends SugarFieldBase {
function getDetailViewSmarty($parentFieldArray, $vardef, $displayParams, $tabindex) {
$nolink = array('Users', 'Teams');
if(in_array($vardef['module'], $nolink)){
$this->ss->assign('nolink', true);
}else{
$this->ss->assign('nolink', false);
}
$this->setup($parentFieldArray, $vardef, $displayParams, $tabindex);
return $this->fetch('include/SugarFields/Fields/Relate/DetailView.tpl');
}
function getEditViewSmarty($parentFieldArray, $vardef, $displayParams, $tabindex) {
if(!empty($vardef['function']['returns']) && $vardef['function']['returns'] == 'html'){
return parent::getEditViewSmarty($parentFieldArray, $vardef, $displayParams, $tabindex);
}
$call_back_function = 'set_return';
if(isset($displayParams['call_back_function'])) {
$call_back_function = $displayParams['call_back_function'];
}
$form_name = 'EditView';
if(isset($displayParams['formName'])) {
$form_name = $displayParams['formName'];
}
//Special Case for accounts; use the displayParams array and retrieve
//the key and copy indexes. 'key' is the suffix of the field we are searching
//the Account's address with. 'copy' is the suffix we are copying the addresses
//form fields into.
if(isset($vardef['module']) && preg_match('/Accounts/si',$vardef['module'])
&& isset($displayParams['key']) && isset($displayParams['copy'])) {
if(isset($displayParams['key']) && is_array($displayParams['key'])) {
$database_key = $displayParams['key'];
} else {
$database_key[] = $displayParams['key'];
}
if(isset($displayParams['copy']) && is_array($displayParams['copy'])) {
$form = $displayParams['copy'];
} else {
$form[] = $displayParams['copy'];
}
if(count($database_key) != count($form)) {
global $app_list_strings;
$this->ss->trigger_error($app_list_strings['ERR_SMARTY_UNEQUAL_RELATED_FIELD_PARAMETERS']);
} //if
$copy_phone = isset($displayParams['copyPhone']) ? $displayParams['copyPhone'] : true;
$field_to_name = array();
$field_to_name['id'] = $vardef['id_name'];
$field_to_name['name'] = $vardef['name'];
$address_fields = array('_address_street', '_address_city', '_address_state', '_address_postalcode', '_address_country');
$count = 0;
foreach($form as $f) {
foreach($address_fields as $afield) {
$field_to_name[$database_key[$count] . $afield] = $f . $afield;
}
$count++;
}
$popup_request_data = array(
'call_back_function' => $call_back_function,
'form_name' => $form_name,
'field_to_name_array' => $field_to_name,
);
if($copy_phone) {
$popup_request_data['field_to_name_array']['phone_office'] = 'phone_work';
}
} elseif(isset($displayParams['field_to_name_array'])) {
$popup_request_data = array(
'call_back_function' => $call_back_function,
'form_name' => $form_name,
'field_to_name_array' => $displayParams['field_to_name_array'],
);
} else {
$popup_request_data = array(
'call_back_function' => $call_back_function,
'form_name' => $form_name,
'field_to_name_array' => array(
'id' => (empty($displayParams['idName']) ? $vardef['id_name'] : ($displayParams['idName'] . '_' . $vardef['id_name'])) ,
((empty($vardef['rname'])) ? 'name' : $vardef['rname']) => (empty($displayParams['idName']) ? $vardef['name'] : $displayParams['idName']),
),
);
}
$json = getJSONobj();
$displayParams['popupData'] = '{literal}'.$json->encode($popup_request_data). '{/literal}';
if(!isset($displayParams['readOnly'])) {
$displayParams['readOnly'] = '';
} else {
$displayParams['readOnly'] = $displayParams['readOnly'] == false ? '' : 'READONLY';
}
$this->setup($parentFieldArray, $vardef, $displayParams, $tabindex);
return $this->fetch('include/SugarFields/Fields/Relate/EditView.tpl');
}
function getPopupViewSmarty($parentFieldArray, $vardef, $displayParams, $tabindex){
$displayParams['clearOnly'] = true;
return $this->getSearchViewSmarty($parentFieldArray, $vardef, $displayParams, $tabindex);
}
function getSearchViewSmarty($parentFieldArray, $vardef, $displayParams, $tabindex) {
$call_back_function = 'set_return';
if(isset($displayParams['call_back_function'])) {
$call_back_function = $displayParams['call_back_function'];
}
$form_name = 'search_form';
if(isset($displayParams['formName'])) {
$form_name = $displayParams['formName'];
}
if(!empty($vardef['rname']) && $vardef['rname'] == 'user_name'){
$displayParams['useIdSearch'] = true;
}
//Special Case for accounts; use the displayParams array and retrieve
//the key and copy indexes. 'key' is the suffix of the field we are searching
//the Account's address with. 'copy' is the suffix we are copying the addresses
//form fields into.
if(isset($vardef['module']) && preg_match('/Accounts/si',$vardef['module'])
&& isset($displayParams['key']) && isset($displayParams['copy'])) {
if(isset($displayParams['key']) && is_array($displayParams['key'])) {
$database_key = $displayParams['key'];
} else {
$database_key[] = $displayParams['key'];
}
if(isset($displayParams['copy']) && is_array($displayParams['copy'])) {
$form = $displayParams['copy'];
} else {
$form[] = $displayParams['copy'];
}
if(count($database_key) != count($form)) {
global $app_list_strings;
$this->ss->trigger_error($app_list_strings['ERR_SMARTY_UNEQUAL_RELATED_FIELD_PARAMETERS']);
} //if
$copy_phone = isset($displayParams['copyPhone']) ? $displayParams['copyPhone'] : true;
$field_to_name = array();
$field_to_name['id'] = $vardef['id_name'];
$field_to_name['name'] = $vardef['name'];
$address_fields = array('_address_street', '_address_city', '_address_state', '_address_postalcode', '_address_country');
$count = 0;
foreach($form as $f) {
foreach($address_fields as $afield) {
$field_to_name[$database_key[$count] . $afield] = $f . $afield;
}
$count++;
}
$popup_request_data = array(
'call_back_function' => $call_back_function,
'form_name' => $form_name,
'field_to_name_array' => $field_to_name,
);
if($copy_phone) {
$popup_request_data['field_to_name_array']['phone_office'] = 'phone_work';
}
} elseif(isset($displayParams['field_to_name_array'])) {
$popup_request_data = array(
'call_back_function' => $call_back_function,
'form_name' => $form_name,
'field_to_name_array' => $displayParams['field_to_name_array'],
);
} else {
$popup_request_data = array(
'call_back_function' => $call_back_function,
'form_name' => $form_name,
'field_to_name_array' => array(
'id' => $vardef['id_name'],
((empty($vardef['rname'])) ? 'name' : $vardef['rname']) => $vardef['name'],
),
);
}
$json = getJSONobj();
$displayParams['popupData'] = '{literal}'.$json->encode($popup_request_data). '{/literal}';
if(!isset($displayParams['readOnly'])) {
$displayParams['readOnly'] = '';
} else {
$displayParams['readOnly'] = $displayParams['readOnly'] == false ? '' : 'READONLY';
}
$this->setup($parentFieldArray, $vardef, $displayParams, $tabindex);
return $this->fetch('include/SugarFields/Fields/Relate/SearchView.tpl');
}
function formatField($rawField, $vardef) {
if ('contact_name' == $vardef['name']){
$default_locale_name_format = $GLOBALS['current_user']->getPreference('default_locale_name_format');
$default_locale_name_format = trim(preg_replace('/s/i', '', $default_locale_name_format));
$new_field = '';
$names = array();
$temp = explode(' ', $rawField);
if ( !isset($temp[1]) ) {
$names['f'] = '';
$names['l'] = $temp[0];
}
elseif ( !empty($temp) ) {
$names['f'] = $temp[0];
$names['l'] = $temp[1];
}
for($i=0;$i<strlen($default_locale_name_format);$i++){
$new_field .= array_key_exists($default_locale_name_format{$i}, $names) ? $names[$default_locale_name_format{$i}] : $default_locale_name_format{$i};
}
}
else $new_field = $rawField;
return $new_field;
}
}
?>