Passed
Push — scrutinizer-code-quality ( 09f5a1...c4c5fb )
by Adam
56:05 queued 14:08
created

contextMenu   A

Complexity

Total Complexity 18

Size/Duplication

Total Lines 84
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 0%

Importance

Changes 3
Bugs 3 Features 1
Metric Value
c 3
b 3
f 1
dl 0
loc 84
ccs 0
cts 35
cp 0
rs 10
wmc 18
lcom 1
cbo 1

6 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A contextMenu() 0 10 2
A getScript() 0 4 1
B addMenuItem() 0 11 8
A loadFromFile() 0 6 1
B loadFromDef() 0 9 5
1
<?php
2
/*********************************************************************************
3
 * SugarCRM Community Edition is a customer relationship management program developed by
4
 * SugarCRM, Inc. Copyright (C) 2004-2013 SugarCRM Inc.
5
6
 * SuiteCRM is an extension to SugarCRM Community Edition developed by Salesagility Ltd.
7
 * Copyright (C) 2011 - 2014 Salesagility Ltd.
8
 *
9
 * This program is free software; you can redistribute it and/or modify it under
10
 * the terms of the GNU Affero General Public License version 3 as published by the
11
 * Free Software Foundation with the addition of the following permission added
12
 * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
13
 * IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
14
 * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
15
 *
16
 * This program is distributed in the hope that it will be useful, but WITHOUT
17
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
18
 * FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more
19
 * details.
20
 *
21
 * You should have received a copy of the GNU Affero General Public License along with
22
 * this program; if not, see http://www.gnu.org/licenses or write to the Free
23
 * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
24
 * 02110-1301 USA.
25
 *
26
 * You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
27
 * SW2-130, Cupertino, CA 95014, USA. or at email address [email protected].
28
 *
29
 * The interactive user interfaces in modified source and object code versions
30
 * of this program must display Appropriate Legal Notices, as required under
31
 * Section 5 of the GNU Affero General Public License version 3.
32
 *
33
 * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
34
 * these Appropriate Legal Notices must retain the display of the "Powered by
35
 * SugarCRM" logo and "Supercharged by SuiteCRM" logo. If the display of the logos is not
36
 * reasonably feasible for  technical reasons, the Appropriate Legal Notices must
37
 * display the words  "Powered by SugarCRM" and "Supercharged by SuiteCRM".
38
 ********************************************************************************/
39
40
41
class contextMenu {
42
    var $menuItems;
43
    var $objectName;
44
45
    public function __construct() {
46
        $this->menuItems = array();
47
    }
48
49
    /**
50
     * @deprecated deprecated since version 7.6, PHP4 Style Constructors are deprecated and will be remove in 7.8, please update your code, use __construct instead
51
     */
52
    public function contextMenu(){
53
        $deprecatedMessage = 'PHP4 Style Constructors are deprecated and will be remove in 7.8, please update your code';
54
        if(isset($GLOBALS['log'])) {
55
            $GLOBALS['log']->deprecated($deprecatedMessage);
56
        }
57
        else {
58
            trigger_error($deprecatedMessage, E_USER_DEPRECATED);
59
        }
60
        self::__construct();
61
    }
62
63
64
    function getScript() {
65
        $json = getJSONobj();
66
        return "SUGAR.contextMenu.registerObjectType('{$this->objectName}', " . $json->encode($this->menuItems) . ");\n";
67
    }
68
69
    /**
70
     * adds a menu item to the current contextMenu
71
     *
72
     * @param string $text text of the item
73
     * @param string $action function or pointer to the javascript function to call
74
     * @param array $params other parameters includes:
75
     *      url - The URL for the MenuItem's anchor's "href" attribute.
76
     *      target - The value to be used for the MenuItem's anchor's "target" attribute.
77
     *      helptext - Additional instructional text to accompany the text for a MenuItem. Example: If the text is
78
     *                 "Copy" you might want to add the help text "Ctrl + C" to inform the user there is a keyboard
79
     *                 shortcut for the item.
80
     *      emphasis - If set to true the text for the MenuItem will be rendered with emphasis (using <em>).
81
     *      strongemphasis - If set to true the text for the MenuItem will be rendered with strong emphasis (using <strong>).
82
     *      disabled - If set to true the MenuItem will be dimmed and will not respond to user input or fire events.
83
     *      selected - If set to true the MenuItem will be highlighted.
84
     *      submenu - Appends / removes a menu (and it's associated DOM elements) to / from the MenuItem.
85
     *      checked - If set to true the MenuItem will be rendered with a checkmark.
86
     */
87
    function addMenuItem($text, $action, $module = null, $aclAction = null, $params = null) {
88
        // check ACLs if module and aclAction set otherwise no ACL check
89
        if(((!empty($module) && !empty($aclAction)) && ACLController::checkAccess($module, $aclAction)) || (empty($module) || empty($aclAction))) {
90
            $item = array('text' => translate($text),
91
                          'action' => $action);
92
            foreach(array('url', 'target', 'helptext', 'emphasis', 'strongemphasis', 'disabled', 'selected', 'submenu', 'checked') as $param) {
93
                if(!empty($params[$param])) $item[$param] = $params[$param];
94
            }
95
            array_push($this->menuItems, $item);
96
        }
97
    }
98
99
    /**
100
     * Loads up menu items from files located in include/contextMenus/menuDefs
101
     * @param string $name name of the object
102
     */
103
    function loadFromFile($name) {
104
        global $menuDef;
105
    	clean_string($name, 'FILE');
106
        require_once('include/contextMenus/menuDefs/' . $name . '.php');
107
        $this->loadFromDef($name, $menuDef[$name]);
108
    }
109
110
    /**
111
     * Loads up menu items from def
112
     * @param string $name name of the object type
113
     * @param array $defs menu item definitions
114
     */
115
    function loadFromDef($name, $defs) {
116
        $this->objectName = $name;
117
        foreach($defs as $def) {
118
            $this->addMenuItem($def['text'], $def['action'],
119
                               (empty($def['module']) ? null : $def['module']),
120
                               (empty($def['aclAction']) ? null : $def['aclAction']),
121
                               (empty($def['params']) ? null : $def['params']));
122
        }
123
    }
124
}
125
?>
126