Beispiel #1
0
 function parseResultSetFromFileForAppend($fd)
 {
     $start = getmicrotime();
     $rs = new ResultSet();
     // COLUMN NAMES
     // read with a maximum of 1000 bytes, until there is a newline included (or eof)
     $buf = "";
     while (is_false(strstr($buf, "\n"))) {
         $buf .= fgets($fd, 1000);
         if (feof($fd)) {
             print_error_msg("Invalid Table File!<br>");
             return null;
         }
     }
     // remove newline
     remove_last_char($buf);
     $rec = $this->parseRowFromLine($buf);
     $rs->setColumnNames($rec);
     // COLUMN TYPES
     // read with a maximum of 1000 bytes, until there is a newline included (or eof)
     $buf = "";
     while (is_false(strstr($buf, "\n"))) {
         $buf .= fgets($fd, 1000);
         if (feof($fd)) {
             print_error_msg("Invalid Table File!<br>");
             return null;
         }
     }
     // remove newline
     remove_last_char($buf);
     $rec = $this->parseRowFromLine($buf);
     $rs->setColumnTypes($rec);
     // COLUMN DEFAULT VALUES
     // read with a maximum of 1000 bytes, until there is a newline included (or eof)
     $buf = "";
     while (is_false(strstr($buf, "\n"))) {
         $buf .= fgets($fd, 1000);
         if (feof($fd)) {
             break;
             // there's no newline after the colum types => empty table
         }
     }
     // remove newline
     if (last_char($buf) == "\n") {
         remove_last_char($buf);
     }
     $rec = $this->parseRowFromLine($buf);
     $rs->setColumnDefaultValues($rec);
     // get file size
     fseek($fd, 0, SEEK_END);
     $size = ftell($fd);
     $lastRecSize = min($size, ASSUMED_RECORD_SIZE);
     $lastRecPos = false;
     while (is_false($lastRecPos)) {
         fseek($fd, -$lastRecSize, SEEK_END);
         $buf = fread($fd, $lastRecSize);
         $lastRecSize = $lastRecSize * 2;
         $lastRecSize = min($size, $lastRecSize);
         if ($lastRecSize < 1) {
             print_error_message("lastRecSize should not be 0! Contact developer please!");
         }
         $lastRecPos = $this->getLastRecordPosInString($buf);
         if (TXTDBAPI_VERBOSE_DEBUG) {
             echo "<hr>pass! <br>";
             echo "lastRecPos: " . $lastRecPos . "<br>";
             echo "buf: " . $buf . "<br>";
         }
     }
     $buf = trim(substr($buf, $lastRecPos));
     verbose_debug_print("buf after substr() and trim(): " . $buf . "<br>");
     $rs->reset();
     $row = $this->parseRowFromLine($buf);
     if (TXTDBAPI_VERBOSE_DEBUG) {
         echo "parseResultSetFromFileForAppend(): last Row:<br>";
         print_r($row);
         echo "<br>";
     }
     $rs->appendRow($row);
     $rs->setColumnAliases(create_array_fill(count($rs->colNames), ""));
     $rs->setColumnTables(create_array_fill(count($rs->colNames), ""));
     $rs->setColumnTableAliases(create_array_fill(count($rs->colNames), ""));
     $rs->setColumnFunctions(create_array_fill(count($rs->colNames), ""));
     $rs->colFuncsExecuted = create_array_fill(count($rs->colNames), false);
     debug_print("<i>III: parseResultSetFromFileForAppend: " . (getmicrotime() - $start) . " seconds elapsed</i><br>");
     return $rs;
 }
Beispiel #2
0
 $colCount = $_POST['colCount'];
 if (isset($_POST['abort'])) {
     echo "<br>";
     echo "Aborted, klick <a href='" . $_SERVER['PHP_SELF'] . "'> here </a> to continue";
     $_SESSION['mode'] = 'choose_table';
     unset($_SESSION['table_file']);
     echo "<meta http-equiv='refresh' content='0;URL=" . $_SERVER['PHP_SELF'] . "'>";
     exit;
 }
 $rs->setColumnNames(prep_val_save_arr($colName));
 $rs->setColumnTypes(prep_val_save_arr($colType));
 $rs->setColumnDefaultValues(prep_val_save_arr($colDefVal));
 $rs->setColumnAliases(create_array_fill(count($rs->colNames), ""));
 $rs->setColumnTables(create_array_fill(count($rs->colNames), ""));
 $rs->setColumnTableAliases(create_array_fill(count($rs->colNames), ""));
 $rs->setColumnFunctions(create_array_fill(count($rs->colNames), ""));
 $rs->colFuncsExecuted = create_array_fill(count($rs->colNames), false);
 $rowsSaved = 0;
 for ($i = 0; $i < $rowCount; ++$i) {
     if (isset($_POST['delete' . $i])) {
         echo "Row {$i} deleted!<br>";
     } else {
         if (isset($_POST['dup' . $i])) {
             echo "Row {$i} duplicated!<br>";
             $rowsSaved++;
             $rs->appendRow(prep_val_save_arr($vals[$i]));
         }
         $rowsSaved++;
         $rs->appendRow(prep_val_save_arr($vals[$i]));
     }
 }