Passed
Push — release_2_0 ( 062494...9608e9 )
by Stefan
07:59
created

Divs   B

Complexity

Total Complexity 44

Size/Duplication

Total Lines 291
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 1
Metric Value
wmc 44
eloc 142
c 2
b 0
f 1
dl 0
loc 291
rs 8.8798

15 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 2 1
A emptyImage() 0 9 2
A divInstitution() 0 7 2
A divMainButton() 0 18 3
A divUserWelcome() 0 28 2
A divGuessOs() 0 34 3
A divProfiles() 0 7 1
A divPagetitle() 0 4 1
A divTopWelcome() 0 11 4
A divFederation() 0 3 1
A divSilverbullet() 0 7 1
A divHeading() 0 24 5
B divOtherinstallers() 0 33 6
A divRoller() 0 31 5
B divFooter() 0 32 7

How to fix   Complexity   

Complex Class

Complex classes like Divs often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes.

Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.

While breaking up the class, it is a good idea to analyze how other classes use Divs, and based on these observations, apply Extract Interface, too.

1
<?php
2
3
/*
4
 * *****************************************************************************
5
 * Contributions to this work were made on behalf of the GÉANT project, a 
6
 * project that has received funding from the European Union’s Framework 
7
 * Programme 7 under Grant Agreements No. 238875 (GN3) and No. 605243 (GN3plus),
8
 * Horizon 2020 research and innovation programme under Grant Agreements No. 
9
 * 691567 (GN4-1) and No. 731122 (GN4-2).
10
 * On behalf of the aforementioned projects, GEANT Association is the sole owner
11
 * of the copyright in all material which was developed by a member of the GÉANT
12
 * project. GÉANT Vereniging (Association) is registered with the Chamber of 
13
 * Commerce in Amsterdam with registration number 40535155 and operates in the 
14
 * UK as a branch of GÉANT Vereniging.
15
 * 
16
 * Registered office: Hoekenrode 3, 1102BR Amsterdam, The Netherlands. 
17
 * UK branch address: City House, 126-130 Hills Road, Cambridge CB2 1PQ, UK
18
 *
19
 * License: see the web/copyright.inc.php file in the file structure or
20
 *          <base_url>/copyright.php after deploying the software
21
 */
22
23
use web\lib\user;
24
25
require("Menu.php");
0 ignored issues
show
Coding Style introduced by
"require" is a statement not a function; no parentheses are required
Loading history...
26
27
/**
28
 * This class delivers various <div> elements for the front page.
29
 * 
30
 * @author Tomasz Wolniewicz <[email protected]>
31
 */
32
class Divs {
33
34
    /**
35
     * The Gui object we are working with.
36
     * 
37
     * @var user\Gui
38
     */
39
    private $Gui;
40
41
    public function __construct(user\Gui $Gui) {
0 ignored issues
show
Coding Style introduced by
Missing function doc comment
Loading history...
42
        $this->Gui = $Gui;
43
    }
44
45
    public function divHeading($visibility = 'all') {
0 ignored issues
show
Coding Style introduced by
Missing function doc comment
Loading history...
46
        $selectedLang = $this->Gui->langObject->getLang();
47
        $menu = new Menu($visibility, $selectedLang);
48
        $retval = "<div id='heading'>";
49
        $location = $this->Gui->skinObject->findResourceUrl("IMAGES", "consortium_logo.png");
50
        if ($location !== FALSE) {
51
            $retval .= "<div id='cat_logo'>
52
            <a href='" . CONFIG_CONFASSISTANT['CONSORTIUM']['homepage'] . "'><img id='logo_img' src='$location' alt='Consortium Logo'/></a>
53
            <span>Configuration Assistant Tool</span>
54
            </div>";
55
        }
56
        $retval .= "<div id='motd'>" . (isset(CONFIG['APPEARANCE']['MOTD']) ? CONFIG['APPEARANCE']['MOTD'] : '&nbsp') . "</div>";
57
        $loc2 = $this->Gui->skinObject->findResourceUrl("IMAGES", "icons/menu.png");
58
        if ($loc2 !== FALSE) {
59
            $retval .= "<img id='hamburger' src='$loc2' alt='Menu'/>";
60
        }
61
        $retval .= "<div id='menu_top'>";
62
        if ($visibility === 'start') {
63
            $retval .= $menu->printMinimalMenu();
64
        } else {
65
            $retval .= $menu->printMenu();
66
        }
67
        $retval .= "</div></div>\n";
68
        return $retval;
69
    }
70
71
    public function divUserWelcome() {
0 ignored issues
show
Coding Style introduced by
Missing function doc comment
Loading history...
72
        $retval = "
73
<div id='user_welcome'> <!-- this information is shown just before the download -->
74
    <strong>" . $this->Gui->textTemplates->templates[user\WELCOME_ABOARD_PAGEHEADING] . "</strong>
75
    <p>
76
    <span id='download_info'>
77
    <!-- the empty href is dynamically exchanged with the actual path by jQuery at runtime -->
78
        " . $this->Gui->textTemplates->templates[user\WELCOME_ABOARD_DOWNLOAD] . "
79
    </span>
80
    <p>" . $this->Gui->textTemplates->templates[user\WELCOME_ABOARD_HEADING] . "
81
    <br/>
82
    <br/>";
83
        switch (CONFIG_CONFASSISTANT['CONSORTIUM']['name']) {
84
            case "eduroam": $retval .= $this->Gui->textTemplates->templates[user\EDUROAM_WELCOME_ADVERTISING];
0 ignored issues
show
Coding Style introduced by
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
85
                break;
86
            default:
87
        }
88
        $retval .= "
89
    </p>
90
    <p>" . $this->Gui->textTemplates->templates[user\WELCOME_ABOARD_USAGE] . "
91
    <p>" . $this->Gui->textTemplates->templates[user\WELCOME_ABOARD_PROBLEMS] . "
92
    </p>
93
    <p>
94
    <a href='javascript:back_to_downloads()'><strong>" . $this->Gui->textTemplates->templates[user\WELCOME_ABOARD_BACKTODOWNLOADS] . "</strong></a>
95
    </p>
96
</div> <!-- id='user_welcomer_page' -->
97
";
98
        return $retval;
99
    }
100
101
    public function divSilverbullet() {
0 ignored issues
show
Coding Style introduced by
Missing function doc comment
Loading history...
102
        $retval = "
103
<div id='silverbullet'>"
104
                . $this->Gui->textTemplates->templates[user\SB_GO_AWAY] .
105
                "</div>
106
    ";
107
        return $retval;
108
    }
109
110
    public function divTopWelcome() {
0 ignored issues
show
Coding Style introduced by
Missing function doc comment
Loading history...
111
        $retval = '';
112
        if (CONFIG_CONFASSISTANT['CONSORTIUM']['name'] == "eduroam" && isset(CONFIG_CONFASSISTANT['CONSORTIUM']['deployment-voodoo']) && CONFIG_CONFASSISTANT['CONSORTIUM']['deployment-voodoo'] == "Operations Team") { // SW: APPROVED
113
            $retval = "<br><div id='top_invite_ad'>".$this->Gui->textTemplates->templates[user\FRONTPAGE_EDUROAM_AD]."</div>";
114
        }
115
        return "
116
<div id='welcome_top1'>
117
    " . $this->Gui->textTemplates->templates[user\HEADING_TOPLEVEL_GREET] . "
118
</div>
119
<div id='top_invite'>
120
    " . $this->Gui->textTemplates->templates[user\HEADING_TOPLEVEL_PURPOSE] . $retval . "
121
</div>";
122
    }
123
124
    public function divRoller() {
0 ignored issues
show
Coding Style introduced by
Missing function doc comment
Loading history...
125
        $retval = "
126
<div id='roller'>
127
    <div id='slides'>
128
        <span id='line1'>" . $this->Gui->textTemplates->templates[user\FRONTPAGE_ROLLER_EASY] . "</span>
129
        <span id='line2'></span>
130
        <span id='line3'></span>
131
        <span id='line4'>";
132
133
        if (CONFIG['FUNCTIONALITY_LOCATIONS']['CONFASSISTANT_RADIUS'] == "LOCAL") {
134
            $retval .= $this->Gui->textTemplates->templates[user\FRONTPAGE_ROLLER_CUSTOMBUILT];
135
        } elseif (CONFIG['FUNCTIONALITY_LOCATIONS']['CONFASSISTANT_SILVERBULLET'] == "LOCAL") {
136
            $retval .= $this->Gui->textTemplates->templates[user\SB_FRONTPAGE_ROLLER_CUSTOMBUILT];
137
        }
138
139
        $retval .= "</span>
140
        <span id='line5'>";
141
        if (!empty(CONFIG_CONFASSISTANT['CONSORTIUM']['signer_name'])) {
142
            $retval .= $this->Gui->textTemplates->templates[user\FRONTPAGE_ROLLER_SIGNEDBY];
143
        }
144
        $retval .= "
145
        </span>
146
    </div>";
147
        $rollLocation = $this->Gui->skinObject->findResourceUrl("IMAGES", "empty.png");
148
        if ($rollLocation !== FALSE) {
149
            $retval .= "<div id = 'img_roll'>
150
                <img id='img_roll_0' src='$rollLocation' alt='Rollover 0'/> <img id='img_roll_1' src='$rollLocation' alt='Rollover 1'/>
151
            </div>";
152
        }
153
        $retval .= "</div>";
154
        return $retval;
155
    }
156
157
    public function divMainButton() {
0 ignored issues
show
Coding Style introduced by
Missing function doc comment
Loading history...
158
        $retval = "<div id='user_button_td'>";
159
        $retval .= "<span id='signin'>
160
     <button class='large_button signin signin_large' id='user_button1'>
161
        <span id='user_button'>";
162
        if (CONFIG['FUNCTIONALITY_LOCATIONS']['CONFASSISTANT_RADIUS'] == "LOCAL") {
163
            $retval .= $this->Gui->textTemplates->templates[user\FRONTPAGE_BIGDOWNLOADBUTTON];
164
        } elseif (CONFIG['FUNCTIONALITY_LOCATIONS']['CONFASSISTANT_SILVERBULLET'] == "LOCAL") {
165
            $retval .= $this->Gui->textTemplates->templates[user\SB_FRONTPAGE_BIGDOWNLOADBUTTON];
166
        }
167
168
        $retval .= "
169
        </span>
170
     </button>
171
  </span>
172
  <span style='padding-left:50px'>&nbsp;</span>
173
</div>";
174
        return $retval;
175
    }
176
177
    public function divProfiles() {
0 ignored issues
show
Coding Style introduced by
Missing function doc comment
Loading history...
178
        return "
179
<div id='profiles'> <!-- this is the profile selection filled during run time -->
180
    <div id='profiles_h' class='sub_h'>" . $this->Gui->textTemplates->templates[user\PROFILE_SELECTION] . "
181
    </div>" .
182
                "<select id='profile_list'></select><div id='profile_desc' class='profile_desc'></div>" .
183
                "</div>";
184
    }
185
186
    public function divPagetitle($mainText, $extraText = '') {
0 ignored issues
show
Coding Style introduced by
Missing function doc comment
Loading history...
187
        return "
188
<div id='institution_name'>
189
    <span id='inst_name_span'>$mainText</span> <div id='inst_extra_text'>$extraText</div> 
190
</div>";
191
    }
192
193
    public function divInstitution($selectButton = TRUE) {
0 ignored issues
show
Coding Style introduced by
Missing function doc comment
Loading history...
194
        $retval = "<div id='institution_name'>
195
    <span id='inst_name_span'></span> <div id='inst_extra_text'></div><!-- this will be filled with the IdP name -->" .
196
                ($selectButton ? "<a  id='select_another' class='signin' href=\"\">" . $this->Gui->textTemplates->templates[user\INSTITUTION_SELECTION] . "</a>" : "") .
197
                "</div>";
198
        $retval .= $this->emptyImage('idp_logo', 'IdP Logo');
199
        return $retval;
200
    }
201
202
    public function divFederation() {
0 ignored issues
show
Coding Style introduced by
Missing function doc comment
Loading history...
203
        $retval = $this->emptyImage('fed_logo', 'Federation Logo');
204
        return $retval;
205
    }
206
207
    public function divOtherinstallers() {
0 ignored issues
show
Coding Style introduced by
Missing function doc comment
Loading history...
208
        $retval = "
209
<div class='sub_h'>
210
    <div id='other_installers'>" . $this->Gui->textTemplates->templates[user\DOWNLOAD_CHOOSE] . "
211
         <table id='device_list' style='padding:0px;'>";
212
213
        foreach ($this->Gui->listDevices(isset($_REQUEST['hidden']) ? $_REQUEST['hidden'] : 0) as $group => $deviceGroup) {
214
            $groupIndex = count($deviceGroup);
215
            $deviceIndex = 0;
216
217
            $imgTag = "";
218
            $imgLocation = $this->Gui->skinObject->findResourceUrl("IMAGES", "vendorlogo/" . $group . ".png");
219
            if ($imgLocation !== FALSE) {
220
                $imgTag = '<img src="' . $imgLocation . '" alt="' . $group . ' Device" title="' . $group . ' Device">';
221
            }
222
            $retval .= '<tbody><tr><td class="vendor" rowspan="' . $groupIndex . '">' . $imgTag . '</td>';
223
            foreach ($deviceGroup as $d => $D) {
224
                if ($deviceIndex) {
225
                    $retval .= '<tr>';
226
                }
227
                $retval .= "<td><button id='" . $d . "'>" . $D['display'] . "</button>"
228
                        . "<div class='device_info' id='info_" . $d . "'></div></td>"
229
                        . "<td><button class='more_info_b' id='info_b_" . $d . "'>i</button></td></tr>\n";
230
                $deviceIndex++;
231
            }
232
            $retval .= "</tbody>";
233
        }
234
235
        $retval .= "    
236
        </table>
237
    </div>
238
</div>";
239
        return $retval;
240
    }
241
242
    public function divGuessOs($operatingSystem) {
0 ignored issues
show
Coding Style introduced by
Missing function doc comment
Loading history...
243
        $vendorlogo = $this->Gui->skinObject->findResourceUrl("IMAGES", "vendorlogo/" . $operatingSystem['group'] . ".png");
244
        $vendorstyle = "";
245
        if ($vendorlogo !== FALSE) {
246
            $vendorstyle = "style='background-image:url(\"" . $vendorlogo . "\")'";
247
        }
248
        $deleteIcon = $this->Gui->skinObject->findResourceUrl("IMAGES", "icons/delete_32.png");
249
        $deleteImg = "";
250
        if ($deleteIcon !== FALSE) {
251
            $deleteImg = "<img id='cross_icon_" . $operatingSystem['device'] . "' src='$deleteIcon' >";
252
        }
253
        return "
254
<div class='sub_h' id='guess_os'>
255
    <!-- table browser -->
256
    <table id='browser'>
257
        <tr>
258
            <td>
259
                <button class='large_button guess_os' $vendorstyle id='g_" . $operatingSystem['device'] . "'>
260
                    $deleteImg
261
                    <div class='download_button_text_1' id='download_button_header_" . $operatingSystem['device'] . "'> " . $this->Gui->textTemplates->templates[user\DOWNLOAD_MESSAGE] . "
262
                    </div>
263
                    <div class='download_button_text'>" .
264
                $operatingSystem['display'] . "
265
                    </div>
266
                </button>
267
                <div class='device_info' id='info_g_" . $operatingSystem['device'] . "'></div>
268
          </td>
269
          <td style='vertical-align:top'>
270
               <button class='more_info_b large_button' id='g_info_b_" . $operatingSystem['device'] . "'>i</button>
271
          </td>
272
      </tr>
273
    </table> <!-- id='browser' -->
274
    <div class='sub_h'>
275
       <a href='javascript:other_installers()'>" . $this->Gui->textTemplates->templates[user\DOWNLOAD_CHOOSE] . "</a>
276
    </div>
277
</div> <!-- id='guess_os' -->";
278
    }
279
280
    public function divFooter() {
0 ignored issues
show
Coding Style introduced by
Missing function doc comment
Loading history...
281
        $retval = "
282
<div class='footer' id='footer'>
283
    <table>
284
        <tr>
285
            <td>" .
286
                $this->Gui->CAT_COPYRIGHT
287
                . "
288
            </td>";
289
290
        if (!empty(CONFIG['APPEARANCE']['privacy_notice_url'])) {
291
            $retval .= "<td><a href='" . CONFIG['APPEARANCE']['privacy_notice_url'] . "'>" . sprintf(_("%s Privacy Notice"), CONFIG_CONFASSISTANT['CONSORTIUM']['display_name']) . "</a></td>";
292
        }
293
        $retval .= "<td>";
294
        if (CONFIG_CONFASSISTANT['CONSORTIUM']['name'] == "eduroam" && isset(CONFIG_CONFASSISTANT['CONSORTIUM']['deployment-voodoo']) && CONFIG_CONFASSISTANT['CONSORTIUM']['deployment-voodoo'] == "Operations Team") {
295
            $geant = $this->Gui->skinObject->findResourceUrl("IMAGES", "dante.png");
296
            $eu = $this->Gui->skinObject->findResourceUrl("IMAGES", "eu.png");
297
            if ($geant !== FALSE && $eu !== FALSE) {
298
                $retval .= "<span id='logos'><img src='$geant' alt='GEANT' style='height:23px;width:47px'/>
299
              <img src='$eu' alt='EU' style='height:23px;width:27px;border-width:0px;'/></span>";
300
            }
301
            $retval .= "<span id='eu_text' style='text-align:right; padding-left: 60px; display: block; '><a href='http://ec.europa.eu/dgs/connect/index_en.htm' style='text-decoration:none; vertical-align:top; text-align:right'>European Commission Communications Networks, Content and Technology</a></span>";
302
        } else {
303
            $retval .= "&nbsp;";
304
        }
305
306
        $retval .= "
307
            </td>
308
        </tr>
309
    </table>
310
</div>";
311
        return $retval;
312
    }
313
314
    private function emptyImage($id, $alt) {
0 ignored issues
show
Coding Style introduced by
Missing function doc comment
Loading history...
315
        $empty = $this->Gui->skinObject->findResourceUrl("IMAGES", "empty.png");
316
        $retval = '';
317
        if ($empty !== FALSE) {
318
            $retval = "<div>
319
    <img id='$id' src='$empty' alt='$alt'/>
320
 </div>";
321
        }
322
        return $retval;
323
    }
324
325
}
326