|  | @@ -20,8 +20,8 @@  discard block | 
                                                    
                                                        |  |  |  block discarded – undo | 
                                                                                                                                                                                                                    
                                                            | 20 | 20 |  /* | 
                                                                                                            
                                                            | 21 | 21 |   * Class autoloader invocation, should be included prior to any other code at the entry points to the application | 
                                                                                                            
                                                            | 22 | 22 |   */ | 
                                                                                                            
                                                            | 23 |  | -require_once dirname(dirname(dirname(__FILE__))) . "/config/_config.php"; | 
                                                                                                            
                                                            | 24 |  | -require_once dirname(dirname(dirname(__FILE__))) . "/core/phpqrcode.php"; | 
                                                                                                            
                                                            |  | 23 | +require_once dirname(dirname(dirname(__FILE__)))."/config/_config.php"; | 
                                                                                                            
                                                            |  | 24 | +require_once dirname(dirname(dirname(__FILE__)))."/core/phpqrcode.php"; | 
                                                                                                            
                                                            | 25 | 25 |  const QRCODE_PIXELS_PER_SYMBOL = 12; | 
                                                                                                            
                                                            | 26 | 26 |   | 
                                                                                                            
                                                            | 27 | 27 |  $auth = new \web\lib\admin\Authentication(); | 
                                                                                                                                                        
                                                        |  | @@ -55,7 +55,7 @@  discard block | 
                                                    
                                                        |  |  |  block discarded – undo | 
                                                                                                                                                                                                                    
                                                            | 55 | 55 |      $fed = new \core\Federation($inst->federation); | 
                                                                                                            
                                                            | 56 | 56 |      $allowSb = $fed->getAttributes("fed:silverbullet"); | 
                                                                                                            
                                                            | 57 | 57 |      if (count($allowSb) == 0) { | 
                                                                                                            
                                                            | 58 |  | -        throw new Exception("We were told to create a new SB profile, but this " . CONFIG_CONFASSISTANT['CONSORTIUM']['nomenclature_federation'] . " does not allow SB at all!"); | 
                                                                                                            
                                                            |  | 58 | +        throw new Exception("We were told to create a new SB profile, but this ".CONFIG_CONFASSISTANT['CONSORTIUM']['nomenclature_federation']." does not allow SB at all!"); | 
                                                                                                            
                                                            | 59 | 59 |      } | 
                                                                                                            
                                                            | 60 | 60 |      // okay, new SB profiles are allowed.  | 
                                                                                                            
                                                            | 61 | 61 |      // but is there a support:email attribute on inst level? | 
                                                                                                                                                        
                                                        |  | @@ -66,7 +66,7 @@  discard block | 
                                                    
                                                        |  |  |  block discarded – undo | 
                                                                                                                                                                                                                    
                                                            | 66 | 66 |      // Create one. | 
                                                                                                            
                                                            | 67 | 67 |      $newProfile = $inst->newProfile(core\AbstractProfile::PROFILETYPE_SILVERBULLET); | 
                                                                                                            
                                                            | 68 | 68 |      // and modify the REQUEST_URI to add the new profile ID | 
                                                                                                            
                                                            | 69 |  | -    $_SERVER['REQUEST_URI'] = $_SERVER['REQUEST_URI'] . "&profile_id=" . $newProfile->identifier; | 
                                                                                                            
                                                            |  | 69 | +    $_SERVER['REQUEST_URI'] = $_SERVER['REQUEST_URI']."&profile_id=".$newProfile->identifier; | 
                                                                                                            
                                                            | 70 | 70 |      $_GET['profile_id'] = $newProfile->identifier; | 
                                                                                                            
                                                            | 71 | 71 |      $profile = $newProfile; | 
                                                                                                            
                                                            | 72 | 72 |  } else { | 
                                                                                                                                                        
                                                        |  | @@ -91,7 +91,7 @@  discard block | 
                                                    
                                                        |  |  |  block discarded – undo | 
                                                                                                                                                                                                                    
                                                            | 91 | 91 |  if (isset($_POST['command'])) { | 
                                                                                                            
                                                            | 92 | 92 |      switch ($_POST['command']) { | 
                                                                                                            
                                                            | 93 | 93 |          case \web\lib\common\FormElements::BUTTON_CLOSE: | 
                                                                                                            
                                                            | 94 |  | -            header("Location: overview_idp.php?inst_id=" . $inst->identifier); | 
                                                                                                            
                                                            |  | 94 | +            header("Location: overview_idp.php?inst_id=".$inst->identifier); | 
                                                                                                            
                                                            | 95 | 95 |              break; | 
                                                                                                            
                                                            | 96 | 96 |          case \web\lib\common\FormElements::BUTTON_TERMSOFUSE: | 
                                                                                                            
                                                            | 97 | 97 |              if (isset($_POST['agreement']) && $_POST['agreement'] == 'true') { | 
                                                                                                                                                        
                                                        |  | @@ -134,7 +134,7 @@  discard block | 
                                                    
                                                        |  |  |  block discarded – undo | 
                                                                                                                                                                                                                    
                                                            | 134 | 134 |                          break; | 
                                                                                                            
                                                            | 135 | 135 |                      } | 
                                                                                                            
                                                            | 136 | 136 |                      $properName = $validator->User($elements[0]); | 
                                                                                                            
                                                            | 137 |  | -                    $properDate = new DateTime($elements[1] . " 00:00:00"); | 
                                                                                                            
                                                            |  | 137 | +                    $properDate = new DateTime($elements[1]." 00:00:00"); | 
                                                                                                            
                                                            | 138 | 138 |                      $numberOfActivations = $elements[2] ?? 1; | 
                                                                                                            
                                                            | 139 | 139 |                      $number = $validator->integer($numberOfActivations); | 
                                                                                                            
                                                            | 140 | 140 |                      if ($number === FALSE) { // invalid input received, default to sane | 
                                                                                                                                                        
                                                        |  | @@ -237,18 +237,18 @@  discard block | 
                                                    
                                                        |  |  |  block discarded – undo | 
                                                                                                                                                                                                                    
                                                            | 237 | 237 |                      // warn and ask for confirmation unless already confirmed | 
                                                                                                            
                                                            | 238 | 238 |                      if (!isset($_POST['insecureconfirm']) || $_POST['insecureconfirm'] != "CONFIRM") { | 
                                                                                                            
                                                            | 239 | 239 |                          echo $deco->pageheader(_("Insecure mail domain!"), "ADMIN-IDP-USERS"); | 
                                                                                                            
                                                            | 240 |  | -                        echo "<p>" . sprintf(_("The mail domain of the mail address <strong>%s</strong> is not secure: some or all of the mail servers are not accepting encrypted connections (no consistent support for STARTTLS)."), $properEmail) . "</p>"; | 
                                                                                                            
                                                            | 241 |  | -                        echo "<p>" . _("The invitation would need to be sent in cleartext across the internet, and can possibly be read and abused by anyone in transit.") . "</p>"; | 
                                                                                                            
                                                            | 242 |  | -                        echo "<p>" . _("Do you want the system to send this mail anyway?") . "</p>"; | 
                                                                                                            
                                                            |  | 240 | +                        echo "<p>".sprintf(_("The mail domain of the mail address <strong>%s</strong> is not secure: some or all of the mail servers are not accepting encrypted connections (no consistent support for STARTTLS)."), $properEmail)."</p>"; | 
                                                                                                            
                                                            |  | 241 | +                        echo "<p>"._("The invitation would need to be sent in cleartext across the internet, and can possibly be read and abused by anyone in transit.")."</p>"; | 
                                                                                                            
                                                            |  | 242 | +                        echo "<p>"._("Do you want the system to send this mail anyway?")."</p>"; | 
                                                                                                            
                                                            | 243 | 243 |                          echo $formtext; | 
                                                                                                            
                                                            | 244 |  | -                        echo "<button type='submit' class='delete'>" . _("DO NOT SEND") . "</button>"; | 
                                                                                                            
                                                            |  | 244 | +                        echo "<button type='submit' class='delete'>"._("DO NOT SEND")."</button>"; | 
                                                                                                            
                                                            | 245 | 245 |                          echo "</form>"; | 
                                                                                                            
                                                            | 246 | 246 |                          echo $formtext; | 
                                                                                                            
                                                            | 247 |  | -                        echo "<input type='hidden' name='command' value='" . \web\lib\common\FormElements::BUTTON_SENDINVITATIONMAILBYCAT . "'</>"; | 
                                                                                                            
                                                            |  | 247 | +                        echo "<input type='hidden' name='command' value='".\web\lib\common\FormElements::BUTTON_SENDINVITATIONMAILBYCAT."'</>"; | 
                                                                                                            
                                                            | 248 | 248 |                          echo "<input type='hidden' name='address' value='$properEmail'</>"; | 
                                                                                                            
                                                            | 249 |  | -                        echo "<input type='hidden' name='token' value='" . $invitationObject->invitationTokenString . "'</>"; | 
                                                                                                            
                                                            |  | 249 | +                        echo "<input type='hidden' name='token' value='".$invitationObject->invitationTokenString."'</>"; | 
                                                                                                            
                                                            | 250 | 250 |                          echo "<input type='hidden' name='insecureconfirm' value='CONFIRM'/>"; | 
                                                                                                            
                                                            | 251 |  | -                        echo "<button type='submit'>" . _("Send anyway.") . "</button>"; | 
                                                                                                            
                                                            |  | 251 | +                        echo "<button type='submit'>"._("Send anyway.")."</button>"; | 
                                                                                                            
                                                            | 252 | 252 |                          echo "</form>"; | 
                                                                                                            
                                                            | 253 | 253 |                          echo $deco->footer(); | 
                                                                                                            
                                                            | 254 | 254 |                          exit; | 
                                                                                                                                                        
                                                        |  | @@ -358,19 +358,19 @@  discard block | 
                                                    
                                                        |  |  |  block discarded – undo | 
                                                                                                                                                                                                                    
                                                            | 358 | 358 |          case "NOSTIPULATION": | 
                                                                                                            
                                                            | 359 | 359 |              break; | 
                                                                                                            
                                                            | 360 | 360 |          case "EMAIL-SENT": | 
                                                                                                            
                                                            | 361 |  | -            echo $boundaryPre . $uiElements->boxOkay(_("The e-mail was sent successfully."), _("E-mail OK."), FALSE) . $boundaryPost; | 
                                                                                                            
                                                            |  | 361 | +            echo $boundaryPre.$uiElements->boxOkay(_("The e-mail was sent successfully."), _("E-mail OK."), FALSE).$boundaryPost; | 
                                                                                                            
                                                            | 362 | 362 |              break; | 
                                                                                                            
                                                            | 363 | 363 |          case "EMAIL-NOTSENT": | 
                                                                                                            
                                                            | 364 |  | -            echo $boundaryPre . $uiElements->boxError(_("The e-mail was NOT sent."), _("E-mail not OK."), FALSE) . $boundaryPost; | 
                                                                                                            
                                                            |  | 364 | +            echo $boundaryPre.$uiElements->boxError(_("The e-mail was NOT sent."), _("E-mail not OK."), FALSE).$boundaryPost; | 
                                                                                                            
                                                            | 365 | 365 |              break; | 
                                                                                                            
                                                            | 366 | 366 |          case "SMS-SENT": | 
                                                                                                            
                                                            | 367 |  | -            echo $boundaryPre . $uiElements->boxOkay(_("The SMS was sent successfully."), _("SMS OK."), FALSE) . $boundaryPost; | 
                                                                                                            
                                                            |  | 367 | +            echo $boundaryPre.$uiElements->boxOkay(_("The SMS was sent successfully."), _("SMS OK."), FALSE).$boundaryPost; | 
                                                                                                            
                                                            | 368 | 368 |              break; | 
                                                                                                            
                                                            | 369 | 369 |          case "SMS-NOTSENT": | 
                                                                                                            
                                                            | 370 |  | -            echo $boundaryPre . $uiElements->boxOkay(_("The SMS was NOT sent."), _("SMS not OK."), FALSE) . $boundaryPost; | 
                                                                                                            
                                                            |  | 370 | +            echo $boundaryPre.$uiElements->boxOkay(_("The SMS was NOT sent."), _("SMS not OK."), FALSE).$boundaryPost; | 
                                                                                                            
                                                            | 371 | 371 |              break; | 
                                                                                                            
                                                            | 372 | 372 |          case "SMS-FRAGMENT": | 
                                                                                                            
                                                            | 373 |  | -            echo $boundaryPre . $uiElements->boxWarning(_("Only a fragment of the SMS was sent. You should re-send it."), _("SMS Fragment."), FALSE) . $boundaryPost; | 
                                                                                                            
                                                            |  | 373 | +            echo $boundaryPre.$uiElements->boxWarning(_("Only a fragment of the SMS was sent. You should re-send it."), _("SMS Fragment."), FALSE).$boundaryPost; | 
                                                                                                            
                                                            | 374 | 374 |              break; | 
                                                                                                            
                                                            | 375 | 375 |      } | 
                                                                                                            
                                                            | 376 | 376 |      ?> | 
                                                                                                                                                        
                                                        |  | @@ -383,17 +383,17 @@  discard block | 
                                                    
                                                        |  |  |  block discarded – undo | 
                                                                                                                                                                                                                    
                                                            | 383 | 383 |              <?php | 
                                                                                                            
                                                            | 384 | 384 |              $bufferCurrentUsers = "<table class='sb-user-table' style='max-width:1920px;'> | 
                                                                                                            
                                                            | 385 | 385 |                  <tr class='sb-title-row'> | 
                                                                                                            
                                                            | 386 |  | -                    <td>" . _("User") . "</td> | 
                                                                                                            
                                                            | 387 |  | -                    <td>" . _("Token/Certificate details") . "</td> | 
                                                                                                            
                                                            | 388 |  | -                    <td>" . _("User/Token Expiry") . "</td> | 
                                                                                                            
                                                            | 389 |  | -                    <td>" . _("Actions") . "</td> | 
                                                                                                            
                                                            |  | 386 | +                    <td>" . _("User")."</td> | 
                                                                                                            
                                                            |  | 387 | +                    <td>" . _("Token/Certificate details")."</td> | 
                                                                                                            
                                                            |  | 388 | +                    <td>" . _("User/Token Expiry")."</td> | 
                                                                                                            
                                                            |  | 389 | +                    <td>" . _("Actions")."</td> | 
                                                                                                            
                                                            | 390 | 390 |                  </tr>"; | 
                                                                                                            
                                                            | 391 | 391 |              $bufferPreviousUsers = "<table class='sb-user-table' style='max-width:1920px;'> | 
                                                                                                            
                                                            | 392 | 392 |                  <tr class='sb-title-row'> | 
                                                                                                            
                                                            | 393 |  | -                    <td>" . _("User") . "</td> | 
                                                                                                            
                                                            | 394 |  | -                    <td>" . _("Certificate details") . "</td> | 
                                                                                                            
                                                            | 395 |  | -                    <td>" . _("User Expiry") . "</td> | 
                                                                                                            
                                                            | 396 |  | -                    <td>" . _("Actions") . "</td> | 
                                                                                                            
                                                            |  | 393 | +                    <td>" . _("User")."</td> | 
                                                                                                            
                                                            |  | 394 | +                    <td>" . _("Certificate details")."</td> | 
                                                                                                            
                                                            |  | 395 | +                    <td>" . _("User Expiry")."</td> | 
                                                                                                            
                                                            |  | 396 | +                    <td>" . _("Actions")."</td> | 
                                                                                                            
                                                            | 397 | 397 |                  </tr>"; | 
                                                                                                            
                                                            | 398 | 398 |   | 
                                                                                                            
                                                            | 399 | 399 |              natsort($allUsers); | 
                                                                                                                                                        
                                                        |  | @@ -449,23 +449,23 @@  discard block | 
                                                    
                                                        |  |  |  block discarded – undo | 
                                                                                                                                                                                                                    
                                                            | 449 | 449 |                      $display = empty(devices\Devices::listDevices()[$oneCert->device]['display']) ? $oneCert->device : devices\Devices::listDevices()[$oneCert->device]['display']; | 
                                                                                                            
                                                            | 450 | 450 |   | 
                                                                                                            
                                                            | 451 | 451 |                      $bufferText = "<div class='sb-certificate-summary ca-summary' $style> | 
                                                                                                            
                                                            | 452 |  | -                                    <div class='sb-certificate-details'>" . _("Device:") . " " . $display . | 
                                                                                                            
                                                            | 453 |  | -                            "<br>" . _("Serial Number:") . " " . dechex($oneCert->serial) . | 
                                                                                                            
                                                            | 454 |  | -                            "<br>" . _("CN:") . " " . explode('@', $oneCert->username)[0] . "@…" . | 
                                                                                                            
                                                            | 455 |  | -                            "<br>" . _("Expiry:") . " " . $oneCert->expiry . | 
                                                                                                            
                                                            | 456 |  | -                            "<br>" . _("Issued:") . " " . $oneCert->issued . | 
                                                                                                            
                                                            | 457 |  | -                            "</div>" . | 
                                                                                                            
                                                            |  | 452 | +                                    <div class='sb-certificate-details'>"._("Device:")." ".$display. | 
                                                                                                            
                                                            |  | 453 | +                            "<br>"._("Serial Number:")." ".dechex($oneCert->serial). | 
                                                                                                            
                                                            |  | 454 | +                            "<br>"._("CN:")." ".explode('@', $oneCert->username)[0]."@…". | 
                                                                                                            
                                                            |  | 455 | +                            "<br>"._("Expiry:")." ".$oneCert->expiry. | 
                                                                                                            
                                                            |  | 456 | +                            "<br>"._("Issued:")." ".$oneCert->issued. | 
                                                                                                            
                                                            |  | 457 | +                            "</div>". | 
                                                                                                            
                                                            | 458 | 458 |                              "<div style='text-align:right;padding-top: 5px; $buttonStyle'>"; | 
                                                                                                            
                                                            | 459 | 459 |   | 
                                                                                                            
                                                            | 460 | 460 |                      if ($buttonText == "") { | 
                                                                                                            
                                                            | 461 | 461 |                          $bufferText .= $formtext | 
                                                                                                            
                                                            | 462 |  | -                                . "<input type='hidden' name='certSerial' value='" . $oneCert->serial . "'/>" | 
                                                                                                            
                                                            | 463 |  | -                                . "<input type='hidden' name='certAlgo' value='" . $oneCert->ca_type . "'/>" | 
                                                                                                            
                                                            |  | 462 | +                                . "<input type='hidden' name='certSerial' value='".$oneCert->serial."'/>" | 
                                                                                                            
                                                            |  | 463 | +                                . "<input type='hidden' name='certAlgo' value='".$oneCert->ca_type."'/>" | 
                                                                                                            
                                                            | 464 | 464 |                                  . "<button type='submit' " | 
                                                                                                            
                                                            | 465 | 465 |                                  . "name='command' " | 
                                                                                                            
                                                            | 466 |  | -                                . "value='" . \web\lib\common\FormElements::BUTTON_REVOKECREDENTIAL . "' " | 
                                                                                                            
                                                            |  | 466 | +                                . "value='".\web\lib\common\FormElements::BUTTON_REVOKECREDENTIAL."' " | 
                                                                                                            
                                                            | 467 | 467 |                                  . "class='delete' " | 
                                                                                                            
                                                            | 468 |  | -                                . "onclick='return confirm(\"" . sprintf(_("The device in question will stop functioning with %s. The revocation cannot be undone. Are you sure you want to do this?"), CONFIG_CONFASSISTANT['CONSORTIUM']['display_name']) . "\")'>" | 
                                                                                                            
                                                            |  | 468 | +                                . "onclick='return confirm(\"".sprintf(_("The device in question will stop functioning with %s. The revocation cannot be undone. Are you sure you want to do this?"), CONFIG_CONFASSISTANT['CONSORTIUM']['display_name'])."\")'>" | 
                                                                                                            
                                                            | 469 | 469 |                                  . _("Revoke") | 
                                                                                                            
                                                            | 470 | 470 |                                  . "</button>" | 
                                                                                                            
                                                            | 471 | 471 |                                  . "</form>"; | 
                                                                                                                                                        
                                                        |  | @@ -490,13 +490,13 @@  discard block | 
                                                    
                                                        |  |  |  block discarded – undo | 
                                                                                                                                                                                                                    
                                                            | 490 | 490 |                  } | 
                                                                                                            
                                                            | 491 | 491 |                  // wrap the revoked and expired certs in a div that is hidden by default | 
                                                                                                            
                                                            | 492 | 492 |                  if ($textRevokedCerts !== "") { | 
                                                                                                            
                                                            | 493 |  | -                    $textRevokedCerts = "<span style='text-decoration: underline;' id='$oneUserId-revoked-heading' onclick='document.getElementById(\"$oneUserId-revoked-certs\").style.display = \"block\"; document.getElementById(\"$oneUserId-revoked-heading\").style.display = \"none\";'>" . sprintf(ngettext("(show %d revoked certificate)", "(show %d revoked certificates)", $countRevoked), $countRevoked) . "</span><div id='$oneUserId-revoked-certs' style='display:none;'>" . $textRevokedCerts . "</div>"; | 
                                                                                                            
                                                            |  | 493 | +                    $textRevokedCerts = "<span style='text-decoration: underline;' id='$oneUserId-revoked-heading' onclick='document.getElementById(\"$oneUserId-revoked-certs\").style.display = \"block\"; document.getElementById(\"$oneUserId-revoked-heading\").style.display = \"none\";'>".sprintf(ngettext("(show %d revoked certificate)", "(show %d revoked certificates)", $countRevoked), $countRevoked)."</span><div id='$oneUserId-revoked-certs' style='display:none;'>".$textRevokedCerts."</div>"; | 
                                                                                                            
                                                            | 494 | 494 |                  } | 
                                                                                                            
                                                            | 495 | 495 |                  if ($textExpiredCerts !== "") { | 
                                                                                                            
                                                            | 496 |  | -                    $textExpiredCerts = "<span style='text-decoration: underline;' id='$oneUserId-expired-heading' onclick='document.getElementById(\"$oneUserId-expired-certs\").style.display = \"block\"; document.getElementById(\"$oneUserId-expired-heading\").style.display = \"none\";'>" . sprintf(ngettext("(show %d expired certificate)", "(show %d expired certificates)", $countExpired), $countExpired) . "</span><div id='$oneUserId-expired-certs' style='display:none;'>" . $textExpiredCerts . "</div>"; | 
                                                                                                            
                                                            |  | 496 | +                    $textExpiredCerts = "<span style='text-decoration: underline;' id='$oneUserId-expired-heading' onclick='document.getElementById(\"$oneUserId-expired-certs\").style.display = \"block\"; document.getElementById(\"$oneUserId-expired-heading\").style.display = \"none\";'>".sprintf(ngettext("(show %d expired certificate)", "(show %d expired certificates)", $countExpired), $countExpired)."</span><div id='$oneUserId-expired-certs' style='display:none;'>".$textExpiredCerts."</div>"; | 
                                                                                                            
                                                            | 497 | 497 |                  } | 
                                                                                                            
                                                            | 498 | 498 |                  // and push out the HTML | 
                                                                                                            
                                                            | 499 |  | -                ${$outputBuffer} .= $textActiveCerts . "<br/>" . $textExpiredCerts . " " . $textRevokedCerts . "</td>"; | 
                                                                                                            
                                                            |  | 499 | +                ${$outputBuffer} .= $textActiveCerts."<br/>".$textExpiredCerts." ".$textRevokedCerts."</td>"; | 
                                                                                                            
                                                            | 500 | 500 |                  $tokenHtmlBuffer = ""; | 
                                                                                                            
                                                            | 501 | 501 |                  $hasOnePendingInvite = FALSE; | 
                                                                                                            
                                                            | 502 | 502 |                  foreach ($tokensWithoutCerts as $invitationObject) { | 
                                                                                                                                                        
                                                        |  | @@ -507,38 +507,38 @@  discard block | 
                                                    
                                                        |  |  |  block discarded – undo | 
                                                                                                                                                                                                                    
                                                            | 507 | 507 |                              $tokenHtmlBuffer .= "<tr class='sb-certificate-row'><td></td>"; | 
                                                                                                            
                                                            | 508 | 508 |                              $jsEncodedBody = str_replace('\n', '%0D%0A', str_replace('"', '', json_encode($invitationObject->invitationMailBody()))); | 
                                                                                                            
                                                            | 509 | 509 |                              $tokenHtmlBuffer .= "<td>"; | 
                                                                                                            
                                                            | 510 |  | -                            $tokenHtmlBuffer .= sprintf(_("The invitation token %s is ready for sending! Choose how to send it:"), "<input type='text' readonly='readonly' style='background-color:lightgrey;' size='60' value='" . $invitationObject->link() . "' name='token' class='identifiedtokenarea-" . $invitationObject->identifier . "'>(…)<br/>"); | 
                                                                                                            
                                                            |  | 510 | +                            $tokenHtmlBuffer .= sprintf(_("The invitation token %s is ready for sending! Choose how to send it:"), "<input type='text' readonly='readonly' style='background-color:lightgrey;' size='60' value='".$invitationObject->link()."' name='token' class='identifiedtokenarea-".$invitationObject->identifier."'>(…)<br/>"); | 
                                                                                                            
                                                            | 511 | 511 |                              $tokenHtmlBuffer .= "<table> | 
                                                                                                            
                                                            | 512 |  | -                                    <tr><td style='vertical-align:bottom;'>" . _("E-Mail:") . "</td><td> | 
                                                                                                            
                                                            |  | 512 | +                                    <tr><td style='vertical-align:bottom;'>" . _("E-Mail:")."</td><td> | 
                                                                                                            
                                                            | 513 | 513 |                                      $formtext | 
                                                                                                            
                                                            | 514 |  | -                                <input type='hidden' value='" . $invitationObject->invitationTokenString . "' name='token'><br/> | 
                                                                                                            
                                                            |  | 514 | +                                <input type='hidden' value='".$invitationObject->invitationTokenString."' name='token'><br/> | 
                                                                                                            
                                                            | 515 | 515 |                                  <input type='text' name='address' id='address-$invitationObject->identifier'/> | 
                                                                                                            
                                                            | 516 |  | -                                <button type='button' onclick='window.location=\"mailto:\"+document.getElementById(\"address-$invitationObject->identifier\").value+\"?subject=" . $invitationObject->invitationMailSubject() . "&body=$jsEncodedBody\"; return false;'>" . _("Local mail client") . "</button> | 
                                                                                                            
                                                            | 517 |  | -                                <button type='submit' name='command' onclick='document.getElementById(\"spin\").style.display =\"block\"' value='" . \web\lib\common\FormElements::BUTTON_SENDINVITATIONMAILBYCAT . "'>" . _("Send with CAT") . "</button> | 
                                                                                                            
                                                            |  | 516 | +                                <button type='button' onclick='window.location=\"mailto:\"+document.getElementById(\"address-$invitationObject->identifier\").value+\"?subject=".$invitationObject->invitationMailSubject()."&body=$jsEncodedBody\"; return false;'>"._("Local mail client")."</button> | 
                                                                                                            
                                                            |  | 517 | +                                <button type='submit' name='command' onclick='document.getElementById(\"spin\").style.display =\"block\"' value='" . \web\lib\common\FormElements::BUTTON_SENDINVITATIONMAILBYCAT."'>"._("Send with CAT")."</button> | 
                                                                                                            
                                                            | 518 | 518 |                                      </form> | 
                                                                                                            
                                                            | 519 | 519 |                                      </td></tr> | 
                                                                                                            
                                                            | 520 |  | -                                    <tr><td style='vertical-align:bottom;'>" . _("SMS:") . "</td><td> | 
                                                                                                            
                                                            |  | 520 | +                                    <tr><td style='vertical-align:bottom;'>" . _("SMS:")."</td><td> | 
                                                                                                            
                                                            | 521 | 521 |                                      $formtext | 
                                                                                                            
                                                            | 522 |  | -                                    <input type='hidden' value='" . $invitationObject->invitationTokenString . "' name='token'><br/> | 
                                                                                                            
                                                            |  | 522 | +                                    <input type='hidden' value='".$invitationObject->invitationTokenString."' name='token'><br/> | 
                                                                                                            
                                                            | 523 | 523 |                                      <input type='text' name='smsnumber' /> | 
                                                                                                            
                                                            | 524 |  | -				<button type='submit' name='command' value='" . \web\lib\common\FormElements::BUTTON_SENDINVITATIONSMS . "'>" . _("Send in SMS...") . "</button> | 
                                                                                                            
                                                            |  | 524 | +				<button type='submit' name='command' value='" . \web\lib\common\FormElements::BUTTON_SENDINVITATIONSMS."'>"._("Send in SMS...")."</button> | 
                                                                                                            
                                                            | 525 | 525 |                                      </form> | 
                                                                                                            
                                                            | 526 | 526 |  				</td></tr> | 
                                                                                                            
                                                            | 527 |  | -                                    <tr><td style='vertical-align:bottom;'>" . _("Manual:") . "</td><td> | 
                                                                                                            
                                                            | 528 |  | -				<button type='button' class='clipboardButton' onclick='clipboardCopy(" . $invitationObject->identifier . ");'>" . _("Copy to Clipboard") . "</button> | 
                                                                                                            
                                                            |  | 527 | +                                    <tr><td style='vertical-align:bottom;'>" . _("Manual:")."</td><td> | 
                                                                                                            
                                                            |  | 528 | +				<button type='button' class='clipboardButton' onclick='clipboardCopy(" . $invitationObject->identifier.");'>"._("Copy to Clipboard")."</button> | 
                                                                                                            
                                                            | 529 | 529 |                                      <form style='display:inline-block;' method='post' action='inc/displayQRcode.inc.php' onsubmit='popupQRWindow(this); return false;' accept-charset='UTF-8'> | 
                                                                                                            
                                                            | 530 |  | -                                    <input type='hidden' value='" . $invitationObject->invitationTokenString . "' name='token'><br/> | 
                                                                                                            
                                                            | 531 |  | -                                      <button type='submit'>" . _("Display QR code") . "</button> | 
                                                                                                            
                                                            |  | 530 | +                                    <input type='hidden' value='" . $invitationObject->invitationTokenString."' name='token'><br/> | 
                                                                                                            
                                                            |  | 531 | +                                      <button type='submit'>" . _("Display QR code")."</button> | 
                                                                                                            
                                                            | 532 | 532 |                                    </form> | 
                                                                                                            
                                                            | 533 | 533 |                                          </td></tr> | 
                                                                                                            
                                                            | 534 | 534 |                                           | 
                                                                                                            
                                                            | 535 | 535 |                                  </table> | 
                                                                                                            
                                                            | 536 | 536 |                                  </td>"; | 
                                                                                                            
                                                            | 537 |  | -                            $tokenHtmlBuffer .= "<td>" . _("Expiry Date:") . " " . $invitationObject->expiry . " UTC<br>" . _("Activations remaining:") . " " . sprintf(_("%d of %d"), $invitationObject->activationsRemaining, $invitationObject->activationsTotal) . "</td>"; | 
                                                                                                            
                                                            |  | 537 | +                            $tokenHtmlBuffer .= "<td>"._("Expiry Date:")." ".$invitationObject->expiry." UTC<br>"._("Activations remaining:")." ".sprintf(_("%d of %d"), $invitationObject->activationsRemaining, $invitationObject->activationsTotal)."</td>"; | 
                                                                                                            
                                                            | 538 | 538 |                              $tokenHtmlBuffer .= "<td>" | 
                                                                                                            
                                                            | 539 | 539 |                                      . $formtext | 
                                                                                                            
                                                            | 540 |  | -                                    . "<input type='hidden' name='invitationtoken' value='" . $invitationObject->invitationTokenString . "'/>" | 
                                                                                                            
                                                            | 541 |  | -                                    . "<button type='submit' name='command' value='" . \web\lib\common\FormElements::BUTTON_REVOKEINVITATION . "' class='delete'>" . _("Revoke") . "</button></form>" | 
                                                                                                            
                                                            |  | 540 | +                                    . "<input type='hidden' name='invitationtoken' value='".$invitationObject->invitationTokenString."'/>" | 
                                                                                                            
                                                            |  | 541 | +                                    . "<button type='submit' name='command' value='".\web\lib\common\FormElements::BUTTON_REVOKEINVITATION."' class='delete'>"._("Revoke")."</button></form>" | 
                                                                                                            
                                                            | 542 | 542 |                                      . "</td></tr>"; | 
                                                                                                            
                                                            | 543 | 543 |                              break; | 
                                                                                                            
                                                            | 544 | 544 |                          case core\SilverbulletInvitation::SB_TOKENSTATUS_EXPIRED: | 
                                                                                                                                                        
                                                        |  | @@ -554,10 +554,10 @@  discard block | 
                                                    
                                                        |  |  |  block discarded – undo | 
                                                                                                                                                                                                                    
                                                            | 554 | 554 |                  } | 
                                                                                                            
                                                            | 555 | 555 |                  ${$outputBuffer} .= "<td>$formtext | 
                                                                                                            
                                                            | 556 | 556 |                      <div class='sb-date-container' style='min-width: 200px;'> | 
                                                                                                            
                                                            | 557 |  | -                        <span><input type='text' maxlength='19' class='sb-date-picker' name='userexpiry' value='" . $profile->getUserExpiryDate($oneUserId) . "'> (UTC)</span> | 
                                                                                                            
                                                            |  | 557 | +                        <span><input type='text' maxlength='19' class='sb-date-picker' name='userexpiry' value='".$profile->getUserExpiryDate($oneUserId)."'> (UTC)</span> | 
                                                                                                            
                                                            | 558 | 558 |                      </div> | 
                                                                                                            
                                                            | 559 | 559 |                      <input type='hidden' name='userid' value='$oneUserId'/> | 
                                                                                                            
                                                            | 560 |  | -                    <button type='submit' name='command' value='" . \web\lib\common\FormElements::BUTTON_CHANGEUSEREXPIRY . "'>" . _("Update") . "</button> | 
                                                                                                            
                                                            |  | 560 | +                    <button type='submit' name='command' value='".\web\lib\common\FormElements::BUTTON_CHANGEUSEREXPIRY."'>"._("Update")."</button> | 
                                                                                                            
                                                            | 561 | 561 |                      </form> | 
                                                                                                            
                                                            | 562 | 562 |                  </td> | 
                                                                                                            
                                                            | 563 | 563 |                  <td> | 
                                                                                                                                                        
                                                        |  | @@ -565,33 +565,33 @@  discard block | 
                                                    
                                                        |  |  |  block discarded – undo | 
                                                                                                                                                                                                                    
                                                            | 565 | 565 |   | 
                                                                                                            
                                                            | 566 | 566 |                  if ($hasOnePendingInvite || count($validCerts) > 0) { | 
                                                                                                            
                                                            | 567 | 567 |                      $deletionText = sprintf(_("All of the currently active devices will stop functioning with %s. This cannot be undone. While the user can be re-activated later, they will then need to be re-provisioned with new invitation tokens. Are you sure you want to do this?"), CONFIG_CONFASSISTANT['CONSORTIUM']['display_name']); | 
                                                                                                            
                                                            | 568 |  | -                    ${$outputBuffer} .= $formtext . " | 
                                                                                                            
                                                            |  | 568 | +                    ${$outputBuffer} .= $formtext." | 
                                                                                                            
                                                            | 569 | 569 |                                      <input type='hidden' name='userid' value='$oneUserId'/> | 
                                                                                                            
                                                            | 570 | 570 |                                      <button type='submit' " | 
                                                                                                            
                                                            | 571 | 571 |                              . "name='command' " | 
                                                                                                            
                                                            | 572 |  | -                            . "value='" . \web\lib\common\FormElements::BUTTON_DEACTIVATEUSER . "' " | 
                                                                                                            
                                                            |  | 572 | +                            . "value='".\web\lib\common\FormElements::BUTTON_DEACTIVATEUSER."' " | 
                                                                                                            
                                                            | 573 | 573 |                              . "class='delete' " | 
                                                                                                            
                                                            | 574 |  | -                            . ( count($validCerts) > 0 ? "onclick='return confirm(\"" . $deletionText . "\")' " : "" ) | 
                                                                                                            
                                                            |  | 574 | +                            . (count($validCerts) > 0 ? "onclick='return confirm(\"".$deletionText."\")' " : "") | 
                                                                                                            
                                                            | 575 | 575 |                              . ">" | 
                                                                                                            
                                                            | 576 | 576 |                              . _("Deactivate User") | 
                                                                                                            
                                                            | 577 | 577 |                              . "</button> | 
                                                                                                            
                                                            | 578 | 578 |                                  </form>"; | 
                                                                                                            
                                                            | 579 | 579 |                  } | 
                                                                                                            
                                                            | 580 |  | -                ${$outputBuffer} .= "<form method='post' action='inc/userStats.inc.php?inst_id=" . $profile->institution . "&profile_id=" . $profile->identifier . "&user_id=$oneUserId' onsubmit='popupStatsWindow(this); return false;' accept-charset='UTF-8'> | 
                                                                                                            
                                                            | 581 |  | -                    <button type='submit'>" . _("Show Authentication Records") . "</button> | 
                                                                                                            
                                                            |  | 580 | +                ${$outputBuffer} .= "<form method='post' action='inc/userStats.inc.php?inst_id=".$profile->institution."&profile_id=".$profile->identifier."&user_id=$oneUserId' onsubmit='popupStatsWindow(this); return false;' accept-charset='UTF-8'> | 
                                                                                                            
                                                            |  | 581 | +                    <button type='submit'>"._("Show Authentication Records")."</button> | 
                                                                                                            
                                                            | 582 | 582 |                  </form>"; | 
                                                                                                            
                                                            | 583 | 583 |                  if (new DateTime() < new DateTime($expiryDate)) { // current user, allow sending new token | 
                                                                                                            
                                                            | 584 |  | -                    ${$outputBuffer} .= $formtext . " | 
                                                                                                            
                                                            |  | 584 | +                    ${$outputBuffer} .= $formtext." | 
                                                                                                            
                                                            | 585 | 585 |                      <input type='hidden' name='userid' value='$oneUserId'/> | 
                                                                                                            
                                                            | 586 |  | -                    <button type='submit' name='command' value='" . \web\lib\common\FormElements::BUTTON_NEWINVITATION . "'>" . _("New Invitation") . "</button> | 
                                                                                                            
                                                            | 587 |  | -                    <label>" . _("Activations:") . " | 
                                                                                                            
                                                            |  | 586 | +                    <button type='submit' name='command' value='".\web\lib\common\FormElements::BUTTON_NEWINVITATION."'>"._("New Invitation")."</button> | 
                                                                                                            
                                                            |  | 587 | +                    <label>" . _("Activations:")." | 
                                                                                                            
                                                            | 588 | 588 |                          <input type='text' name='invitationsquantity' value='5' maxlength='3' style='width: 30px;'/> | 
                                                                                                            
                                                            | 589 | 589 |                      </label> | 
                                                                                                            
                                                            | 590 | 590 |                      </form>"; | 
                                                                                                            
                                                            | 591 | 591 |                  } elseif (count($profile->getUserAuthRecords($oneUserId)) == 0) { // previous user; if there are NO authentication records, allow full deletion - otherwise, need to keep user trace for abuse handling | 
                                                                                                            
                                                            | 592 |  | -                    ${$outputBuffer} .= $formtext . " | 
                                                                                                            
                                                            |  | 592 | +                    ${$outputBuffer} .= $formtext." | 
                                                                                                            
                                                            | 593 | 593 |                      <input type='hidden' name='userid' value='$oneUserId'/> | 
                                                                                                            
                                                            | 594 |  | -                    <button type='submit' class='delete' name='command' value='" . \web\lib\common\FormElements::BUTTON_DELETE . "'>" . _("Delete User") . "</button> | 
                                                                                                            
                                                            |  | 594 | +                    <button type='submit' class='delete' name='command' value='".\web\lib\common\FormElements::BUTTON_DELETE."'>"._("Delete User")."</button> | 
                                                                                                            
                                                            | 595 | 595 |                      </form>"; | 
                                                                                                            
                                                            | 596 | 596 |                  } | 
                                                                                                            
                                                            | 597 | 597 |                  ${$outputBuffer} .= "</div> | 
                                                                                                                                                        
                                                        |  | @@ -623,13 +623,13 @@  discard block | 
                                                    
                                                        |  |  |  block discarded – undo | 
                                                                                                                                                                                                                    
                                                            | 623 | 623 |                                      . ' If all accounts shown as active above are indeed still valid, please check the box below and push "Save".' | 
                                                                                                            
                                                            | 624 | 624 |                                      . ' If any of the accounts are stale, please deactivate them by pushing the corresponding button before doing this.'), CONFIG_CONFASSISTANT['SILVERBULLET']['gracetime'] ?? core\ProfileSilverbullet::SB_ACKNOWLEDGEMENT_REQUIRED_DAYS); | 
                                                                                                            
                                                            | 625 | 625 |   | 
                                                                                                            
                                                            | 626 |  | -                    echo $formtext . "<div style='padding-bottom: 20px;'>" | 
                                                                                                            
                                                            |  | 626 | +                    echo $formtext."<div style='padding-bottom: 20px;'>" | 
                                                                                                            
                                                            | 627 | 627 |                      . " | 
                                                                                                            
                                                            | 628 | 628 |                      <p>$acknowledgeText</p> | 
                                                                                                            
                                                            | 629 | 629 |                      <input type='checkbox' name='acknowledge' value='true'> | 
                                                                                                            
                                                            | 630 |  | -                    <label>" . sprintf(_("I have verified that all configured users are still eligible for %s."), CONFIG_CONFASSISTANT['CONSORTIUM']['display_name']) . "</label> | 
                                                                                                            
                                                            |  | 630 | +                    <label>".sprintf(_("I have verified that all configured users are still eligible for %s."), CONFIG_CONFASSISTANT['CONSORTIUM']['display_name'])."</label> | 
                                                                                                            
                                                            | 631 | 631 |                  </div> | 
                                                                                                            
                                                            | 632 |  | -                <button type='submit' name='command' value='" . \web\lib\common\FormElements::BUTTON_ACKUSERELIGIBILITY . "'>" . _("Save") . "</button></form>"; | 
                                                                                                            
                                                            |  | 632 | +                <button type='submit' name='command' value='" . \web\lib\common\FormElements::BUTTON_ACKUSERELIGIBILITY."'>"._("Save")."</button></form>"; | 
                                                                                                            
                                                            | 633 | 633 |                  } | 
                                                                                                            
                                                            | 634 | 634 |                  ?> | 
                                                                                                            
                                                            | 635 | 635 |              </div> |