<?php
class FileTxt {
var $file;
var $index;
public
function set_file( $file ) {
$this->file = $file;
}
function null_write( $new ) {
$f = fopen( $this->file, "w" );
flock( $f, LOCK_EX );
fputs( $f, $new );
fclose( $f );
}
function add_write( $new ) {
$f = fopen( $this->file, "a" );
flock( $f, LOCK_EX );
fputs( $f, $new );
fclose( $f );
}
function make_array( $line ) {
$array = explode( "\x0E", $line );
return $array;
}
function join_array( $line ) {
$array = join( "\x0E", $line );
return $array;
}
function getlines() {
$f = file( $this->file );
return count( $f );
}
function next_line() {
$this->index = $this->index++;
return $this->get();
}
function prev_line() {
$this->index = $this->index--;
return $this->get();
}
function get() {
$f = fopen( $this->file, "r" );
flock( $f, LOCK_SH );
for ( $i = 0; $i <= $this->index; $i++ ) {
$rec = fgets( $f, 1024 );
}
$line = explode( "\x0E", $rec );
fclose( $f );
return $line;
}
function get_big_file() {
$f = fopen( $this->file, "r" );
flock( $f, LOCK_SH );
for ( $i = 0; $i <= $this->index; $i++ ) {
$rec = fgets( $f, 1024 * 5 );
}
$line = explode( "\x0E", $rec );
fclose( $f );
return $line;
}
function read_file() {
if ( file_exists( $this->file ) ) {
$line = file( $this->file );
}
return $line;
}
function openFile() {
if ( file_exists( $this->file ) ) {
$f = file( $this->file );
$lines = array();
foreach ( $f as $rawline ) {
$tmpline = explode( "\x0E", $rawline );
array_push( $lines, $tmpline );
}
}
return $lines;
}
function overwrite( $array ) {
$newline = implode( "\x0E", $array );
$f = fopen( $this->file, "w" );
flock( $f, LOCK_EX );
fputs( $f, $newline );
fclose( $f );
}
function add_line( $array, $check_n = 1 ) {
$s = implode( "\x0E", $array );
$f = fopen( $this->file, "a" );
flock( $f, LOCK_EX );
fputs( $f, $s );
if ( $check_n == 1 )fputs( $f, "\n" );
fclose( $f );
}
function insert_line( $array ) {
$newfile = implode( "\x0E", $array );
$f = fopen( $this->file, "r" );
flock( $f, LOCK_SH );
while ( $line = fgets( $f, 1024 ) ) {
$newfile .= $line;
}
fclose( $f );
$f = fopen( $this->file, "w" );
flock( $f, LOCK_EX );
fputs( $f, $newfile );
fclose( $f );
}
function update( $column, $query_string, $update_array ) {
$update_string = implode( "\x0E", $update_array );
$newfile = "";
$fc = file( $this->file );
$f = fopen( $this->file, "r" );
flock( $f, LOCK_SH );
for ( $i = 0; $i < count( $fc ); $i++ ) {
$list = explode( "\x0E", $fc[ $i ] );
if ( $list[ $column ] != $query_string ) {
$newfile = $newfile . chop( $fc[ $i ] ) . "\n";
} else {
$newfile = $newfile . $update_string;
}
}
fclose( $f );
$f = fopen( $this->file, "w" );
flock( $f, LOCK_EX );
fputs( $f, $newfile );
fclose( $f );
}
function update2( $column, $query_string, $update_array ) {
$newline = implode( "\x0E", $update_array );
$newfile = "";
$f = fopen( $this->file, "r" );
flock( $f, LOCK_SH );
while ( $line = fgets( $f, 1024 ) ) {
$tmpLine = explode( "\x0E", $line );
if ( $tmpLine[ $column ] == $query_string ) {
$newfile .= $newline;
} else {
$newfile .= $line;
}
}
fclose( $f );
$f = fopen( $this->file, "w" );
flock( $f, LOCK_EX );
fputs( $f, $newfile );
fclose( $f );
}
function delete( $column, $query_string ) {
$newfile = "";
$fc = file( $this->file );
$f = fopen( $this->file, "r" );
flock( $f, LOCK_SH );
for ( $i = 0; $i < count( $fc ); $i++ ) {
$list = explode( "\x0E", $fc[ $i ] );
if ( $list[ $column ] != $query_string ) {
$newfile = $newfile . chop( $fc[ $i ] ) . "\n";
}
}
fclose( $f );
$f = fopen( $this->file, "w" );
flock( $f, LOCK_EX );
fputs( $f, $newfile );
fclose( $f );
}
function delete2( $column, $query_string ) {
$newfile = "";
$f = fopen( $this->file, "r" );
flock( $f, LOCK_SH );
while ( $line = fgets( $f, 1024 ) ) {
$tmpLine = explode( "\x0E", $line );
if ( $tmpLine[ $column ] != $query_string ) {
$newfile .= $line;
}
}
fclose( $f );
$f = fopen( $this->file, "w" );
flock( $f, LOCK_EX );
fputs( $f, $newfile );
fclose( $f );
}
function get_max_value( $column ) {
$tlines = file( $this->file );
for ( $i = 0; $i <= count( $tlines ); $i++ ) {
$line = explode( "\x0E", $tlines[ $i ] );
$get_value[] = $line[ $column ];
}
$get_max_value = max( $get_value );
return $get_max_value;
}
function select( $column, $query_string ) {
$tline = $this->openfile();
$lines = array();
foreach ( $tline as $line ) {
if ( $line[ $column ] == $query_string ) {
array_push( $lines, $line );
}
}
return $lines;
}
function select2( $column, $query_string ) {
if ( file_exists( $this->file ) ) {
$tline = $this->read_file();
foreach ( $tline as $tmpLine ) {
$line = $this->make_array( $tmpLine );
if ( $line[ $column ] == $query_string ) {
$lines[] = $tmpLine;
}
}
}
return $lines;
}
function select_line( $column, $query_string ) {
$tline = $this->read_file();
foreach ( $tline as $tmpLine ) {
$line = $this->make_array( $tmpLine );
if ( $line[ $column ] == $query_string ) {
return $line;
break;
}
}
}
function select_next_prev_line( $column, $query_string, $next_prev ) {
$tline = $this->read_file();
$line_key_end = count( $tline ) - 1;
$line_key = -1;
foreach ( $tline as $tmpLine ) {
$line_key++;
$line = $this->make_array( $tmpLine );
if ( $next_prev == 1 ) { if ( $line[ $column ] == $query_string ) {
if ( $line_key == 0 ) {
return 0;
} else {
$line_key_up = $line_key - 1;
return $up_line;
}
} else {
$up_line = $line;
}
} elseif ( $next_prev == 2 ) { if ( $line[ $column ] == $query_string ) {
if ( $line_key == $line_key_end ) {
return 0;
} else {
$line_key_down = $line_key + 1;
break;
}
}
} else {
return 0;
}
}
$down_line = $this->make_array( $tline[ $line_key_down ] );
return $down_line;
}
}
?>