302 lines
9.5 KiB
PHP
302 lines
9.5 KiB
PHP
<?php
|
|
/**
|
|
* FileMaker API for PHP
|
|
*
|
|
* @package FileMaker
|
|
*
|
|
* Copyright © 2005-2007, FileMaker, Inc. All rights reserved.
|
|
* NOTE: Use of this source code is subject to the terms of the FileMaker
|
|
* Software License which accompanies the code. Your use of this source code
|
|
* signifies your agreement to such license terms and conditions. Except as
|
|
* expressly granted in the Software License, no other copyright, patent, or
|
|
* other intellectual property license or right is granted, either expressly or
|
|
* by implication, by FileMaker.
|
|
*/
|
|
|
|
/**#@+
|
|
* @ignore Load delegate.
|
|
*/
|
|
require_once dirname(__FILE__) . '/Implementation/RecordImpl.php';
|
|
/**#@-*/
|
|
|
|
/**
|
|
* Default Record class that represents each record of a result set.
|
|
*
|
|
* From a Record object, you can get field data, edit and delete the record,
|
|
* get its parent record, get its related record set, and create related
|
|
* records.
|
|
*
|
|
* Instead of this class, you can specify a different class to use for Record
|
|
* objects. To specify the record class to use, open the
|
|
* FileMaker/conf/filemaker-api.php configuration file where the API is
|
|
* installed. Then set $__FM_CONFIG['recordClass'] to the name of the record
|
|
* class to use. The class you specify should be a subclass of the
|
|
* FileMaker_Record base class or encapsulate its functionality. In PHP 5,
|
|
* this class would implement an interface that alternate classes would be
|
|
* required to implement as well.
|
|
*
|
|
* @package FileMaker
|
|
*/
|
|
class FileMaker_Record
|
|
{
|
|
/**
|
|
* The Implementation that implements this record.
|
|
*
|
|
* @var FileMaker_Record_Implementation
|
|
* @access private
|
|
*/
|
|
var $_impl;
|
|
|
|
/**
|
|
* Record object constructor.
|
|
*
|
|
* @param FileMaker_Layout|FileMaker_RelatedSet Specify either the Layout
|
|
* object associated with this record or the Related Set object
|
|
* that this record is a member of.
|
|
*/
|
|
function FileMaker_Record(&$layout)
|
|
{
|
|
$this->_impl = new FileMaker_Record_Implementation($layout);
|
|
}
|
|
|
|
/**
|
|
* Returns the layout this record is associated with.
|
|
*
|
|
* @return FileMaker_Layout This record's layout.
|
|
*/
|
|
function &getLayout()
|
|
{
|
|
return $this->_impl->getLayout();
|
|
}
|
|
|
|
/**
|
|
* Returns a list of the names of all fields in the record.
|
|
*
|
|
* Only the field names are returned. If you need additional
|
|
* information, examine the Layout object provided by the
|
|
* parent object's {@link FileMaker_Result::getLayout()} method.
|
|
*
|
|
* @return array List of field names as strings.
|
|
*/
|
|
function getFields()
|
|
{
|
|
return $this->_impl->getFields();
|
|
}
|
|
|
|
/**
|
|
* Returns the HTML-encoded value of the specified field.
|
|
*
|
|
* This method converts some special characters in the field value to
|
|
* HTML entities. For example, '&', '"', '<', and '>' are converted to
|
|
* '&', '"', '<', and '>', respectively.
|
|
*
|
|
* @param string $field Name of field.
|
|
* @param integer $repetition Field repetition number to get.
|
|
* Defaults to the first repetition.
|
|
*
|
|
* @return string Encoded field value.
|
|
*/
|
|
function getField($field, $repetition = 0)
|
|
{
|
|
return $this->_impl->getField($field, $repetition);
|
|
}
|
|
|
|
/**
|
|
* Returns the unencoded value of the specified field.
|
|
*
|
|
* This method does not convert special characters in the field value to
|
|
* HTML entities.
|
|
*
|
|
* @param string $field Name of field.
|
|
* @param integer $repetition Field repetition number to get.
|
|
* Defaults to the first repetition.
|
|
*
|
|
* @return string Unencoded field value.
|
|
*/
|
|
function getFieldUnencoded($field, $repetition = 0)
|
|
{
|
|
return $this->_impl->getFieldUnencoded($field, $repetition);
|
|
}
|
|
|
|
/**
|
|
* Returns the value of the specified field as a UNIX
|
|
* timestamp.
|
|
*
|
|
* If the field is a date field, the timestamp is
|
|
* for the field date at midnight. It the field is a time field,
|
|
* the timestamp is for that time on January 1, 1970. Timestamp
|
|
* (date and time) fields map directly to the UNIX timestamp. If the
|
|
* specified field is not a date or time field, or if the timestamp
|
|
* generated would be out of range, then this method returns a
|
|
* FileMaker_Error object instead.
|
|
*
|
|
* @param string $field Name of the field.
|
|
* @param integer $repetition Field repetition number to get.
|
|
* Defaults to the first repetition.
|
|
*
|
|
* @return integer Timestamp value.
|
|
*/
|
|
function getFieldAsTimestamp($field, $repetition = 0)
|
|
{
|
|
return $this->_impl->getFieldAsTimestamp($field, $repetition);
|
|
}
|
|
|
|
/**
|
|
* Sets the value of $field.
|
|
*
|
|
* @param string $field Name of the field.
|
|
* @param string $value New value of the field.
|
|
* @param integer $repetition Field repetition number to set.
|
|
* Defaults to the first repetition.
|
|
*/
|
|
function setField($field, $value, $repetition = 0)
|
|
{
|
|
return $this->_impl->setField($field, $value, $repetition);
|
|
}
|
|
|
|
/**
|
|
* Sets the new value for a date, time, or timestamp field from a
|
|
* UNIX timestamp value.
|
|
*
|
|
* If the field is not a date or time field, then returns an error.
|
|
* Otherwise, returns TRUE.
|
|
*
|
|
* If layout data for the target of this command has not already
|
|
* been loaded, calling this method loads layout data so that
|
|
* the type of the field can be checked.
|
|
*
|
|
* @param string $field Name of the field to set.
|
|
* @param string $timestamp Timestamp value.
|
|
* @param integer $repetition Field repetition number to set.
|
|
* Defaults to the first repetition.
|
|
*/
|
|
function setFieldFromTimestamp($field, $timestamp, $repetition = 0)
|
|
{
|
|
return $this->_impl->setFieldFromTimestamp($field, $timestamp, $repetition);
|
|
}
|
|
|
|
/**
|
|
* Returns the record ID of this object.
|
|
*
|
|
* @return string Record ID.
|
|
*/
|
|
function getRecordId()
|
|
{
|
|
return $this->_impl->getRecordId();
|
|
}
|
|
|
|
/**
|
|
* Returns the modification ID of this record.
|
|
*
|
|
* The modification ID is an incremental counter that specifies the current
|
|
* version of a record. See the {@link FileMaker_Command_Edit::setModificationId()}
|
|
* method.
|
|
*
|
|
* @return integer Modification ID.
|
|
*/
|
|
function getModificationId()
|
|
{
|
|
return $this->_impl->getModificationId();
|
|
}
|
|
|
|
/**
|
|
* Returns any Record objects in the specified portal or a FileMaker_Error
|
|
* object if there are no related records
|
|
*
|
|
* @param string $relatedSet Name of the portal to return records from.
|
|
*
|
|
* @return array Array of FileMaker_Record objects from $relatedSet|FileMaker_Error object.
|
|
*/
|
|
function &getRelatedSet($relatedSet)
|
|
{
|
|
return $this->_impl->getRelatedSet($relatedSet);
|
|
}
|
|
|
|
/**
|
|
* Creates a new record in the specified portal.
|
|
*
|
|
* @param string $relatedSet Name of the portal to create a new record in.
|
|
*
|
|
* @return FileMaker_Record A new, blank record.
|
|
*/
|
|
function &newRelatedRecord($relatedSet)
|
|
{
|
|
return $this->_impl->newRelatedRecord($this, $relatedSet);
|
|
}
|
|
|
|
/**
|
|
* Returns the parent record, if this record is a child record in a portal.
|
|
*
|
|
* @return FileMaker_Record Parent record.
|
|
*/
|
|
function &getParent()
|
|
{
|
|
return $this->_impl->getParent();
|
|
}
|
|
|
|
/**
|
|
* Pre-validates either a single field or the entire record.
|
|
*
|
|
* This method uses the pre-validation rules that are enforceable by the
|
|
* PHP engine -- for example, type rules, ranges, and four-digit dates.
|
|
* Rules such as "unique" or "existing," or validation by calculation
|
|
* field, cannot be pre-validated.
|
|
*
|
|
* If you pass the optional $fieldName argument, only that field is
|
|
* pre-validated. Otherwise, the record is pre-validated as if commit()
|
|
* were called with "Enable record data pre-validation" selected in
|
|
* FileMaker Server Admin Console. If pre-validation passes, validate()
|
|
* returns TRUE. If pre-validation fails, then validate() returns a
|
|
* FileMaker_Error_Validation object containing details about what failed
|
|
* to pre-validate.
|
|
*
|
|
* @param string $fieldName Name of field to pre-validate. If empty,
|
|
* pre-validates the entire record.
|
|
*
|
|
* @return boolean|FileMaker_Error_Validation TRUE, if pre-validation
|
|
* passes for $value. Otherwise, an Error Validation object.
|
|
*/
|
|
function validate($fieldName = null)
|
|
{
|
|
return $this->_impl->validate($fieldName);
|
|
}
|
|
|
|
/**
|
|
* Saves any changes to this record in the database on the Database Server.
|
|
*
|
|
* @return boolean|FileMaker_Error TRUE, if successful. Otherwise, an Error
|
|
* object.
|
|
*/
|
|
function commit()
|
|
{
|
|
return $this->_impl->commit();
|
|
}
|
|
|
|
/**
|
|
* Deletes this record from the database on the Database Server.
|
|
*
|
|
* @return FileMaker_Result Response object.
|
|
*/
|
|
function delete()
|
|
{
|
|
return $this->_impl->delete();
|
|
}
|
|
|
|
|
|
/**
|
|
* Gets a specific related record.
|
|
*
|
|
* @access private
|
|
*
|
|
* @param string $relatedSetName Name of the portal.
|
|
* @param string $recordId Record ID of the record in the portal.
|
|
*
|
|
* @return FileMaker_Response Response object.
|
|
*/
|
|
function getRelatedRecordById($relatedSetName, $recordId)
|
|
{
|
|
return $this->_impl->getRelatedRecordById($relatedSetName, $recordId);
|
|
}
|
|
|
|
}
|