josheli

More Knob? Unpossible! Find out what happened here...

Generate WordPerfect Documents in PHP

<?php
/*
$Id: WPhpMergeFile.php,v 1.3 2005/04/19 16:19:22 josheli Exp $
Example: see wphp-merge-demo.php
*/
include_once 'WPhpDocument.php';

class 
WPhpMergeFile extends WPhpDocument 
{

  var 
$records = array();
  var 
$fields = array();
  var 
$_currRec 0;

  function 
WPhpMergeFile($field_names = array()) 
  {
    
$this->_data '';
    if(!empty(
$field_names))
    {
      
$this->setFieldNames($field_names);
    }
  }

  function 
setFieldNames($field_names
  {
    if(empty(
$field_names) || !is_array($field_names))
    {
        return;
    }
    foreach(
$field_names as $field_name
    {
      
$this->addFieldName($field_name);
    }      
  }

  function 
addFieldName($field_name
  {
    if(!
in_array($field_name$this->fields))
    {
        
$this->fields[] = $field_name;
    }
  }

  function 
addFieldData($field_name$field_data$insert_at 0
  {
    if(!
in_array($field_name$this->fields))
    {
        return 
false;
    }

    
$insert_at = (int) $insert_at;

    if(
$insert_at 0)
    {
        
$record_number $insert_at;
    }
    else 
    {
      
$record_number $this->_currRec;
    }
    
$this->records[$record_number][$field_name] = $field_data;
  }

  function 
addRecord($record$insert_at 0
  {
    if(!
is_array($record))
    {
      return;
    }

    
$insert_at = (int) $insert_at;

    if(
$insert_at 0)
    {
        
$record_number $insert_at;
    }
    else 
    {
      ++
$this->_currRec;
      
$record_number $this->_currRec;
    }
    
    foreach(
$record as $name => $data
    {
      
$this->addFieldData($name$data$record_number);
    }
  }

  function 
modifyRecord($record$record_number
  {
    
$this->addRecord($record$record_number);
  }

  
/*
  override the parent method so we can insert the field names
  */
  
function getData() 
  {
    return 
$this->getFieldNameData().$this->getFieldData();
  }

  function 
getFieldData() 
  {
    
$data '';

    foreach(
$this->records as $rec_num => $record)
    {
      foreach(
$this->fields as $field
      {
        
$data .= $this->_convertText($record[$field]).MERGE_ENDFIELD.WP_HARD_EOL;
      }
      
$data .= MERGE_ENDRECORD.WP_HARD_EOL;
    }

    return 
$data;
  }

  function 
getFieldNameData() 
  {
    return 
MERGE_FIELDNAMES_ON implode(';'array_map(array(&$this'_convertText'), $this->fields)) . MERGE_FIELDNAMES_OFF MERGE_ENDRECORD WP_HARD_EOP;
  }

}


?>