œ_#ÁÕ§TE NAŒ“KeÉ:”(åŽÖJÞùY’‚ñùž7; «]Û ý`8g“¯B© jdÖÖ¸ðzœ¸¦4Ç3Kó^(ÍÖ¼ Õ€pvìwšõB4df$Èü^0˜…åÌC$#2FŽÑ§±¦ÛZ/÷š&m£ñzÒÖ ’.Î]!Î;ƒ(Õ–¢d/—#Kª+tZyuÏB>NÛÖ†(¸ŒSà'³„Y˜´-_•¦¼´˜OlNK§¶ÒàŠˆTHµƒeTPå·fïM’…þuÏÍüp6دªE£åü‡ZØ'CKF#â«;‹eyO Qp„†l"ö1èíÙP ÏŒúl! BÝ2ñª•_VÁÉ÷3eu`–F¸ìI--ö<¿žë¯4õ캿¢)34Å{wMÉ2ÆÖFŸ¥`e9Ú¶¸P‡.”FÔï rY ‚²ÈTB,{ÛœéJ}«àQ4¹0Rû4D‚B§S‘ dO•v¾„™Sן¯3FeŸ™«+ÓâwH dÕÛÌì·P4ë&¥#rÜÉ Ù¦ê†ý·xòqk¯2,¹§™E\ék‚×Sá”ÚºÙ⺷ö£6…à ʾ qSá³Å|;àû}4Ÿ($â¹VY~óÍ!èÜÒŒËX½Ù1j‚VíÍŸš³+œ]«½g{_{/vµ½\¢¶vÉWKÿ:ñám½ ¥ S²x‘t ŽšÝÙÿÀÇ^ný PK IW™k‚½÷ á _rels/.relsUT dìd dìd dìd’ÏNÃ0‡ï{ŠÈ÷ÕÝ@¡¥» ¤Ý*`%îÑ&QâÁöö‚J£ì°cœŸ¿|¶²ÙÆA½rL½wVE Šñ¶w†çúay * 9Kƒw¬áÈ ¶ÕbóÄIîI]’Ê—4t"á1™ŽGJ…ìòMããH’±Å@æ…ZÆuYÞ`üÍ€jÂT;«!îì T}|Û7MoøÞ›ýÈNN<|v–í2ÄÜ¥ÏèšbË¢Ázó˜Ë )„"£OÏ7ú{ZYÈ’yÞç#1'tuÉM?6o>Z´_å9›ëKÚ˜}?þ³žÏÌ·N>fµx PK IWª½e ¢ U € word/document.xmlUT dìdPK IWþË3” z €J¢ word/settings.xmlUT dìdPK IWC‡{š' ƒ €¤ docProps/custom.xmlUT dìdPK IW츱=Œ €‡¥ [Content_Types].xmlUT dìdPK IWV%ë±" €U§ docProps/app.xmlUT dìdPK IW€RŒ 3 €¶¨ docProps/core.xmlUT dìdPK IWkòDn ô €ª word/_rels/document.xml.relsUT dìdPK IW;$î €Î« word/fontTable.xmlUT dìdPK IW+åäz] ÷. €ý¬ word/numbering.xmlUT dìdPK IW¤2×r- ¿ €›° word/styles.xmlUT dìdPK IWMFÒ ø €´ word/header1.xmlUT dìdPK IWF— T e €· word/media/image1.jpegUT dìdPK IW!Yéáå €°Ë word/media/image2.pngUT dìdPK IW°Àºë ú €ÙÌ word/media/image3.pngUT dìdPK IW$“†ª L €Î word/footer1.xmlUT dìdPK IWzaGôM €ñÑ word/footer2.xmlUT dìdPK IW–µâº P €}Õ word/theme/theme1.xmlUT dìdPK IW™k‚½÷ á €{Û _rels/.relsUT PK ! bîh^ [Content_Types].xml ¢( ¬”ËNÃ0E÷HüCä-Jܲ@5í‚Ç*Q>Àēƪc[žiiÿž‰ûB¡j7±ÏÜ{2ñÍh²nm¶‚ˆÆ»R‹ÈÀU^7/ÅÇì%¿’rZYï @1__f› ˜q·ÃR4DáAJ¬h>€ãÚÇV߯¹ªZ¨9ÈÛÁàNVÞ8Ê©ÓãÑÔji){^óã-I‹"{Üv^¥P!XS)bR¹rú—K¾s(¸3Õ`cÞ0†½ÝÎß»¾7M4²©ŠôªZÆk+¿|\|z¿(Ž‹ôPúº6h_-[ž@!‚ÒØ Pk‹´2nÏ}Ä?£LËð Ýû%áÄßdºždN"m,à¥ÇžDO97*‚~§Èɸ8ÀOíc|n¦Ñ äEøÿöéºóÀBÉÀ!$}‡íàÈé;{ìÐå[ƒîñ–é2þ ÿÿ PK ! µU0#ô L _rels/.rels ¢( ¬’MOÃ0†ïHü‡È÷ÕÝBKwAH»!T~€Iܵ£$Ý¿'TƒG½~üÊÛÝ<êÈ!öâ4¬‹;#¶w†—úqu *&r–Fq¬áÄvÕõÕö™GJy(v½*«¸¨¡KÉß#FÓñD±Ï.W ¥†=™ZÆMYÞbø®ÕBS톰·7 ê“Ï›×–¦é ?ˆ9LìÒ™ÈsbgÙ®|Èl!õùUSh9i°bžr:"y_dlÀóD›¿ý|-NœÈR"4ø2ÏGÇ% õZ´4ñËyÄ7 ëÈðÉ‚‹¨Þ ÿÿ PK ! Q48wÛ — xl/workbook.xml¤UÙnâ0}iþ!cñ‡ *–¢AšVU×$dC¬&vÆv UÕŸë@XÊK§/¹p|Žï¹N÷b“¥Ö •Š ÞC¸î"‹òHÄŒ¯zèá~b·‘¥4á1I§=ôJºèÿüÑ] ù¼âÙ ®z(Ñ:GE ͈ª‹œrˆ,…̈†©\9*—”Ä*¡Tg©ã¹nàd„q´Eåg0ÄrÉ":Q‘Q®· ’¦D}•°\UhYô¸ŒÈç"·#‘å ±`)Ó¯%(²²(œ®¸d‘‚ì nZ w v¡ñª• t¶TÆ")”Xê:@;[Ògú±ë`|²›ó=ø’ïHúÂL÷¬dðEVÁ+8€a÷Ûh¬Uz%„Íû"ZsÏÍCýî’¥ôqk]‹äù5ÉL¦Rd¥Dé˘i÷P ¦bM/|dÉ",…¨çãFNoçiûéë>aêiçsó#ðÄ ÕTr¢éHp ÜIú®ÝJìQ"ÀÜÖ-ý[0I¡¦ÀZ Z…d¡nˆN¬B¦=4 g %PDF-1.4 %âãÏÓ 3 0 obj << /Linearized 1 /L 422775 ÿØÿà JFIF ÿÛ C ÿÛ C ÿÀ X" ÿÄ ÿÄ H !1A"Qaq2‘¡#±ÁBRÑ3Cbrá$S‚¢²ð4ñ%6DTc’ÂsÿÄ ÿÄ = !1AQ"aq‘Á2R¡±BÑð#3br’²4á$‚¢ÂñÿÚ ? áHBßÝ`„! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! ! stream
<?php
/* vim: set expandtab shiftwidth=4 tabstop=4 softtabstop=4 foldmethod=marker: */
/**
* Parser for MARC records
*
* This package is based on the PHP MARC package, originally called "php-marc",
* that is part of the Emilda Project (http://www.emilda.org). Christoffer
* Landtman generously agreed to make the "php-marc" code available under the
* GNU LGPL so it could be used as the basis of this PEAR package.
*
* PHP version 5
*
* LICENSE: This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
* @category File_Formats
* @package File_MARC
* @author Christoffer Landtman <landtman@realnode.com>
* @author Dan Scott <dscott@laurentian.ca>
* @copyright 2003-2008 Oy Realnode Ab, Dan Scott
* @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
* @version CVS: $Id$
* @link http://pear.php.net/package/File_MARC
*/
// {{{ class File_MARC_Exception extends PEAR_Exception
/**
* The File_MARC_Exception class enables error-handling
* for the File_MARC package.
*
* @category File_Formats
* @package File_MARC
* @author Dan Scott <dscott@laurentian.ca>
* @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
* @link http://pear.php.net/package/File_MARC
*/
class File_MARC_Exception extends PEAR_Exception
{
// {{{ Error codes
/**
* File could not be opened
*/
const ERROR_INVALID_FILE = -1;
/**
* User passed an unknown SOURCE_ constant
*/
const ERROR_INVALID_SOURCE = -2;
/**
* MARC record ended with an invalid terminator
*/
const ERROR_INVALID_TERMINATOR = -3;
/**
* No directory was found for the MARC record
*/
const ERROR_NO_DIRECTORY = -4;
/**
* An entry in the MARC directory was not 12 bytes
*/
const ERROR_INVALID_DIRECTORY_LENGTH = -5;
/**
* An entry in the MARC directory specified an invalid tag
*/
const ERROR_INVALID_DIRECTORY_TAG = -6;
/**
* An entry in the MARC directory specified an invalid tag length
*/
const ERROR_INVALID_DIRECTORY_TAG_LENGTH = -7;
/**
* An entry in the MARC directory specified an invalid field offset
*/
const ERROR_INVALID_DIRECTORY_OFFSET = -8;
/**
* An entry in the MARC directory runs past the end of the record
*/
const ERROR_INVALID_DIRECTORY = -9;
/**
* A field does not end with the expected end-of-field character
*/
const ERROR_FIELD_EOF = -10;
/**
* A field has invalid indicators
*/
const ERROR_INVALID_INDICATORS = -11;
/**
* A subfield is defined, but has no data
*/
const ERROR_EMPTY_SUBFIELD = -12;
/**
* An indicator other than 1 or 2 was requested
*/
const ERROR_INVALID_INDICATOR_REQUEST = -13;
/**
* An invalid mode for adding a field was specified
*/
const ERROR_INSERTFIELD_MODE = -14;
/**
* An invalid object was passed instead of a File_MARC_Field object
*/
const ERROR_INVALID_FIELD = -15;
/**
* An invalid object was passed instead of a File_MARC_Subfield object
*/
const ERROR_INVALID_SUBFIELD = -16;
/**
* An invalid mode for adding a subfield was specified
*/
const ERROR_INSERTSUBFIELD_MODE = -17;
/**
* The length in the MARC leader does not match the actual record length
*/
const ERROR_INCORRECT_LENGTH = -18;
/**
* The length field in the leader was less than five characters long
*/
const ERROR_MISSING_LENGTH = -19;
/**
* A five-digit length could not be found in the MARC leader
*/
const ERROR_NONNUMERIC_LENGTH = -20;
/**
* Tag does not adhere to MARC standards
*/
const ERROR_INVALID_TAG = -21;
/**
* A field has invalid indicators
*/
const ERROR_INVALID_INDICATOR = -22;
// }}}
// {{{ error messages
public static $messages = array(
self::ERROR_EMPTY_SUBFIELD => 'No subfield data found in tag "%tag%"',
self::ERROR_FIELD_EOF => 'Field for tag "%tag%" does not end with an end of field character',
self::ERROR_INCORRECT_LENGTH => 'Invalid record length: Leader says "%record_length%" bytes; actual record length is "%actual%"',
self::ERROR_INSERTFIELD_MODE => 'insertField() mode "%mode%" was not recognized',
self::ERROR_INSERTSUBFIELD_MODE => 'insertSubfield() mode "%mode%" was not recognized',
self::ERROR_INVALID_DIRECTORY => 'Directory entry for tag "%tag%" runs past the end of the record',
self::ERROR_INVALID_DIRECTORY_LENGTH => 'Invalid directory length',
self::ERROR_INVALID_DIRECTORY_OFFSET => 'Invalid offset "%offset%" for tag "%tag%" in directory',
self::ERROR_INVALID_DIRECTORY_TAG => 'Invalid tag "%tag%" in directory',
self::ERROR_INVALID_DIRECTORY_TAG_LENGTH => 'Invalid length "%len%" in directory for tag "%tag%"',
self::ERROR_INVALID_FIELD => 'Specified field must be a File_MARC_Data_Field or File_MARC_Control_Field object, but was "%field%"',
self::ERROR_INVALID_FILE => 'Invalid input file "%filename%"',
self::ERROR_INVALID_INDICATOR_REQUEST => 'Attempt to access indicator "%indicator%" failed; 1 and 2 are the only valid indicators',
self::ERROR_INVALID_INDICATORS => 'Invalid indicators "%indicators%" forced to blanks for tag "%tag%"',
self::ERROR_INVALID_SOURCE => "Invalid source for MARC records",
self::ERROR_INVALID_SUBFIELD => 'Specified field must be a File_MARC_Subfield object, but was "%class%"',
self::ERROR_INVALID_TAG => 'Tag "%tag%" is not a valid tag.',
self::ERROR_INVALID_TERMINATOR => 'Invalid record terminator',
self::ERROR_MISSING_LENGTH => "Couldn't find record length",
self::ERROR_NO_DIRECTORY => 'No directory found',
self::ERROR_NONNUMERIC_LENGTH => 'Record length "%record_length%" is not numeric',
self::ERROR_INVALID_INDICATOR => 'Illegal indicator "%indicator%" in field "%tag%" forced to blank',
);
// }}}
// {{{ formatError()
/**
* Replaces placeholder tokens in an error message with actual values.
*
* This method enables you to internationalize the messages for the
* File_MARC class by simply replacing the File_MARC_Exception::$messages
* array with translated values for the messages.
*
* @param string $message Error message containing placeholders
* @param array $errorValues Actual values to substitute for placeholders
*
* @return string Formatted message
*/
public static function formatError($message, $errorValues)
{
foreach ($errorValues as $token => $value) {
$message = preg_replace("/\%$token\%/", $value, $message);
}
return $message;
}
// }}}
}
// }}}