155 lines
5.0 KiB
PHP

<?php
/**
* FileMaker API for PHP
*
* @package FileMaker
*
* Copyright © 2005-2009, 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 Include delegate.
*/
require_once dirname(__FILE__) . '/Implementation/CommandImpl.php';
/**#@-*/
/**
* Base Command class. Represents commands that add records, delete records,
* duplicate records, edit records, perform find requests, and perform
* ScriptMaker scripts.
*
* @package FileMaker
*/
class FileMaker_Command
{
/**
* Implementation. This is the object that actually implements the
* command base.
*
* @var FileMaker_Command_Implementation
* @access private
*/
var $_impl;
/**
* Requests that the command's result be returned in a layout different
* from the current layout.
*
* @param string $layout Layout to return results in.
*/
function setResultLayout($layout)
{
$this->_impl->setResultLayout($layout);
}
/**
* Sets a ScriptMaker script to be run after the Find result set is
* generated and sorted.
*
* @param string $scriptName Name of the ScriptMaker script to run.
* @param string $scriptParameters Any parameters to pass to the script.
*/
function setScript($scriptName, $scriptParameters = null)
{
$this->_impl->setScript($scriptName, $scriptParameters);
}
/**
* Sets a ScriptMaker script to be run before performing a command.
*
* @param string $scriptName Name of the ScriptMaker script to run.
* @param string $scriptParameters Any parameters to pass to the script.
*/
function setPreCommandScript($scriptName, $scriptParameters = null)
{
$this->_impl->setPreCommandScript($scriptName, $scriptParameters);
}
/**
* Sets a ScriptMaker script to be run after performing a Find command,
* but before sorting the result set.
*
* @param string $scriptName Name of the ScriptMaker script to run.
* @param string $scriptParameters Any parameters to pass to the script.
*/
function setPreSortScript($scriptName, $scriptParameters = null)
{
$this->_impl->setPreSortScript($scriptName, $scriptParameters);
}
/**
* Sets the PHP class that the API instantiates to represent records
* returned in any result set.
*
* The default is to use the provided FileMaker_Record class. Any
* substitute classes must provide the same API that FileMaker_Record does,
* either by extending it or re-implementing the necessary methods. The
* user is responsible for defining any custom class before the API
* needs to instantiate it.
*
* @param string $className Name of the class to represent records.
*/
function setRecordClass($className)
{
$this->_impl->setRecordClass($className);
}
/**
* Pre-validates either a single field or the entire command.
*
* 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 command is pre-validated as if execute()
* 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 command.
*
* @return boolean|FileMaker_Error_Validation TRUE, if pre-validation
* passes. Otherwise, an Error Validation object.
*/
function validate($fieldName = null)
{
return $this->_impl->validate($fieldName);
}
/**
* Executes the command.
*
* @return FileMaker_Result Result object.
*/
function execute()
{
return $this->_impl->execute();
}
/**
* Sets the record ID for this command.
*
* For Edit, Delete, and Duplicate commands, a record ID must be specified.
* It is also possible to find a single record by specifying its record
* ID. This method is ignored by Add and FindAny commands.
*
* @param string $recordId ID of record this command acts upon.
*/
function setRecordId($recordId)
{
$this->_impl->setRecordId($recordId);
}
}