SugarWidgetSubPanelRemoveButton::displayList()   C
last analyzed

Complexity

Conditions 13
Paths 112

Size

Total Lines 72
Code Lines 45

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 182
Metric Value
cc 13
eloc 45
nc 112
nop 1
dl 0
loc 72
ccs 0
cts 56
cp 0
crap 182
rs 5.24

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 SugarWidgetSubPanelRemoveButton extends SugarWidgetField
47
{
48
	function displayHeaderCell($layout_def)
49
	{
50
		return '&nbsp;';
51
	}
52
53
	function displayList($layout_def)
54
	{
55
		
56
		global $app_strings;
57
        global $subpanel_item_count;
58
59
		$unique_id = $layout_def['subpanel_id']."_remove_".$subpanel_item_count; //bug 51512
60
		
61
		$parent_record_id = $_REQUEST['record'];
62
		$parent_module = $_REQUEST['module'];
63
64
		$action = 'DeleteRelationship';
65
		$record = $layout_def['fields']['ID'];
66
		$current_module=$layout_def['module'];
67
		//in document revisions subpanel ,users are now allowed to 
68
		//delete the latest revsion of a document. this will be tested here
69
		//and if the condition is met delete button will be removed.
70
		$hideremove=false;
71
		if ($current_module=='DocumentRevisions') {
72
			if ($layout_def['fields']['ID']==$layout_def['fields']['LATEST_REVISION_ID']) {
73
				$hideremove=true;
74
			}
75
		}
76
		// Implicit Team-memberships are not "removeable" 
77
		elseif ($_REQUEST['module'] == 'Teams' && $current_module == 'Users') {
78
			if($layout_def['fields']['UPLINE'] != translate('LBL_TEAM_UPLINE_EXPLICIT', 'Users')) {
79
				$hideremove = true;
80
			}	
81
			
82
			//We also cannot remove the user whose private team is set to the parent_record_id value
83
			$user = new User();
84
			$user->retrieve($layout_def['fields']['ID']);
85
			if($parent_record_id == $user->getPrivateTeamID())
0 ignored issues
show
Bug introduced by
The method getPrivateTeamID() does not seem to exist on object<User>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
86
			{
87
			    $hideremove = true;
88
			}
89
		}
90
		
91
		
92
		$return_module = $_REQUEST['module'];
93
		$return_action = 'SubPanelViewer';
94
		$subpanel = $layout_def['subpanel_id'];
95
		$return_id = $_REQUEST['record'];
96
		if (isset($layout_def['linked_field_set']) && !empty($layout_def['linked_field_set'])) {
97
			$linked_field= $layout_def['linked_field_set'] ;
98
		} else {
99
			$linked_field = $layout_def['linked_field'];
100
		}
101
		$refresh_page = 0;
102
		if(!empty($layout_def['refresh_page'])){
103
			$refresh_page = 1;
104
		}
105
		$return_url = "index.php?module=$return_module&action=$return_action&subpanel=$subpanel&record=$return_id&sugar_body_only=1&inline=1";
106
107
		$icon_remove_text = mb_strtolower($app_strings['LBL_ID_FF_REMOVE'], 'UTF-8');
108
		
109
         if($linked_field == 'get_emails_by_assign_or_link')
110
            $linked_field = 'emails';
111
		//based on listview since that lets you select records
112
		if($layout_def['ListView'] && !$hideremove) {
113
            $retStr = "<a href=\"javascript:sub_p_rem('$subpanel', '$linked_field'" 
114
                    .", '$record', $refresh_page);\"" 
115
			. ' class="listViewTdToolsS1"'
116
            . "id=$unique_id"
117
			. " onclick=\"return sp_rem_conf();\""
118
			. ">$icon_remove_text</a>";
119
        return $retStr;
120
            
121
		}else{
122
			return '';
123
		}
124
	}
125
}
126