Passed
Push — release_2_0 ( eab4dd...75d102 )
by Tomasz
10:54
created
devices/test_module/Device_TestModule.php 1 patch
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -138,8 +138,8 @@
 block discarded – undo
138 138
      */
139 139
     private function zipInstaller() {
140 140
         // one can always access $this->attributes to check things
141
-        $fileName = $this->installerBasename . '.zip';
142
-        $output = system('zip -q ' . $fileName . ' *');
141
+        $fileName = $this->installerBasename.'.zip';
142
+        $output = system('zip -q '.$fileName.' *');
143 143
         if ($output === FALSE) {
144 144
             $this->loggerInstance->debug(2, "unable to zip the installer\n");
145 145
         }
Please login to merge, or discard this patch.
devices/linux/Device_Linux.php 3 patches
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -211,7 +211,7 @@
 block discarded – undo
211 211
         }
212 212
 
213 213
         if (!empty($this->attributes['internal:realm'][0])) {
214
-           $config['user_realm'] = $this->attributes['internal:realm'][0];
214
+            $config['user_realm'] = $this->attributes['internal:realm'][0];
215 215
         }
216 216
         
217 217
         if(!empty($this->attributes['internal:hint_userinput_suffix'][0]) && $this->attributes['internal:hint_userinput_suffix'][0] == 1) {
Please login to merge, or discard this patch.
Spacing   +21 added lines, -21 removed lines patch added patch discarded remove patch
@@ -54,9 +54,9 @@  discard block
 block discarded – undo
54 54
      *
55 55
      */
56 56
     public function writeInstaller() {
57
-        $installerPath = $this->installerBasename . ".py";
57
+        $installerPath = $this->installerBasename.".py";
58 58
         $this->copyFile("main.py", $installerPath);
59
-        $installer = fopen($installerPath,"a");
59
+        $installer = fopen($installerPath, "a");
60 60
         if ($installer === FALSE) {
61 61
             throw new Exception("Unable to open installer file for writing!");
62 62
         }
@@ -83,9 +83,9 @@  discard block
 block discarded – undo
83 83
         $out .= "<p>";
84 84
         if ($ssidCount > 1) {
85 85
             if ($ssidCount > 2) {
86
-                $out .= sprintf(_("In addition to <strong>%s</strong> the installer will also configure access to the following networks:"), implode(', ', CONFIG_CONFASSISTANT['CONSORTIUM']['ssid'])) . " ";
86
+                $out .= sprintf(_("In addition to <strong>%s</strong> the installer will also configure access to the following networks:"), implode(', ', CONFIG_CONFASSISTANT['CONSORTIUM']['ssid']))." ";
87 87
             } else {
88
-                $out .= sprintf(_("In addition to <strong>%s</strong> the installer will also configure access to:"), implode(', ', CONFIG_CONFASSISTANT['CONSORTIUM']['ssid'])) . " ";
88
+                $out .= sprintf(_("In addition to <strong>%s</strong> the installer will also configure access to:"), implode(', ', CONFIG_CONFASSISTANT['CONSORTIUM']['ssid']))." ";
89 89
             }
90 90
             $iterator = 0;
91 91
             foreach ($this->attributes['internal:SSID'] as $ssid => $v) {
@@ -123,8 +123,8 @@  discard block
 block discarded – undo
123 123
      * @return void
124 124
      */
125 125
     private function writeConfigLine($file, $prefix, $name, $text) {
126
-        $out = $prefix . $name . ' = "' . $text;
127
-        fwrite($file, wordwrap($out, 70, " \" \\\n    \"") . "\n");
126
+        $out = $prefix.$name.' = "'.$text;
127
+        fwrite($file, wordwrap($out, 70, " \" \\\n    \"")."\n");
128 128
     }
129 129
     
130 130
     /**
@@ -163,7 +163,7 @@  discard block
 block discarded – undo
163 163
         'user_cert_missing' => _("personal certificate file not found"),
164 164
         ];
165 165
         foreach ($messages as $name => $value) {
166
-            $this->writeConfigLine($file, 'Messages.', $name, $value . '"');
166
+            $this->writeConfigLine($file, 'Messages.', $name, $value.'"');
167 167
         }
168 168
         \core\common\Entity::outOfThePotatoes();
169 169
     }
@@ -207,39 +207,39 @@  discard block
 block discarded – undo
207 207
         }
208 208
 
209 209
         if ($outerId !== NULL) {
210
-            $configRaw['anonymous_identity'] = '"' . $outerId . '"';
210
+            $configRaw['anonymous_identity'] = '"'.$outerId.'"';
211 211
         }
212 212
 
213 213
         if (!empty($this->attributes['internal:realm'][0])) {
214 214
            $config['user_realm'] = $this->attributes['internal:realm'][0];
215 215
         }
216 216
         
217
-        if(!empty($this->attributes['internal:hint_userinput_suffix'][0]) && $this->attributes['internal:hint_userinput_suffix'][0] == 1) {
217
+        if (!empty($this->attributes['internal:hint_userinput_suffix'][0]) && $this->attributes['internal:hint_userinput_suffix'][0] == 1) {
218 218
             $configRaw['hint_user_input'] = "True";
219 219
         }
220 220
         
221
-        if(!empty($this->attributes['internal:verify_userinput_suffix'][0]) && $this->attributes['internal:verify_userinput_suffix'][0] == 1) {
221
+        if (!empty($this->attributes['internal:verify_userinput_suffix'][0]) && $this->attributes['internal:verify_userinput_suffix'][0] == 1) {
222 222
             $configRaw['verify_user_realm_input'] = "True";
223 223
         }
224 224
         
225 225
         foreach ($config as $name => $value) {
226
-            $this->writeConfigLine($file, 'Config.', $name, $value . '"');
226
+            $this->writeConfigLine($file, 'Config.', $name, $value.'"');
227 227
         }
228 228
         
229 229
         foreach ($configRaw as $name => $value) {
230
-            fwrite($file, 'Config.' . $name . ' = ' . $value . "\n");
230
+            fwrite($file, 'Config.'.$name.' = '.$value."\n");
231 231
         }
232 232
         
233 233
         if ($tou === '') {
234
-            fwrite($file, 'Config.tou = ""' . "\n");
234
+            fwrite($file, 'Config.tou = ""'."\n");
235 235
         } else {
236
-            fwrite($file, 'Config.tou = """' . $tou . '"""' . "\n");
236
+            fwrite($file, 'Config.tou = """'.$tou.'"""'."\n");
237 237
         }
238 238
         
239
-        fwrite($file, 'Config.CA = """' . $this->mkCAfile() . '"""' . "\n");
239
+        fwrite($file, 'Config.CA = """'.$this->mkCAfile().'"""'."\n");
240 240
         $sbUserFile = $this->mkSbUserFile();
241 241
         if ($sbUserFile !== '') {
242
-            fwrite($file, 'Config.sb_user_file = """' . $sbUserFile . '"""' . "\n");
242
+            fwrite($file, 'Config.sb_user_file = """'.$sbUserFile.'"""'."\n");
243 243
         }
244 244
     }
245 245
 
@@ -291,7 +291,7 @@  discard block
 block discarded – undo
291 291
             }
292 292
             $out .= "'DNS:$oneServer'";
293 293
         }
294
-        return "[" . $out. "]";
294
+        return "[".$out."]";
295 295
     }
296 296
 
297 297
     /**
@@ -305,7 +305,7 @@  discard block
 block discarded – undo
305 305
         foreach ($ssids as $ssid => $cipher) {
306 306
             $outArray[] = "'$ssid'";
307 307
         }
308
-        return '[' . implode(', ', $outArray) . ']';
308
+        return '['.implode(', ', $outArray).']';
309 309
     }
310 310
     
311 311
     /**
@@ -321,7 +321,7 @@  discard block
 block discarded – undo
321 321
                 $outArray[] = "'$ssid'";
322 322
             }
323 323
         }
324
-        return '[' . implode(', ', $outArray) . ']';
324
+        return '['.implode(', ', $outArray).']';
325 325
     }
326 326
     
327 327
     /**
@@ -329,7 +329,7 @@  discard block
 block discarded – undo
329 329
      * 
330 330
      * @return string
331 331
      */
332
-    private function mkCAfile(){
332
+    private function mkCAfile() {
333 333
         $out = '';
334 334
         $cAlist = $this->attributes['internal:CAs'][0];
335 335
         foreach ($cAlist as $oneCa) {
@@ -345,7 +345,7 @@  discard block
 block discarded – undo
345 345
      */
346 346
     private function mkIntro() {
347 347
         \core\common\Entity::intoThePotatoes();
348
-        $out = _("This installer has been prepared for {0}") . '\n\n' . _("More information and comments:") . '\n\nEMAIL: {1}\nWWW: {2}\n\n' .
348
+        $out = _("This installer has been prepared for {0}").'\n\n'._("More information and comments:").'\n\nEMAIL: {1}\nWWW: {2}\n\n'.
349 349
             _("Installer created with software from the GEANT project.");
350 350
         \core\common\Entity::outOfThePotatoes();
351 351
         return $out;
Please login to merge, or discard this patch.
Braces   +1 added lines, -2 removed lines patch added patch discarded remove patch
@@ -201,8 +201,7 @@
 block discarded – undo
201 201
             
202 202
         if ($this->selectedEap == \core\common\EAP::EAPTYPE_TLS && isset($this->attributes['eap-specific:tls_use_other_id']) && $this->attributes['eap-specific:tls_use_other_id'][0] == 'on') {
203 203
             $configRaw['use_other_tls_id'] = "True";
204
-        }
205
-        else {
204
+        } else {
206 205
             $configRaw['use_other_tls_id'] = "False";
207 206
         }
208 207
 
Please login to merge, or discard this patch.
web/index.php 1 patch
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -25,7 +25,7 @@
 block discarded – undo
25 25
  * @author Stefan Winter <[email protected]>
26 26
  * @package Core
27 27
  */
28
-require_once dirname(dirname(__FILE__)) . "/config/_config.php";
28
+require_once dirname(dirname(__FILE__))."/config/_config.php";
29 29
 
30 30
 $Gui = new \web\lib\user\Gui();
31 31
 // ... unless overwritten by direct GET/POST parameter in the request or a SESSION setting
Please login to merge, or discard this patch.
core/UserManagement.php 1 patch
Spacing   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -146,7 +146,7 @@  discard block
 block discarded – undo
146 146
                 } else {
147 147
                     $this->databaseHandle->exec("INSERT INTO ownership (user_id, institution_id, blesslevel, orig_mail) VALUES(?, ?, ?, ?)", "siss", $owner, $catId, $level, $destMail);
148 148
                 }
149
-                $this->loggerInstance->writeAudit((string) $owner, "OWN", "IdP " . $invitationDetails->cat_institution_id . " - added user as owner");
149
+                $this->loggerInstance->writeAudit((string) $owner, "OWN", "IdP ".$invitationDetails->cat_institution_id." - added user as owner");
150 150
                 common\Entity::outOfThePotatoes();
151 151
                 return new IdP($invitationDetails->cat_institution_id);
152 152
             }
@@ -168,7 +168,7 @@  discard block
 block discarded – undo
168 168
                 $idp = new IdP($fed->newIdP($owner, $invitationDetails->invite_issuer_level, $invitationDetails->invite_dest_mail, $bestnameguess));
169 169
             }
170 170
             $idp->addAttribute("general:instname", 'C', $bestnameguess);
171
-            $this->loggerInstance->writeAudit($owner, "NEW", "IdP " . $idp->identifier . " - created from invitation");
171
+            $this->loggerInstance->writeAudit($owner, "NEW", "IdP ".$idp->identifier." - created from invitation");
172 172
 
173 173
             // in case we have more admins in the queue which were invited to 
174 174
             // administer the same inst but haven't redeemed their invitations 
@@ -182,7 +182,7 @@  discard block
 block discarded – undo
182 182
                              WHERE invite_created >= TIMESTAMPADD(DAY, -1, NOW()) AND used = 0 AND name = ? AND country = ? AND ( cat_institution_id IS NULL OR external_db_uniquehandle IS NULL ) ", "ss", $invitationDetails->name, $invitationDetails->country);
183 183
             // SELECT -> resource, no boolean
184 184
             while ($pendingDetail = mysqli_fetch_object(/** @scrutinizer ignore-type */ $otherPending)) {
185
-                $this->databaseHandle->exec("UPDATE invitations SET cat_institution_id = " . $idp->identifier . " WHERE id = " . $pendingDetail->id);
185
+                $this->databaseHandle->exec("UPDATE invitations SET cat_institution_id = ".$idp->identifier." WHERE id = ".$pendingDetail->id);
186 186
             }
187 187
             common\Entity::outOfThePotatoes();
188 188
             return $idp;
@@ -276,9 +276,9 @@  discard block
 block discarded – undo
276 276
         $retval = [];
277 277
         $invitations = $this->databaseHandle->exec("SELECT cat_institution_id, country, name, invite_issuer_level, invite_dest_mail, invite_token , TIMESTAMPADD(DAY, 1, invite_created) as expiry
278 278
                                         FROM invitations 
279
-                                        WHERE cat_institution_id " . ( $idpIdentifier != 0 ? "= $idpIdentifier" : "IS NULL") . " AND invite_created >= TIMESTAMPADD(DAY, -1, NOW()) AND used = 0");
279
+                                        WHERE cat_institution_id " . ($idpIdentifier != 0 ? "= $idpIdentifier" : "IS NULL")." AND invite_created >= TIMESTAMPADD(DAY, -1, NOW()) AND used = 0");
280 280
         // SELECT -> resource, not boolean
281
-        $this->loggerInstance->debug(4, "Retrieving pending invitations for " . ($idpIdentifier != 0 ? "IdP $idpIdentifier" : "IdPs awaiting initial creation" ) . ".\n");
281
+        $this->loggerInstance->debug(4, "Retrieving pending invitations for ".($idpIdentifier != 0 ? "IdP $idpIdentifier" : "IdPs awaiting initial creation").".\n");
282 282
         while ($invitationQuery = mysqli_fetch_object(/** @scrutinizer ignore-type */ $invitations)) {
283 283
             $retval[] = ["country" => $invitationQuery->country, "name" => $invitationQuery->name, "mail" => $invitationQuery->invite_dest_mail, "token" => $invitationQuery->invite_token, "expiry" => $invitationQuery->expiry];
284 284
         }
Please login to merge, or discard this patch.
web/user/sb_download.php 1 patch
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -27,7 +27,7 @@  discard block
 block discarded – undo
27 27
  * @author Stefan Winter <[email protected]>
28 28
  * @package UserGUI
29 29
  */
30
-require dirname(dirname(dirname(__FILE__))) . "/config/_config.php";
30
+require dirname(dirname(dirname(__FILE__)))."/config/_config.php";
31 31
 $API = new \core\UserAPI();
32 32
 $loggerInstance = new \core\common\Logging();
33 33
 $validator = new \web\lib\common\InputValidation();
@@ -76,5 +76,5 @@  discard block
 block discarded – undo
76 76
     if ($accountPageUrl === FALSE) {
77 77
         throw new Exception("Unable to find our accountstatus.php page.");
78 78
     }
79
-    header("Location: ../accountstatus/accountstatus.php?token=" . $cleanToken . "&errorcode=GENERATOR_CONSUMED");
79
+    header("Location: ../accountstatus/accountstatus.php?token=".$cleanToken."&errorcode=GENERATOR_CONSUMED");
80 80
 }
81 81
\ No newline at end of file
Please login to merge, or discard this patch.
web/admin/overview_idp.php 1 patch
Spacing   +35 added lines, -35 removed lines patch added patch discarded remove patch
@@ -26,8 +26,8 @@  discard block
 block discarded – undo
26 26
  */
27 27
 ?>
28 28
 <?php
29
-require_once dirname(dirname(dirname(__FILE__))) . "/config/_config.php";
30
-require_once dirname(dirname(dirname(__FILE__))) . "/core/phpqrcode.php";
29
+require_once dirname(dirname(dirname(__FILE__)))."/config/_config.php";
30
+require_once dirname(dirname(dirname(__FILE__)))."/core/phpqrcode.php";
31 31
 
32 32
 
33 33
 $deco = new \web\lib\admin\PageDecoration();
@@ -40,7 +40,7 @@  discard block
 block discarded – undo
40 40
 } else {
41 41
     $link = 'http://';
42 42
 }
43
-$link .= $_SERVER['SERVER_NAME'] . $_SERVER['SCRIPT_NAME'];
43
+$link .= $_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME'];
44 44
 $link = htmlspecialchars($link);
45 45
 
46 46
 const QRCODE_PIXELS_PER_SYMBOL = 12;
@@ -76,15 +76,15 @@  discard block
 block discarded – undo
76 76
         <div class='infobox' style='text-align:center;'>
77 77
             <h2><?php echo sprintf(_("%s download area QR code"), $uiElements->nomenclatureInst); ?></h2>
78 78
             <?php
79
-            $idpLevelUrl = ( isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on" ? 'https://' : 'http://') . $_SERVER['SERVER_NAME'] . dirname(dirname($_SERVER['SCRIPT_NAME'])) . "?idp=" . $my_inst->identifier;
79
+            $idpLevelUrl = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on" ? 'https://' : 'http://').$_SERVER['SERVER_NAME'].dirname(dirname($_SERVER['SCRIPT_NAME']))."?idp=".$my_inst->identifier;
80 80
             // never NULL, because $filename is FALSE; but make Scrutinizer happy
81 81
             $rawQr = QRcode::png($idpLevelUrl, FALSE, QR_ECLEVEL_Q, QRCODE_PIXELS_PER_SYMBOL);
82 82
             if ($rawQr === NULL) {
83 83
                 throw new Exception("Something went seriously wrong during QR code generation!");
84 84
             }
85
-            $uri = "data:image/png;base64," . base64_encode($uiElements->pngInjectConsortiumLogo($rawQr, QRCODE_PIXELS_PER_SYMBOL));
85
+            $uri = "data:image/png;base64,".base64_encode($uiElements->pngInjectConsortiumLogo($rawQr, QRCODE_PIXELS_PER_SYMBOL));
86 86
             $size = getimagesize($uri);
87
-            echo "<img width='" . ($size[0] / 4) . "' height='" . ($size[1] / 4) . "' src='$uri' alt='QR-code'/>";
87
+            echo "<img width='".($size[0] / 4)."' height='".($size[1] / 4)."' src='$uri' alt='QR-code'/>";
88 88
             ?>
89 89
             <br>
90 90
             <?php echo "<a href='$idpLevelUrl'>$idpLevelUrl</a>"; ?>
@@ -113,7 +113,7 @@  discard block
 block discarded – undo
113 113
                 </td>
114 114
                 <td>
115 115
                     <form action='edit_idp_result.php?inst_id=<?php echo $my_inst->identifier; ?>' method='post' accept-charset='UTF-8'>
116
-                        <button class='delete' type='submit' name='submitbutton' value='<?php echo web\lib\common\FormElements::BUTTON_DELETE; ?>' onclick="return confirm('<?php echo ( CONFIG_CONFASSISTANT['CONSORTIUM']['selfservice_registration'] === NULL ? sprintf(_("After deleting the %s, you can not recreate it yourself - you need a new invitation token from the %s administrator!"), $uiElements->nomenclatureInst, $uiElements->nomenclatureFed) . " " : "" ) . sprintf(_("Do you really want to delete your %s %s?"), $uiElements->nomenclatureInst, $my_inst->name); ?>')"><?php echo sprintf(_("Delete %s"), $uiElements->nomenclatureInst); ?></button>
116
+                        <button class='delete' type='submit' name='submitbutton' value='<?php echo web\lib\common\FormElements::BUTTON_DELETE; ?>' onclick="return confirm('<?php echo (CONFIG_CONFASSISTANT['CONSORTIUM']['selfservice_registration'] === NULL ? sprintf(_("After deleting the %s, you can not recreate it yourself - you need a new invitation token from the %s administrator!"), $uiElements->nomenclatureInst, $uiElements->nomenclatureFed)." " : "").sprintf(_("Do you really want to delete your %s %s?"), $uiElements->nomenclatureInst, $my_inst->name); ?>')"><?php echo sprintf(_("Delete %s"), $uiElements->nomenclatureInst); ?></button>
117 117
                     </form>
118 118
 
119 119
                 </td>
@@ -134,21 +134,21 @@  discard block
 block discarded – undo
134 134
         <?php
135 135
         if (CONFIG['FUNCTIONALITY_LOCATIONS']['DIAGNOSTICS'] !== NULL) {
136 136
             echo "<tr>
137
-                        <td>" . _("Check another realm's reachability") . "</td>
137
+                        <td>" . _("Check another realm's reachability")."</td>
138 138
                         <td><form method='post' action='../diag/action_realmcheck.php?inst_id=$my_inst->identifier' accept-charset='UTF-8'>
139 139
                               <input type='text' name='realm' id='realm'>
140 140
                               <input type='hidden' name='comefrom' id='comefrom' value='$link'/>
141
-                              <button type='submit'>" . _("Go!") . "</button>
141
+                              <button type='submit'>"._("Go!")."</button>
142 142
                             </form>
143 143
                         </td>
144 144
                     </tr>";
145 145
         }
146 146
         if (CONFIG_CONFASSISTANT['CONSORTIUM']['name'] == "eduroam") { // SW: APPROVED
147 147
             echo "<tr>
148
-                        <td>" . sprintf(_("Check %s server status"), $uiElements->nomenclatureFed) . "</td>
148
+                        <td>" . sprintf(_("Check %s server status"), $uiElements->nomenclatureFed)."</td>
149 149
                         <td>
150 150
                            <form action='https://monitor.eduroam.org/mon_direct.php' accept-charset='UTF-8'>
151
-                              <button type='submit'>" . _("Go!") . "</button>
151
+                              <button type='submit'>" . _("Go!")."</button>
152 152
                            </form>
153 153
                         </td>
154 154
                     </tr>";
@@ -159,10 +159,10 @@  discard block
 block discarded – undo
159 159
     <?php
160 160
     $profiles_for_this_idp = $my_inst->listProfiles();
161 161
     if (count($profiles_for_this_idp) == 0) { // no profiles yet.
162
-        echo "<h2>" . sprintf(_("There are not yet any profiles for your %s."), $uiElements->nomenclatureInst) . "</h2>";
162
+        echo "<h2>".sprintf(_("There are not yet any profiles for your %s."), $uiElements->nomenclatureInst)."</h2>";
163 163
     }
164 164
     if (count($profiles_for_this_idp) > 0) { // no profiles yet.
165
-        echo "<h2>" . sprintf(_("Profiles for this %s"), $uiElements->nomenclatureInst) . "</h2>";
165
+        echo "<h2>".sprintf(_("Profiles for this %s"), $uiElements->nomenclatureInst)."</h2>";
166 166
     }
167 167
 // if there is one profile and it is of type Silver Bullet, display a very
168 168
 // simple widget with just a "Manage" button
@@ -188,7 +188,7 @@  discard block
 block discarded – undo
188 188
                             echo _("Information needed!");
189 189
                             echo "<ul style='margin:1px'>";
190 190
                             foreach ($completeness as $missing_attrib) {
191
-                                echo "<li>" . $uiElements->displayName($missing_attrib) . "</li>";
191
+                                echo "<li>".$uiElements->displayName($missing_attrib)."</li>";
192 192
                             }
193 193
                             echo "</ul>";
194 194
                             echo "</div>";
@@ -202,7 +202,7 @@  discard block
 block discarded – undo
202 202
                         if ($readonly === FALSE) {
203 203
                             ?>
204 204
                             <form action='edit_silverbullet.php?inst_id=<?php echo $my_inst->identifier; ?>&amp;profile_id=<?php echo $profile_list->identifier; ?>' method='POST'>
205
-                                <button <?php echo ( is_array($completeness) ? "disabled" : "" ); ?> type='submit' name='sb_action' value='sb_edit'><?php echo _("Manage User Base"); ?></button>
205
+                                <button <?php echo (is_array($completeness) ? "disabled" : ""); ?> type='submit' name='sb_action' value='sb_edit'><?php echo _("Manage User Base"); ?></button>
206 206
                             </form>
207 207
                             <?php
208 208
                         }
@@ -234,21 +234,21 @@  discard block
 block discarded – undo
234 234
                         $has_overrides = TRUE;
235 235
                     }
236 236
                 }
237
-                $buffer_eaptypediv = "<div style='margin-bottom:40px; float:left;'>" . _("<strong>EAP Types</strong> (in order of preference):") . "<br/>";
237
+                $buffer_eaptypediv = "<div style='margin-bottom:40px; float:left;'>"._("<strong>EAP Types</strong> (in order of preference):")."<br/>";
238 238
                 $typelist = $profile_list->getEapMethodsinOrderOfPreference();
239 239
                 $allcomplete = TRUE;
240 240
                 foreach ($typelist as $eaptype) {
241 241
                     $buffer_eaptypediv .= $eaptype->getPrintableRep();
242 242
                     $completeness = $profile_list->isEapTypeDefinitionComplete($eaptype);
243 243
                     if ($completeness === true) {
244
-                        $buffer_eaptypediv .= " <div class='acceptable'>" . _("OK") . "</div>";
244
+                        $buffer_eaptypediv .= " <div class='acceptable'>"._("OK")."</div>";
245 245
                     } else {
246 246
                         $buffer_eaptypediv .= " <div class='notacceptable'>";
247 247
                         $buffer_eaptypediv .= _("Information needed!");
248 248
                         if (is_array($completeness)) {
249 249
                             $buffer_eaptypediv .= "<ul style='margin:1px'>";
250 250
                             foreach ($completeness as $missing_attrib) {
251
-                                $buffer_eaptypediv .= "<li>" . $uiElements->displayName($missing_attrib) . "</li>";
251
+                                $buffer_eaptypediv .= "<li>".$uiElements->displayName($missing_attrib)."</li>";
252 252
                             }
253 253
                             $buffer_eaptypediv .= "</ul>";
254 254
                         }
@@ -260,12 +260,12 @@  discard block
 block discarded – undo
260 260
                     foreach ($attribs as $attrib) {
261 261
                         if ($attrib['level'] == "Method" && !preg_match("/^internal:/", $attrib['name']) && !$justOnce) {
262 262
                             $justOnce = TRUE;
263
-                            $buffer_eaptypediv .= "<img src='../resources/images/icons/Letter-E-blue-icon.png' alt='" . _("Options on EAP Method/Device level are in effect.") . "'>";
263
+                            $buffer_eaptypediv .= "<img src='../resources/images/icons/Letter-E-blue-icon.png' alt='"._("Options on EAP Method/Device level are in effect.")."'>";
264 264
                         }
265 265
                     }
266 266
                     $buffer_eaptypediv .= "<br/>";
267 267
                 }
268
-                $buffer_headline = "<div style='padding-bottom:20px;'><h2 style='overflow:auto; display:inline; padding-bottom: 10px;'>" . sprintf(_("Profile: %s"), $profile_name) . "</h2>";
268
+                $buffer_headline = "<div style='padding-bottom:20px;'><h2 style='overflow:auto; display:inline; padding-bottom: 10px;'>".sprintf(_("Profile: %s"), $profile_name)."</h2>";
269 269
 
270 270
                 $buffer_headline .= "<span style='float:right;'>";
271 271
                 $readiness = $profile_list->readinessLevel();
@@ -297,18 +297,18 @@  discard block
 block discarded – undo
297 297
                     if (CONFIG['FUNCTIONALITY_LOCATIONS']['DIAGNOSTICS'] == "LOCAL") {
298 298
                         $diagUrl = "../diag/";
299 299
                     } else {
300
-                        $diagUrl = CONFIG['FUNCTIONALITY_LOCATIONS']['DIAGNOSTICS'] . "/diag/";
300
+                        $diagUrl = CONFIG['FUNCTIONALITY_LOCATIONS']['DIAGNOSTICS']."/diag/";
301 301
                     }
302
-                    echo "<form action='" . $diagUrl . "action_realmcheck.php?inst_id=$my_inst->identifier&amp;profile_id=$profile_list->identifier' method='post' accept-charset='UTF-8'>
302
+                    echo "<form action='".$diagUrl."action_realmcheck.php?inst_id=$my_inst->identifier&amp;profile_id=$profile_list->identifier' method='post' accept-charset='UTF-8'>
303 303
                               <input type='hidden' name='comefrom' id='comefrom-$profilecount' value='$link'/>
304
-                              <button type='submit' name='profile_action' value='check' " . ($has_realm ? "" : "disabled='disabled' title='" . _("The realm can only be checked if you configure the realm!") . "'") . ">
305
-                                  " . _("Check realm reachability") . "
304
+                              <button type='submit' name='profile_action' value='check' ".($has_realm ? "" : "disabled='disabled' title='"._("The realm can only be checked if you configure the realm!")."'").">
305
+                                  " . _("Check realm reachability")."
306 306
                               </button>
307 307
                           </form>";
308 308
                 }
309 309
                 echo "<form action='overview_installers.php?inst_id=$my_inst->identifier&amp;profile_id=$profile_list->identifier' method='post' accept-charset='UTF-8'>
310
-                              <button type='submit' name='profile_action' value='check' " . ($has_eaptypes ? "" : "disabled='disabled'  title='" . _("You have not fully configured any supported EAP types!") . "'") . ">
311
-                                  " . _("Installer Fine-Tuning and Download") . "
310
+                              <button type='submit' name='profile_action' value='check' ".($has_eaptypes ? "" : "disabled='disabled'  title='"._("You have not fully configured any supported EAP types!")."'").">
311
+                                  " . _("Installer Fine-Tuning and Download")."
312 312
                               </button>
313 313
                  </form>
314 314
                    </div>";
@@ -317,11 +317,11 @@  discard block
 block discarded – undo
317 317
                     echo "        <div class='buttongroupprofilebox' style='clear:both;'>
318 318
                           <form action='edit_profile.php?inst_id=$my_inst->identifier&amp;profile_id=$profile_list->identifier' method='post' accept-charset='UTF-8'>
319 319
                                <hr/>
320
-                               <button type='submit' name='profile_action' value='edit'>" . _("Edit") . "</button>
320
+                               <button type='submit' name='profile_action' value='edit'>"._("Edit")."</button>
321 321
                           </form>
322 322
                           <form action='edit_profile_result.php?inst_id=$my_inst->identifier&amp;profile_id=$profile_list->identifier' method='post' accept-charset='UTF-8'>
323
-                               <button class='delete' type='submit' name='submitbutton' value='" . web\lib\common\FormElements::BUTTON_DELETE . "' onclick=\"return confirm('" . sprintf(_("Do you really want to delete the profile %s?"), $profile_name) . "')\">
324
-                                   " . _("Delete") . "
323
+                               <button class='delete' type='submit' name='submitbutton' value='".web\lib\common\FormElements::BUTTON_DELETE."' onclick=\"return confirm('".sprintf(_("Do you really want to delete the profile %s?"), $profile_name)."')\">
324
+                                   " . _("Delete")."
325 325
                                </button>
326 326
                            </form>
327 327
                       </div>";
@@ -330,24 +330,24 @@  discard block
 block discarded – undo
330 330
 // dummy width to keep a little distance
331 331
                 echo "<div style='width:20px;'></div>";
332 332
                 if ($readiness == core\AbstractProfile::READINESS_LEVEL_SHOWTIME) {
333
-                    echo "<div style='display: table-cell; text-align:center;'><p><strong>" . _("User Download Link") . "</strong></p>";
334
-                    $displayurl = $idpLevelUrl . "&amp;profile=" . $profile_list->identifier;
335
-                    $QRurl = $idpLevelUrl . "&profile=" . $profile_list->identifier;
333
+                    echo "<div style='display: table-cell; text-align:center;'><p><strong>"._("User Download Link")."</strong></p>";
334
+                    $displayurl = $idpLevelUrl."&amp;profile=".$profile_list->identifier;
335
+                    $QRurl = $idpLevelUrl."&profile=".$profile_list->identifier;
336 336
                     echo "<a href='$displayurl' style='white-space: nowrap; text-align: center;'>";
337 337
                     $rawQr = QRcode::png($QRurl, FALSE, QR_ECLEVEL_Q, QRCODE_PIXELS_PER_SYMBOL);
338 338
                     if ($rawQr === NULL) {
339 339
                         throw new Exception("Something went seriously wrong during QR code generation!");
340 340
                     }
341
-                    $uri = "data:image/png;base64," . base64_encode($uiElements->pngInjectConsortiumLogo($rawQr, QRCODE_PIXELS_PER_SYMBOL));
341
+                    $uri = "data:image/png;base64,".base64_encode($uiElements->pngInjectConsortiumLogo($rawQr, QRCODE_PIXELS_PER_SYMBOL));
342 342
                     $size = getimagesize($uri);
343
-                    echo "<img width='" . ($size[0] / 4) . "' height='" . ($size[1] / 4) . "' src='$uri' alt='QR-code'/>";
343
+                    echo "<img width='".($size[0] / 4)."' height='".($size[1] / 4)."' src='$uri' alt='QR-code'/>";
344 344
 
345 345
                     //echo "<nobr>$displayurl</nobr></a>";
346 346
                     echo "<p>$displayurl</p></a>";
347 347
                     echo "</div>";
348 348
                     // dummy width to keep a little distance
349 349
                     echo "<div style='width:20px;'></div>";
350
-                    echo "<div style='display: table-cell; min-width:200px;'><p><strong>" . _("User Downloads") . "</strong></p><table>";
350
+                    echo "<div style='display: table-cell; min-width:200px;'><p><strong>"._("User Downloads")."</strong></p><table>";
351 351
                     $stats = $profile_list->getUserDownloadStats();
352 352
                     foreach ($stats as $dev => $count) {
353 353
                         echo "<tr><td><strong>$dev</strong></td><td>$count</td></tr>";
Please login to merge, or discard this patch.
web/admin/sanity_tests.php 1 patch
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -19,7 +19,7 @@  discard block
 block discarded – undo
19 19
  *          <base_url>/copyright.php after deploying the software
20 20
  */
21 21
 
22
-require_once dirname(dirname(dirname(__FILE__))) . "/config/_config.php";
22
+require_once dirname(dirname(dirname(__FILE__)))."/config/_config.php";
23 23
 
24 24
 $Tests = [
25 25
     'cat_base_url',
@@ -37,7 +37,7 @@  discard block
 block discarded – undo
37 37
     'mailer',
38 38
 ];
39 39
 
40
-if (CONFIG['FUNCTIONALITY_LOCATIONS']['CONFASSISTANT_SILVERBULLET'] == "LOCAL" || CONFIG['FUNCTIONALITY_LOCATIONS']['CONFASSISTANT_RADIUS'] == "LOCAL" ) {
40
+if (CONFIG['FUNCTIONALITY_LOCATIONS']['CONFASSISTANT_SILVERBULLET'] == "LOCAL" || CONFIG['FUNCTIONALITY_LOCATIONS']['CONFASSISTANT_RADIUS'] == "LOCAL") {
41 41
     $Tests[] = 'makensis';
42 42
     $Tests[] = 'makensis=>NSISmodules';
43 43
 }
@@ -71,10 +71,10 @@  discard block
 block discarded – undo
71 71
             $message = "Your configuration appears to be fine.";
72 72
             break;
73 73
         default:
74
-            throw new Exception("The result code level " . $test->test_result['global'] . " is not defined!");
74
+            throw new Exception("The result code level ".$test->test_result['global']." is not defined!");
75 75
     }
76 76
     $uiElements = new web\lib\admin\UIElements();
77
-    $out .= $uiElements->boxFlexible($test->test_result['global'], "<br><strong>Test Summary</strong><br>" . $message . "<br>See below for details<br><hr>");
77
+    $out .= $uiElements->boxFlexible($test->test_result['global'], "<br><strong>Test Summary</strong><br>".$message."<br>See below for details<br><hr>");
78 78
     foreach ($test->out as $testValue) {
79 79
         foreach ($testValue as $o) {
80 80
             $out .= $uiElements->boxFlexible($o['level'], $o['message']);
Please login to merge, or discard this patch.
web/lib/admin/OptionDisplay.php 1 patch
Spacing   +33 added lines, -33 removed lines patch added patch discarded remove patch
@@ -24,7 +24,7 @@  discard block
 block discarded – undo
24 24
 
25 25
 use Exception;
26 26
 
27
-require_once dirname(dirname(dirname(dirname(__FILE__)))) . "/config/_config.php";
27
+require_once dirname(dirname(dirname(dirname(__FILE__))))."/config/_config.php";
28 28
 
29 29
 /**
30 30
  * We need to display previously set options in various forms. This class covers
@@ -87,7 +87,7 @@  discard block
 block discarded – undo
87 87
      * @return string HTML code <table>
88 88
      */
89 89
     public function prefilledOptionTable(string $attributePrefix) {
90
-        $retval = "<table id='expandable_$attributePrefix" . "_options'>";
90
+        $retval = "<table id='expandable_$attributePrefix"."_options'>";
91 91
 
92 92
         $prepopulate = [];
93 93
         foreach ($this->listOfOptions as $existingAttribute) {
@@ -119,13 +119,13 @@  discard block
 block discarded – undo
119 119
         if (CONFIG['FUNCTIONALITY_LOCATIONS']['CONFASSISTANT_SILVERBULLET'] == "LOCAL" && CONFIG['FUNCTIONALITY_LOCATIONS']['CONFASSISTANT_RADIUS'] != "LOCAL") {
120 120
             $blackListOnPrefill .= "|fed:silverbullet";
121 121
         }
122
-        if (is_array($prepopulate) && ( count($prepopulate) > 1 || $class == "device-specific" || $class == "eap-specific")) { // editing... fill with values
122
+        if (is_array($prepopulate) && (count($prepopulate) > 1 || $class == "device-specific" || $class == "eap-specific")) { // editing... fill with values
123 123
             foreach ($prepopulate as $option) {
124 124
                 if (preg_match("/$class:/", $option['name']) && !preg_match("/($blackListOnPrefill)/", $option['name'])) {
125 125
                     $optiontypearray = $optioninfo->optionType($option['name']);
126 126
                     $loggerInstance = new \core\common\Logging();
127 127
                     $loggerInstance->debug(5, "About to execute optiontext with PREFILL!\n");
128
-                    $retval .= $this->optiontext([$option['name']], ($optiontypearray["type"] == "file" ? 'ROWID-' . $option['level'] . '-' . $option['row'] : $option['value']), $option['lang']);
128
+                    $retval .= $this->optiontext([$option['name']], ($optiontypearray["type"] == "file" ? 'ROWID-'.$option['level'].'-'.$option['row'] : $option['value']), $option['lang']);
129 129
                 }
130 130
             }
131 131
         } else { // not editing exist, this in new: add empty list
@@ -187,7 +187,7 @@  discard block
 block discarded – undo
187 187
         if (!isset($descriptions[$input])) {
188 188
             return "";
189 189
         }
190
-        return "<span class='tooltip' id='S$rowid-tooltip-$input' style='display:" . ($isVisible ? "block" : "none") . "' onclick='alert(\"" . $descriptions[$input] . "\")'><img src='../resources/images/icons/question-mark-icon.png" . "'></span>";
190
+        return "<span class='tooltip' id='S$rowid-tooltip-$input' style='display:".($isVisible ? "block" : "none")."' onclick='alert(\"".$descriptions[$input]."\")'><img src='../resources/images/icons/question-mark-icon.png"."'></span>";
191 191
     }
192 192
 
193 193
     /**
@@ -200,18 +200,18 @@  discard block
 block discarded – undo
200 200
      */
201 201
     private function selectElement($rowid, $list) {
202 202
         $jsmagic = "onchange='
203
-                               if (/#ML#/.test(document.getElementById(\"option-S" . $rowid . "-select\").value)) {
203
+                               if (/#ML#/.test(document.getElementById(\"option-S" . $rowid."-select\").value)) {
204 204
                                    document.getElementById(\"S$rowid-input-langselect\").style.display = \"block\";
205 205
                                    } else {
206 206
                                    document.getElementById(\"S$rowid-input-langselect\").style.display = \"none\";
207 207
                                    }";
208 208
         foreach (array_keys(OptionDisplay::HTML_DATATYPE_TEXTS) as $key) {
209
-            $jsmagic .= "if (/#" . $key . "#/.test(document.getElementById(\"option-S" . $rowid . "-select\").value)) {
210
-                                  document.getElementById(\"S$rowid-input-file\").style.display = \"" . ($key == \core\Options::TYPECODE_FILE ? "block" : "none") . "\";
211
-                                  document.getElementById(\"S$rowid-input-text\").style.display = \"" . ($key == \core\Options::TYPECODE_TEXT ? "block" : "none") . "\";
212
-                                  document.getElementById(\"S$rowid-input-string\").style.display = \"" . ($key == \core\Options::TYPECODE_STRING ? "block" : "none") . "\";
213
-                                  document.getElementById(\"S$rowid-input-boolean\").style.display = \"" . ($key == \core\Options::TYPECODE_BOOLEAN ? "block" : "none") . "\";
214
-                                  document.getElementById(\"S$rowid-input-integer\").style.display = \"" . ($key == \core\Options::TYPECODE_INTEGER ? "block" : "none") . "\";
209
+            $jsmagic .= "if (/#".$key."#/.test(document.getElementById(\"option-S".$rowid."-select\").value)) {
210
+                                  document.getElementById(\"S$rowid-input-file\").style.display = \"".($key == \core\Options::TYPECODE_FILE ? "block" : "none")."\";
211
+                                  document.getElementById(\"S$rowid-input-text\").style.display = \"".($key == \core\Options::TYPECODE_TEXT ? "block" : "none")."\";
212
+                                  document.getElementById(\"S$rowid-input-string\").style.display = \"".($key == \core\Options::TYPECODE_STRING ? "block" : "none")."\";
213
+                                  document.getElementById(\"S$rowid-input-boolean\").style.display = \"".($key == \core\Options::TYPECODE_BOOLEAN ? "block" : "none")."\";
214
+                                  document.getElementById(\"S$rowid-input-integer\").style.display = \"".($key == \core\Options::TYPECODE_INTEGER ? "block" : "none")."\";
215 215
                              }
216 216
                              ";
217 217
             // hide all tooltips (each is a <span>, and there are no other <span>s)
@@ -240,7 +240,7 @@  discard block
 block discarded – undo
240 240
         $activelisttype = [];
241 241
         foreach ($list as $value) {
242 242
             $listtype = $optioninfo->optionType($value);
243
-            $retval .= "<option id='option-S$rowid-v-$value' value='$value#" . $listtype["type"] . "#" . $listtype["flag"] . "#' ";
243
+            $retval .= "<option id='option-S$rowid-v-$value' value='$value#".$listtype["type"]."#".$listtype["flag"]."#' ";
244 244
             if ($iterator == $this->optionIterator) {
245 245
                 $retval .= "selected='selected'";
246 246
                 $activelisttype = $listtype;
@@ -248,7 +248,7 @@  discard block
 block discarded – undo
248 248
             } else {
249 249
                 $tooltips .= $this->tooltip($rowid, $value, FALSE);
250 250
             }
251
-            $retval .= ">" . $uiElements->displayName($value) . "</option>";
251
+            $retval .= ">".$uiElements->displayName($value)."</option>";
252 252
             $iterator++;
253 253
         }
254 254
         if (count($activelisttype) == 0) {
@@ -271,9 +271,9 @@  discard block
 block discarded – undo
271 271
      */
272 272
     private function selectLanguage($rowid, $makeVisible) {
273 273
         \core\common\Entity::intoThePotatoes();
274
-        $retval = "<select style='display:" . ($makeVisible ? "block" : "none") . "' name='value[S$rowid-lang]' id='S" . $rowid . "-input-langselect'>
275
-            <option value='' name='select_language' selected>" . _("select language") . "</option>
276
-            <option value='C' name='all_languages'>" . _("default/other languages") . "</option>";
274
+        $retval = "<select style='display:".($makeVisible ? "block" : "none")."' name='value[S$rowid-lang]' id='S".$rowid."-input-langselect'>
275
+            <option value='' name='select_language' selected>" . _("select language")."</option>
276
+            <option value='C' name='all_languages'>" . _("default/other languages")."</option>";
277 277
         foreach (CONFIG['LANGUAGES'] as $langindex => $possibleLang) {
278 278
             $thislang = $possibleLang['display'];
279 279
             $retval .= "<option value='$langindex' name='$langindex'>$thislang</option>";
@@ -301,7 +301,7 @@  discard block
 block discarded – undo
301 301
     private function inputFields($rowid, $activetype) {
302 302
         $retval = "";
303 303
         foreach (OptionDisplay::HTML_DATATYPE_TEXTS as $key => $type) {
304
-            $retval .= "<" . $type['html'] . " style='display:" . ($activetype['type'] == $key ? "block" : "none") . "' name='value[S$rowid-$key]' id='S" . $rowid . "-input-" . $key . "'" . $type['tail'] . ">";
304
+            $retval .= "<".$type['html']." style='display:".($activetype['type'] == $key ? "block" : "none")."' name='value[S$rowid-$key]' id='S".$rowid."-input-".$key."'".$type['tail'].">";
305 305
         }
306 306
         return $retval;
307 307
     }
@@ -316,11 +316,11 @@  discard block
 block discarded – undo
316 316
     private function noPrefillText(int $rowid, array $list) {
317 317
         // first column: the <select> element with the names of options and their field-toggling JS magic
318 318
         $selectorInfo = $this->selectElement($rowid, $list);
319
-        $retval = "<td>" . $selectorInfo["TEXT"] . "</td>";
319
+        $retval = "<td>".$selectorInfo["TEXT"]."</td>";
320 320
         // second column: the <select> element for language selection - only visible if the active option is multi-lang
321
-        $retval .= "<td>" . $this->selectLanguage($rowid, $selectorInfo['ACTIVE']['flag'] == "ML") . "</td>";
321
+        $retval .= "<td>".$this->selectLanguage($rowid, $selectorInfo['ACTIVE']['flag'] == "ML")."</td>";
322 322
         // third column: the actual input fields; the data type of the active option is visible, all others hidden
323
-        $retval .= "<td>" . $this->inputFields($rowid, $selectorInfo['ACTIVE']) . "</td>";
323
+        $retval .= "<td>".$this->inputFields($rowid, $selectorInfo['ACTIVE'])."</td>";
324 324
         return $retval;
325 325
     }
326 326
 
@@ -343,20 +343,20 @@  discard block
 block discarded – undo
343 343
         $retval .= "<td>";
344 344
         $uiElements = new UIElements();
345 345
         $listtype = $optioninfo->optionType($optionName);
346
-        $retval .= "<span style='display:flex;'>" . $uiElements->displayName($optionName);
347
-        $retval .= $this->tooltip($rowid, $optionName, TRUE) . "</span>";
348
-        $retval .= "<input type='hidden' id='option-S$rowid-select' name='option[S$rowid]' value='$optionName#" . $listtype["type"] . "#" . $listtype["flag"] . "#' ></td>";
346
+        $retval .= "<span style='display:flex;'>".$uiElements->displayName($optionName);
347
+        $retval .= $this->tooltip($rowid, $optionName, TRUE)."</span>";
348
+        $retval .= "<input type='hidden' id='option-S$rowid-select' name='option[S$rowid]' value='$optionName#".$listtype["type"]."#".$listtype["flag"]."#' ></td>";
349 349
 
350 350
         // language tag if any
351 351
         $retval .= "<td>";
352 352
         if ($listtype["flag"] == "ML") {
353 353
 
354
-            $language = "(" . strtoupper($optionLang) . ")";
354
+            $language = "(".strtoupper($optionLang).")";
355 355
             if ($optionLang == 'C') {
356 356
                 $language = _("(default/other languages)");
357 357
             }
358 358
             $retval .= $language;
359
-            $retval .= "<input type='hidden' name='value[S$rowid-lang]' id='S" . $rowid . "-input-langselect' value='" . $optionLang . "' style='display:block'>";
359
+            $retval .= "<input type='hidden' name='value[S$rowid-lang]' id='S".$rowid."-input-langselect' value='".$optionLang."' style='display:block'>";
360 360
         }
361 361
         $retval .= "</td>";
362 362
 // attribute content
@@ -366,12 +366,12 @@  discard block
 block discarded – undo
366 366
             case \core\Options::TYPECODE_COORDINATES:
367 367
                 $this->allLocationCount = $this->allLocationCount + 1;
368 368
                 // display of the locations varies by map provider
369
-                $classname = "\web\lib\admin\Map" . CONFIG_CONFASSISTANT['MAPPROVIDER']['PROVIDER'];
369
+                $classname = "\web\lib\admin\Map".CONFIG_CONFASSISTANT['MAPPROVIDER']['PROVIDER'];
370 370
                 $link = $classname::optionListDisplayCode($optionValue, $this->allLocationCount);
371
-                $retval .= "<input readonly style='display:none' type='text' name='value[S$rowid-" . \core\Options::TYPECODE_TEXT . "]' id='S$rowid-input-text' value='$optionValue'>$link";
371
+                $retval .= "<input readonly style='display:none' type='text' name='value[S$rowid-".\core\Options::TYPECODE_TEXT."]' id='S$rowid-input-text' value='$optionValue'>$link";
372 372
                 break;
373 373
             case \core\Options::TYPECODE_FILE:
374
-                $retval .= "<input readonly type='text' name='value[S$rowid-" . \core\Options::TYPECODE_STRING . "]' id='S" . $rowid . "-input-string' style='display:none' value='" . urlencode($optionValue) . "'>";
374
+                $retval .= "<input readonly type='text' name='value[S$rowid-".\core\Options::TYPECODE_STRING."]' id='S".$rowid."-input-string' style='display:none' value='".urlencode($optionValue)."'>";
375 375
                 $uiElements = new UIElements();
376 376
                 switch ($optionName) {
377 377
                     case "eap:ca_file":
@@ -401,7 +401,7 @@  discard block
 block discarded – undo
401 401
                 if ($listtype['type'] == \core\Options::TYPECODE_BOOLEAN) {// only modify in this one case
402 402
                     $displayedVariant = ($optionValue == "on" ? _("on") : _("off"));
403 403
                 }
404
-                $retval .= "<strong>$displayedVariant</strong><input type='hidden' name='value[S$rowid-" . $listtype['type'] . "]' id='S" . $rowid . "-input-" . $listtype["type"] . "' value=\"" . htmlspecialchars($optionValue) . "\" style='display:block'>";
404
+                $retval .= "<strong>$displayedVariant</strong><input type='hidden' name='value[S$rowid-".$listtype['type']."]' id='S".$rowid."-input-".$listtype["type"]."' value=\"".htmlspecialchars($optionValue)."\" style='display:block'>";
405 405
                 break;
406 406
             default:
407 407
                 // this should never happen!
@@ -445,10 +445,10 @@  discard block
 block discarded – undo
445 445
        <td>
446 446
           <button type='button' class='delete' onclick='";
447 447
         if ($prefillValue !== NULL && $item == "general:geo_coordinates") {
448
-            $funcname = "Map" . CONFIG_CONFASSISTANT['MAPPROVIDER']['PROVIDER'] . 'DeleteCoord';
449
-            $retval .= 'if (typeof ' . $funcname . ' === "function") { ' . $funcname . '(' . $this->allLocationCount . '); } ';
448
+            $funcname = "Map".CONFIG_CONFASSISTANT['MAPPROVIDER']['PROVIDER'].'DeleteCoord';
449
+            $retval .= 'if (typeof '.$funcname.' === "function") { '.$funcname.'('.$this->allLocationCount.'); } ';
450 450
         }
451
-        $retval .= 'deleteOption("option-S' . $rowid . '")';
451
+        $retval .= 'deleteOption("option-S'.$rowid.'")';
452 452
         $retval .= "'>-</button>
453 453
        </td>
454 454
     </tr>";
Please login to merge, or discard this patch.
web/admin/API.php 3 patches
Spacing   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -20,7 +20,7 @@  discard block
 block discarded – undo
20 20
  *          <base_url>/copyright.php after deploying the software
21 21
  */
22 22
 
23
-require_once dirname(dirname(dirname(__FILE__))) . "/config/_config.php";
23
+require_once dirname(dirname(dirname(__FILE__)))."/config/_config.php";
24 24
 
25 25
 /**
26 26
  * Checks if the profile is a valid SB profile belonging to the federation
@@ -69,7 +69,7 @@  discard block
 block discarded – undo
69 69
 $inputRaw = file_get_contents('php://input');
70 70
 $inputDecoded = json_decode($inputRaw, TRUE);
71 71
 if (!is_array($inputDecoded)) {
72
-    $adminApi->returnError(web\lib\admin\API::ERROR_MALFORMED_REQUEST, "Unable to decode JSON POST data." . json_last_error_msg() . $inputRaw);
72
+    $adminApi->returnError(web\lib\admin\API::ERROR_MALFORMED_REQUEST, "Unable to decode JSON POST data.".json_last_error_msg().$inputRaw);
73 73
     exit(1);
74 74
 }
75 75
 
@@ -158,7 +158,7 @@  discard block
 block discarded – undo
158 158
             throw new Exception("A required parameter is missing, and this wasn't caught earlier?!");
159 159
         }
160 160
         $newtokens = $mgmt->createTokens(true, [$admin], $idp);
161
-        $URL = "https://" . $_SERVER['SERVER_NAME'] . dirname($_SERVER['SCRIPT_NAME']) . "/action_enrollment.php?token=" . array_keys($newtokens)[0];
161
+        $URL = "https://".$_SERVER['SERVER_NAME'].dirname($_SERVER['SCRIPT_NAME'])."/action_enrollment.php?token=".array_keys($newtokens)[0];
162 162
         $success = ["TOKEN URL" => $URL, "TOKEN" => array_keys($newtokens)[0]];
163 163
         // done with the essentials - display in response. But if we also have an email address, send it there
164 164
         $email = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_TARGETMAIL);
@@ -195,7 +195,7 @@  discard block
 block discarded – undo
195 195
         if ($found) {
196 196
             $adminApi->returnSuccess([]);
197 197
         }
198
-        $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "The admin with ID $toBeDeleted is not associated to IdP " . $idp->identifier);
198
+        $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "The admin with ID $toBeDeleted is not associated to IdP ".$idp->identifier);
199 199
         break;
200 200
     case web\lib\admin\API::ACTION_STATISTICS_FED:
201 201
         $adminApi->returnSuccess($fed->downloadStats("array"));
@@ -242,10 +242,10 @@  discard block
 block discarded – undo
242 242
                 $outer = "";
243 243
                 $profile->setAnonymousIDSupport(FALSE);
244 244
             } else {
245
-                $outer = $outer . "@";
245
+                $outer = $outer."@";
246 246
                 $profile->setAnonymousIDSupport(TRUE);
247 247
             }
248
-            $profile->setRealm($outer . $realm);
248
+            $profile->setRealm($outer.$realm);
249 249
         }
250 250
         /* const AUXATTRIB_PROFILE_TESTUSER = 'ATTRIB-PROFILE-TESTUSER'; */
251 251
         $testuser = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_PROFILE_TESTUSER);
@@ -473,7 +473,7 @@  discard block
 block discarded – undo
473 473
         // extract relevant subset of information from cert objects
474 474
         $certDetails = [];
475 475
         foreach ($certs as $cert) {
476
-            $certDetails[$cert->ca_type . ":" . $cert->serial] = ["ISSUED" => $cert->issued, "EXPIRY" => $cert->expiry, "STATUS" => $cert->status, "DEVICE" => $cert->device, "CN" => $cert->username, "ANNOTATION" => $cert->annotation];
476
+            $certDetails[$cert->ca_type.":".$cert->serial] = ["ISSUED" => $cert->issued, "EXPIRY" => $cert->expiry, "STATUS" => $cert->status, "DEVICE" => $cert->device, "CN" => $cert->username, "ANNOTATION" => $cert->annotation];
477 477
         }
478 478
         $adminApi->returnSuccess($certDetails);
479 479
         break;
Please login to merge, or discard this patch.
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -417,7 +417,7 @@
 block discarded – undo
417 417
         $userId = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_USERID);
418 418
         $userName = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_USERNAME);
419 419
         $certSerial = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_CERTSERIAL);
420
-		$certCN = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_CERTCN);
420
+        $certCN = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_CERTCN);
421 421
         if ($userId === FALSE && $userName === FALSE && $certSerial === FALSE && $certCN === FALSE) {
422 422
             // we need at least one of those
423 423
             $adminApi->returnError(\web\lib\admin\API::ERROR_MISSING_PARAMETER, "At least one of User ID, Username, certificate serial, or certificate CN is required.");
Please login to merge, or discard this patch.
Switch Indentation   +370 added lines, -370 removed lines patch added patch discarded remove patch
@@ -115,213 +115,213 @@  discard block
 block discarded – undo
115 115
 }
116 116
 
117 117
 switch ($inputDecoded['ACTION']) {
118
-    case web\lib\admin\API::ACTION_NEWINST:
119
-        // create the inst, no admin, no attributes
120
-        $idp = new \core\IdP($fed->newIdP("PENDING", "API"));
121
-        // now add all submitted attributes
122
-        $inputs = $adminApi->uglify($scrubbedParameters);
123
-        $optionParser->processSubmittedFields($idp, $inputs["POST"], $inputs["FILES"]);
124
-        $adminApi->returnSuccess([web\lib\admin\API::AUXATTRIB_CAT_INST_ID => $idp->identifier]);
125
-        break;
126
-    case web\lib\admin\API::ACTION_DELINST:
127
-        try {
128
-            $idp = $validator->IdP($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_INST_ID));
129
-        } catch (Exception $e) {
130
-            $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "IdP identifier does not exist!");
131
-            exit(1);
132
-        }
133
-        $idp->destroy();
134
-        $adminApi->returnSuccess([]);
135
-        break;
136
-    case web\lib\admin\API::ACTION_ADMIN_LIST:
137
-        try {
138
-            $idp = $validator->IdP($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_INST_ID));
139
-        } catch (Exception $e) {
140
-            $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "IdP identifier does not exist!");
141
-            exit(1);
142
-        }
143
-        $adminApi->returnSuccess($idp->listOwners());
144
-        break;
145
-    case web\lib\admin\API::ACTION_ADMIN_ADD:
146
-        // IdP in question
147
-        try {
148
-            $idp = $validator->IdP($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_INST_ID));
149
-        } catch (Exception $e) {
150
-            $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "IdP identifier does not exist!");
151
-            exit(1);
152
-        }
153
-        // here is the token
154
-        $mgmt = new core\UserManagement();
155
-        // we know we have an admin ID but scrutinizer wants this checked more explicitly
156
-        $admin = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_ADMINID);
157
-        if ($admin === FALSE) {
158
-            throw new Exception("A required parameter is missing, and this wasn't caught earlier?!");
159
-        }
160
-        $newtokens = $mgmt->createTokens(true, [$admin], $idp);
161
-        $URL = "https://" . $_SERVER['SERVER_NAME'] . dirname($_SERVER['SCRIPT_NAME']) . "/action_enrollment.php?token=" . array_keys($newtokens)[0];
162
-        $success = ["TOKEN URL" => $URL, "TOKEN" => array_keys($newtokens)[0]];
163
-        // done with the essentials - display in response. But if we also have an email address, send it there
164
-        $email = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_TARGETMAIL);
165
-        if ($email !== FALSE) {
166
-            $sent = \core\common\OutsideComm::adminInvitationMail($email, "EXISTING-FED", array_keys($newtokens)[0], $idp->name, $fed);
167
-            $success["EMAIL SENT"] = $sent["SENT"];
168
-            if ($sent["SENT"] === TRUE) {
169
-                $success["EMAIL TRANSPORT SECURE"] = $sent["TRANSPORT"];
170
-            }
171
-        }
172
-        $adminApi->returnSuccess($success);
173
-        break;
174
-    case web\lib\admin\API::ACTION_ADMIN_DEL:
175
-        // IdP in question
176
-        try {
177
-            $idp = $validator->IdP($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_INST_ID));
178
-        } catch (Exception $e) {
179
-            $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "IdP identifier does not exist!");
180
-            exit(1);
181
-        }
182
-        $currentAdmins = $idp->listOwners();
183
-        $toBeDeleted = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_ADMINID);
184
-        if ($toBeDeleted === FALSE) {
185
-            throw new Exception("A required parameter is missing, and this wasn't caught earlier?!");
186
-        }
187
-        $found = FALSE;
188
-        foreach ($currentAdmins as $oneAdmin) {
189
-            if ($oneAdmin['MAIL'] == $toBeDeleted) {
190
-                $found = TRUE;
191
-                $mgmt = new core\UserManagement();
192
-                $mgmt->removeAdminFromIdP($idp, $oneAdmin['ID']);
118
+        case web\lib\admin\API::ACTION_NEWINST:
119
+            // create the inst, no admin, no attributes
120
+            $idp = new \core\IdP($fed->newIdP("PENDING", "API"));
121
+            // now add all submitted attributes
122
+            $inputs = $adminApi->uglify($scrubbedParameters);
123
+            $optionParser->processSubmittedFields($idp, $inputs["POST"], $inputs["FILES"]);
124
+            $adminApi->returnSuccess([web\lib\admin\API::AUXATTRIB_CAT_INST_ID => $idp->identifier]);
125
+            break;
126
+        case web\lib\admin\API::ACTION_DELINST:
127
+            try {
128
+                $idp = $validator->IdP($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_INST_ID));
129
+            } catch (Exception $e) {
130
+                $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "IdP identifier does not exist!");
131
+                exit(1);
193 132
             }
194
-        }
195
-        if ($found) {
133
+            $idp->destroy();
196 134
             $adminApi->returnSuccess([]);
197
-        }
198
-        $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "The admin with ID $toBeDeleted is not associated to IdP " . $idp->identifier);
199
-        break;
200
-    case web\lib\admin\API::ACTION_STATISTICS_FED:
201
-        $adminApi->returnSuccess($fed->downloadStats("array"));
202
-        break;
203
-    case \web\lib\admin\API::ACTION_FEDERATION_LISTIDP:
204
-        $retArray = [];
205
-        $idpIdentifier = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_INST_ID);
206
-        if ($idpIdentifier === FALSE) {
207
-            $allIdPs = $fed->listIdentityProviders(0);
208
-            foreach ($allIdPs as $instanceId => $oneIdP) {
209
-                $theIdP = $oneIdP["instance"];
210
-                $retArray[$instanceId] = $theIdP->getAttributes();
211
-            }
212
-        } else {
135
+            break;
136
+        case web\lib\admin\API::ACTION_ADMIN_LIST:
213 137
             try {
214
-                $thisIdP = $validator->IdP($idpIdentifier);
138
+                $idp = $validator->IdP($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_INST_ID));
215 139
             } catch (Exception $e) {
216 140
                 $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "IdP identifier does not exist!");
217 141
                 exit(1);
218 142
             }
219
-            $retArray[$idpIdentifier] = $thisIdP->getAttributes();
220
-        }
221
-        foreach ($retArray as $instNumber => $oneInstData) {
222
-            foreach ($oneInstData as $attribNumber => $oneAttrib) {
223
-                if ($oneAttrib['name'] == "general:logo_file") {
224
-                    // JSON doesn't cope well with raw binary data, so b64 it
225
-                    $retArray[$instNumber][$attribNumber]['value'] = base64_encode($oneAttrib['value']);
143
+            $adminApi->returnSuccess($idp->listOwners());
144
+            break;
145
+        case web\lib\admin\API::ACTION_ADMIN_ADD:
146
+            // IdP in question
147
+            try {
148
+                $idp = $validator->IdP($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_INST_ID));
149
+            } catch (Exception $e) {
150
+                $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "IdP identifier does not exist!");
151
+                exit(1);
152
+            }
153
+            // here is the token
154
+            $mgmt = new core\UserManagement();
155
+            // we know we have an admin ID but scrutinizer wants this checked more explicitly
156
+            $admin = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_ADMINID);
157
+            if ($admin === FALSE) {
158
+                throw new Exception("A required parameter is missing, and this wasn't caught earlier?!");
159
+            }
160
+            $newtokens = $mgmt->createTokens(true, [$admin], $idp);
161
+            $URL = "https://" . $_SERVER['SERVER_NAME'] . dirname($_SERVER['SCRIPT_NAME']) . "/action_enrollment.php?token=" . array_keys($newtokens)[0];
162
+            $success = ["TOKEN URL" => $URL, "TOKEN" => array_keys($newtokens)[0]];
163
+            // done with the essentials - display in response. But if we also have an email address, send it there
164
+            $email = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_TARGETMAIL);
165
+            if ($email !== FALSE) {
166
+                $sent = \core\common\OutsideComm::adminInvitationMail($email, "EXISTING-FED", array_keys($newtokens)[0], $idp->name, $fed);
167
+                $success["EMAIL SENT"] = $sent["SENT"];
168
+                if ($sent["SENT"] === TRUE) {
169
+                    $success["EMAIL TRANSPORT SECURE"] = $sent["TRANSPORT"];
226 170
                 }
227 171
             }
228
-        }
229
-        $adminApi->returnSuccess($retArray);
230
-        break;
231
-    case \web\lib\admin\API::ACTION_NEWPROF_RADIUS:
232
-    // fall-through intended: both get mostly identical treatment
233
-    case web\lib\admin\API::ACTION_NEWPROF_SB:
234
-        try {
235
-            $idp = $validator->IdP($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_INST_ID));
236
-        } catch (Exception $e) {
237
-            $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "IdP identifier does not exist!");
238
-            exit(1);
239
-        }
240
-        if ($inputDecoded['ACTION'] == web\lib\admin\API::ACTION_NEWPROF_RADIUS) {
241
-            $type = "RADIUS";
242
-        } else {
243
-            $type = "SILVERBULLET";
244
-        }
245
-        $profile = $idp->newProfile($type);
246
-        if ($profile === NULL) {
247
-            $adminApi->returnError(\web\lib\admin\API::ERROR_INTERNAL_ERROR, "Unable to create a new Profile, for no apparent reason. Please contact support.");
248
-            exit(1);
249
-        }
250
-        $inputs = $adminApi->uglify($scrubbedParameters);
251
-        $optionParser->processSubmittedFields($profile, $inputs["POST"], $inputs["FILES"]);
252
-        if ($inputDecoded['ACTION'] == web\lib\admin\API::ACTION_NEWPROF_SB) {
253
-            // auto-accept ToU?
254
-            if ($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_TOU) !== FALSE) {
255
-                $profile->addAttribute("hiddenprofile:tou_accepted", NULL, 1);
256
-            }
257
-            // we're done at this point
258
-            $adminApi->returnSuccess([\web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID => $profile->identifier]);
259
-            continue;
260
-        }
261
-        if (!$profile instanceof core\ProfileRADIUS) {
262
-            throw new Exception("Can't be. This is only here to convince Scrutinizer that we're really talking RADIUS.");
263
-        }
264
-        /* const AUXATTRIB_PROFILE_REALM = 'ATTRIB-PROFILE-REALM';
265
-          const AUXATTRIB_PROFILE_OUTERVALUE = 'ATTRIB-PROFILE-OUTERVALUE'; */
266
-        $realm = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_PROFILE_REALM);
267
-        $outer = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_PROFILE_OUTERVALUE);
268
-        if ($realm !== FALSE) {
269
-            if ($outer === FALSE) {
270
-                $outer = "";
271
-                $profile->setAnonymousIDSupport(FALSE);
172
+            $adminApi->returnSuccess($success);
173
+            break;
174
+        case web\lib\admin\API::ACTION_ADMIN_DEL:
175
+            // IdP in question
176
+            try {
177
+                $idp = $validator->IdP($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_INST_ID));
178
+            } catch (Exception $e) {
179
+                $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "IdP identifier does not exist!");
180
+                exit(1);
181
+            }
182
+            $currentAdmins = $idp->listOwners();
183
+            $toBeDeleted = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_ADMINID);
184
+            if ($toBeDeleted === FALSE) {
185
+                throw new Exception("A required parameter is missing, and this wasn't caught earlier?!");
186
+            }
187
+            $found = FALSE;
188
+            foreach ($currentAdmins as $oneAdmin) {
189
+                if ($oneAdmin['MAIL'] == $toBeDeleted) {
190
+                    $found = TRUE;
191
+                    $mgmt = new core\UserManagement();
192
+                    $mgmt->removeAdminFromIdP($idp, $oneAdmin['ID']);
193
+                }
194
+            }
195
+            if ($found) {
196
+                $adminApi->returnSuccess([]);
197
+            }
198
+            $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "The admin with ID $toBeDeleted is not associated to IdP " . $idp->identifier);
199
+            break;
200
+        case web\lib\admin\API::ACTION_STATISTICS_FED:
201
+            $adminApi->returnSuccess($fed->downloadStats("array"));
202
+            break;
203
+        case \web\lib\admin\API::ACTION_FEDERATION_LISTIDP:
204
+            $retArray = [];
205
+            $idpIdentifier = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_INST_ID);
206
+            if ($idpIdentifier === FALSE) {
207
+                $allIdPs = $fed->listIdentityProviders(0);
208
+                foreach ($allIdPs as $instanceId => $oneIdP) {
209
+                    $theIdP = $oneIdP["instance"];
210
+                    $retArray[$instanceId] = $theIdP->getAttributes();
211
+                }
272 212
             } else {
273
-                $outer = $outer . "@";
274
-                $profile->setAnonymousIDSupport(TRUE);
213
+                try {
214
+                    $thisIdP = $validator->IdP($idpIdentifier);
215
+                } catch (Exception $e) {
216
+                    $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "IdP identifier does not exist!");
217
+                    exit(1);
218
+                }
219
+                $retArray[$idpIdentifier] = $thisIdP->getAttributes();
275 220
             }
276
-            $profile->setRealm($outer . $realm);
277
-        }
278
-        /* const AUXATTRIB_PROFILE_TESTUSER = 'ATTRIB-PROFILE-TESTUSER'; */
279
-        $testuser = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_PROFILE_TESTUSER);
280
-        if ($testuser !== FALSE) {
281
-            $profile->setRealmCheckUser(TRUE, $testuser);
282
-        }
283
-        /* const AUXATTRIB_PROFILE_INPUT_HINT = 'ATTRIB-PROFILE-HINTREALM';
221
+            foreach ($retArray as $instNumber => $oneInstData) {
222
+                foreach ($oneInstData as $attribNumber => $oneAttrib) {
223
+                    if ($oneAttrib['name'] == "general:logo_file") {
224
+                        // JSON doesn't cope well with raw binary data, so b64 it
225
+                        $retArray[$instNumber][$attribNumber]['value'] = base64_encode($oneAttrib['value']);
226
+                    }
227
+                }
228
+            }
229
+            $adminApi->returnSuccess($retArray);
230
+            break;
231
+        case \web\lib\admin\API::ACTION_NEWPROF_RADIUS:
232
+        // fall-through intended: both get mostly identical treatment
233
+        case web\lib\admin\API::ACTION_NEWPROF_SB:
234
+            try {
235
+                $idp = $validator->IdP($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_INST_ID));
236
+            } catch (Exception $e) {
237
+                $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "IdP identifier does not exist!");
238
+                exit(1);
239
+            }
240
+            if ($inputDecoded['ACTION'] == web\lib\admin\API::ACTION_NEWPROF_RADIUS) {
241
+                $type = "RADIUS";
242
+            } else {
243
+                $type = "SILVERBULLET";
244
+            }
245
+            $profile = $idp->newProfile($type);
246
+            if ($profile === NULL) {
247
+                $adminApi->returnError(\web\lib\admin\API::ERROR_INTERNAL_ERROR, "Unable to create a new Profile, for no apparent reason. Please contact support.");
248
+                exit(1);
249
+            }
250
+            $inputs = $adminApi->uglify($scrubbedParameters);
251
+            $optionParser->processSubmittedFields($profile, $inputs["POST"], $inputs["FILES"]);
252
+            if ($inputDecoded['ACTION'] == web\lib\admin\API::ACTION_NEWPROF_SB) {
253
+                // auto-accept ToU?
254
+                if ($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_TOU) !== FALSE) {
255
+                    $profile->addAttribute("hiddenprofile:tou_accepted", NULL, 1);
256
+                }
257
+                // we're done at this point
258
+                $adminApi->returnSuccess([\web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID => $profile->identifier]);
259
+                continue;
260
+            }
261
+            if (!$profile instanceof core\ProfileRADIUS) {
262
+                throw new Exception("Can't be. This is only here to convince Scrutinizer that we're really talking RADIUS.");
263
+            }
264
+            /* const AUXATTRIB_PROFILE_REALM = 'ATTRIB-PROFILE-REALM';
265
+          const AUXATTRIB_PROFILE_OUTERVALUE = 'ATTRIB-PROFILE-OUTERVALUE'; */
266
+            $realm = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_PROFILE_REALM);
267
+            $outer = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_PROFILE_OUTERVALUE);
268
+            if ($realm !== FALSE) {
269
+                if ($outer === FALSE) {
270
+                    $outer = "";
271
+                    $profile->setAnonymousIDSupport(FALSE);
272
+                } else {
273
+                    $outer = $outer . "@";
274
+                    $profile->setAnonymousIDSupport(TRUE);
275
+                }
276
+                $profile->setRealm($outer . $realm);
277
+            }
278
+            /* const AUXATTRIB_PROFILE_TESTUSER = 'ATTRIB-PROFILE-TESTUSER'; */
279
+            $testuser = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_PROFILE_TESTUSER);
280
+            if ($testuser !== FALSE) {
281
+                $profile->setRealmCheckUser(TRUE, $testuser);
282
+            }
283
+            /* const AUXATTRIB_PROFILE_INPUT_HINT = 'ATTRIB-PROFILE-HINTREALM';
284 284
           const AUXATTRIB_PROFILE_INPUT_VERIFY = 'ATTRIB-PROFILE-VERIFYREALM'; */
285
-        $hint = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_PROFILE_INPUT_HINT);
286
-        $enforce = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_PROFILE_INPUT_VERIFY);
287
-        if ($enforce !== FALSE) {
288
-            $profile->setInputVerificationPreference($enforce, $hint);
289
-        }
290
-        /* const AUXATTRIB_PROFILE_EAPTYPE */
291
-        $iterator = 1;
292
-        foreach ($scrubbedParameters as $oneParam) {
293
-            if ($oneParam['NAME'] == web\lib\admin\API::AUXATTRIB_PROFILE_EAPTYPE && is_int($oneParam["VALUE"])) {
294
-                $type = new \core\common\EAP($oneParam["VALUE"]);
295
-                $profile->addSupportedEapMethod($type, $iterator);
296
-                $iterator = $iterator + 1;
285
+            $hint = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_PROFILE_INPUT_HINT);
286
+            $enforce = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_PROFILE_INPUT_VERIFY);
287
+            if ($enforce !== FALSE) {
288
+                $profile->setInputVerificationPreference($enforce, $hint);
297 289
             }
298
-        }
299
-        // reinstantiate $profile freshly from DB - it was updated in the process
300
-        $profileFresh = new core\ProfileRADIUS($profile->identifier);
301
-        $profileFresh->prepShowtime();
302
-        $adminApi->returnSuccess([\web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID => $profileFresh->identifier]);
303
-        break;
304
-    case web\lib\admin\API::ACTION_ENDUSER_NEW:
305
-    // fall-through intentional, those two actions are doing nearly identical things
306
-    case web\lib\admin\API::ACTION_ENDUSER_CHANGEEXPIRY:
307
-        $prof_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID);
308
-        if ($prof_id === FALSE) {
309
-            exit(1);
310
-        }
311
-        $evaluation = commonSbProfileChecks($fed, $prof_id);
312
-        if ($evaluation === FALSE) {
313
-            exit(1);
314
-        }
315
-        list($idp, $profile) = $evaluation;
316
-        $user = $validator->string($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_USERNAME));
317
-        $expiryRaw = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_EXPIRY);
318
-        if ($expiryRaw === FALSE) {
319
-            $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "The expiry date wasn't found in the request.");
290
+            /* const AUXATTRIB_PROFILE_EAPTYPE */
291
+            $iterator = 1;
292
+            foreach ($scrubbedParameters as $oneParam) {
293
+                if ($oneParam['NAME'] == web\lib\admin\API::AUXATTRIB_PROFILE_EAPTYPE && is_int($oneParam["VALUE"])) {
294
+                    $type = new \core\common\EAP($oneParam["VALUE"]);
295
+                    $profile->addSupportedEapMethod($type, $iterator);
296
+                    $iterator = $iterator + 1;
297
+                }
298
+            }
299
+            // reinstantiate $profile freshly from DB - it was updated in the process
300
+            $profileFresh = new core\ProfileRADIUS($profile->identifier);
301
+            $profileFresh->prepShowtime();
302
+            $adminApi->returnSuccess([\web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID => $profileFresh->identifier]);
320 303
             break;
321
-        }
322
-        $expiry = new DateTime($expiryRaw);
323
-        try {
324
-            switch ($inputDecoded['ACTION']) {
304
+        case web\lib\admin\API::ACTION_ENDUSER_NEW:
305
+        // fall-through intentional, those two actions are doing nearly identical things
306
+        case web\lib\admin\API::ACTION_ENDUSER_CHANGEEXPIRY:
307
+            $prof_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID);
308
+            if ($prof_id === FALSE) {
309
+                exit(1);
310
+            }
311
+            $evaluation = commonSbProfileChecks($fed, $prof_id);
312
+            if ($evaluation === FALSE) {
313
+                exit(1);
314
+            }
315
+            list($idp, $profile) = $evaluation;
316
+            $user = $validator->string($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_USERNAME));
317
+            $expiryRaw = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_EXPIRY);
318
+            if ($expiryRaw === FALSE) {
319
+                $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "The expiry date wasn't found in the request.");
320
+                break;
321
+            }
322
+            $expiry = new DateTime($expiryRaw);
323
+            try {
324
+                switch ($inputDecoded['ACTION']) {
325 325
                 case web\lib\admin\API::ACTION_ENDUSER_NEW:
326 326
                     $retval = $profile->addUser($user, $expiry);
327 327
                     break;
@@ -334,7 +334,7 @@  discard block
 block discarded – undo
334 334
                         $retval = 1; // function doesn't have any failure vectors not raising an Exception and doesn't return a value
335 335
                     }
336 336
                     break;
337
-            }
337
+                }
338 338
         } catch (Exception $e) {
339 339
             $adminApi->returnError(web\lib\admin\API::ERROR_INTERNAL_ERROR, "The operation failed. Maybe a duplicate username, or malformed expiry date?");
340 340
             exit(1);
@@ -345,25 +345,25 @@  discard block
 block discarded – undo
345 345
         }
346 346
         $adminApi->returnSuccess([web\lib\admin\API::AUXATTRIB_SB_USERNAME => $user, \web\lib\admin\API::AUXATTRIB_SB_USERID => $retval]);
347 347
         break;
348
-    case \web\lib\admin\API::ACTION_ENDUSER_DEACTIVATE:
349
-    // fall-through intended: both actions are very similar
350
-    case \web\lib\admin\API::ACTION_TOKEN_NEW:
351
-        $profile_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID);
352
-        if ($profile_id === FALSE) {
353
-            exit(1);
354
-        }
355
-        $evaluation = commonSbProfileChecks($fed, $profile_id);
356
-        if ($evaluation === FALSE) {
357
-            exit(1);
358
-        }
359
-        list($idp, $profile) = $evaluation;
360
-        $userId = $validator->integer($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_USERID));
361
-        if ($userId === FALSE) {
362
-            $adminApi->returnError(\web\lib\admin\API::ERROR_INVALID_PARAMETER, "User ID is not an integer.");
363
-            exit(1);
364
-        }
365
-        $additionalInfo = [];
366
-        switch ($inputDecoded['ACTION']) { // this is where the two differ
348
+        case \web\lib\admin\API::ACTION_ENDUSER_DEACTIVATE:
349
+        // fall-through intended: both actions are very similar
350
+        case \web\lib\admin\API::ACTION_TOKEN_NEW:
351
+            $profile_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID);
352
+            if ($profile_id === FALSE) {
353
+                exit(1);
354
+            }
355
+            $evaluation = commonSbProfileChecks($fed, $profile_id);
356
+            if ($evaluation === FALSE) {
357
+                exit(1);
358
+            }
359
+            list($idp, $profile) = $evaluation;
360
+            $userId = $validator->integer($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_USERID));
361
+            if ($userId === FALSE) {
362
+                $adminApi->returnError(\web\lib\admin\API::ERROR_INVALID_PARAMETER, "User ID is not an integer.");
363
+                exit(1);
364
+            }
365
+            $additionalInfo = [];
366
+            switch ($inputDecoded['ACTION']) { // this is where the two differ
367 367
             case \web\lib\admin\API::ACTION_ENDUSER_DEACTIVATE:
368 368
                 $result = $profile->deactivateUser($userId);
369 369
                 break;
@@ -396,7 +396,7 @@  discard block
 block discarded – undo
396 396
                     }
397 397
                 }
398 398
                 break;
399
-        }
399
+            }
400 400
 
401 401
         if ($result !== TRUE) {
402 402
             $adminApi->returnError(\web\lib\admin\API::ERROR_INVALID_PARAMETER, "These parameters did not lead to an existing, active user.");
@@ -404,69 +404,69 @@  discard block
 block discarded – undo
404 404
         }
405 405
         $adminApi->returnSuccess($additionalInfo);
406 406
         break;
407
-    case \web\lib\admin\API::ACTION_ENDUSER_IDENTIFY:
408
-        $profile_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID);
409
-        if ($profile_id === FALSE) {
410
-            exit(1);
411
-        }
412
-        $evaluation = commonSbProfileChecks($fed, $profile_id);
413
-        if ($evaluation === FALSE) {
414
-            exit(1);
415
-        }
416
-        list($idp, $profile) = $evaluation;
417
-        $userId = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_USERID);
418
-        $userName = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_USERNAME);
419
-        $certSerial = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_CERTSERIAL);
420
-		$certCN = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_CERTCN);
421
-        if ($userId === FALSE && $userName === FALSE && $certSerial === FALSE && $certCN === FALSE) {
422
-            // we need at least one of those
423
-            $adminApi->returnError(\web\lib\admin\API::ERROR_MISSING_PARAMETER, "At least one of User ID, Username, certificate serial, or certificate CN is required.");
424
-            break;
425
-        }
426
-        if ($certSerial !== FALSE) { // we got a cert serial
427
-            $serial = explode(":", $certSerial);
428
-            $cert = new \core\SilverbulletCertificate($serial[1], $serial[0]);
407
+        case \web\lib\admin\API::ACTION_ENDUSER_IDENTIFY:
408
+            $profile_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID);
409
+            if ($profile_id === FALSE) {
410
+                exit(1);
429 411
             }
430
-        if ($certCN !== FALSE) { // we got a cert CN
431
-            $cert = new \core\SilverbulletCertificate($certCN);
432
-        }
433
-        if ($cert !== NULL) { // we found a cert; verify it and extract userId
434
-            if ($cert->status == \core\SilverbulletCertificate::CERTSTATUS_INVALID) {
435
-                return $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "Certificate not found.");
412
+            $evaluation = commonSbProfileChecks($fed, $profile_id);
413
+            if ($evaluation === FALSE) {
414
+                exit(1);
436 415
             }
437
-            if ($cert->profileId != $profile->identifier) {
438
-                return $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "Certificate does not belong to this profile.");
416
+            list($idp, $profile) = $evaluation;
417
+            $userId = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_USERID);
418
+            $userName = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_USERNAME);
419
+            $certSerial = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_CERTSERIAL);
420
+		    $certCN = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_CERTCN);
421
+            if ($userId === FALSE && $userName === FALSE && $certSerial === FALSE && $certCN === FALSE) {
422
+                // we need at least one of those
423
+                $adminApi->returnError(\web\lib\admin\API::ERROR_MISSING_PARAMETER, "At least one of User ID, Username, certificate serial, or certificate CN is required.");
424
+                break;
439 425
             }
440
-            $userId = $cert->userId;
441
-        }
442
-        if ($userId !== FALSE) {
443
-            $userList = $profile->getUserById($userId);
444
-        }
445
-        if ($userName !== FALSE) {
446
-            $userList = $profile->getUserByName($userName);
447
-        }
448
-        if (count($userList) === 1) {
449
-            foreach ($userList as $oneUserId => $oneUserName) {
450
-                return $adminApi->returnSuccess([web\lib\admin\API::AUXATTRIB_SB_USERNAME => $oneUserName, \web\lib\admin\API::AUXATTRIB_SB_USERID => $oneUserId]);
426
+            if ($certSerial !== FALSE) { // we got a cert serial
427
+                $serial = explode(":", $certSerial);
428
+                $cert = new \core\SilverbulletCertificate($serial[1], $serial[0]);
429
+                }
430
+            if ($certCN !== FALSE) { // we got a cert CN
431
+                $cert = new \core\SilverbulletCertificate($certCN);
451 432
             }
452
-        }
453
-        $adminApi->returnError(\web\lib\admin\API::ERROR_INVALID_PARAMETER, "No matching user found in this profile.");
454
-        break;
455
-    case \web\lib\admin\API::ACTION_ENDUSER_LIST:
456
-    // fall-through: those two are similar
457
-    case \web\lib\admin\API::ACTION_TOKEN_LIST:
458
-        $profile_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID);
459
-        if ($profile_id === FALSE) {
460
-            exit(1);
461
-        }
462
-        $evaluation = commonSbProfileChecks($fed, $profile_id);
463
-        if ($evaluation === FALSE) {
464
-            exit(1);
465
-        }
466
-        list($idp, $profile) = $evaluation;
467
-        $allUsers = $profile->listAllUsers();
468
-        // this is where they differ
469
-        switch ($inputDecoded['ACTION']) {
433
+            if ($cert !== NULL) { // we found a cert; verify it and extract userId
434
+                if ($cert->status == \core\SilverbulletCertificate::CERTSTATUS_INVALID) {
435
+                    return $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "Certificate not found.");
436
+                }
437
+                if ($cert->profileId != $profile->identifier) {
438
+                    return $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "Certificate does not belong to this profile.");
439
+                }
440
+                $userId = $cert->userId;
441
+            }
442
+            if ($userId !== FALSE) {
443
+                $userList = $profile->getUserById($userId);
444
+            }
445
+            if ($userName !== FALSE) {
446
+                $userList = $profile->getUserByName($userName);
447
+            }
448
+            if (count($userList) === 1) {
449
+                foreach ($userList as $oneUserId => $oneUserName) {
450
+                    return $adminApi->returnSuccess([web\lib\admin\API::AUXATTRIB_SB_USERNAME => $oneUserName, \web\lib\admin\API::AUXATTRIB_SB_USERID => $oneUserId]);
451
+                }
452
+            }
453
+            $adminApi->returnError(\web\lib\admin\API::ERROR_INVALID_PARAMETER, "No matching user found in this profile.");
454
+            break;
455
+        case \web\lib\admin\API::ACTION_ENDUSER_LIST:
456
+        // fall-through: those two are similar
457
+        case \web\lib\admin\API::ACTION_TOKEN_LIST:
458
+            $profile_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID);
459
+            if ($profile_id === FALSE) {
460
+                exit(1);
461
+            }
462
+            $evaluation = commonSbProfileChecks($fed, $profile_id);
463
+            if ($evaluation === FALSE) {
464
+                exit(1);
465
+            }
466
+            list($idp, $profile) = $evaluation;
467
+            $allUsers = $profile->listAllUsers();
468
+            // this is where they differ
469
+            switch ($inputDecoded['ACTION']) {
470 470
             case \web\lib\admin\API::ACTION_ENDUSER_LIST:
471 471
                 $adminApi->returnSuccess($allUsers);
472 472
                 break;
@@ -485,105 +485,105 @@  discard block
 block discarded – undo
485 485
                     $infoSet[$oneTokenObject->userId] = [\web\lib\admin\API::AUXATTRIB_TOKEN => $oneTokenObject->invitationTokenString, "STATUS" => $oneTokenObject->invitationTokenStatus];
486 486
                 }
487 487
                 $adminApi->returnSuccess($infoSet);
488
-        }
489
-        break;
490
-    case \web\lib\admin\API::ACTION_TOKEN_REVOKE:
491
-        $tokenRaw = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_TOKEN);
492
-        if ($tokenRaw === FALSE) {
493
-            exit(1);
494
-        }
495
-        $token = new core\SilverbulletInvitation($tokenRaw);
496
-        if ($token->invitationTokenStatus !== core\SilverbulletInvitation::SB_TOKENSTATUS_VALID && $token->invitationTokenStatus !== core\SilverbulletInvitation::SB_TOKENSTATUS_PARTIALLY_REDEEMED) {
497
-            $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "This is not a currently valid token.");
498
-            exit(1);
499
-        }
500
-        $token->revokeInvitation();
501
-        $adminApi->returnSuccess([]);
502
-        break;
503
-    case \web\lib\admin\API::ACTION_CERT_LIST:
504
-        $prof_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID);
505
-        $user_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_USERID);
506
-        if ($prof_id === FALSE || !is_int($user_id)) {
507
-            exit(1);
508
-        }
509
-        $evaluation = commonSbProfileChecks($fed, $prof_id);
510
-        if ($evaluation === FALSE) {
511
-            exit(1);
512
-        }
513
-        list($idp, $profile) = $evaluation;
514
-        $invitations = $profile->userStatus($user_id);
515
-        // now pull out cert information from the object
516
-        $certs = [];
517
-        foreach ($invitations as $oneInvitation) {
518
-            $certs = array_merge($certs, $oneInvitation->associatedCertificates);
519
-        }
520
-        // extract relevant subset of information from cert objects
521
-        $certDetails = [];
522
-        foreach ($certs as $cert) {
523
-            $certDetails[$cert->ca_type . ":" . $cert->serial] = ["ISSUED" => $cert->issued, "EXPIRY" => $cert->expiry, "STATUS" => $cert->status, "DEVICE" => $cert->device, "CN" => $cert->username, "ANNOTATION" => $cert->annotation];
524
-        }
525
-        $adminApi->returnSuccess($certDetails);
526
-        break;
527
-    case \web\lib\admin\API::ACTION_CERT_REVOKE:
528
-        $prof_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID);
529
-        if ($prof_id === FALSE) {
530
-            exit(1);
531
-        }
532
-        $evaluation = commonSbProfileChecks($fed, $prof_id);
533
-        if ($evaluation === FALSE) {
534
-            exit(1);
535
-        }
536
-        list($idp, $profile) = $evaluation;
537
-        // tear apart the serial
538
-        $serialRaw = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_CERTSERIAL);
539
-        if ($serialRaw === FALSE) {
540
-            exit(1);
541
-        }
542
-        $serial = explode(":", $serialRaw);
543
-        $cert = new \core\SilverbulletCertificate($serial[1], $serial[0]);
544
-        if ($cert->status == \core\SilverbulletCertificate::CERTSTATUS_INVALID) {
545
-            $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "Serial not found.");
546
-        }
547
-        if ($cert->profileId != $profile->identifier) {
548
-            $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "Serial does not belong to this profile.");
549
-        }
550
-        $cert->revokeCertificate();
551
-        $adminApi->returnSuccess([]);
488
+            }
552 489
         break;
553
-    case \web\lib\admin\API::ACTION_CERT_ANNOTATE:
554
-        $prof_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID);
555
-        if ($prof_id === FALSE) {
556
-            exit(1);
557
-        }
558
-        $evaluation = commonSbProfileChecks($fed, $prof_id);
559
-        if ($evaluation === FALSE) {
560
-            exit(1);
561
-        }
562
-        list($idp, $profile) = $evaluation;
563
-        // tear apart the serial
564
-        $serialRaw = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_CERTSERIAL);
565
-        if ($serialRaw === FALSE) {
566
-            exit(1);
567
-        }
568
-        $serial = explode(":", $serialRaw);
569
-        $cert = new \core\SilverbulletCertificate($serial[1], $serial[0]);
570
-        if ($cert->status == \core\SilverbulletCertificate::CERTSTATUS_INVALID) {
571
-            $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "Serial not found.");
572
-        }
573
-        if ($cert->profileId != $profile->identifier) {
574
-            $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "Serial does not belong to this profile.");
575
-        }
576
-        $annotationRaw = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_CERTANNOTATION);
577
-        if ($annotationRaw === FALSE) {
578
-            $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "Unable to extract annotation.");
490
+        case \web\lib\admin\API::ACTION_TOKEN_REVOKE:
491
+            $tokenRaw = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_TOKEN);
492
+            if ($tokenRaw === FALSE) {
493
+                exit(1);
494
+            }
495
+            $token = new core\SilverbulletInvitation($tokenRaw);
496
+            if ($token->invitationTokenStatus !== core\SilverbulletInvitation::SB_TOKENSTATUS_VALID && $token->invitationTokenStatus !== core\SilverbulletInvitation::SB_TOKENSTATUS_PARTIALLY_REDEEMED) {
497
+                $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "This is not a currently valid token.");
498
+                exit(1);
499
+            }
500
+            $token->revokeInvitation();
501
+            $adminApi->returnSuccess([]);
579 502
             break;
580
-        }
581
-        $annotation = json_decode($annotationRaw, TRUE);
582
-        $cert->annotate($annotation);
583
-        $adminApi->returnSuccess([]);
503
+        case \web\lib\admin\API::ACTION_CERT_LIST:
504
+            $prof_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID);
505
+            $user_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_USERID);
506
+            if ($prof_id === FALSE || !is_int($user_id)) {
507
+                exit(1);
508
+            }
509
+            $evaluation = commonSbProfileChecks($fed, $prof_id);
510
+            if ($evaluation === FALSE) {
511
+                exit(1);
512
+            }
513
+            list($idp, $profile) = $evaluation;
514
+            $invitations = $profile->userStatus($user_id);
515
+            // now pull out cert information from the object
516
+            $certs = [];
517
+            foreach ($invitations as $oneInvitation) {
518
+                $certs = array_merge($certs, $oneInvitation->associatedCertificates);
519
+            }
520
+            // extract relevant subset of information from cert objects
521
+            $certDetails = [];
522
+            foreach ($certs as $cert) {
523
+                $certDetails[$cert->ca_type . ":" . $cert->serial] = ["ISSUED" => $cert->issued, "EXPIRY" => $cert->expiry, "STATUS" => $cert->status, "DEVICE" => $cert->device, "CN" => $cert->username, "ANNOTATION" => $cert->annotation];
524
+            }
525
+            $adminApi->returnSuccess($certDetails);
526
+            break;
527
+        case \web\lib\admin\API::ACTION_CERT_REVOKE:
528
+            $prof_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID);
529
+            if ($prof_id === FALSE) {
530
+                exit(1);
531
+            }
532
+            $evaluation = commonSbProfileChecks($fed, $prof_id);
533
+            if ($evaluation === FALSE) {
534
+                exit(1);
535
+            }
536
+            list($idp, $profile) = $evaluation;
537
+            // tear apart the serial
538
+            $serialRaw = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_CERTSERIAL);
539
+            if ($serialRaw === FALSE) {
540
+                exit(1);
541
+            }
542
+            $serial = explode(":", $serialRaw);
543
+            $cert = new \core\SilverbulletCertificate($serial[1], $serial[0]);
544
+            if ($cert->status == \core\SilverbulletCertificate::CERTSTATUS_INVALID) {
545
+                $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "Serial not found.");
546
+            }
547
+            if ($cert->profileId != $profile->identifier) {
548
+                $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "Serial does not belong to this profile.");
549
+            }
550
+            $cert->revokeCertificate();
551
+            $adminApi->returnSuccess([]);
552
+            break;
553
+        case \web\lib\admin\API::ACTION_CERT_ANNOTATE:
554
+            $prof_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID);
555
+            if ($prof_id === FALSE) {
556
+                exit(1);
557
+            }
558
+            $evaluation = commonSbProfileChecks($fed, $prof_id);
559
+            if ($evaluation === FALSE) {
560
+                exit(1);
561
+            }
562
+            list($idp, $profile) = $evaluation;
563
+            // tear apart the serial
564
+            $serialRaw = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_CERTSERIAL);
565
+            if ($serialRaw === FALSE) {
566
+                exit(1);
567
+            }
568
+            $serial = explode(":", $serialRaw);
569
+            $cert = new \core\SilverbulletCertificate($serial[1], $serial[0]);
570
+            if ($cert->status == \core\SilverbulletCertificate::CERTSTATUS_INVALID) {
571
+                $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "Serial not found.");
572
+            }
573
+            if ($cert->profileId != $profile->identifier) {
574
+                $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "Serial does not belong to this profile.");
575
+            }
576
+            $annotationRaw = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_CERTANNOTATION);
577
+            if ($annotationRaw === FALSE) {
578
+                $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "Unable to extract annotation.");
579
+                break;
580
+            }
581
+            $annotation = json_decode($annotationRaw, TRUE);
582
+            $cert->annotate($annotation);
583
+            $adminApi->returnSuccess([]);
584 584
 
585
-        break;
585
+            break;
586 586
 
587
-    default:
588
-        $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_ACTION, "Not implemented yet.");
587
+        default:
588
+            $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_ACTION, "Not implemented yet.");
589 589
 }
590 590
\ No newline at end of file
Please login to merge, or discard this patch.