'); define('FILEMAKER_FIND_GTE', '>='); define('FILEMAKER_FIND_RANGE', '...'); define('FILEMAKER_FIND_DUPLICATES', '!'); define('FILEMAKER_FIND_TODAY', '//'); define('FILEMAKER_FIND_INVALID_DATETIME', '?'); define('FILEMAKER_FIND_CHAR', '@'); define('FILEMAKER_FIND_DIGIT', '#'); define('FILEMAKER_FIND_CHAR_WILDCARD', '*'); define('FILEMAKER_FIND_LITERAL', '""'); define('FILEMAKER_FIND_RELAXED', '~'); define('FILEMAKER_FIND_FIELDMATCH', '=='); /**#@-*/ /**#@+ * Find logical operator constants. * Use with the {@link FileMaker_Command_Find::setLogicalOperator()} * method. */ define('FILEMAKER_FIND_AND', 'and'); define('FILEMAKER_FIND_OR', 'or'); /**#@-*/ /**#@+ * Pre-validation rule constants. */ define('FILEMAKER_RULE_NOTEMPTY', 1); define('FILEMAKER_RULE_NUMERICONLY', 2); define('FILEMAKER_RULE_MAXCHARACTERS', 3); define('FILEMAKER_RULE_FOURDIGITYEAR', 4); define('FILEMAKER_RULE_TIMEOFDAY', 5); define('FILEMAKER_RULE_TIMESTAMP_FIELD', 6); define('FILEMAKER_RULE_DATE_FIELD', 7); define('FILEMAKER_RULE_TIME_FIELD', 8); /**#@-*/ /**#@+ * Sort direction constants. * Use with the {@link FileMaker_Command_Find::addSortRule()} and * {@link FileMaker_Command_CompoundFind::addSortRule()} methods. */ define('FILEMAKER_SORT_ASCEND', 'ascend'); define('FILEMAKER_SORT_DESCEND', 'descend'); /**#@-*/ /**#@+ * Logging level constants. */ define('FILEMAKER_LOG_ERR', 3); define('FILEMAKER_LOG_INFO', 6); define('FILEMAKER_LOG_DEBUG', 7); /**#@-*/ /** * Base FileMaker class. Defines database properties, connects to a database, * and gets information about the API. * * @package FileMaker */ class FileMaker { /** * Implementation. This is the object that actually implements the API. * * @var FileMaker_Implementation * @access private */ var $_impl; /** * Tests whether a variable is a FileMaker API Error. * * @param mixed $variable Variable to test. * @return boolean TRUE, if the variable is a {@link FileMaker_Error} object. * @static * */ static function isError($variable) { return is_a($variable, 'FileMaker_Error'); } /** * Returns the version of the FileMaker API for PHP. * * @return string API version. * @static */ function getAPIVersion() { return FileMaker_Implementation::getAPIVersion(); } /** * Returns the minimum version of FileMaker Server that this API works with. * * @return string Minimum FileMaker Server version. * @static */ static function getMinServerVersion() { return FileMaker_Implementation::getMinServerVersion(); } /** * FileMaker object constructor. * * If you want to use the constructor without specifying all the * parameters, pass in NULL for the parameters you want to omit. * For example, to specify only the database name, username, and * password, but omit the hostspec, call the constructor as follows: * * * new FileMaker('DatabaseName', NULL, 'username', 'password'); * * * @param string $database Name of the database to connect to. * @param string $hostspec Hostspec of web server in FileMaker Server * deployment. Defaults to http://localhost, if set to NULL. * @param string $username Account name to log into database. * @param string $password Password for account. */ function FileMaker($database = NULL, $hostspec = NULL, $username = NULL, $password = NULL) { $this->_impl = new FileMaker_Implementation($database, $hostspec, $username, $password); } /** * Sets a property to a new value for all API calls. * * @param string $prop Name of the property to set. * @param string $value Property's new value. */ function setProperty($prop, $value) { $this->_impl->setProperty($prop, $value); } /** * Returns the current value of a property. * * @param string $prop Name of the property. * * @return string Property's current value. */ function getProperty($prop) { return $this->_impl->getProperty($prop); } /** * Returns an associative array of property name => property value for * all current properties and their current values. * * This array enables PHP object introspection and debugging when necessary. * * @return array All current properties. */ function getProperties() { return $this->_impl->getProperties(); } /** * Associates a PEAR Log object with the API for logging requests * and responses. * * @param Log &$logger PEAR Log object. */ function setLogger(&$logger) { $this->_impl->setLogger($logger); } /** * Creates a new FileMaker_Command_Add object. * * @param string $layout Layout to add a record to. * @param array $values Associative array of field name => value pairs. * To set field repetitions, use a numerically indexed array for * the value of a field, with the numeric keys corresponding to the * repetition number to set. * * @return FileMaker_Command_Add New Add command object. */ function &newAddCommand($layout, $values = array()) { return $this->_impl->newAddCommand($layout, $values); } /** * Creates a new FileMaker_Command_Edit object. * * @param string $layout Layout that the record is part of. * @param string $recordId ID of the record to edit. * @param array $updatedValues Associative array of field name => value * pairs that contain the updated field values. To set field * repetitions, use a numerically indexed array for the value of a * field, with the numeric keys corresponding to the repetition * number to set. * * @return FileMaker_Command_Edit New Edit command object. */ function &newEditCommand($layout, $recordId, $updatedValues = array()) { return $this->_impl->newEditCommand($layout, $recordId, $updatedValues); } /** * Creates a new FileMaker_Command_Delete object. * * @param string $layout Layout to delete record from. * @param string $recordId ID of the record to delete. * * @return FileMaker_Command_Delete New Delete command object. */ function &newDeleteCommand($layout, $recordId) { return $this->_impl->newDeleteCommand($layout, $recordId); } /** * Creates a new FileMaker_Command_Duplicate object. * * @param string $layout Layout that the record to duplicate is in. * @param string $recordId ID of the record to duplicate. * * @return FileMaker_Command_Duplicate New Duplicate command object. */ function &newDuplicateCommand($layout, $recordId) { return $this->_impl->newDuplicateCommand($layout, $recordId); } /** * Creates a new FileMaker_Command_Find object. * * @param string $layout Layout to find records in. * * @return FileMaker_Command_Find New Find command object. */ function &newFindCommand($layout) { return $this->_impl->newFindCommand($layout); } /** * * Creates a new FileMaker_Command_CompoundFind object. * * @param string $layout Layout to find records in. * * @return FileMaker_Command_CompoundFind New Compound Find Set command * object. */ function &newCompoundFindCommand($layout) { return $this->_impl->newCompoundFindCommand($layout); } /** * * Creates a new FileMaker_Command_FindRequest object. Add one or more * Find Request objects to a {@link FileMaker_Command_CompoundFind} object, * then execute the Compound Find command. * * @param string $layout Layout to find records in. * * @return FileMaker_Command_FindRequest New Find Request command object. */ function &newFindRequest($layout) { return $this->_impl->newFindRequest($layout); } /** * Creates a new FileMaker_Command_FindAny object. * * @param string $layout Layout to find one random record from. * * @return FileMaker_Command_FindAny New Find Any command object. */ function &newFindAnyCommand($layout) { return $this->_impl->newFindAnyCommand($layout); } /** * Creates a new FileMaker_Command_FindAll object. * * @param string $layout Layout to find all records in. * * @return FileMaker_Command_FindAll New Find All command object. */ function &newFindAllCommand($layout) { return $this->_impl->newFindAllCommand($layout); } /** * Creates a new FileMaker_Command_PerformScript object. * * @param string $layout Layout to use for script context. * @param string $scriptName Name of the ScriptMaker script to run. * @param string $scriptParameters Any parameters to pass to the script. * * @return FileMaker_Command_PerformScript New Perform Script command * object. */ function &newPerformScriptCommand($layout, $scriptName, $scriptParameters = null) { return $this->_impl->newPerformScriptCommand($layout, $scriptName, $scriptParameters); } /** * Creates a new FileMaker_Record object. * * This method does not save the new record to the database. * The record is not created on the Database Server until you call * this record's commit() method. You must specify a layout name, * and you can optionally specify an array of field values. * Individual field values can also be set in the new record object. * * * @param string $layout Layout to create a new record for. * @param array $fieldValues Initial values for the new record's fields. * * @return FileMaker_Record New Record object. */ function &createRecord($layout, $fieldValues = array()) { return $this->_impl->createRecord($layout, $fieldValues); } /** * Returns a single FileMaker_Record object matching the given * layout and record ID, or a FileMaker_Error object, if this operation * fails. * * @param string $layout Layout that $recordId is in. * @param string $recordId ID of the record to get. * * @return FileMaker_Record|FileMaker_Error Record or Error object. */ function &getRecordById($layout, $recordId) { return $this->_impl->getRecordById($layout, $recordId); } /** * Returns a Layout object that describes the specified layout. * * @param string $layout Name of the layout to describe. * * @return FileMaker_Layout|FileMaker_Error Layout or Error object. */ function &getLayout($layout) { return $this->_impl->getLayout($layout); } /** * Returns an array of databases that are available with the current * server settings and the current user name and password * credentials. * * @return array|FileMaker_Error List of database names or an Error object. */ function listDatabases() { return $this->_impl->listDatabases(); } /** * Returns an array of ScriptMaker scripts from the current database that * are available with the current server settings and the current user * name and password credentials. * * @return array|FileMaker_Error List of script names or an Error object. */ function listScripts() { return $this->_impl->listScripts(); } /** * Returns an array of layouts from the current database that are * available with the current server settings and the current * user name and password credentials. * * @return array|FileMaker_Error List of layout names or an Error object. */ function listLayouts() { return $this->_impl->listLayouts(); } /** * Returns the data for the specified container field. * Pass in a URL string that represents the file path for the container * field contents. For example, get the image data from a container field * named 'Cover Image'. For a FileMaker_Record object named $record, * URL-encode the path returned by the getField() method. For example: * * * * * * Then as shown below in a line from img.php, pass the URL into * getContainerData() for the FileMaker object named $fm: * * * echo $fm->getContainerData($_GET['-url']); * * * @param string $url URL of the container field contents to get. * * @return string Raw field data|FileMaker_Error if remote container field. */ function getContainerData($url) { return $this->_impl->getContainerData($url); } /** * Returns the fully qualified URL for the specified container field. * Pass in a URL string that represents the file path for the container * field contents. For example, get the URL for a container field * named 'Cover Image'. For example: * * * * * * @param string $url URL of the container field contents to get. * * @return string Fully qualified URL to container field contents */ function getContainerDataURL($url) { return $this->_impl->getContainerDataURL($url); } }