Completed
Push — console-installer ( e2b50d...6ce748 )
by Adam
22:30
created

SugarWidgetSubPanelDetailViewLink::displayList()   F

Complexity

Conditions 21
Paths 1190

Size

Total Lines 92
Code Lines 51

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 21
eloc 51
nc 1190
nop 1
dl 0
loc 92
rs 2
c 0
b 0
f 0

How to fix   Long Method    Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
3
/*********************************************************************************
4
 * SugarCRM Community Edition is a customer relationship management program developed by
5
 * SugarCRM, Inc. Copyright (C) 2004-2013 SugarCRM Inc.
6
7
 * SuiteCRM is an extension to SugarCRM Community Edition developed by Salesagility Ltd.
8
 * Copyright (C) 2011 - 2014 Salesagility Ltd.
9
 *
10
 * This program is free software; you can redistribute it and/or modify it under
11
 * the terms of the GNU Affero General Public License version 3 as published by the
12
 * Free Software Foundation with the addition of the following permission added
13
 * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
14
 * IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
15
 * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
16
 *
17
 * This program is distributed in the hope that it will be useful, but WITHOUT
18
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
19
 * FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more
20
 * details.
21
 *
22
 * You should have received a copy of the GNU Affero General Public License along with
23
 * this program; if not, see http://www.gnu.org/licenses or write to the Free
24
 * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
25
 * 02110-1301 USA.
26
 *
27
 * You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
28
 * SW2-130, Cupertino, CA 95014, USA. or at email address [email protected].
29
 *
30
 * The interactive user interfaces in modified source and object code versions
31
 * of this program must display Appropriate Legal Notices, as required under
32
 * Section 5 of the GNU Affero General Public License version 3.
33
 *
34
 * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
35
 * these Appropriate Legal Notices must retain the display of the "Powered by
36
 * SugarCRM" logo and "Supercharged by SuiteCRM" logo. If the display of the logos is not
37
 * reasonably feasible for  technical reasons, the Appropriate Legal Notices must
38
 * display the words  "Powered by SugarCRM" and "Supercharged by SuiteCRM".
39
 ********************************************************************************/
40
41
42
43
44
45
46
class SugarWidgetSubPanelDetailViewLink extends SugarWidgetField
47
{
48
	function displayList($layout_def)
49
	{
50
		global $focus;
51
52
		$module = '';
53
		$record = '';
54
55
		if(isset($layout_def['varname']))
56
		{
57
			$key = strtoupper($layout_def['varname']);
58
		}
59
		else
60
		{
61
			$key = $this->_get_column_alias($layout_def);
62
			$key = strtoupper($key);
63
		}
64
		if (empty($layout_def['fields'][$key])) {
65
			return "";
66
		} else {
67
			$value = $layout_def['fields'][$key];
68
		}
69
70
71
		if(empty($layout_def['target_record_key']))
72
		{
73
			$record = $layout_def['fields']['ID'];
74
		}
75
		else
76
		{
77
			$record_key = strtoupper($layout_def['target_record_key']);
78
			$record = $layout_def['fields'][$record_key];
79
		}
80
81
		if(!empty($layout_def['target_module_key'])) {
82
			if (!empty($layout_def['fields'][strtoupper($layout_def['target_module_key'])])) {
83
				$module=$layout_def['fields'][strtoupper($layout_def['target_module_key'])];
84
			}
85
		}
86
87
        if (empty($module)) {
88
			if(empty($layout_def['target_module']))
89
			{
90
				$module = $layout_def['module'];
91
			}
92
		else
93
			{
94
				$module = $layout_def['target_module'];
95
			}
96
		}
97
98
        //links to email module now need additional information.
99
        //this is to resolve the information about the target of the emails. necessitated by feature that allow
100
        //only on email record for the whole campaign.
101
        $parent='';
102
        if (!empty($layout_def['parent_info'])) {
103
			if (!empty($focus)){
104
	            $parent="&parent_id=".$focus->id;
105
	            $parent.="&parent_module=".$focus->module_dir;
106
			}
107
        } else {
108
            if(!empty($layout_def['parent_id'])) {
109
                if (isset($layout_def['fields'][strtoupper($layout_def['parent_id'])])) {
110
                    $parent.="&parent_id=".$layout_def['fields'][strtoupper($layout_def['parent_id'])];
111
                }
112
            }
113
            if(!empty($layout_def['parent_module'])) {
114
                if (isset($layout_def['fields'][strtoupper($layout_def['parent_module'])])) {
115
                    $parent.="&parent_module=".$layout_def['fields'][strtoupper($layout_def['parent_module'])];
116
                }
117
            }
118
        }
119
120
		$action = 'DetailView';
121
		$value = $layout_def['fields'][$key];
122
		global $current_user;
123
		if(  !empty($record) &&
124
			($layout_def['DetailView'] && !$layout_def['owner_module'] 
125
			||  $layout_def['DetailView'] && !ACLController::moduleSupportsACL($layout_def['owner_module']) 
126
			|| ACLController::checkAccess($layout_def['owner_module'], 'view', $layout_def['owner_id'] == $current_user->id)))
127
        {
128
            $link = ajaxLink("index.php?module=$module&action=$action&record={$record}{$parent}");
129
            if ($module == 'EAPM')
130
            {
131
                $link = "index.php?module=$module&action=$action&record={$record}{$parent}";
132
            }
133
            return '<a href="' . $link . '" >'."$value</a>";
134
135
		}else{
136
			return $value;
137
		}
138
		
139
	}
140
}
141
142
?>