119 lines
3.3 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 Makes sure that the PEAR base class is loaded. Falls back to a
* bundled version if it's not found in the include_path.
*/
@include_once 'PEAR.php';
if (!class_exists('PEAR_Error')) {
include_once 'FileMaker/PEAR.php';
}
/**#@-*/
/**
* Extension of the PEAR_Error class for use in all FileMaker classes.
*
* @package FileMaker
*/
class FileMaker_Error extends PEAR_Error
{
/**
* FileMaker object the error was generated from.
*
* @var FileMaker
* @access private
*/
var $_fm;
/**
* Overloaded FileMaker_Error constructor.
*
* @param FileMaker_Delegate &$fm FileMaker_Delegate object this error
* came from.
* @param string $message Error message.
* @param integer $code Error code.
*/
function FileMaker_Error(&$fm, $message = null, $code = null)
{
$this->_fm =& $fm;
parent::PEAR_Error($message, $code);
// Log the error.
$fm->log($this->getMessage(), FILEMAKER_LOG_ERR);
}
/**
* Overloads getMessage() to return an equivalent FileMaker Web Publishing
* Engine error if no message is explicitly set and this object has an
* error code.
*
* @return string Error message.
*/
function getMessage()
{
if ($this->message === null && $this->getCode() !== null) {
return $this->getErrorString();
}
return parent::getMessage();
}
/**
* Returns the string representation of $this->code in the language
* currently set for PHP error messages in FileMaker Server Admin
* Console.
*
* You should call getMessage() in most cases, if you are not sure whether
* the error is a FileMaker Web Publishing Engine error with an error code.
*
* @return string Error description.
*/
function getErrorString()
{
// Default to English.
$lang = basename($this->_fm->getProperty('locale'));
if (!$lang) {
$lang = 'en';
}
static $strings = array();
if (empty($strings[$lang])) {
if (!@include_once dirname(__FILE__) . '/Error/' . $lang . '.php') {
include_once dirname(__FILE__) . '/Error/en.php';
}
$strings[$lang] = $__FM_ERRORS;
}
if (isset($strings[$lang][$this->getCode()])) {
return $strings[$lang][$this->getCode()];
}
return $strings[$lang][-1];
}
/**
* Indicates whether the error is a detailed pre-validation error
* or a FileMaker Web Publishing Engine error.
*
* @return boolean FALSE, to indicate that this is an error from the
* Web Publishing Engine.
*/
function isValidationError()
{
return false;
}
}