function qrcode(
      $data = '',
      $file_name = '',
      $image_type = "P",
      $ecc_level = "Q",
      $module_size = 4,
      $version = 0,
      $structure_m = 0,
      $structure_n = 0,
      $parity = 0,
      $original_data = ''
  ) {
      $result = '';

      $qrcode_folder = $this->GetQrCodeFolder();

      $path = $qrcode_folder.'data';
      $image_path = $qrcode_folder.'image';
      
      if (!(file_exists($path) && file_exists($image_path))) {
          $this->WriteLog("Error: QRcode files or folders are not available", FALSE, FALSE, 39, 'System', '', 3);
      } else {
          $result = MultiotpQrcode($data, $file_name, $image_type, $ecc_level, $module_size, $version, $structure_m, $structure_n, $parity, $original_data, $path, $image_path);

          $output_name = NULL;
          ob_start();
          
          if (('' != trim($file_name)) && ('binary' != trim($file_name)) && ('' != $this->GetLinuxFileMode())) {
              if (file_exists($file_name)) {
                  @chmod($file_name, octdec($this->GetLinuxFileMode()));
              }
          }
      }
      return $result;
  }