Login   Register  
PHP Classes
elePHPant
Icontem

File: api_conversion.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Erwin Kooi  >  PHPXBase  >  api_conversion.php  >  Download  
File: api_conversion.php
Role: Application script
Content type: text/plain
Description: PHP dbase api implementation
Class: PHPXBase
Access dbf/foxpro files without PHP ext.
Author: By
Last change:
Date: 2006-01-22 04:31
Size: 5,036 bytes
 

Contents

Class file image Download
<?
/**
* ----------------------------------------------------------------
*            XBase
*            api_conversion.php    

*  Developer        : Erwin Kooi
*  released at      : Jan 2006
*  last modified by : Erwin Kooi
*  date modified    : Jan 2006
*
*  You're free to use this code as long as you don't alter it
*  Copyright (c) 2005 Cyane Dynamic Web Solutions
*  Info? Mail to info@cyane.nl

* --------------------------------------------------------------
*
* This file implements the default dBase functions as described in the PHP docs
*
**/

require_once "Column.class.php";
require_once 
"Record.class.php";
require_once 
"Table.class.php";
require_once 
"WritableTable.class.php";

function 
xbase_add_record($xbase_identifier=false,$record) { // - Add a record (array of values) to a dBase database
    
if (!($xbase=&xbase_getInstance($xbase_identifier))) return false;
    
$r =& $xbase->appendRecord();
    foreach (
$record as $i=>$v) {
        if (
is_object($i))
            
$r->setString($i,$v);
        else if (
is_numeric($i)) 
            
$r->setStringByIndex($i,$v);
        else 
            
$r->setStringByName($i,$v);
    }
    
$xbase->writeRecord();
}
function 
xbase_close($xbase_identifier=false) { // - Close a dBase database
    
if (!($xbase=&xbase_getInstance($xbase_identifier))) return false;
    
$xbase->close();
}
function 
xbase_create($filename,$fields) { // - Creates a dBase database
    
if ($xbase =& XBaseWritableTable::create($filename,$fields)) return xbase_addInstance($xbase);
    return 
false;
}
function 
xbase_delete_record($xbase_identifier=false,$record) { // - Deletes a record from a dBase database
    
if (!($xbase=&xbase_getInstance($xbase_identifier))) return false;
    
$xbase->moveTo($record-1);
    
$xbase->deleteRecord();
}
function 
xbase_get_header_info($xbase_identifier=false) { // - Get the header info of a dBase database
    
if (!($xbase=&xbase_getInstance($xbase_identifier))) return false;
    
$result = array();
    foreach (
$xbase->columns as $column) {
        
$result[] = array(
            
"name"=>$column->name
            
"type"=>$column->type
            
"length"=>$column->length
            
"precision"=>$column->decimalCount
            
"format"=>"%s"
            
"offset"=>$column->bytePos,
        );
    }
    return 
$result;
}
function 
xbase_get_record_with_names($xbase_identifier=false,$record) { // - Gets a record from a dBase database as an associative array 
    
if (!($xbase=&xbase_getInstance($xbase_identifier))) return false;
    
$r =& $xbase->moveTo($record-1);
    
$result = array();
    foreach (
$xbase->columns as $column) {
        
$result[$column->name] = $r->getString($column);
    }
    
$result["deleted"] = $r->isDeleted();
    return 
$result;
}
function 
xbase_get_record($xbase_identifier=false) { // - Gets a record from a dBase database
    
if (!($xbase=&xbase_getInstance($xbase_identifier))) return false;
    
$r =& $xbase->moveTo($record-1);
    
$result = array();
    foreach (
$xbase->columns as $column) {
        
$result[] = $r->getString($column);
    }
    
$result["deleted"] = $r->isDeleted();
    return 
$result;
}
function 
xbase_numfields($xbase_identifier=false) { // - Find out how many fields are in a dBase database 
    
if (!($xbase=&xbase_getInstance($xbase_identifier))) return false;
    return 
$xbase->getColumnCount();
}
function 
xbase_numrecords($xbase_identifier=false) { // - Find out how many records are in a dBase database 
    
if (!($xbase=&xbase_getInstance($xbase_identifier))) return false;
    return 
$xbase->getRecordCount();
}
function 
xbase_open($filename,$flags=0) { // - Opens a dBase database - flags : Typically 0 means read-only, 1 means write-only, and 2 means read and write
    
if ($flags==0) {
        
$xbase =& new XBaseTable($filename);
        if (!
$xbase->open()) return false;
    } else {
        
$xbase =& new XBaseWritableTable($filename);
        if (!
$xbase->openWrite()) return false;
    }
    return 
xbase_addInstance($xbase);
}
function 
xbase_pack($xbase_identifier=false) { // - Packs a dBase database
    
if (!($xbase=&xbase_getInstance($xbase_identifier))) return false;
    
$xbase->pack();
}
function 
xbase_replace_record($xbase_identifier=false,$record,$record_number) { // - Replace a record in a dBase database
    
if (!($xbase=&xbase_getInstance($xbase_identifier))) return false;
    
$r =& $xbase->moveTo($record_number-1);
    foreach (
$record as $i=>$v) {
        if (
is_object($i))
            
$r->setString($i,$v);
        else if (
is_numeric($i)) 
            
$r->setStringByIndex($i,$v);
        else 
            
$r->setStringByName($i,$v);
    }
    
$xbase->writeRecord();
}

/**
*    private
*/
$xbase_instances = array();
function &
xbase_getInstance($i=NULL) {
    global 
$xbase_instances;
    if (
sizeof($xbase_instances)==0trigger_error ("No xbases available"E_USER_ERROR);
    if (
is_null($i)) {
        
$result =& current($xbase_instances);
    } else {
        if (!@
$xbase_instances[$i]) trigger_error ($i." is an invalid xbase identifier"E_USER_ERROR);
        
$result =& $xbase_instances[$i];
    }
    return 
$result;
}
function 
xbase_addInstance(&$i) {
    global 
$xbase_instances;
    
$result sizeof($xbase_instances);
    
$xbase_instances[$result]=&$i;
    return 
$result;
}


?>