Code Duplication    Length = 18-19 lines in 2 locations

include/classes/user.class.php 2 locations

@@ 448-466 (lines=19) @@
445
    $aPassword = explode('$', $strPasswordHash);
446
    count($aPassword) == 1 ? $password_hash = $this->getHash($current, 0) : $password_hash = $this->getHash($current, $aPassword[1], $aPassword[2]);
447
    $new = $this->getHash($new1, HASH_VERSION, bin2hex(openssl_random_pseudo_bytes(32)));
448
    if ($this->config['twofactor']['enabled'] && $this->config['twofactor']['options']['changepw']) {
449
      $tValid = $this->token->isTokenValid($userID, $strToken, 6);
450
      if ($tValid) {
451
        if ($this->token->deleteToken($strToken)) {
452
          $this->log->log("info", $this->getUserName($userID)." deleted change password token");
453
          // token deleted, continue
454
        } else {
455
          $this->log->log("warn", $this->getUserName($userID)." failed to delete the change password token");
456
          $this->setErrorMessage('Token deletion failed');
457
          return false;
458
        }
459
      } else {
460
        $this->log->log("error", $this->getUserName($userID)." attempted to use an invalid change password token");
461
        $this->setErrorMessage('Invalid token');
462
        return false;
463
      }
464
    }
465
    $stmt = $this->mysqli->prepare("UPDATE $this->table SET pass = ? WHERE ( id = ? AND pass = ? )");
466
    if ($this->checkStmt($stmt)) {
467
      $stmt->bind_param('sis', $new, $userID, $password_hash);
468
      $stmt->execute();
469
      if ($stmt->errno == 0 && $stmt->affected_rows === 1) {
@@ 541-558 (lines=18) @@
538
    $donate = min(100, max(0, floatval($donate)));
539
540
    // twofactor - consume the token if it is enabled and valid
541
    if ($this->config['twofactor']['enabled'] && $this->config['twofactor']['options']['details']) {
542
      $tValid = $this->token->isTokenValid($userID, $strToken, 5);
543
      if ($tValid) {
544
        if ($this->token->deleteToken($strToken)) {
545
          $this->log->log("info", $this->getUserName($userID)." deleted account update token");
546
        } else {
547
          $this->setErrorMessage('Token deletion failed');
548
          $this->log->log("warn", $this->getUserName($userID)." updated their account details but failed to delete token");
549
          return false;
550
        }
551
      } else {
552
        $this->setErrorMessage('Invalid token');
553
        $this->log->log("warn", $this->getUserName($userID)." attempted to use an invalid token account update token");
554
        return false;
555
      }
556
    }
557
558
    // If we hide our email or it's not set, fetch current one to update
559
    if ($email == 'hidden' || $email == NULL)
560
      $email = $this->getUserEmailById($userID);
561
    // We passed all validation checks so update the account