]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - include/SugarFields/Fields/Parent/SugarFieldParent.php
Release 6.2.3
[Github/sugarcrm.git] / include / SugarFields / Fields / Parent / SugarFieldParent.php
1 <?php
2 /*********************************************************************************
3  * SugarCRM Community Edition is a customer relationship management program developed by
4  * SugarCRM, Inc. Copyright (C) 2004-2011 SugarCRM Inc.
5  * 
6  * This program is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU Affero General Public License version 3 as published by the
8  * Free Software Foundation with the addition of the following permission added
9  * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
10  * IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
11  * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
12  * 
13  * This program is distributed in the hope that it will be useful, but WITHOUT
14  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15  * FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more
16  * details.
17  * 
18  * You should have received a copy of the GNU Affero General Public License along with
19  * this program; if not, see http://www.gnu.org/licenses or write to the Free
20  * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21  * 02110-1301 USA.
22  * 
23  * You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
24  * SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
25  * 
26  * The interactive user interfaces in modified source and object code versions
27  * of this program must display Appropriate Legal Notices, as required under
28  * Section 5 of the GNU Affero General Public License version 3.
29  * 
30  * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
31  * these Appropriate Legal Notices must retain the display of the "Powered by
32  * SugarCRM" logo. If the display of the logo is not reasonably feasible for
33  * technical reasons, the Appropriate Legal Notices must display the words
34  * "Powered by SugarCRM".
35  ********************************************************************************/
36
37 require_once('include/SugarFields/Fields/Relate/SugarFieldRelate.php');
38
39 class SugarFieldParent extends SugarFieldRelate {
40    
41         function getDetailViewSmarty($parentFieldArray, $vardef, $displayParams, $tabindex) {
42                 $nolink = array('Users', 'Teams');
43                 if(in_array($vardef['module'], $nolink)){
44                         $this->ss->assign('nolink', true);
45                 }else{
46                         $this->ss->assign('nolink', false);
47                 }
48         $this->setup($parentFieldArray, $vardef, $displayParams, $tabindex);
49         return $this->fetch($this->findTemplate('DetailView'));
50     }
51     
52     function getEditViewSmarty($parentFieldArray, $vardef, $displayParams, $tabindex) {
53         $form_name = 'EditView';
54         if(isset($displayParams['formName'])) {
55                 $form_name = $displayParams['formName'];
56         }
57
58         $popup_request_data = array(
59                         'call_back_function' => 'set_return',
60                         'form_name' => $form_name,
61                         'field_to_name_array' => array(
62                                                                                         'id' => $vardef['id_name'],
63                                                                                         'name' => $vardef['name'],
64                                                                          ),
65                 );
66
67
68                 global $app_list_strings;
69                 $parent_types = $app_list_strings['record_type_display'];
70                 
71                 $disabled_parent_types = ACLController::disabledModuleList($parent_types,false, 'list');
72                 foreach($disabled_parent_types as $disabled_parent_type){
73                         if($disabled_parent_type != $focus->parent_type){
74                                 unset($parent_types[$disabled_parent_type]);
75                         }
76                 }
77                 asort($parent_types);
78                 $json = getJSONobj();
79                 $displayParams['popupData'] = '{literal}'.$json->encode($popup_request_data).'{/literal}';
80         $displayParams['disabled_parent_types'] = '<script>var disabledModules='. $json->encode($disabled_parent_types).';</script>';
81         $this->ss->assign('quickSearchCode', $this->createQuickSearchCode($form_name, $vardef));
82         $this->setup($parentFieldArray, $vardef, $displayParams, $tabindex);        
83         return $this->fetch($this->findTemplate('EditView'));
84     }
85         
86     function getSearchViewSmarty($parentFieldArray, $vardef, $displayParams, $tabindex) {
87                 $form_name = 'search_form';
88                                 
89         if(isset($displayParams['formName'])) {
90                 $form_name = $displayParams['formName'];
91         }
92         
93         if(preg_match('/(_basic|_advanced)$/', $vardef['name'], $match))
94         {
95            $vardef['type_name'] = $vardef['type_name'] . $match[1];
96         }
97         
98         $this->ss->assign('form_name', $form_name);
99
100         $popup_request_data = array(
101                         'call_back_function' => 'set_return',
102                         'form_name' => $form_name,
103                         'field_to_name_array' => array(
104                                                                                         'id' => $vardef['id_name'],
105                                                                                         'name' => $vardef['name'],
106                                                                          ),
107                 );
108
109
110                 global $app_list_strings;
111                 $parent_types = $app_list_strings['record_type_display'];
112                 $disabled_parent_types = ACLController::disabledModuleList($parent_types,false, 'list');
113                 foreach($disabled_parent_types as $disabled_parent_type){
114                         if($disabled_parent_type != $focus->parent_type){
115                                 unset($parent_types[$disabled_parent_type]);
116                         }
117                 }
118
119                 $json = getJSONobj();
120                 $displayParams['popupData'] = '{literal}'.$json->encode($popup_request_data).'{/literal}';
121         $displayParams['disabled_parent_types'] = '<script>var disabledModules='. $json->encode($disabled_parent_types).';</script>';
122         $this->setup($parentFieldArray, $vardef, $displayParams, $tabindex);        
123         return $this->fetch($this->findTemplate('SearchView'));
124     }
125     
126     /**
127      * @see SugarFieldBase::importSanitize()
128      */
129     public function importSanitize(
130         $value,
131         $vardef,
132         $focus,
133         ImportFieldSanitize $settings
134         )
135     {
136         global $beanList;
137         
138         if ( isset($vardef['type_name']) ) {
139             $moduleName = $vardef['type_name'];
140             if ( isset($focus->$moduleName) && isset($beanList[$focus->$moduleName]) ) {
141                 $vardef['module'] = $focus->$moduleName;
142                 $vardef['rname'] = 'name';
143                 $relatedBean = loadBean($focus->$moduleName);
144                 $vardef['table'] = $relatedBean->table_name;
145                 return parent::importSanitize($value,$vardef,$focus,$settings);
146             }
147         }
148         
149         return false;
150     }
151     
152     function createQuickSearchCode($formName = 'EditView', $vardef){
153         
154         require_once('include/QuickSearchDefaults.php');
155         $json = getJSONobj();
156         
157         $dynamicParentTypePlaceHolder = "**@**"; //Placeholder for dynamic parent so smarty tags are not escaped in json encoding.
158         $dynamicParentType = '{/literal}{if !empty($fields.parent_type.value)}{$fields.parent_type.value}{else}Accounts{/if}{literal}';
159         
160         //Get the parent sqs definition
161         $qsd = new QuickSearchDefaults();
162         $qsd->setFormName($formName);
163         $sqsFieldArray = $qsd->getQSParent($dynamicParentTypePlaceHolder);
164         $qsFieldName = $formName . "_" . $vardef['name'];
165         
166         //Build the javascript
167         $quicksearch_js = '<script language="javascript">';
168         $quicksearch_js.= "if(typeof sqs_objects == 'undefined'){var sqs_objects = new Array;}";
169         $quicksearch_js .= "sqs_objects['$qsFieldName']=" . str_replace($dynamicParentTypePlaceHolder, $dynamicParentType,$json->encode($sqsFieldArray)) .';';
170
171         return $quicksearch_js .= '</script>';
172     }
173     
174     /**
175      * getSearchInput
176      * 
177      * This function allows the SugarFields to handle returning the search input value given arguments (typically from $_REQUEST/$_POST)
178      * and a search string.
179      * 
180      * @param $key String value of key to search for
181      * @param $args Mixed value containing haystack to search for value in
182      * @return $value Mixed value that the SugarField should return
183      */    
184     function getSearchInput($key='', $args=array()) 
185     {
186         //Nothing specified return empty string
187         if(empty($key) || empty($args))
188         {
189                 return ''; 
190         }
191         
192         //We are probably getting "parent_type" as the $key value, but this is likely not set since there are
193         //advanced and basic tabs.  This next section attempts to resolve this issue.
194         $isBasicSearch = isset($args['searchFormTab']) && $args['searchFormTab'] == 'basic_search' ? true : false;
195         $searchKey = $isBasicSearch ? "{$key}_basic" : "{$key}_advanced";
196         
197         if(isset($args[$searchKey]))
198         {
199            return $args[$searchKey];  
200         }
201         
202         return isset($args[$key]) ? $args[$key] : '';
203     }    
204 }
205 ?>