ProspectLink   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 73
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Test Coverage

Coverage 0%
Metric Value
dl 0
loc 73
ccs 0
cts 54
cp 0
rs 10
wmc 8
lcom 0
cbo 0

1 Method

Rating   Name   Duplication   Size   Complexity  
B getJoin() 0 61 8
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
* Description: Bug 40166. Need for return right join for campaign's target list relations.
45
* All Rights Reserved.
46
* Contributor(s): ______________________________________..
47
********************************************************************************/
48
49
require_once('data/Link2.php');
50
51
/**
52
 * @brief Bug #40166. Campaign Log Report will not display Contact/Account Names
53
 */
54
class ProspectLink extends Link2
55
{
56
57
    /**
58
     * This method changes join of any item to campaign through target list
59
     * if you want to use this join method you should add code below to your vardef.php
60
     * 'link_class' => 'ProspectLink',
61
     * 'link_file' => 'modules/Campaigns/ProspectLink.php'
62
     *
63
     * @see Link::getJoin method
64
     */
65
    public function getJoin($params, $return_array = false)
66
    {
67
        $join_type= ' INNER JOIN ';
68
        if (isset($params['join_type']))
69
        {
70
            $join_type = $params['join_type'];
71
        }
72
        $join = '';
73
        $bean_is_lhs=$this->_get_bean_position();
0 ignored issues
show
Deprecated Code introduced by
The method Link2::_get_bean_position() has been deprecated.

This method has been deprecated.

Loading history...
74
75
        if (
76
            $this->_relationship->relationship_type == 'one-to-many'
77
            && $bean_is_lhs
78
        )
79
        {
80
            $table_with_alias = $table = $this->_relationship->rhs_table;
81
            $key = $this->_relationship->rhs_key;
82
            $module = $this->_relationship->rhs_module;
83
            $other_table = (empty($params['left_join_table_alias']) ? $this->_relationship->lhs_table : $params['left_join_table_alias']);
84
            $other_key = $this->_relationship->lhs_key;
85
            $alias_prefix = $table;
86
            if (!empty($params['join_table_alias']))
87
            {
88
                $table_with_alias = $table. " ".$params['join_table_alias'];
89
                $table = $params['join_table_alias'];
90
                $alias_prefix = $params['join_table_alias'];
91
            }
92
93
            $join .= ' '.$join_type.' prospect_list_campaigns '.$alias_prefix.'_plc ON';
94
            $join .= ' '.$alias_prefix.'_plc.'.$key.' = '.$other_table.'.'.$other_key."\n";
95
96
            // join list targets
97
            $join .= ' '.$join_type.' prospect_lists_prospects '.$alias_prefix.'_plp ON';
98
            $join .= ' '.$alias_prefix.'_plp.prospect_list_id = '.$alias_prefix.'_plc.prospect_list_id AND';
99
            $join .= ' '.$alias_prefix.'_plp.related_type = '.$GLOBALS['db']->quoted($module)."\n";
100
101
            // join target
102
            $join .= ' '.$join_type.' '.$table_with_alias.' ON';
103
            $join .= ' '.$table.'.id = '.$alias_prefix.'_plp.related_id AND';
104
            $join .= ' '.$table.'.deleted=0'."\n";
105
106
            if ($return_array)
107
            {
108
                $ret_arr = array();
109
                $ret_arr['join'] = $join;
110
                $ret_arr['type'] = $this->_relationship->relationship_type;
111
                if ($bean_is_lhs)
112
                {
113
                    $ret_arr['rel_key'] = $this->_relationship->join_key_rhs;
114
                }
115
                else
116
                {
117
                    $ret_arr['rel_key'] = $this->_relationship->join_key_lhs;
118
                }
119
                return $ret_arr;
120
            }
121
            return $join;
122
        } else {
123
            return parent::getJoin($params, $return_array);
124
        }
125
    }
126
}
127