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)==0) trigger_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; } ?>