initial commit
This commit is contained in:
		
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					data/*
 | 
				
			||||||
							
								
								
									
										5
									
								
								composer.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								composer.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					    "require": {
 | 
				
			||||||
 | 
					        "biblys/isbn": "^2.4"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										70
									
								
								composer.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								composer.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							@@ -0,0 +1,70 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					    "_readme": [
 | 
				
			||||||
 | 
					        "This file locks the dependencies of your project to a known state",
 | 
				
			||||||
 | 
					        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
 | 
				
			||||||
 | 
					        "This file is @generated automatically"
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "content-hash": "6a4d36d2babadc6821e5e397bc1eff15",
 | 
				
			||||||
 | 
					    "packages": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            "name": "biblys/isbn",
 | 
				
			||||||
 | 
					            "version": "2.4.0",
 | 
				
			||||||
 | 
					            "source": {
 | 
				
			||||||
 | 
					                "type": "git",
 | 
				
			||||||
 | 
					                "url": "https://github.com/biblys/isbn.git",
 | 
				
			||||||
 | 
					                "reference": "319408b2ef9aeea4f46304ac1a9868ea3ceff2ad"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "dist": {
 | 
				
			||||||
 | 
					                "type": "zip",
 | 
				
			||||||
 | 
					                "url": "https://api.github.com/repos/biblys/isbn/zipball/319408b2ef9aeea4f46304ac1a9868ea3ceff2ad",
 | 
				
			||||||
 | 
					                "reference": "319408b2ef9aeea4f46304ac1a9868ea3ceff2ad",
 | 
				
			||||||
 | 
					                "shasum": ""
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "require": {
 | 
				
			||||||
 | 
					                "php": "^7.1"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "require-dev": {
 | 
				
			||||||
 | 
					                "guzzlehttp/guzzle": "^6.2",
 | 
				
			||||||
 | 
					                "phpunit/phpunit": "^6 || ^7 || ^8"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "type": "library",
 | 
				
			||||||
 | 
					            "autoload": {
 | 
				
			||||||
 | 
					                "psr-0": {
 | 
				
			||||||
 | 
					                    "Biblys": "src/"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "notification-url": "https://packagist.org/downloads/",
 | 
				
			||||||
 | 
					            "license": [
 | 
				
			||||||
 | 
					                "MIT"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "authors": [
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "name": "Clement Bourgoin",
 | 
				
			||||||
 | 
					                    "email": "c@iwzr.fr"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "description": "A PHP library to convert and validate ISBNs",
 | 
				
			||||||
 | 
					            "homepage": "https://github.com/biblys/isbn",
 | 
				
			||||||
 | 
					            "keywords": [
 | 
				
			||||||
 | 
					                "ISBN",
 | 
				
			||||||
 | 
					                "book",
 | 
				
			||||||
 | 
					                "ean",
 | 
				
			||||||
 | 
					                "gtin"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "support": {
 | 
				
			||||||
 | 
					                "issues": "https://github.com/biblys/isbn/issues",
 | 
				
			||||||
 | 
					                "source": "https://github.com/biblys/isbn/tree/2.4.0"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "time": "2021-03-05T00:00:00+00:00"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "packages-dev": [],
 | 
				
			||||||
 | 
					    "aliases": [],
 | 
				
			||||||
 | 
					    "minimum-stability": "stable",
 | 
				
			||||||
 | 
					    "stability-flags": [],
 | 
				
			||||||
 | 
					    "prefer-stable": false,
 | 
				
			||||||
 | 
					    "prefer-lowest": false,
 | 
				
			||||||
 | 
					    "platform": [],
 | 
				
			||||||
 | 
					    "platform-dev": [],
 | 
				
			||||||
 | 
					    "plugin-api-version": "2.0.0"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								scripts/Moly_hu.zip
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								scripts/Moly_hu.zip
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								scripts/dummy.paperbook
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								scripts/dummy.paperbook
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										44
									
								
								scripts/import-moly.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										44
									
								
								scripts/import-moly.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,44 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					DATAFILE="/opt/konyvleltar/data/moly.txt"
 | 
				
			||||||
 | 
					INPUTFILE="/opt/konyvleltar/data/moly-input-$RANDOM.txt"
 | 
				
			||||||
 | 
					ERRORFILE="/opt/konyvleltar/data/moly-error.txt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					LIBRARY="http://localhost:32452/#paperbooks"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					META_TMP="/home/calibre/metamoly.tmp"
 | 
				
			||||||
 | 
					COVER_TMP="/home/calibre/covermoly.jpg"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DUPES="-d" # "" or "-d"
 | 
				
			||||||
 | 
					RESTRICT_MOLY="" # "" or "--allowed-plugin Moly_hu"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ -f "$DATAFILE" ];
 | 
				
			||||||
 | 
					then
 | 
				
			||||||
 | 
					    mv "$DATAFILE" "$INPUTFILE"
 | 
				
			||||||
 | 
					    if [ -f "$META_TMP" ]; then rm "$META_TMP"; fi;
 | 
				
			||||||
 | 
					    if [ -f "$COVER_TMP" ]; then rm "$COVER_TMP"; fi;
 | 
				
			||||||
 | 
					    cat "$INPUTFILE" | while read MOLYID
 | 
				
			||||||
 | 
					    do
 | 
				
			||||||
 | 
					        ALREADY_IN=`calibredb --with-library $LIBRARY list --fields id --search "identifiers:moly_hu:$MOLYID" | tail -n +2 | wc -l`
 | 
				
			||||||
 | 
					        if [ $ALREADY_IN -eq 0 ];
 | 
				
			||||||
 | 
					        then
 | 
				
			||||||
 | 
					            fetch-ebook-metadata $RESTRICT_MOLY --identifier moly_hu:$MOLYID -c "$COVER_TMP" -o > "$META_TMP"
 | 
				
			||||||
 | 
					            if [ -s "$META_TMP" ]; # not empty
 | 
				
			||||||
 | 
					            then
 | 
				
			||||||
 | 
					                if [ -s "$COVER_TMP" ]; # not empty
 | 
				
			||||||
 | 
					                then
 | 
				
			||||||
 | 
					                COVER="--cover $COVER_TMP"
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                COVER=""
 | 
				
			||||||
 | 
					                fi
 | 
				
			||||||
 | 
					                calibredb --with-library $LIBRARY add $DUPES --identifier moly_hu:$MOLYID $COVER dummy.paperbook
 | 
				
			||||||
 | 
					                ID=`calibredb --with-library $LIBRARY list --fields id --search "identifiers:moly_hu:$MOLYID" | grep -v id`
 | 
				
			||||||
 | 
					                calibredb --with-library $LIBRARY set_metadata $ID "$META_TMP"
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					                echo $MOLYID >> $ERRORFILE
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					            if [ -f "$META_TMP" ]; then rm "$META_TMP"; fi;
 | 
				
			||||||
 | 
					            if [ -f "$COVER_TMP" ]; then rm "$COVER_TMP"; fi;
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    rm $INPUTFILE
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
							
								
								
									
										44
									
								
								scripts/import-paperbooks.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										44
									
								
								scripts/import-paperbooks.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,44 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					DATAFILE="/opt/konyvleltar/data/isbn.txt"
 | 
				
			||||||
 | 
					INPUTFILE="/opt/konyvleltar/data/isbn-input-$RANDOM.txt"
 | 
				
			||||||
 | 
					ERRORFILE="/opt/konyvleltar/data/isbn-error.txt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					LIBRARY="http://localhost:32452/#paperbooks"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					META_TMP="/home/calibre/meta.tmp"
 | 
				
			||||||
 | 
					COVER_TMP="/home/calibre/cover.jpg"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DUPES="-d" # "" or "-d"
 | 
				
			||||||
 | 
					RESTRICT_MOLY="" # "" or "--allowed-plugin Moly_hu"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ -f "$DATAFILE" ];
 | 
				
			||||||
 | 
					then
 | 
				
			||||||
 | 
					    mv "$DATAFILE" "$INPUTFILE"
 | 
				
			||||||
 | 
					    if [ -f "$META_TMP" ]; then rm "$META_TMP"; fi;
 | 
				
			||||||
 | 
					    if [ -f "$COVER_TMP" ]; then rm "$COVER_TMP"; fi;
 | 
				
			||||||
 | 
					    cat "$INPUTFILE" | while read ISBN
 | 
				
			||||||
 | 
					    do
 | 
				
			||||||
 | 
					        ALREADY_IN=`calibredb --with-library $LIBRARY list --fields isbn --search isbn:$ISBN | grep -v isbn | wc -l`
 | 
				
			||||||
 | 
					        if [ $ALREADY_IN -eq 0 ];
 | 
				
			||||||
 | 
					        then
 | 
				
			||||||
 | 
					            fetch-ebook-metadata $RESTRICT_MOLY --isbn $ISBN -c "$COVER_TMP" -o > "$META_TMP"
 | 
				
			||||||
 | 
					            if [ -s "$META_TMP" ]; # not empty
 | 
				
			||||||
 | 
					            then
 | 
				
			||||||
 | 
					                if [ -s "$COVER_TMP" ]; # not empty
 | 
				
			||||||
 | 
					                then
 | 
				
			||||||
 | 
					                COVER="--cover $COVER_TMP"
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                COVER=""
 | 
				
			||||||
 | 
					                fi
 | 
				
			||||||
 | 
					                calibredb --with-library $LIBRARY add $DUPES --isbn $ISBN $COVER dummy.paperbook
 | 
				
			||||||
 | 
					                ID=`calibredb --with-library $LIBRARY list --fields id --search isbn:$ISBN | grep -v id`
 | 
				
			||||||
 | 
					                calibredb --with-library $LIBRARY set_metadata $ID "$META_TMP"
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					                echo $ISBN >> $ERRORFILE
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					            if [ -f "$META_TMP" ]; then rm "$META_TMP"; fi;
 | 
				
			||||||
 | 
					            if [ -f "$COVER_TMP" ]; then rm "$COVER_TMP"; fi;
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    rm $INPUTFILE
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
							
								
								
									
										7
									
								
								vendor/autoload.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								vendor/autoload.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// autoload.php @generated by Composer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once __DIR__ . '/composer/autoload_real.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return ComposerAutoloaderInit5ddf49d1cb81d6a311c8de21eb32ffcc::getLoader();
 | 
				
			||||||
							
								
								
									
										42
									
								
								vendor/biblys/isbn/.github/workflows/tests.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								vendor/biblys/isbn/.github/workflows/tests.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,42 @@
 | 
				
			|||||||
 | 
					name: tests
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					on:
 | 
				
			||||||
 | 
					  push:
 | 
				
			||||||
 | 
					    branches: [ main ]
 | 
				
			||||||
 | 
					  pull_request:
 | 
				
			||||||
 | 
					    branches: [ main ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					jobs:
 | 
				
			||||||
 | 
					  build:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    strategy:
 | 
				
			||||||
 | 
					      matrix:
 | 
				
			||||||
 | 
					        php: [ '7.1', '7.2', '7.3', '7.4' ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					    - uses: actions/checkout@v2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - uses: nanasess/setup-php@master
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					        php-version: ${{ matrix.php }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - name: Validate composer.json and composer.lock
 | 
				
			||||||
 | 
					      run: composer validate
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - name: Cache Composer packages
 | 
				
			||||||
 | 
					      id: composer-cache
 | 
				
			||||||
 | 
					      uses: actions/cache@v2
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					        path: vendor
 | 
				
			||||||
 | 
					        key: ${{ runner.os }}-php-${{ matrix.php }}-${{ hashFiles('**/composer.lock') }}
 | 
				
			||||||
 | 
					        restore-keys: |
 | 
				
			||||||
 | 
					          ${{ runner.os }}-php-${{ matrix.php }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - name: Install dependencies
 | 
				
			||||||
 | 
					      if: steps.composer-cache.outputs.cache-hit != 'true'
 | 
				
			||||||
 | 
					      run: composer install --prefer-dist --no-progress --no-suggest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - name: Run test suite
 | 
				
			||||||
 | 
					      run: composer test
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/biblys/isbn/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								vendor/biblys/isbn/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/vendor/
 | 
				
			||||||
							
								
								
									
										2
									
								
								vendor/biblys/isbn/.gitpod.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								vendor/biblys/isbn/.gitpod.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,2 @@
 | 
				
			|||||||
 | 
					tasks:
 | 
				
			||||||
 | 
					  - init: composer install && composer test
 | 
				
			||||||
							
								
								
									
										21
									
								
								vendor/biblys/isbn/LICENSE
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								vendor/biblys/isbn/LICENSE
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					The MIT License (MIT)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2016 Clément Bourgoin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
 | 
					in the Software without restriction, including without limitation the rights
 | 
				
			||||||
 | 
					to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
				
			||||||
 | 
					copies of the Software, and to permit persons to whom the Software is
 | 
				
			||||||
 | 
					furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The above copyright notice and this permission notice shall be included in all
 | 
				
			||||||
 | 
					copies or substantial portions of the Software.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
				
			||||||
 | 
					AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
				
			||||||
 | 
					OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | 
				
			||||||
 | 
					SOFTWARE.
 | 
				
			||||||
							
								
								
									
										141
									
								
								vendor/biblys/isbn/README.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										141
									
								
								vendor/biblys/isbn/README.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,141 @@
 | 
				
			|||||||
 | 
					# biblys/isbn
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[](https://github.com/biblys/isbn/actions/workflows/tests.yml)
 | 
				
			||||||
 | 
					[](https://packagist.org/packages/biblys/isbn)
 | 
				
			||||||
 | 
					[](https://packagist.org/packages/biblys/isbn)
 | 
				
			||||||
 | 
					[](http://opensource.org/licenses/MIT)
 | 
				
			||||||
 | 
					[](https://gitpod.io/#https://github.com/biblys/isbn)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					biblys/isbn can be used to:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- [validate](#validate) a string against the ISBN-10, ISBN-13 and EAN-13 formats
 | 
				
			||||||
 | 
					- [convert](#convert) an ISBN to ISBN-10, ISBN-13, EAN-13 and GTIN-14 formats
 | 
				
			||||||
 | 
					- parse an ISBN and extract registration agency, publisher code, publication code, checksum, etc.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[CHANGELOG](https://github.com/biblys/isbn/releases)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Installation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Install with composer:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```console
 | 
				
			||||||
 | 
					composer require biblys/isbn:^2.4.0
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Usage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Convert
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Use case: converting an EAN (9782843449499) to an ISBN-13 (978-2-84344-949-9).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```php
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Biblys\Isbn\Isbn;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					try {
 | 
				
			||||||
 | 
					    $input = "9782843449499";
 | 
				
			||||||
 | 
					    $isbn13 = Isbn::convertToIsbn13($input);
 | 
				
			||||||
 | 
					    echo "ISBN-13: $isbn13"; // Prints ISBN-13: 978-2-84344-949-9
 | 
				
			||||||
 | 
					} catch(Exception $e) {
 | 
				
			||||||
 | 
					    echo "An error occurred while attempting to format ISBN $input: ".$e->getMessage();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					All formatting methods:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `Isbn::convertToIsbn10`
 | 
				
			||||||
 | 
					- `Isbn::convertToIsbn13`
 | 
				
			||||||
 | 
					- `Isbn::convertToEan13`
 | 
				
			||||||
 | 
					- `Isbn::convertToGtin14`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Validate
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Use case: validating an incorrectly formed ISBN-13 (978-2-843-44949-9, should
 | 
				
			||||||
 | 
					be 978-2-84344-949-9).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```php
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Biblys\Isbn\Isbn;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					try {
 | 
				
			||||||
 | 
					    $input = "978-2-843-44949-9";
 | 
				
			||||||
 | 
					    Isbn::validateAsIsbn13($input);
 | 
				
			||||||
 | 
					    echo "ISBN $input is valid!";
 | 
				
			||||||
 | 
					} catch(Exception $e) { // Will throw because third hyphen is misplaced
 | 
				
			||||||
 | 
					    echo "ISBN $input is invalid: ".$e->getMessage();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					All validating methods:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `Isbn::validateAsIsbn10`
 | 
				
			||||||
 | 
					- `Isbn::validateAsIbsn13`
 | 
				
			||||||
 | 
					- `Isbn::validateAsEan13`
 | 
				
			||||||
 | 
					- `Isbn::isParsable`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Learn more about validating ISBNs](https://github.com/biblys/isbn/wiki/Validating-ISBNs-using-the-new-public-API)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Development
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Using Gitpod
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You can start a dev environment by clicking
 | 
				
			||||||
 | 
					[](https://gitpod.io/#https://github.com/biblys/isbn)
 | 
				
			||||||
 | 
					and start hacking in your browser right away!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Locally
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If you'd rather set up a local dev environment, you'll need:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- PHP 7.x
 | 
				
			||||||
 | 
					- Composer
 | 
				
			||||||
 | 
					- (Optional) Docker to run tests and debug against different version of PHP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Clone this repository and run `composer install` to get started!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Tests
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Run tests with PHPUnit:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```console
 | 
				
			||||||
 | 
					composer install
 | 
				
			||||||
 | 
					composer test
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Run tests in a docker container:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```console
 | 
				
			||||||
 | 
					composer docker:test
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Run tests in a docker container using a specific PHP version:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```console
 | 
				
			||||||
 | 
					PHP_VERSION=7.1 composer docker:test
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## ISBN ranges update
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					New ISBN ranges may be added from time to time by the
 | 
				
			||||||
 | 
					[International ISBN Agency](https://www.isbn-international.org/). Whenever it
 | 
				
			||||||
 | 
					happens, this library must be updated. If a range update is necessary, please
 | 
				
			||||||
 | 
					open an issue on GitHub.
 | 
				
			||||||
 | 
					You can also open a pull request after updating the ranges your self with the
 | 
				
			||||||
 | 
					following commands:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```console
 | 
				
			||||||
 | 
					composer install
 | 
				
			||||||
 | 
					composer run update-ranges
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Or using a docker container:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```console
 | 
				
			||||||
 | 
					composer docker:update-ranges
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Changelog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[See GitHub releases](https://github.com/biblys/isbn/releases)
 | 
				
			||||||
							
								
								
									
										78
									
								
								vendor/biblys/isbn/bin/update-ranges.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								vendor/biblys/isbn/bin/update-ranges.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,78 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * This file is part of the biblys/isbn package.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * (c) Clément Bourgoin
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This package is Open Source Software. For the full copyright and license
 | 
				
			||||||
 | 
					 * information, please view the LICENSE file which was distributed with this
 | 
				
			||||||
 | 
					 * source code.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This script is used to update the ISBN ranges. See README.md for more info.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use GuzzleHttp\Client;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include('vendor/autoload.php');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo "Requesting range information...\n";
 | 
				
			||||||
 | 
					$client = new Client();
 | 
				
			||||||
 | 
					$url = 'https://www.isbn-international.org/?q=bl_proxy/GetRangeInformations';
 | 
				
			||||||
 | 
					$res = $client->request('POST', $url, [
 | 
				
			||||||
 | 
					    'form_params' => [
 | 
				
			||||||
 | 
					        'format' => 1,
 | 
				
			||||||
 | 
					        'language' => 'en',
 | 
				
			||||||
 | 
					        'translatedTexts' => 'Printed;Last Change'
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$result = json_decode($res->getBody()->getContents());
 | 
				
			||||||
 | 
					if ($result === null || !property_exists($result, 'result')) {
 | 
				
			||||||
 | 
					    exit("The ISBN range API at $url is currently unavailable, exiting...\n");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$value = $result->result->value;
 | 
				
			||||||
 | 
					$filename = $result->result->filename;
 | 
				
			||||||
 | 
					$url = sprintf('https://www.isbn-international.org/?q=download_range/%s/%s', $value, $filename);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo "Getting XML from $url...\n";
 | 
				
			||||||
 | 
					$res = $client->request('GET', $url);
 | 
				
			||||||
 | 
					$xml = $res->getBody()->getContents();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo "Converting to PHP array...\n";
 | 
				
			||||||
 | 
					$ranges = (array) simplexml_load_string($xml);
 | 
				
			||||||
 | 
					$ranges = json_encode($ranges);
 | 
				
			||||||
 | 
					$ranges = json_decode($ranges, true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$prefixes = (array) $ranges['EAN.UCCPrefixes']['EAN.UCC'];
 | 
				
			||||||
 | 
					$groups = (array) $ranges['RegistrationGroups']['Group'];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					foreach ($groups as &$group) {
 | 
				
			||||||
 | 
					    // Fix entries with a single "range", converting it to an array
 | 
				
			||||||
 | 
					    if (isset($group['Rules']['Rule']['Range'])) {
 | 
				
			||||||
 | 
					        $group['Rules']['Rule'] = array($group['Rules']['Rule']);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$file = dirname(__FILE__) . '/../src/Biblys/Isbn/ranges-array.php';
 | 
				
			||||||
 | 
					echo "Saving to $file...\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					file_put_contents($file,
 | 
				
			||||||
 | 
					    '<?php ' . "\n"
 | 
				
			||||||
 | 
					    . '/*' . "\n"
 | 
				
			||||||
 | 
					    . ' * This file is generated automatically by update-ranges.php, do not edit' . "\n"
 | 
				
			||||||
 | 
					    . ' * manually! See README.md for more info. ' . "\n"
 | 
				
			||||||
 | 
					    . ' *' . "\n"
 | 
				
			||||||
 | 
					    . ' * This file is part of the biblys/isbn package.' . "\n"
 | 
				
			||||||
 | 
					    . ' *' . "\n"
 | 
				
			||||||
 | 
					    . ' * (c) Clément Bourgoin' . "\n"
 | 
				
			||||||
 | 
					    . ' *' . "\n"
 | 
				
			||||||
 | 
					    . ' * This package is Open Source Software. For the full copyright and license' . "\n"
 | 
				
			||||||
 | 
					    . ' * information, please view the LICENSE file which was distributed with this' . "\n"
 | 
				
			||||||
 | 
					    . ' * source code.' . "\n"
 | 
				
			||||||
 | 
					    . ' */' . "\n\n"
 | 
				
			||||||
 | 
					    . '$groups = ' . var_export($groups, TRUE) . ";\n"
 | 
				
			||||||
 | 
					    . '$prefixes = ' . var_export($prefixes, TRUE) . ";\n"
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
							
								
								
									
										41
									
								
								vendor/biblys/isbn/composer.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								vendor/biblys/isbn/composer.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,41 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "name": "biblys/isbn",
 | 
				
			||||||
 | 
					  "description": "A PHP library to convert and validate ISBNs",
 | 
				
			||||||
 | 
					  "time": "2021-03-05",
 | 
				
			||||||
 | 
					  "keywords": [
 | 
				
			||||||
 | 
					    "ISBN",
 | 
				
			||||||
 | 
					    "EAN",
 | 
				
			||||||
 | 
					    "GTIN",
 | 
				
			||||||
 | 
					    "Book"
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "license": "MIT",
 | 
				
			||||||
 | 
					  "homepage": "https://github.com/biblys/isbn",
 | 
				
			||||||
 | 
					  "authors": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "name": "Clement Bourgoin",
 | 
				
			||||||
 | 
					      "email": "c@iwzr.fr"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "support": {
 | 
				
			||||||
 | 
					    "issues": "https://github.com/biblys/isbn/issues"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "require": {
 | 
				
			||||||
 | 
					    "php": "^7.1"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "require-dev": {
 | 
				
			||||||
 | 
					    "phpunit/phpunit": "^6 || ^7 || ^8",
 | 
				
			||||||
 | 
					    "guzzlehttp/guzzle": "^6.2"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "autoload": {
 | 
				
			||||||
 | 
					    "psr-0": {
 | 
				
			||||||
 | 
					      "Biblys": "src/"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "scripts": {
 | 
				
			||||||
 | 
					    "test": "vendor/bin/phpunit tests",
 | 
				
			||||||
 | 
					    "update-ranges": "php bin/update-ranges.php",
 | 
				
			||||||
 | 
					    "docker:install": "docker run --rm -v $PWD:/app prooph/composer:${PHP_VERSION:-7.4} install",
 | 
				
			||||||
 | 
					    "docker:test": "@composer docker:install && docker run --rm -v $PWD:/app prooph/composer:${PHP_VERSION:-7.4} test",
 | 
				
			||||||
 | 
					    "docker:update-ranges": "@composer docker:install && docker run --rm -v $PWD:/app prooph/composer:${PHP_VERSION:-7.4} update-ranges"
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										115
									
								
								vendor/biblys/isbn/src/Biblys/Isbn/Formatter.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										115
									
								
								vendor/biblys/isbn/src/Biblys/Isbn/Formatter.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,115 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * This file is part of the biblys/isbn package.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * (c) Clément Bourgoin
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This package is Open Source Software. For the full copyright and license
 | 
				
			||||||
 | 
					 * information, please view the LICENSE file which was distributed with this
 | 
				
			||||||
 | 
					 * source code.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Biblys\Isbn;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Formatter
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public static function formatAsIsbn10(string $input): string
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $parsedInput = Parser::parse($input);
 | 
				
			||||||
 | 
					        $countryCode = $parsedInput["countryCode"];
 | 
				
			||||||
 | 
					        $publisherCode = $parsedInput["publisherCode"];
 | 
				
			||||||
 | 
					        $publicationCode = $parsedInput["publicationCode"];
 | 
				
			||||||
 | 
					        $checksum = self::_calculateChecksumForIsbn10Format($countryCode, $publisherCode, $publicationCode);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return "$countryCode-$publisherCode-$publicationCode-$checksum";
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static function formatAsIsbn13(string $input): string
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $parsedInput = Parser::parse($input);
 | 
				
			||||||
 | 
					        $productCode = $parsedInput['productCode'];
 | 
				
			||||||
 | 
					        $countryCode = $parsedInput["countryCode"];
 | 
				
			||||||
 | 
					        $publisherCode = $parsedInput["publisherCode"];
 | 
				
			||||||
 | 
					        $publicationCode = $parsedInput["publicationCode"];
 | 
				
			||||||
 | 
					        $checksum = self::_calculateChecksumForIsbn13Format($productCode, $countryCode, $publisherCode, $publicationCode);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return "$productCode-$countryCode-$publisherCode-$publicationCode-$checksum";
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static function formatAsEan13(string $input): string
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $parsedInput = Parser::parse($input);
 | 
				
			||||||
 | 
					        $productCode = $parsedInput['productCode'];
 | 
				
			||||||
 | 
					        $countryCode = $parsedInput["countryCode"];
 | 
				
			||||||
 | 
					        $publisherCode = $parsedInput["publisherCode"];
 | 
				
			||||||
 | 
					        $publicationCode = $parsedInput["publicationCode"];
 | 
				
			||||||
 | 
					        $checksum = self::_calculateChecksumForIsbn13Format($productCode, $countryCode, $publisherCode, $publicationCode);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return $productCode . $countryCode . $publisherCode . $publicationCode . $checksum;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static function formatAsGtin14(string $input, int $prefix): string
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $parsedInput = Parser::parse($input);
 | 
				
			||||||
 | 
					        $productCode = $parsedInput['productCode'];
 | 
				
			||||||
 | 
					        $countryCode = $parsedInput['countryCode'];
 | 
				
			||||||
 | 
					        $publisherCode = $parsedInput['publisherCode'];
 | 
				
			||||||
 | 
					        $publicationCode = $parsedInput['publicationCode'];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $productCodeWithPrefix = $prefix . $productCode;
 | 
				
			||||||
 | 
					        $checksum = self::_calculateChecksumForIsbn13Format($productCodeWithPrefix, $countryCode, $publisherCode, $publicationCode);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return $prefix . $productCode . $countryCode . $publisherCode . $publicationCode . $checksum;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static function _calculateChecksumForIsbn10Format(
 | 
				
			||||||
 | 
					        string $countryCode,
 | 
				
			||||||
 | 
					        string $publisherCode,
 | 
				
			||||||
 | 
					        string $publicationCode
 | 
				
			||||||
 | 
					    ): string {
 | 
				
			||||||
 | 
					        $code = $countryCode . $publisherCode . $publicationCode;
 | 
				
			||||||
 | 
					        $chars = str_split($code);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $checksum = (11 - (
 | 
				
			||||||
 | 
					            ($chars[0] * 10) +
 | 
				
			||||||
 | 
					            ($chars[1] * 9) +
 | 
				
			||||||
 | 
					            ($chars[2] * 8) +
 | 
				
			||||||
 | 
					            ($chars[3] * 7) +
 | 
				
			||||||
 | 
					            ($chars[4] * 6) +
 | 
				
			||||||
 | 
					            ($chars[5] * 5) +
 | 
				
			||||||
 | 
					            ($chars[6] * 4) +
 | 
				
			||||||
 | 
					            ($chars[7] * 3) +
 | 
				
			||||||
 | 
					            ($chars[8] * 2)) % 11) % 11;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if ($checksum == 10) {
 | 
				
			||||||
 | 
					            $checksum = 'X';
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return $checksum;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static function _calculateChecksumForIsbn13Format(
 | 
				
			||||||
 | 
					        string $productCode,
 | 
				
			||||||
 | 
					        string $countryCode,
 | 
				
			||||||
 | 
					        string $publisherCode,
 | 
				
			||||||
 | 
					        string $publicationCode
 | 
				
			||||||
 | 
					    ): string {
 | 
				
			||||||
 | 
					        $checksum = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $code = $productCode . $countryCode . $publisherCode . $publicationCode;
 | 
				
			||||||
 | 
					        $chars = array_reverse(str_split($code));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        foreach ($chars as $index => $char) {
 | 
				
			||||||
 | 
					            if ($index & 1) {
 | 
				
			||||||
 | 
					                $checksum += $char;
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                $checksum += $char * 3;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $checksum = (10 - ($checksum % 10)) % 10;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return $checksum;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										345
									
								
								vendor/biblys/isbn/src/Biblys/Isbn/Isbn.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										345
									
								
								vendor/biblys/isbn/src/Biblys/Isbn/Isbn.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,345 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * This file is part of the biblys/isbn package.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * (c) Clément Bourgoin
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This package is Open Source Software. For the full copyright and license
 | 
				
			||||||
 | 
					 * information, please view the LICENSE file which was distributed with this
 | 
				
			||||||
 | 
					 * source code.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Biblys\Isbn;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Isbn
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Converts input into an ISBN-10
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * ISBN-10 are 10 characters long and includes hyphens.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * // Returns 3-464-60352-0
 | 
				
			||||||
 | 
					     * $isbn10 = Isbn::convertToIsbn10("9783464603529");
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param string $input A string to convert
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return string
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    static public function convertToIsbn10(string $input): string
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return Formatter::formatAsIsbn10($input);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Converts input into an ISBN-13
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * ISBN-13 are 13 characters long and includes hyphens.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * // Returns 978-2-207-25804-0
 | 
				
			||||||
 | 
					     * $isbn10 = Isbn::convertToIsbn13("9782207258040");
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param string $input A string to convert
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return string
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    static public function convertToIsbn13(string $input): string
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return Formatter::formatAsIsbn13($input);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Converts input into an EAN-13
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * EAN-13 are 13 characters long and does not include hyphens.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * // Returns 9782207258040
 | 
				
			||||||
 | 
					     * $isbn10 = Isbn::convertToEan13("978-2-207-25804-0");
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param string $input A string to convert
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return string
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    static public function convertToEan13(string $input): string
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return Formatter::formatAsEan13($input);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Converts input into a GTIN-14
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * GTIN-14 are 14 characters long and does not include hyphens.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * // Returns 19783464603526
 | 
				
			||||||
 | 
					     * $isbn10 = Isbn::convertToGtin14("9783464603529", 1);
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param string $input A string to convert
 | 
				
			||||||
 | 
					     * @param int $prefix A int to preprend (defaults to 1)
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return string
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    static public function convertToGtin14(string $input, int $prefix = 1): string
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return Formatter::formatAsGtin14($input, $prefix);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Validates input as a correctly formed ISBN-10
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * // Throws because second hyphen is misplaced
 | 
				
			||||||
 | 
					     * Isbn::validateAsIsbn10("3-46460-352-0");
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param string $input A string to validate
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @throws IsbnValidationException
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    static public function validateAsIsbn10(string $input): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $expected = Formatter::formatAsIsbn10($input);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if ($input !== $expected) {
 | 
				
			||||||
 | 
					            throw new IsbnValidationException(
 | 
				
			||||||
 | 
					                "$input is not a valid ISBN-10. Expected $expected."
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Validates input as a correctly formed ISBN-13
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * // Throws because second hyphen is misplaced
 | 
				
			||||||
 | 
					     * Isbn::validateAsIsbn13("978-220-7-25804-0");
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param string $input A string to validate
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @throws IsbnValidationException
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    static public function validateAsIsbn13(string $input): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $expected = Formatter::formatAsIsbn13($input);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if ($input !== $expected) {
 | 
				
			||||||
 | 
					            throw new IsbnValidationException(
 | 
				
			||||||
 | 
					                "$input is not a valid ISBN-13. Expected $expected."
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Validates input as a correctly formed EAN-13
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * // Throws because checksum character is invalid
 | 
				
			||||||
 | 
					     * Isbn::validateAsEan13("9782207258045");
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param string $input A string to validate
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @throws IsbnValidationException
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    static public function validateAsEan13(string $input): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $expected = Formatter::formatAsEan13($input);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if ($input !== $expected) {
 | 
				
			||||||
 | 
					            throw new IsbnValidationException(
 | 
				
			||||||
 | 
					                "$input is not a valid EAN-13. Expected $expected."
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Checks that an input can be parsed (and thus, formatted) by the library
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * // Returns false because string contains invalid characters
 | 
				
			||||||
 | 
					     * Isbn::validateAsEan13("9782SPI258040");
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param string $input A string to check for parsability
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return boolean true if the input can be parsed
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    static public function isParsable(string $input): bool
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            Parser::parse($input);
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        } catch (IsbnParsingException $exception) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* Legacy non static properties and methods (backward compatibility) */
 | 
				
			||||||
 | 
					    // FIXME: deprecate and remove on next major version
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private $_input;
 | 
				
			||||||
 | 
					    private $_gs1productCode;
 | 
				
			||||||
 | 
					    private $_countryCode;
 | 
				
			||||||
 | 
					    private $_publisherCode;
 | 
				
			||||||
 | 
					    private $_publicationCode;
 | 
				
			||||||
 | 
					    private $_isbnAgencyCode;
 | 
				
			||||||
 | 
					    private $_checksumCharacter;
 | 
				
			||||||
 | 
					    private $_gtin14Prefix;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function __construct($code = null)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->_input = $code;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            $parsedCode = Parser::parse($code);
 | 
				
			||||||
 | 
					            $this->_gs1productCode = $parsedCode["productCode"];
 | 
				
			||||||
 | 
					            $this->_countryCode = $parsedCode["countryCode"];
 | 
				
			||||||
 | 
					            $this->_isbnAgencyCode = $parsedCode["agencyCode"];
 | 
				
			||||||
 | 
					            $this->_publisherCode = $parsedCode["publisherCode"];
 | 
				
			||||||
 | 
					            $this->_publicationCode = $parsedCode["publicationCode"];
 | 
				
			||||||
 | 
					        } catch (IsbnParsingException $exception) {
 | 
				
			||||||
 | 
					            // FIXME in next major version (breaking change)
 | 
				
			||||||
 | 
					            // For backward compatibility reason, instanciating should not throw
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Checks if ISBN is valid
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @deprecated
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return boolean true if the ISBN is valid
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function isValid()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        trigger_error(
 | 
				
			||||||
 | 
					            "Isbn->isValid is deprecated and will be removed in the future. Use Isbn::validateAs… methods instead. Learn more: https://git.io/JtAEx",
 | 
				
			||||||
 | 
					            E_USER_DEPRECATED
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            Parser::parse($this->_input);
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        } catch (\Exception $exception) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Returns a list of errors if ISBN is invalid
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @deprecated
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return string the error list
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function getErrors()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        trigger_error(
 | 
				
			||||||
 | 
					            "Isbn->getErrors is deprecated and will be removed in the future. Use Isbn::validateAs… methods instead. Learn more: https://git.io/JtAEx",
 | 
				
			||||||
 | 
					            E_USER_DEPRECATED
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            Parser::parse($this->_input);
 | 
				
			||||||
 | 
					        } catch (\Exception $exception) {
 | 
				
			||||||
 | 
					            return '[' . $this->_input . '] ' . $exception->getMessage();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Throws an exception if ISBN is invalid
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @deprecated
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function validate()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        trigger_error(
 | 
				
			||||||
 | 
					            "Isbn->validate is deprecated and will be removed in the future. Use Isbn::validateAs… methods instead. Learn more: https://git.io/JtAEx",
 | 
				
			||||||
 | 
					            E_USER_DEPRECATED
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Parser::parse($this->_input);
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Formats an ISBN according to specified format
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @deprecated
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param string $format (ISBN-10, ISBN-13, EAN-13, GTIN-14), default EAN-13
 | 
				
			||||||
 | 
					     * @param string $prefix The prefix to use when formatting, default 1
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return string the formatted ISBN
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function format($format = 'EAN-13', $prefix = 1)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            switch ($format) {
 | 
				
			||||||
 | 
					                case 'ISBN-10':
 | 
				
			||||||
 | 
					                    trigger_error(
 | 
				
			||||||
 | 
					                        "Isbn->format is deprecated and will be removed in the future. Use the Isbn::convertToIsbn10 method instead. Learn more: https://git.io/JtAEx",
 | 
				
			||||||
 | 
					                        E_USER_DEPRECATED
 | 
				
			||||||
 | 
					                    );
 | 
				
			||||||
 | 
					                    return Formatter::formatAsIsbn10($this->_input);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                case 'ISBN-13':
 | 
				
			||||||
 | 
					                case 'ISBN':
 | 
				
			||||||
 | 
					                    trigger_error(
 | 
				
			||||||
 | 
					                        "Isbn->format is deprecated and will be removed in the future. Use the Isbn::convertToIsbn13 method instead. Learn more: https://git.io/JtAEx",
 | 
				
			||||||
 | 
					                        E_USER_DEPRECATED
 | 
				
			||||||
 | 
					                    );
 | 
				
			||||||
 | 
					                    return Formatter::formatAsIsbn13($this->_input);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                case 'GTIN-14':
 | 
				
			||||||
 | 
					                    trigger_error(
 | 
				
			||||||
 | 
					                        "Isbn->format is deprecated and will be removed in the future. Use the Isbn::convertToGtin14 method instead. Learn more: https://git.io/JtAEx",
 | 
				
			||||||
 | 
					                        E_USER_DEPRECATED
 | 
				
			||||||
 | 
					                    );
 | 
				
			||||||
 | 
					                    return Formatter::formatAsGtin14($this->_input, $prefix);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                case 'EAN-13':
 | 
				
			||||||
 | 
					                case 'EAN':
 | 
				
			||||||
 | 
					                default:
 | 
				
			||||||
 | 
					                    trigger_error(
 | 
				
			||||||
 | 
					                        "Isbn->format is deprecated and will be removed in the future. Use the Isbn::convertToEan13 method instead. Learn more: https://git.io/JtAEx",
 | 
				
			||||||
 | 
					                        E_USER_DEPRECATED
 | 
				
			||||||
 | 
					                    );
 | 
				
			||||||
 | 
					                    return Formatter::formatAsEan13($this->_input);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } catch (IsbnParsingException $exception) {
 | 
				
			||||||
 | 
					            // FIXME: remove message customization
 | 
				
			||||||
 | 
					            // (kept for backward compatibility)
 | 
				
			||||||
 | 
					            throw new IsbnParsingException(
 | 
				
			||||||
 | 
					                "Cannot format invalid ISBN: [$this->_input] " . $exception->getMessage()
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function getProduct()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return $this->_gs1productCode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function getCountry()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return $this->_countryCode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function getPublisher()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return $this->_publisherCode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function getPublication()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return $this->_publicationCode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function getChecksum()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return $this->_checksumCharacter;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function getAgency()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return $this->_isbnAgencyCode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function getGtin14Prefix()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return $this->_gtin14Prefix;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										17
									
								
								vendor/biblys/isbn/src/Biblys/Isbn/IsbnParsingException.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								vendor/biblys/isbn/src/Biblys/Isbn/IsbnParsingException.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * This file is part of the biblys/isbn package.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * (c) Clément Bourgoin
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This package is Open Source Software. For the full copyright and license
 | 
				
			||||||
 | 
					 * information, please view the LICENSE file which was distributed with this
 | 
				
			||||||
 | 
					 * source code.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Biblys\Isbn;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class IsbnParsingException extends \Exception
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										17
									
								
								vendor/biblys/isbn/src/Biblys/Isbn/IsbnValidationException.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								vendor/biblys/isbn/src/Biblys/Isbn/IsbnValidationException.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * This file is part of the biblys/isbn package.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * (c) Clément Bourgoin
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This package is Open Source Software. For the full copyright and license
 | 
				
			||||||
 | 
					 * information, please view the LICENSE file which was distributed with this
 | 
				
			||||||
 | 
					 * source code.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Biblys\Isbn;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class IsbnValidationException extends \Exception
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										179
									
								
								vendor/biblys/isbn/src/Biblys/Isbn/Parser.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										179
									
								
								vendor/biblys/isbn/src/Biblys/Isbn/Parser.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,179 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * This file is part of the biblys/isbn package.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * (c) Clément Bourgoin
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This package is Open Source Software. For the full copyright and license
 | 
				
			||||||
 | 
					 * information, please view the LICENSE file which was distributed with this
 | 
				
			||||||
 | 
					 * source code.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Biblys\Isbn;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Parser
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    // FIXME: Create custom exceptions for each case
 | 
				
			||||||
 | 
					    const ERROR_EMPTY = 'No code provided',
 | 
				
			||||||
 | 
					        ERROR_INVALID_CHARACTERS = 'Invalid characters in the code',
 | 
				
			||||||
 | 
					        ERROR_INVALID_LENGTH = 'Code is too short or too long',
 | 
				
			||||||
 | 
					        ERROR_INVALID_PRODUCT_CODE = 'Product code should be 978 or 979',
 | 
				
			||||||
 | 
					        ERROR_INVALID_COUNTRY_CODE = 'Country code is unknown';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static function parse($input)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if (empty($input)) {
 | 
				
			||||||
 | 
					            throw new IsbnParsingException(static::ERROR_EMPTY);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $inputWithoutHyphens = self::_stripHyphens($input);
 | 
				
			||||||
 | 
					        $inputWithoutChecksum = self::_stripChecksum($inputWithoutHyphens);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (!is_numeric($inputWithoutChecksum)) {
 | 
				
			||||||
 | 
					            throw new IsbnParsingException(static::ERROR_INVALID_CHARACTERS);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $result = self::_extractProductCode($inputWithoutChecksum);
 | 
				
			||||||
 | 
					        $inputWithoutProductCode = $result[0];
 | 
				
			||||||
 | 
					        $productCode = $result[1];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $result = self::_extractCountryCode($inputWithoutProductCode, $productCode);
 | 
				
			||||||
 | 
					        $inputWithoutCountryCode = $result[0];
 | 
				
			||||||
 | 
					        $countryCode = $result[1];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $result = self::_extractPublisherCode($inputWithoutCountryCode, $productCode, $countryCode);
 | 
				
			||||||
 | 
					        $agencyCode = $result[0];
 | 
				
			||||||
 | 
					        $publisherCode = $result[1];
 | 
				
			||||||
 | 
					        $publicationCode = $result[2];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return [
 | 
				
			||||||
 | 
					            "productCode" => $productCode,
 | 
				
			||||||
 | 
					            "countryCode" => $countryCode,
 | 
				
			||||||
 | 
					            "agencyCode" => $agencyCode,
 | 
				
			||||||
 | 
					            "publisherCode" => $publisherCode,
 | 
				
			||||||
 | 
					            "publicationCode" => $publicationCode,
 | 
				
			||||||
 | 
					        ];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static function _stripHyphens($input)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $replacements = array('-', '_', ' ');
 | 
				
			||||||
 | 
					        $input = str_replace($replacements, '', $input);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return $input;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static function _stripChecksum($input)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $length = strlen($input);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if ($length == 13 || $length == 10) {
 | 
				
			||||||
 | 
					            $input = substr_replace($input, "", -1);
 | 
				
			||||||
 | 
					            return $input;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if ($length == 12 || $length == 9) {
 | 
				
			||||||
 | 
					            return $input;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        throw new IsbnParsingException(static::ERROR_INVALID_LENGTH);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static function _extractProductCode($input)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if (strlen($input) == 9) {
 | 
				
			||||||
 | 
					            return [$input, 978];
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $first3 = substr($input, 0, 3);
 | 
				
			||||||
 | 
					        if ($first3 == 978 || $first3 == 979) {
 | 
				
			||||||
 | 
					            $input = substr($input, 3);
 | 
				
			||||||
 | 
					            return [$input, $first3];
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        throw new IsbnParsingException(static::ERROR_INVALID_PRODUCT_CODE);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static function _extractCountryCode($input, $productCode)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Get the seven first digits
 | 
				
			||||||
 | 
					        $first7 = substr($input, 0, 7);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Select the right set of rules according to the product code
 | 
				
			||||||
 | 
					        $ranges = new Ranges();
 | 
				
			||||||
 | 
					        $prefixes = $ranges->getPrefixes();
 | 
				
			||||||
 | 
					        foreach ($prefixes as $p) {
 | 
				
			||||||
 | 
					            if ($p['Prefix'] == $productCode) {
 | 
				
			||||||
 | 
					                $rules = $p['Rules']['Rule'];
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Select the right rule
 | 
				
			||||||
 | 
					        foreach ($rules as $r) {
 | 
				
			||||||
 | 
					            $ra = explode('-', $r['Range']);
 | 
				
			||||||
 | 
					            if ($first7 >= $ra[0] && $first7 <= $ra[1]) {
 | 
				
			||||||
 | 
					                $length = $r['Length'];
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Country code is invalid
 | 
				
			||||||
 | 
					        if (!isset($length) || $length === "0") {
 | 
				
			||||||
 | 
					            throw new IsbnParsingException(static::ERROR_INVALID_COUNTRY_CODE);
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $countryCode = substr($input, 0, $length);
 | 
				
			||||||
 | 
					        $input = substr($input, $length);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return [$input, $countryCode];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Remove and save Publisher Code and Publication Code
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private static function _extractPublisherCode($input, $productCode, $countryCode)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        // Get the seven first digits or less
 | 
				
			||||||
 | 
					        $first7 = substr($input, 0, 7);
 | 
				
			||||||
 | 
					        $inputLength = strlen($first7);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Select the right set of rules according to the agency (product + country code)
 | 
				
			||||||
 | 
					        $ranges = new Ranges();
 | 
				
			||||||
 | 
					        $groups = $ranges->getGroups();
 | 
				
			||||||
 | 
					        foreach ($groups as $g) {
 | 
				
			||||||
 | 
					            if ($g['Prefix'] <> $productCode . '-' . $countryCode) {
 | 
				
			||||||
 | 
					                continue;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            $rules = $g['Rules']['Rule'];
 | 
				
			||||||
 | 
					            $agency = $g['Agency'];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Select the right rule
 | 
				
			||||||
 | 
					            foreach ($rules as $rule) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                // Get min and max value in range
 | 
				
			||||||
 | 
					                // and trim values to match code length
 | 
				
			||||||
 | 
					                $range = explode('-', $rule['Range']);
 | 
				
			||||||
 | 
					                $min = substr($range[0], 0, $inputLength);
 | 
				
			||||||
 | 
					                $max = substr($range[1], 0, $inputLength);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                // If first 7 digits is smaller than min
 | 
				
			||||||
 | 
					                // or greater than max, continue to next rule
 | 
				
			||||||
 | 
					                if ($first7 < $min || $first7 > $max) {
 | 
				
			||||||
 | 
					                    continue;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                $length = $rule['Length'];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                $publisherCode = substr($input, 0, $length);
 | 
				
			||||||
 | 
					                $publicationCode = substr($input, $length);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                return [$agency, $publisherCode, $publicationCode];
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										35
									
								
								vendor/biblys/isbn/src/Biblys/Isbn/Ranges.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								vendor/biblys/isbn/src/Biblys/Isbn/Ranges.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * This file is part of the biblys/isbn package.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * (c) Clément Bourgoin
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This package is Open Source Software. For the full copyright and license
 | 
				
			||||||
 | 
					 * information, please view the LICENSE file which was distributed with this
 | 
				
			||||||
 | 
					 * source code.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Biblys\Isbn;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Ranges
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    private $prefixes, $groups;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function __construct()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        include('ranges-array.php');
 | 
				
			||||||
 | 
					        $this->prefixes = $prefixes;
 | 
				
			||||||
 | 
					        $this->groups = $groups;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function getPrefixes()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return $this->prefixes;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function getGroups()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return $this->groups;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										9938
									
								
								vendor/biblys/isbn/src/Biblys/Isbn/ranges-array.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9938
									
								
								vendor/biblys/isbn/src/Biblys/Isbn/ranges-array.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										41
									
								
								vendor/biblys/isbn/tests/convertToEan13Test.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								vendor/biblys/isbn/tests/convertToEan13Test.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,41 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * This file is part of the biblys/isbn package.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * (c) Clément Bourgoin
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This package is Open Source Software. For the full copyright and license
 | 
				
			||||||
 | 
					 * information, please view the LICENSE file which was distributed with this
 | 
				
			||||||
 | 
					 * source code.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ini_set('display_errors', 1);
 | 
				
			||||||
 | 
					ini_set('display_startup_errors', 1);
 | 
				
			||||||
 | 
					error_reporting(E_ALL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once __DIR__ . '/../vendor/autoload.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Biblys\Isbn\Isbn;
 | 
				
			||||||
 | 
					use PHPUnit\Framework\TestCase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class testConvertToEan13 extends TestCase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public function testFormatEan13()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $ean13 = Isbn::convertToEan13("978-2-207-25804-0");
 | 
				
			||||||
 | 
					        $this->assertEquals(
 | 
				
			||||||
 | 
					            "9782207258040",
 | 
				
			||||||
 | 
					            $ean13,
 | 
				
			||||||
 | 
					            "It should convert to EAN-13"
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testFormatEan13InvalidIsbn()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->expectException("Biblys\Isbn\IsbnParsingException");
 | 
				
			||||||
 | 
					        $this->expectExceptionMessage("Invalid characters in the code");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Isbn::convertToEan13("ABC-80-7203-7");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										51
									
								
								vendor/biblys/isbn/tests/convertToGtin14Test.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								vendor/biblys/isbn/tests/convertToGtin14Test.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,51 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * This file is part of the biblys/isbn package.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * (c) Clément Bourgoin
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This package is Open Source Software. For the full copyright and license
 | 
				
			||||||
 | 
					 * information, please view the LICENSE file which was distributed with this
 | 
				
			||||||
 | 
					 * source code.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ini_set('display_errors', 1);
 | 
				
			||||||
 | 
					ini_set('display_startup_errors', 1);
 | 
				
			||||||
 | 
					error_reporting(E_ALL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once __DIR__ . '/../vendor/autoload.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Biblys\Isbn\Isbn;
 | 
				
			||||||
 | 
					use PHPUnit\Framework\TestCase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class testConvertToGtin14 extends TestCase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public function testFormatGtin14()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $gtin14 = Isbn::convertToGtin14("9783464603529", 2);
 | 
				
			||||||
 | 
					        $this->assertEquals(
 | 
				
			||||||
 | 
					            "29783464603523",
 | 
				
			||||||
 | 
					            $gtin14,
 | 
				
			||||||
 | 
					            "It should convert to GTIN-14"
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testFormatGtin14WithDefaultPrefix()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $gtin14 = Isbn::convertToGtin14("9783464603529");
 | 
				
			||||||
 | 
					        $this->assertEquals(
 | 
				
			||||||
 | 
					            "19783464603526",
 | 
				
			||||||
 | 
					            $gtin14,
 | 
				
			||||||
 | 
					            "It should convert to GTIN-14 using 1 as default prefix"
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testFormatGtin14InvalidIsbn()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->expectException("Biblys\Isbn\IsbnParsingException");
 | 
				
			||||||
 | 
					        $this->expectExceptionMessage("Invalid characters in the code");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Isbn::convertToGtin14("ABC-80-7203-7", 1);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										52
									
								
								vendor/biblys/isbn/tests/convertToIsbn10Test.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								vendor/biblys/isbn/tests/convertToIsbn10Test.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,52 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * This file is part of the biblys/isbn package.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * (c) Clément Bourgoin
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This package is Open Source Software. For the full copyright and license
 | 
				
			||||||
 | 
					 * information, please view the LICENSE file which was distributed with this
 | 
				
			||||||
 | 
					 * source code.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ini_set('display_errors', 1);
 | 
				
			||||||
 | 
					ini_set('display_startup_errors', 1);
 | 
				
			||||||
 | 
					error_reporting(E_ALL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once __DIR__ . '/../vendor/autoload.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Biblys\Isbn\Isbn;
 | 
				
			||||||
 | 
					use PHPUnit\Framework\TestCase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class testConvertToIsbn10 extends TestCase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public function testFormatIsbn10()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $isbn10 = Isbn::convertToIsbn10("9783464603529");
 | 
				
			||||||
 | 
					        $this->assertEquals(
 | 
				
			||||||
 | 
					            "3-464-60352-0",
 | 
				
			||||||
 | 
					            $isbn10,
 | 
				
			||||||
 | 
					            "It should convert to ISBN-10"
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testFormatIsbn10WithX()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $isbn10 = Isbn::convertToIsbn10("978-80-7203-717-9");
 | 
				
			||||||
 | 
					        $this->assertEquals(
 | 
				
			||||||
 | 
					            "80-7203-717-X",
 | 
				
			||||||
 | 
					            $isbn10,
 | 
				
			||||||
 | 
					            "It should convert to ISBN-10 with X as a checksum character"
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testFormatIsbn10InvalidIsbn()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->expectException("Biblys\Isbn\IsbnParsingException");
 | 
				
			||||||
 | 
					        // FIXME: Improve message: Input contains invalid characters "ABC"
 | 
				
			||||||
 | 
					        $this->expectExceptionMessage("Invalid characters in the code");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Isbn::convertToIsbn10("ABC-80-7203-7");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										41
									
								
								vendor/biblys/isbn/tests/convertToIsbn13Test.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								vendor/biblys/isbn/tests/convertToIsbn13Test.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,41 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * This file is part of the biblys/isbn package.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * (c) Clément Bourgoin
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This package is Open Source Software. For the full copyright and license
 | 
				
			||||||
 | 
					 * information, please view the LICENSE file which was distributed with this
 | 
				
			||||||
 | 
					 * source code.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ini_set('display_errors', 1);
 | 
				
			||||||
 | 
					ini_set('display_startup_errors', 1);
 | 
				
			||||||
 | 
					error_reporting(E_ALL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once __DIR__ . '/../vendor/autoload.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Biblys\Isbn\Isbn;
 | 
				
			||||||
 | 
					use PHPUnit\Framework\TestCase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class testConvertToIsbn13 extends TestCase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public function testFormatIsbn13()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $Isbn13 = Isbn::convertToIsbn13("9782207258040");
 | 
				
			||||||
 | 
					        $this->assertEquals(
 | 
				
			||||||
 | 
					            "978-2-207-25804-0",
 | 
				
			||||||
 | 
					            $Isbn13,
 | 
				
			||||||
 | 
					            "It should convert to ISBN-13"
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testFormatIsbn13InvalidIsbn()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->expectException("Biblys\Isbn\IsbnParsingException");
 | 
				
			||||||
 | 
					        $this->expectExceptionMessage("Invalid characters in the code");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Isbn::convertToIsbn13("ABC-80-7203-7");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										34
									
								
								vendor/biblys/isbn/tests/deprecated/constructorTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								vendor/biblys/isbn/tests/deprecated/constructorTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * This file is part of the biblys/isbn package.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * (c) Clément Bourgoin
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This package is Open Source Software. For the full copyright and license
 | 
				
			||||||
 | 
					 * information, please view the LICENSE file which was distributed with this
 | 
				
			||||||
 | 
					 * source code.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ini_set('display_errors', 1);
 | 
				
			||||||
 | 
					ini_set('display_startup_errors', 1);
 | 
				
			||||||
 | 
					error_reporting(E_ALL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once __DIR__ . '/../../vendor/autoload.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Biblys\Isbn\Isbn as Isbn;
 | 
				
			||||||
 | 
					use PHPUnit\Framework\TestCase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class testConstructor extends TestCase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Non-regression test for Github issue #5
 | 
				
			||||||
 | 
					     * https://github.com/biblys/isbn/pull/5
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function testUnknownPrefix()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $isbn = new Isbn("9790706801940");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->expectNotToPerformAssertions("Should not throw");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										76
									
								
								vendor/biblys/isbn/tests/deprecated/formatTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								vendor/biblys/isbn/tests/deprecated/formatTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,76 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * This file is part of the biblys/isbn package.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * (c) Clément Bourgoin
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This package is Open Source Software. For the full copyright and license
 | 
				
			||||||
 | 
					 * information, please view the LICENSE file which was distributed with this
 | 
				
			||||||
 | 
					 * source code.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ini_set('display_errors', 1);
 | 
				
			||||||
 | 
					ini_set('display_startup_errors', 1);
 | 
				
			||||||
 | 
					error_reporting(E_ALL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once __DIR__ . '/../../vendor/autoload.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Biblys\Isbn\Isbn as Isbn;
 | 
				
			||||||
 | 
					use PHPUnit\Framework\TestCase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class testFormatIsbn extends TestCase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    protected function setUp(): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        PHPUnit\Framework\Error\Deprecated::$enabled = false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testDeprecatedNotice()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        PHPUnit\Framework\Error\Deprecated::$enabled = true;
 | 
				
			||||||
 | 
					        $this->expectException('PHPUnit\Framework\Error\Deprecated');
 | 
				
			||||||
 | 
					        $this->expectExceptionMessage(
 | 
				
			||||||
 | 
					            "Isbn->format is deprecated and will be removed in the future. Use the Isbn::convertToIsbn13 method instead. Learn more: https://git.io/JtAEx"
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $isbn = new Isbn('9782207258040');
 | 
				
			||||||
 | 
					        $isbn->format('ISBN-13');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testFormatIsbn13()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $isbn = new Isbn('9782207258040');
 | 
				
			||||||
 | 
					        $this->assertEquals($isbn->format('ISBN-13'), "978-2-207-25804-0");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testFormatIsbn10()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $isbn10 = new Isbn('9783464603529');
 | 
				
			||||||
 | 
					        $this->assertEquals($isbn10->format('ISBN-10'), "3-464-60352-0");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testFormatEan13()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $isbn10 = new Isbn("978-2-207-25804-0");
 | 
				
			||||||
 | 
					        $this->assertEquals($isbn10->format('EAN'), "9782207258040");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testFormatEan_13()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $isbn10 = new Isbn("978-2-207-25804-0");
 | 
				
			||||||
 | 
					        $this->assertEquals($isbn10->format('EAN-13'), "9782207258040");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testFormatGtin14()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $isbn = new Isbn('9783464603529');
 | 
				
			||||||
 | 
					        $this->assertEquals($isbn->format('GTIN-14'), '19783464603526');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testMauritiusRange()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $isbn = new Isbn('9786130971311');
 | 
				
			||||||
 | 
					        $this->assertEquals($isbn->format('ISBN-13'), "978-613-0-97131-1");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										42
									
								
								vendor/biblys/isbn/tests/deprecated/getErrorsTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								vendor/biblys/isbn/tests/deprecated/getErrorsTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,42 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * This file is part of the biblys/isbn package.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * (c) Clément Bourgoin
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This package is Open Source Software. For the full copyright and license
 | 
				
			||||||
 | 
					 * information, please view the LICENSE file which was distributed with this
 | 
				
			||||||
 | 
					 * source code.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ini_set('display_errors', 1);
 | 
				
			||||||
 | 
					ini_set('display_startup_errors', 1);
 | 
				
			||||||
 | 
					error_reporting(E_ALL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once __DIR__ . '/../../vendor/autoload.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Biblys\Isbn\Isbn as Isbn;
 | 
				
			||||||
 | 
					use PHPUnit\Framework\TestCase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class testGetErrors extends TestCase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public function testDeprecatedNotice()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        PHPUnit\Framework\Error\Deprecated::$enabled = true;
 | 
				
			||||||
 | 
					        $this->expectException('PHPUnit\Framework\Error\Deprecated');
 | 
				
			||||||
 | 
					        $this->expectExceptionMessage(
 | 
				
			||||||
 | 
					            "Isbn->getErrors is deprecated and will be removed in the future. Use Isbn::validateAs… methods instead. Learn more: https://git.io/JtAEx"
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $isbn = new Isbn("6897896354577");
 | 
				
			||||||
 | 
					        $isbn->getErrors();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testInvalidIsbn()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        PHPUnit\Framework\Error\Deprecated::$enabled = false;
 | 
				
			||||||
 | 
					        $isbn = new Isbn("6897896354577");
 | 
				
			||||||
 | 
					        $this->assertEquals($isbn->getErrors(), '[6897896354577] Product code should be 978 or 979');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										65
									
								
								vendor/biblys/isbn/tests/deprecated/isValidTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								vendor/biblys/isbn/tests/deprecated/isValidTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,65 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * This file is part of the biblys/isbn package.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * (c) Clément Bourgoin
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This package is Open Source Software. For the full copyright and license
 | 
				
			||||||
 | 
					 * information, please view the LICENSE file which was distributed with this
 | 
				
			||||||
 | 
					 * source code.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ini_set('display_errors', 1);
 | 
				
			||||||
 | 
					ini_set('display_startup_errors', 1);
 | 
				
			||||||
 | 
					error_reporting(E_ALL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once __DIR__ . '/../../vendor/autoload.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Biblys\Isbn\Isbn as Isbn;
 | 
				
			||||||
 | 
					use PHPUnit\Framework\TestCase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class testIsbnIsValid extends TestCase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    protected function setUp(): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        PHPUnit\Framework\Error\Deprecated::$enabled = false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testDeprecationNotice(): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        PHPUnit\Framework\Error\Deprecated::$enabled = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->expectException('PHPUnit\Framework\Error\Deprecated');
 | 
				
			||||||
 | 
					        $this->expectExceptionMessage(
 | 
				
			||||||
 | 
					            "Isbn->isValid is deprecated and will be removed in the future. Use Isbn::validateAs… methods instead. Learn more: https://git.io/JtAEx"
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $isbn = new Isbn('9782207258040');
 | 
				
			||||||
 | 
					        $isbn->isValid();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testIsValid()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $isbn = new Isbn('9782207258040');
 | 
				
			||||||
 | 
					        $this->assertTrue($isbn->isValid());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testIsNotValid()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $invalid = new Isbn('5780AAC728440');
 | 
				
			||||||
 | 
					        $this->assertFalse($invalid->isValid());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testIsbn10WithChecksumX()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $isbn = new ISBN('80-7203-717-X');
 | 
				
			||||||
 | 
					        $this->assertTrue($isbn->isValid());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testValidateMexicanIsbn()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $isbn = new Isbn("9700764923");
 | 
				
			||||||
 | 
					        $this->assertTrue($isbn->isValid());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										66
									
								
								vendor/biblys/isbn/tests/deprecated/validateTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								vendor/biblys/isbn/tests/deprecated/validateTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,66 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * This file is part of the biblys/isbn package.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * (c) Clément Bourgoin
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This package is Open Source Software. For the full copyright and license
 | 
				
			||||||
 | 
					 * information, please view the LICENSE file which was distributed with this
 | 
				
			||||||
 | 
					 * source code.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ini_set('display_errors', 1);
 | 
				
			||||||
 | 
					ini_set('display_startup_errors', 1);
 | 
				
			||||||
 | 
					error_reporting(E_ALL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once __DIR__ . '/../../vendor/autoload.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Biblys\Isbn\Isbn as Isbn;
 | 
				
			||||||
 | 
					use PHPUnit\Framework\TestCase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class testValidateIsbn extends TestCase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    protected function setUp(): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        PHPUnit\Framework\Error\Deprecated::$enabled = false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testDeprecatedNotice(): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        PHPUnit\Framework\Error\Deprecated::$enabled = true;
 | 
				
			||||||
 | 
					        $this->expectException('PHPUnit\Framework\Error\Deprecated');
 | 
				
			||||||
 | 
					        $this->expectExceptionMessage(
 | 
				
			||||||
 | 
					            "Isbn->validate is deprecated and will be removed in the future. Use Isbn::validateAs… methods instead. Learn more: https://git.io/JtAEx"
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $isbn = new Isbn('9782843449499');
 | 
				
			||||||
 | 
					        $isbn->validate();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testValidateValidIsbn()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $isbn = new Isbn('9782843449499');
 | 
				
			||||||
 | 
					        $this->assertTrue($isbn->validate());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Non-regression test for Github issue #6
 | 
				
			||||||
 | 
					     * https://github.com/biblys/isbn/issues/6
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function testValidateIsbn10WithChecksumX()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $isbn = new Isbn('80-7203-717-X');
 | 
				
			||||||
 | 
					        $this->assertTrue($isbn->validate());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Non-regression test for Github issue #21
 | 
				
			||||||
 | 
					     * https://github.com/biblys/isbn/issues/21
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function testValidateMexicanIsbn()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $isbn = new Isbn("9700764923");
 | 
				
			||||||
 | 
					        $this->assertTrue($isbn->validate());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										37
									
								
								vendor/biblys/isbn/tests/isParsableTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								vendor/biblys/isbn/tests/isParsableTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * This file is part of the biblys/isbn package.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * (c) Clément Bourgoin
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This package is Open Source Software. For the full copyright and license
 | 
				
			||||||
 | 
					 * information, please view the LICENSE file which was distributed with this
 | 
				
			||||||
 | 
					 * source code.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ini_set('display_errors', 1);
 | 
				
			||||||
 | 
					ini_set('display_startup_errors', 1);
 | 
				
			||||||
 | 
					error_reporting(E_ALL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once __DIR__ . '/../vendor/autoload.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Biblys\Isbn\Isbn;
 | 
				
			||||||
 | 
					use PHPUnit\Framework\TestCase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class testIsParsable extends TestCase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public function testParsableIsbn()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $isParsable = Isbn::isParsable("9782207258040");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->assertTrue($isParsable);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testUnparsableIsbn()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $isParsable = Isbn::isParsable("9782SPI258040");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->assertFalse($isParsable);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										54
									
								
								vendor/biblys/isbn/tests/validateAsEan13Test.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								vendor/biblys/isbn/tests/validateAsEan13Test.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * This file is part of the biblys/isbn package.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * (c) Clément Bourgoin
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This package is Open Source Software. For the full copyright and license
 | 
				
			||||||
 | 
					 * information, please view the LICENSE file which was distributed with this
 | 
				
			||||||
 | 
					 * source code.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ini_set('display_errors', 1);
 | 
				
			||||||
 | 
					ini_set('display_startup_errors', 1);
 | 
				
			||||||
 | 
					error_reporting(E_ALL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once __DIR__ . '/../vendor/autoload.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Biblys\Isbn\Isbn;
 | 
				
			||||||
 | 
					use PHPUnit\Framework\TestCase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class testValidateAsEan13 extends TestCase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public function testValidIsbn()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        Isbn::validateAsEan13("9782207258040");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->expectNotToPerformAssertions("It should not throw");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testUnparsableIsbn()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->expectException("Biblys\Isbn\IsbnParsingException");
 | 
				
			||||||
 | 
					        $this->expectExceptionMessage("Invalid characters in the code");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Isbn::validateAsEan13("9782SPI258040");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testIsbnWithHyphens()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->expectException("Biblys\Isbn\IsbnValidationException");
 | 
				
			||||||
 | 
					        $this->expectExceptionMessage("978-2-207-25804-0 is not a valid EAN-13. Expected 9782207258040.");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Isbn::validateAsEan13("978-2-207-25804-0");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testIsbnWithIncorrectCheckum()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->expectException("Biblys\Isbn\IsbnValidationException");
 | 
				
			||||||
 | 
					        $this->expectExceptionMessage("9782207258049 is not a valid EAN-13. Expected 9782207258040.");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Isbn::validateAsEan13("9782207258049");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										62
									
								
								vendor/biblys/isbn/tests/validateAsIsbn10Test.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								vendor/biblys/isbn/tests/validateAsIsbn10Test.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,62 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * This file is part of the biblys/isbn package.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * (c) Clément Bourgoin
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This package is Open Source Software. For the full copyright and license
 | 
				
			||||||
 | 
					 * information, please view the LICENSE file which was distributed with this
 | 
				
			||||||
 | 
					 * source code.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ini_set('display_errors', 1);
 | 
				
			||||||
 | 
					ini_set('display_startup_errors', 1);
 | 
				
			||||||
 | 
					error_reporting(E_ALL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once __DIR__ . '/../vendor/autoload.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Biblys\Isbn\Isbn;
 | 
				
			||||||
 | 
					use PHPUnit\Framework\TestCase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class testValidateAsIsbn10 extends TestCase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public function testValidIsbn()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        Isbn::validateAsIsbn10("3-464-60352-0");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->expectNotToPerformAssertions("It should not throw");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testUnparsableIsbn()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->expectException("Biblys\Isbn\IsbnParsingException");
 | 
				
			||||||
 | 
					        $this->expectExceptionMessage("Invalid characters in the code");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Isbn::validateAsIsbn10("3-ABC-60352-0");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testIsbnWithMisplacedHyphen()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->expectException("Biblys\Isbn\IsbnValidationException");
 | 
				
			||||||
 | 
					        $this->expectExceptionMessage("3-46460-352-0 is not a valid ISBN-10. Expected 3-464-60352-0.");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Isbn::validateAsIsbn10("3-46460-352-0");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testIsbnWithoutHyphens()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->expectException("Biblys\Isbn\IsbnValidationException");
 | 
				
			||||||
 | 
					        $this->expectExceptionMessage("3464603520 is not a valid ISBN-10. Expected 3-464-60352-0.");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Isbn::validateAsIsbn10("3464603520");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testIsbnWithIncorrectCheckum()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->expectException("Biblys\Isbn\IsbnValidationException");
 | 
				
			||||||
 | 
					        $this->expectExceptionMessage("3-46460-352-X is not a valid ISBN-10. Expected 3-464-60352-0.");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Isbn::validateAsIsbn10("3-46460-352-X");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										107
									
								
								vendor/biblys/isbn/tests/validateAsIsbn13Test.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										107
									
								
								vendor/biblys/isbn/tests/validateAsIsbn13Test.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,107 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * This file is part of the biblys/isbn package.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * (c) Clément Bourgoin
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This package is Open Source Software. For the full copyright and license
 | 
				
			||||||
 | 
					 * information, please view the LICENSE file which was distributed with this
 | 
				
			||||||
 | 
					 * source code.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ini_set('display_errors', 1);
 | 
				
			||||||
 | 
					ini_set('display_startup_errors', 1);
 | 
				
			||||||
 | 
					error_reporting(E_ALL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once __DIR__ . '/../vendor/autoload.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Biblys\Isbn\Isbn;
 | 
				
			||||||
 | 
					use PHPUnit\Framework\TestCase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class testValidateAsIsbn13 extends TestCase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public function testValidIsbn()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        Isbn::validateAsIsbn13("978-2-207-25804-0");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->expectNotToPerformAssertions("It should not throw");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testUnparsableIsbn()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->expectException("Biblys\Isbn\IsbnParsingException");
 | 
				
			||||||
 | 
					        $this->expectExceptionMessage("Invalid characters in the code");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Isbn::validateAsIsbn13("978-2-SPI-25804-0");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testIsbnWithMisplacedHyphen()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->expectException("Biblys\Isbn\IsbnValidationException");
 | 
				
			||||||
 | 
					        $this->expectExceptionMessage("978-220-7-25804-0 is not a valid ISBN-13. Expected 978-2-207-25804-0.");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Isbn::validateAsIsbn13("978-220-7-25804-0");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testIsbnWithoutHyphens()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->expectException("Biblys\Isbn\IsbnValidationException");
 | 
				
			||||||
 | 
					        $this->expectExceptionMessage("9782207258040 is not a valid ISBN-13. Expected 978-2-207-25804-0.");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Isbn::validateAsIsbn13("9782207258040");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testIsbnWithIncorrectCheckum()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->expectException("Biblys\Isbn\IsbnValidationException");
 | 
				
			||||||
 | 
					        $this->expectExceptionMessage("978-2-207-25804-2 is not a valid ISBN-13. Expected 978-2-207-25804-0.");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Isbn::validateAsIsbn13("978-2-207-25804-2");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testValidateInvalidProductCode()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->expectException("Exception");
 | 
				
			||||||
 | 
					        $this->expectExceptionMessage("Product code should be 978 or 979");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Isbn::validateAsIsbn13('6752843449499');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testValidateInvalidCharacters()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->expectException("Exception");
 | 
				
			||||||
 | 
					        $this->expectExceptionMessage("Invalid characters in the code");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Isbn::validateAsIsbn13('5780AAC728440');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testIsbnWithInvalidProductCode()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->expectException("Exception");
 | 
				
			||||||
 | 
					        $this->expectExceptionMessage("Product code should be 978 or 979");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Isbn::validateAsIsbn13('6897896354577');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testIsbnWithInvalidCountryCode()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->expectException("Exception");
 | 
				
			||||||
 | 
					        $this->expectExceptionMessage("Country code is unknown");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Isbn::validateAsIsbn13('9792887382562');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Non regression-test for Github issue #22
 | 
				
			||||||
 | 
					     * https://github.com/biblys/isbn/issues/22
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function testOtherInvalidIsbn()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->expectException("Exception");
 | 
				
			||||||
 | 
					        $this->expectExceptionMessage("Invalid characters in the code");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Isbn::validateAsIsbn13("34995031X");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										479
									
								
								vendor/composer/ClassLoader.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										479
									
								
								vendor/composer/ClassLoader.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,479 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * This file is part of Composer.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * (c) Nils Adermann <naderman@naderman.de>
 | 
				
			||||||
 | 
					 *     Jordi Boggiano <j.boggiano@seld.be>
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * For the full copyright and license information, please view the LICENSE
 | 
				
			||||||
 | 
					 * file that was distributed with this source code.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Composer\Autoload;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *     $loader = new \Composer\Autoload\ClassLoader();
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *     // register classes with namespaces
 | 
				
			||||||
 | 
					 *     $loader->add('Symfony\Component', __DIR__.'/component');
 | 
				
			||||||
 | 
					 *     $loader->add('Symfony',           __DIR__.'/framework');
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *     // activate the autoloader
 | 
				
			||||||
 | 
					 *     $loader->register();
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *     // to enable searching the include path (eg. for PEAR packages)
 | 
				
			||||||
 | 
					 *     $loader->setUseIncludePath(true);
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * In this example, if you try to use a class in the Symfony\Component
 | 
				
			||||||
 | 
					 * namespace or one of its children (Symfony\Component\Console for instance),
 | 
				
			||||||
 | 
					 * the autoloader will first look for the class under the component/
 | 
				
			||||||
 | 
					 * directory, and it will then fallback to the framework/ directory if not
 | 
				
			||||||
 | 
					 * found before giving up.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This class is loosely based on the Symfony UniversalClassLoader.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author Fabien Potencier <fabien@symfony.com>
 | 
				
			||||||
 | 
					 * @author Jordi Boggiano <j.boggiano@seld.be>
 | 
				
			||||||
 | 
					 * @see    https://www.php-fig.org/psr/psr-0/
 | 
				
			||||||
 | 
					 * @see    https://www.php-fig.org/psr/psr-4/
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					class ClassLoader
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    private $vendorDir;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // PSR-4
 | 
				
			||||||
 | 
					    private $prefixLengthsPsr4 = array();
 | 
				
			||||||
 | 
					    private $prefixDirsPsr4 = array();
 | 
				
			||||||
 | 
					    private $fallbackDirsPsr4 = array();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // PSR-0
 | 
				
			||||||
 | 
					    private $prefixesPsr0 = array();
 | 
				
			||||||
 | 
					    private $fallbackDirsPsr0 = array();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private $useIncludePath = false;
 | 
				
			||||||
 | 
					    private $classMap = array();
 | 
				
			||||||
 | 
					    private $classMapAuthoritative = false;
 | 
				
			||||||
 | 
					    private $missingClasses = array();
 | 
				
			||||||
 | 
					    private $apcuPrefix;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static $registeredLoaders = array();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function __construct($vendorDir = null)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->vendorDir = $vendorDir;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function getPrefixes()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if (!empty($this->prefixesPsr0)) {
 | 
				
			||||||
 | 
					            return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return array();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function getPrefixesPsr4()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return $this->prefixDirsPsr4;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function getFallbackDirs()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return $this->fallbackDirsPsr0;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function getFallbackDirsPsr4()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return $this->fallbackDirsPsr4;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function getClassMap()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return $this->classMap;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * @param array $classMap Class to filename map
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function addClassMap(array $classMap)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if ($this->classMap) {
 | 
				
			||||||
 | 
					            $this->classMap = array_merge($this->classMap, $classMap);
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            $this->classMap = $classMap;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Registers a set of PSR-0 directories for a given prefix, either
 | 
				
			||||||
 | 
					     * appending or prepending to the ones previously set for this prefix.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param string       $prefix  The prefix
 | 
				
			||||||
 | 
					     * @param array|string $paths   The PSR-0 root directories
 | 
				
			||||||
 | 
					     * @param bool         $prepend Whether to prepend the directories
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function add($prefix, $paths, $prepend = false)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if (!$prefix) {
 | 
				
			||||||
 | 
					            if ($prepend) {
 | 
				
			||||||
 | 
					                $this->fallbackDirsPsr0 = array_merge(
 | 
				
			||||||
 | 
					                    (array) $paths,
 | 
				
			||||||
 | 
					                    $this->fallbackDirsPsr0
 | 
				
			||||||
 | 
					                );
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                $this->fallbackDirsPsr0 = array_merge(
 | 
				
			||||||
 | 
					                    $this->fallbackDirsPsr0,
 | 
				
			||||||
 | 
					                    (array) $paths
 | 
				
			||||||
 | 
					                );
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $first = $prefix[0];
 | 
				
			||||||
 | 
					        if (!isset($this->prefixesPsr0[$first][$prefix])) {
 | 
				
			||||||
 | 
					            $this->prefixesPsr0[$first][$prefix] = (array) $paths;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ($prepend) {
 | 
				
			||||||
 | 
					            $this->prefixesPsr0[$first][$prefix] = array_merge(
 | 
				
			||||||
 | 
					                (array) $paths,
 | 
				
			||||||
 | 
					                $this->prefixesPsr0[$first][$prefix]
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            $this->prefixesPsr0[$first][$prefix] = array_merge(
 | 
				
			||||||
 | 
					                $this->prefixesPsr0[$first][$prefix],
 | 
				
			||||||
 | 
					                (array) $paths
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Registers a set of PSR-4 directories for a given namespace, either
 | 
				
			||||||
 | 
					     * appending or prepending to the ones previously set for this namespace.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param string       $prefix  The prefix/namespace, with trailing '\\'
 | 
				
			||||||
 | 
					     * @param array|string $paths   The PSR-4 base directories
 | 
				
			||||||
 | 
					     * @param bool         $prepend Whether to prepend the directories
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @throws \InvalidArgumentException
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function addPsr4($prefix, $paths, $prepend = false)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if (!$prefix) {
 | 
				
			||||||
 | 
					            // Register directories for the root namespace.
 | 
				
			||||||
 | 
					            if ($prepend) {
 | 
				
			||||||
 | 
					                $this->fallbackDirsPsr4 = array_merge(
 | 
				
			||||||
 | 
					                    (array) $paths,
 | 
				
			||||||
 | 
					                    $this->fallbackDirsPsr4
 | 
				
			||||||
 | 
					                );
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                $this->fallbackDirsPsr4 = array_merge(
 | 
				
			||||||
 | 
					                    $this->fallbackDirsPsr4,
 | 
				
			||||||
 | 
					                    (array) $paths
 | 
				
			||||||
 | 
					                );
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
 | 
				
			||||||
 | 
					            // Register directories for a new namespace.
 | 
				
			||||||
 | 
					            $length = strlen($prefix);
 | 
				
			||||||
 | 
					            if ('\\' !== $prefix[$length - 1]) {
 | 
				
			||||||
 | 
					                throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
 | 
				
			||||||
 | 
					            $this->prefixDirsPsr4[$prefix] = (array) $paths;
 | 
				
			||||||
 | 
					        } elseif ($prepend) {
 | 
				
			||||||
 | 
					            // Prepend directories for an already registered namespace.
 | 
				
			||||||
 | 
					            $this->prefixDirsPsr4[$prefix] = array_merge(
 | 
				
			||||||
 | 
					                (array) $paths,
 | 
				
			||||||
 | 
					                $this->prefixDirsPsr4[$prefix]
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            // Append directories for an already registered namespace.
 | 
				
			||||||
 | 
					            $this->prefixDirsPsr4[$prefix] = array_merge(
 | 
				
			||||||
 | 
					                $this->prefixDirsPsr4[$prefix],
 | 
				
			||||||
 | 
					                (array) $paths
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Registers a set of PSR-0 directories for a given prefix,
 | 
				
			||||||
 | 
					     * replacing any others previously set for this prefix.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param string       $prefix The prefix
 | 
				
			||||||
 | 
					     * @param array|string $paths  The PSR-0 base directories
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function set($prefix, $paths)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if (!$prefix) {
 | 
				
			||||||
 | 
					            $this->fallbackDirsPsr0 = (array) $paths;
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Registers a set of PSR-4 directories for a given namespace,
 | 
				
			||||||
 | 
					     * replacing any others previously set for this namespace.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param string       $prefix The prefix/namespace, with trailing '\\'
 | 
				
			||||||
 | 
					     * @param array|string $paths  The PSR-4 base directories
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @throws \InvalidArgumentException
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function setPsr4($prefix, $paths)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if (!$prefix) {
 | 
				
			||||||
 | 
					            $this->fallbackDirsPsr4 = (array) $paths;
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            $length = strlen($prefix);
 | 
				
			||||||
 | 
					            if ('\\' !== $prefix[$length - 1]) {
 | 
				
			||||||
 | 
					                throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
 | 
				
			||||||
 | 
					            $this->prefixDirsPsr4[$prefix] = (array) $paths;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Turns on searching the include path for class files.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param bool $useIncludePath
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function setUseIncludePath($useIncludePath)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->useIncludePath = $useIncludePath;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Can be used to check if the autoloader uses the include path to check
 | 
				
			||||||
 | 
					     * for classes.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return bool
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function getUseIncludePath()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return $this->useIncludePath;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Turns off searching the prefix and fallback directories for classes
 | 
				
			||||||
 | 
					     * that have not been registered with the class map.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param bool $classMapAuthoritative
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function setClassMapAuthoritative($classMapAuthoritative)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->classMapAuthoritative = $classMapAuthoritative;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Should class lookup fail if not found in the current class map?
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return bool
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function isClassMapAuthoritative()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return $this->classMapAuthoritative;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param string|null $apcuPrefix
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function setApcuPrefix($apcuPrefix)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * The APCu prefix in use, or null if APCu caching is not enabled.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return string|null
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function getApcuPrefix()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return $this->apcuPrefix;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Registers this instance as an autoloader.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param bool $prepend Whether to prepend the autoloader or not
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function register($prepend = false)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        spl_autoload_register(array($this, 'loadClass'), true, $prepend);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (null === $this->vendorDir) {
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if ($prepend) {
 | 
				
			||||||
 | 
					            self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            unset(self::$registeredLoaders[$this->vendorDir]);
 | 
				
			||||||
 | 
					            self::$registeredLoaders[$this->vendorDir] = $this;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Unregisters this instance as an autoloader.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function unregister()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        spl_autoload_unregister(array($this, 'loadClass'));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (null !== $this->vendorDir) {
 | 
				
			||||||
 | 
					            unset(self::$registeredLoaders[$this->vendorDir]);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Loads the given class or interface.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param  string    $class The name of the class
 | 
				
			||||||
 | 
					     * @return bool|null True if loaded, null otherwise
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function loadClass($class)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if ($file = $this->findFile($class)) {
 | 
				
			||||||
 | 
					            includeFile($file);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Finds the path to the file where the class is defined.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param string $class The name of the class
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return string|false The path if found, false otherwise
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function findFile($class)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        // class map lookup
 | 
				
			||||||
 | 
					        if (isset($this->classMap[$class])) {
 | 
				
			||||||
 | 
					            return $this->classMap[$class];
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (null !== $this->apcuPrefix) {
 | 
				
			||||||
 | 
					            $file = apcu_fetch($this->apcuPrefix.$class, $hit);
 | 
				
			||||||
 | 
					            if ($hit) {
 | 
				
			||||||
 | 
					                return $file;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $file = $this->findFileWithExtension($class, '.php');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Search for Hack files if we are running on HHVM
 | 
				
			||||||
 | 
					        if (false === $file && defined('HHVM_VERSION')) {
 | 
				
			||||||
 | 
					            $file = $this->findFileWithExtension($class, '.hh');
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (null !== $this->apcuPrefix) {
 | 
				
			||||||
 | 
					            apcu_add($this->apcuPrefix.$class, $file);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (false === $file) {
 | 
				
			||||||
 | 
					            // Remember that this class does not exist.
 | 
				
			||||||
 | 
					            $this->missingClasses[$class] = true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return $file;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Returns the currently registered loaders indexed by their corresponding vendor directories.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return self[]
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static function getRegisteredLoaders()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return self::$registeredLoaders;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private function findFileWithExtension($class, $ext)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        // PSR-4 lookup
 | 
				
			||||||
 | 
					        $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $first = $class[0];
 | 
				
			||||||
 | 
					        if (isset($this->prefixLengthsPsr4[$first])) {
 | 
				
			||||||
 | 
					            $subPath = $class;
 | 
				
			||||||
 | 
					            while (false !== $lastPos = strrpos($subPath, '\\')) {
 | 
				
			||||||
 | 
					                $subPath = substr($subPath, 0, $lastPos);
 | 
				
			||||||
 | 
					                $search = $subPath . '\\';
 | 
				
			||||||
 | 
					                if (isset($this->prefixDirsPsr4[$search])) {
 | 
				
			||||||
 | 
					                    $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
 | 
				
			||||||
 | 
					                    foreach ($this->prefixDirsPsr4[$search] as $dir) {
 | 
				
			||||||
 | 
					                        if (file_exists($file = $dir . $pathEnd)) {
 | 
				
			||||||
 | 
					                            return $file;
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // PSR-4 fallback dirs
 | 
				
			||||||
 | 
					        foreach ($this->fallbackDirsPsr4 as $dir) {
 | 
				
			||||||
 | 
					            if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
 | 
				
			||||||
 | 
					                return $file;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // PSR-0 lookup
 | 
				
			||||||
 | 
					        if (false !== $pos = strrpos($class, '\\')) {
 | 
				
			||||||
 | 
					            // namespaced class name
 | 
				
			||||||
 | 
					            $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
 | 
				
			||||||
 | 
					                . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            // PEAR-like class name
 | 
				
			||||||
 | 
					            $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (isset($this->prefixesPsr0[$first])) {
 | 
				
			||||||
 | 
					            foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
 | 
				
			||||||
 | 
					                if (0 === strpos($class, $prefix)) {
 | 
				
			||||||
 | 
					                    foreach ($dirs as $dir) {
 | 
				
			||||||
 | 
					                        if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
 | 
				
			||||||
 | 
					                            return $file;
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // PSR-0 fallback dirs
 | 
				
			||||||
 | 
					        foreach ($this->fallbackDirsPsr0 as $dir) {
 | 
				
			||||||
 | 
					            if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
 | 
				
			||||||
 | 
					                return $file;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // PSR-0 include paths.
 | 
				
			||||||
 | 
					        if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
 | 
				
			||||||
 | 
					            return $file;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Scope isolated include.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Prevents access to $this/self from included files.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					function includeFile($file)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    include $file;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										292
									
								
								vendor/composer/InstalledVersions.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										292
									
								
								vendor/composer/InstalledVersions.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,292 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Composer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Composer\Autoload\ClassLoader;
 | 
				
			||||||
 | 
					use Composer\Semver\VersionParser;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class InstalledVersions
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					private static $installed = array (
 | 
				
			||||||
 | 
					  'root' => 
 | 
				
			||||||
 | 
					  array (
 | 
				
			||||||
 | 
					    'pretty_version' => '1.0.0+no-version-set',
 | 
				
			||||||
 | 
					    'version' => '1.0.0.0',
 | 
				
			||||||
 | 
					    'aliases' => 
 | 
				
			||||||
 | 
					    array (
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    'reference' => NULL,
 | 
				
			||||||
 | 
					    'name' => '__root__',
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  'versions' => 
 | 
				
			||||||
 | 
					  array (
 | 
				
			||||||
 | 
					    '__root__' => 
 | 
				
			||||||
 | 
					    array (
 | 
				
			||||||
 | 
					      'pretty_version' => '1.0.0+no-version-set',
 | 
				
			||||||
 | 
					      'version' => '1.0.0.0',
 | 
				
			||||||
 | 
					      'aliases' => 
 | 
				
			||||||
 | 
					      array (
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      'reference' => NULL,
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    'biblys/isbn' => 
 | 
				
			||||||
 | 
					    array (
 | 
				
			||||||
 | 
					      'pretty_version' => '2.4.0',
 | 
				
			||||||
 | 
					      'version' => '2.4.0.0',
 | 
				
			||||||
 | 
					      'aliases' => 
 | 
				
			||||||
 | 
					      array (
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      'reference' => '319408b2ef9aeea4f46304ac1a9868ea3ceff2ad',
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					private static $canGetVendors;
 | 
				
			||||||
 | 
					private static $installedByVendor = array();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public static function getInstalledPackages()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					$packages = array();
 | 
				
			||||||
 | 
					foreach (self::getInstalled() as $installed) {
 | 
				
			||||||
 | 
					$packages[] = array_keys($installed['versions']);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (1 === \count($packages)) {
 | 
				
			||||||
 | 
					return $packages[0];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public static function isInstalled($packageName)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					foreach (self::getInstalled() as $installed) {
 | 
				
			||||||
 | 
					if (isset($installed['versions'][$packageName])) {
 | 
				
			||||||
 | 
					return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return false;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public static function satisfies(VersionParser $parser, $packageName, $constraint)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					$constraint = $parser->parseConstraints($constraint);
 | 
				
			||||||
 | 
					$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return $provided->matches($constraint);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public static function getVersionRanges($packageName)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					foreach (self::getInstalled() as $installed) {
 | 
				
			||||||
 | 
					if (!isset($installed['versions'][$packageName])) {
 | 
				
			||||||
 | 
					continue;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$ranges = array();
 | 
				
			||||||
 | 
					if (isset($installed['versions'][$packageName]['pretty_version'])) {
 | 
				
			||||||
 | 
					$ranges[] = $installed['versions'][$packageName]['pretty_version'];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					if (array_key_exists('aliases', $installed['versions'][$packageName])) {
 | 
				
			||||||
 | 
					$ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					if (array_key_exists('replaced', $installed['versions'][$packageName])) {
 | 
				
			||||||
 | 
					$ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					if (array_key_exists('provided', $installed['versions'][$packageName])) {
 | 
				
			||||||
 | 
					$ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return implode(' || ', $ranges);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public static function getVersion($packageName)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					foreach (self::getInstalled() as $installed) {
 | 
				
			||||||
 | 
					if (!isset($installed['versions'][$packageName])) {
 | 
				
			||||||
 | 
					continue;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (!isset($installed['versions'][$packageName]['version'])) {
 | 
				
			||||||
 | 
					return null;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return $installed['versions'][$packageName]['version'];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public static function getPrettyVersion($packageName)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					foreach (self::getInstalled() as $installed) {
 | 
				
			||||||
 | 
					if (!isset($installed['versions'][$packageName])) {
 | 
				
			||||||
 | 
					continue;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (!isset($installed['versions'][$packageName]['pretty_version'])) {
 | 
				
			||||||
 | 
					return null;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return $installed['versions'][$packageName]['pretty_version'];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public static function getReference($packageName)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					foreach (self::getInstalled() as $installed) {
 | 
				
			||||||
 | 
					if (!isset($installed['versions'][$packageName])) {
 | 
				
			||||||
 | 
					continue;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (!isset($installed['versions'][$packageName]['reference'])) {
 | 
				
			||||||
 | 
					return null;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return $installed['versions'][$packageName]['reference'];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public static function getRootPackage()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					$installed = self::getInstalled();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return $installed[0]['root'];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public static function getRawData()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					return self::$installed;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public static function reload($data)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					self::$installed = $data;
 | 
				
			||||||
 | 
					self::$installedByVendor = array();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private static function getInstalled()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					if (null === self::$canGetVendors) {
 | 
				
			||||||
 | 
					self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$installed = array();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (self::$canGetVendors) {
 | 
				
			||||||
 | 
					foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
 | 
				
			||||||
 | 
					if (isset(self::$installedByVendor[$vendorDir])) {
 | 
				
			||||||
 | 
					$installed[] = self::$installedByVendor[$vendorDir];
 | 
				
			||||||
 | 
					} elseif (is_file($vendorDir.'/composer/installed.php')) {
 | 
				
			||||||
 | 
					$installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$installed[] = self::$installed;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return $installed;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										21
									
								
								vendor/composer/LICENSE
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								vendor/composer/LICENSE
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) Nils Adermann, Jordi Boggiano
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
 | 
					in the Software without restriction, including without limitation the rights
 | 
				
			||||||
 | 
					to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
				
			||||||
 | 
					copies of the Software, and to permit persons to whom the Software is furnished
 | 
				
			||||||
 | 
					to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The above copyright notice and this permission notice shall be included in all
 | 
				
			||||||
 | 
					copies or substantial portions of the Software.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
				
			||||||
 | 
					AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
				
			||||||
 | 
					OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 | 
				
			||||||
 | 
					THE SOFTWARE.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										10
									
								
								vendor/composer/autoload_classmap.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								vendor/composer/autoload_classmap.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// autoload_classmap.php @generated by Composer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$vendorDir = dirname(dirname(__FILE__));
 | 
				
			||||||
 | 
					$baseDir = dirname($vendorDir);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return array(
 | 
				
			||||||
 | 
					    'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
							
								
								
									
										10
									
								
								vendor/composer/autoload_namespaces.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								vendor/composer/autoload_namespaces.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// autoload_namespaces.php @generated by Composer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$vendorDir = dirname(dirname(__FILE__));
 | 
				
			||||||
 | 
					$baseDir = dirname($vendorDir);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return array(
 | 
				
			||||||
 | 
					    'Biblys' => array($vendorDir . '/biblys/isbn/src'),
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
							
								
								
									
										9
									
								
								vendor/composer/autoload_psr4.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								vendor/composer/autoload_psr4.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// autoload_psr4.php @generated by Composer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$vendorDir = dirname(dirname(__FILE__));
 | 
				
			||||||
 | 
					$baseDir = dirname($vendorDir);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return array(
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
							
								
								
									
										57
									
								
								vendor/composer/autoload_real.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								vendor/composer/autoload_real.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,57 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// autoload_real.php @generated by Composer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class ComposerAutoloaderInit5ddf49d1cb81d6a311c8de21eb32ffcc
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    private static $loader;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static function loadClassLoader($class)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if ('Composer\Autoload\ClassLoader' === $class) {
 | 
				
			||||||
 | 
					            require __DIR__ . '/ClassLoader.php';
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * @return \Composer\Autoload\ClassLoader
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static function getLoader()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if (null !== self::$loader) {
 | 
				
			||||||
 | 
					            return self::$loader;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        require __DIR__ . '/platform_check.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        spl_autoload_register(array('ComposerAutoloaderInit5ddf49d1cb81d6a311c8de21eb32ffcc', 'loadClassLoader'), true, true);
 | 
				
			||||||
 | 
					        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
 | 
				
			||||||
 | 
					        spl_autoload_unregister(array('ComposerAutoloaderInit5ddf49d1cb81d6a311c8de21eb32ffcc', 'loadClassLoader'));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
 | 
				
			||||||
 | 
					        if ($useStaticLoader) {
 | 
				
			||||||
 | 
					            require __DIR__ . '/autoload_static.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            call_user_func(\Composer\Autoload\ComposerStaticInit5ddf49d1cb81d6a311c8de21eb32ffcc::getInitializer($loader));
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            $map = require __DIR__ . '/autoload_namespaces.php';
 | 
				
			||||||
 | 
					            foreach ($map as $namespace => $path) {
 | 
				
			||||||
 | 
					                $loader->set($namespace, $path);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            $map = require __DIR__ . '/autoload_psr4.php';
 | 
				
			||||||
 | 
					            foreach ($map as $namespace => $path) {
 | 
				
			||||||
 | 
					                $loader->setPsr4($namespace, $path);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            $classMap = require __DIR__ . '/autoload_classmap.php';
 | 
				
			||||||
 | 
					            if ($classMap) {
 | 
				
			||||||
 | 
					                $loader->addClassMap($classMap);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $loader->register(true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return $loader;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										31
									
								
								vendor/composer/autoload_static.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								vendor/composer/autoload_static.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,31 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// autoload_static.php @generated by Composer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Composer\Autoload;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class ComposerStaticInit5ddf49d1cb81d6a311c8de21eb32ffcc
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public static $prefixesPsr0 = array (
 | 
				
			||||||
 | 
					        'B' => 
 | 
				
			||||||
 | 
					        array (
 | 
				
			||||||
 | 
					            'Biblys' => 
 | 
				
			||||||
 | 
					            array (
 | 
				
			||||||
 | 
					                0 => __DIR__ . '/..' . '/biblys/isbn/src',
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static $classMap = array (
 | 
				
			||||||
 | 
					        'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static function getInitializer(ClassLoader $loader)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return \Closure::bind(function () use ($loader) {
 | 
				
			||||||
 | 
					            $loader->prefixesPsr0 = ComposerStaticInit5ddf49d1cb81d6a311c8de21eb32ffcc::$prefixesPsr0;
 | 
				
			||||||
 | 
					            $loader->classMap = ComposerStaticInit5ddf49d1cb81d6a311c8de21eb32ffcc::$classMap;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }, null, ClassLoader::class);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										60
									
								
								vendor/composer/installed.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								vendor/composer/installed.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,60 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					    "packages": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            "name": "biblys/isbn",
 | 
				
			||||||
 | 
					            "version": "2.4.0",
 | 
				
			||||||
 | 
					            "version_normalized": "2.4.0.0",
 | 
				
			||||||
 | 
					            "source": {
 | 
				
			||||||
 | 
					                "type": "git",
 | 
				
			||||||
 | 
					                "url": "https://github.com/biblys/isbn.git",
 | 
				
			||||||
 | 
					                "reference": "319408b2ef9aeea4f46304ac1a9868ea3ceff2ad"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "dist": {
 | 
				
			||||||
 | 
					                "type": "zip",
 | 
				
			||||||
 | 
					                "url": "https://api.github.com/repos/biblys/isbn/zipball/319408b2ef9aeea4f46304ac1a9868ea3ceff2ad",
 | 
				
			||||||
 | 
					                "reference": "319408b2ef9aeea4f46304ac1a9868ea3ceff2ad",
 | 
				
			||||||
 | 
					                "shasum": ""
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "require": {
 | 
				
			||||||
 | 
					                "php": "^7.1"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "require-dev": {
 | 
				
			||||||
 | 
					                "guzzlehttp/guzzle": "^6.2",
 | 
				
			||||||
 | 
					                "phpunit/phpunit": "^6 || ^7 || ^8"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "time": "2021-03-05T00:00:00+00:00",
 | 
				
			||||||
 | 
					            "type": "library",
 | 
				
			||||||
 | 
					            "installation-source": "dist",
 | 
				
			||||||
 | 
					            "autoload": {
 | 
				
			||||||
 | 
					                "psr-0": {
 | 
				
			||||||
 | 
					                    "Biblys": "src/"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "notification-url": "https://packagist.org/downloads/",
 | 
				
			||||||
 | 
					            "license": [
 | 
				
			||||||
 | 
					                "MIT"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "authors": [
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "name": "Clement Bourgoin",
 | 
				
			||||||
 | 
					                    "email": "c@iwzr.fr"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "description": "A PHP library to convert and validate ISBNs",
 | 
				
			||||||
 | 
					            "homepage": "https://github.com/biblys/isbn",
 | 
				
			||||||
 | 
					            "keywords": [
 | 
				
			||||||
 | 
					                "ISBN",
 | 
				
			||||||
 | 
					                "book",
 | 
				
			||||||
 | 
					                "ean",
 | 
				
			||||||
 | 
					                "gtin"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "support": {
 | 
				
			||||||
 | 
					                "issues": "https://github.com/biblys/isbn/issues",
 | 
				
			||||||
 | 
					                "source": "https://github.com/biblys/isbn/tree/2.4.0"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "install-path": "../biblys/isbn"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "dev": true,
 | 
				
			||||||
 | 
					    "dev-package-names": []
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										33
									
								
								vendor/composer/installed.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								vendor/composer/installed.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
				
			|||||||
 | 
					<?php return array (
 | 
				
			||||||
 | 
					  'root' => 
 | 
				
			||||||
 | 
					  array (
 | 
				
			||||||
 | 
					    'pretty_version' => '1.0.0+no-version-set',
 | 
				
			||||||
 | 
					    'version' => '1.0.0.0',
 | 
				
			||||||
 | 
					    'aliases' => 
 | 
				
			||||||
 | 
					    array (
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    'reference' => NULL,
 | 
				
			||||||
 | 
					    'name' => '__root__',
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  'versions' => 
 | 
				
			||||||
 | 
					  array (
 | 
				
			||||||
 | 
					    '__root__' => 
 | 
				
			||||||
 | 
					    array (
 | 
				
			||||||
 | 
					      'pretty_version' => '1.0.0+no-version-set',
 | 
				
			||||||
 | 
					      'version' => '1.0.0.0',
 | 
				
			||||||
 | 
					      'aliases' => 
 | 
				
			||||||
 | 
					      array (
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      'reference' => NULL,
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    'biblys/isbn' => 
 | 
				
			||||||
 | 
					    array (
 | 
				
			||||||
 | 
					      'pretty_version' => '2.4.0',
 | 
				
			||||||
 | 
					      'version' => '2.4.0.0',
 | 
				
			||||||
 | 
					      'aliases' => 
 | 
				
			||||||
 | 
					      array (
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      'reference' => '319408b2ef9aeea4f46304ac1a9868ea3ceff2ad',
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
							
								
								
									
										26
									
								
								vendor/composer/platform_check.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								vendor/composer/platform_check.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// platform_check.php @generated by Composer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$issues = array();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (!(PHP_VERSION_ID >= 70100)) {
 | 
				
			||||||
 | 
					    $issues[] = 'Your Composer dependencies require a PHP version ">= 7.1.0". You are running ' . PHP_VERSION . '.';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ($issues) {
 | 
				
			||||||
 | 
					    if (!headers_sent()) {
 | 
				
			||||||
 | 
					        header('HTTP/1.1 500 Internal Server Error');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (!ini_get('display_errors')) {
 | 
				
			||||||
 | 
					        if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
 | 
				
			||||||
 | 
					            fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);
 | 
				
			||||||
 | 
					        } elseif (!headers_sent()) {
 | 
				
			||||||
 | 
					            echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    trigger_error(
 | 
				
			||||||
 | 
					        'Composer detected issues in your platform: ' . implode(' ', $issues),
 | 
				
			||||||
 | 
					        E_USER_ERROR
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										10
									
								
								web/errors.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								web/errors.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					    include ('template.inc');
 | 
				
			||||||
 | 
					    ob_start();
 | 
				
			||||||
 | 
					    $l = file_get_contents("../data/isbn-error.txt");
 | 
				
			||||||
 | 
					    print "<pre>";
 | 
				
			||||||
 | 
					        print_r($l);
 | 
				
			||||||
 | 
					    print "</pre>";
 | 
				
			||||||
 | 
					    $output = ob_get_clean();
 | 
				
			||||||
 | 
					    Template::render( $output);
 | 
				
			||||||
 | 
					?>
 | 
				
			||||||
							
								
								
									
										46
									
								
								web/index.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								web/index.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,46 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					    include ('template.inc');
 | 
				
			||||||
 | 
					    $rets = ['OK'=>'OK', 'ERROR'=>'ERROR'];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ob_start();
 | 
				
			||||||
 | 
					    print "<h2>Book ID input</h2>";
 | 
				
			||||||
 | 
					    print "<div class='isbn-input'>";
 | 
				
			||||||
 | 
					    print '<form action="/scan.php" method="POST">';
 | 
				
			||||||
 | 
					    print '<dl>';
 | 
				
			||||||
 | 
					        print '<h3>ID type</h3>';
 | 
				
			||||||
 | 
					        print '<input type="radio" id="isbn" name="idtype" value="isbn" checked="checked">';
 | 
				
			||||||
 | 
					        print '<label for="isbn">ISBN</label><br>';
 | 
				
			||||||
 | 
					        print '<input type="radio" id="moly" name="idtype" value="moly">';
 | 
				
			||||||
 | 
					        print '<label for="moly">Moly.hu</label><br>';
 | 
				
			||||||
 | 
					    print '</dl>';
 | 
				
			||||||
 | 
					    print '<label for="content">ID:</label>';
 | 
				
			||||||
 | 
					    print '<input type="text" id="isbn-content" name="content" inputmode="tel" autofocus>';
 | 
				
			||||||
 | 
					    print '<input type="hidden" id="manual" name="manual" value="1">';
 | 
				
			||||||
 | 
					    print '<input class="hidden" type="submit" value="Submit">';
 | 
				
			||||||
 | 
					    print '</form>';
 | 
				
			||||||
 | 
					    if (isset ($_GET['ret'])){
 | 
				
			||||||
 | 
					        if (array_key_exists($_GET['ret'],$rets)){
 | 
				
			||||||
 | 
					            $r = $rets[$_GET['ret']];
 | 
				
			||||||
 | 
					            print "<p class='retek $r'>$r</p>";
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    print "</div>";
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    print "<h2>Errors</h2>";
 | 
				
			||||||
 | 
					    print "<div class='errors'>".errors()."</div>";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $output = ob_get_clean();
 | 
				
			||||||
 | 
					    Template::render($output);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    function errors(){
 | 
				
			||||||
 | 
					        ob_start();
 | 
				
			||||||
 | 
					        $a = file("../data/isbn-error.txt");
 | 
				
			||||||
 | 
					        $r = array_reverse($a);
 | 
				
			||||||
 | 
					        print "<pre>";
 | 
				
			||||||
 | 
					        foreach ($r as $l){
 | 
				
			||||||
 | 
					            print($l);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        print "</pre>";
 | 
				
			||||||
 | 
					        return ob_get_clean();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
							
								
								
									
										17
									
								
								web/scan.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								web/scan.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					    include_once('template.inc');
 | 
				
			||||||
 | 
					    include_once ('store.inc');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (isset($_POST['content'])){
 | 
				
			||||||
 | 
					        $m = isset($_POST['manual']);
 | 
				
			||||||
 | 
					        if (isset($_POST['idtype']) && $_POST['idtype'] === 'moly'){
 | 
				
			||||||
 | 
					            StoreMoly::save($_POST['content'],$m);
 | 
				
			||||||
 | 
					        } else{
 | 
				
			||||||
 | 
					        Store::save($_POST['content'],$m);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }else {
 | 
				
			||||||
 | 
					        header("Location: /index.php");
 | 
				
			||||||
 | 
					        exit();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					?>
 | 
				
			||||||
							
								
								
									
										51
									
								
								web/store.inc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								web/store.inc
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,51 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					include ('../vendor/autoload.php');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Biblys\Isbn\Isbn;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Store{
 | 
				
			||||||
 | 
					    const DATAFILE = '/opt/konyvleltar/data/isbn.txt';
 | 
				
			||||||
 | 
					    const ERRORFILE = '/opt/konyvleltar/data/isbn-error.txt';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static function save($v,$manual=false){
 | 
				
			||||||
 | 
					        if (Isbn::isParsable($v)){
 | 
				
			||||||
 | 
					            $outputfile = self::DATAFILE;
 | 
				
			||||||
 | 
					            $ret = 'OK';
 | 
				
			||||||
 | 
					        }else{
 | 
				
			||||||
 | 
					            $outputfile = self::ERRORFILE;
 | 
				
			||||||
 | 
					            $ret = 'ERROR';
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        $o = self::sanitize($v);
 | 
				
			||||||
 | 
					        file_put_contents($outputfile,$o."\n",FILE_APPEND); 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if ($manual) { header("Location: /index.php?ret=$ret");}
 | 
				
			||||||
 | 
					        else { print $ret;}
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static function sanitize($string){
 | 
				
			||||||
 | 
					        $sx = preg_replace("/\.$/", "X", $string);
 | 
				
			||||||
 | 
					        return preg_replace("/[^a-zA-Z0-9-]/", "", $sx);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class StoreMoly extends Store{
 | 
				
			||||||
 | 
					    const DATAFILE = '/opt/konyvleltar/data/moly.txt';
 | 
				
			||||||
 | 
					    const ERRORFILE = '/opt/konyvleltar/data/moly-error.txt';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static function save($v,$manual=false){
 | 
				
			||||||
 | 
					        $outputfile = self::DATAFILE;
 | 
				
			||||||
 | 
					        $ret = 'OK';
 | 
				
			||||||
 | 
					        $o = self::sanitize($v);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        file_put_contents($outputfile,$o."\n",FILE_APPEND); 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if ($manual) { header("Location: /index.php?ret=$ret");}
 | 
				
			||||||
 | 
					        else { print $ret;}
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static function sanitize($string){
 | 
				
			||||||
 | 
					        $sx = preg_replace("/\.$/", "X", $string);
 | 
				
			||||||
 | 
					        return preg_replace("/[^a-zA-Z0-9-]/", "", $sx);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										28
									
								
								web/template.inc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								web/template.inc
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Template{
 | 
				
			||||||
 | 
					    public static function render($content){
 | 
				
			||||||
 | 
					        print "<!DOCTYPE html>";
 | 
				
			||||||
 | 
					        print "<html>";
 | 
				
			||||||
 | 
					        print " <head>";
 | 
				
			||||||
 | 
					        print '  <meta name="viewport" content="width=device-width, initial-scale=1.0">';
 | 
				
			||||||
 | 
					        print '  <style>
 | 
				
			||||||
 | 
					            .errors{
 | 
				
			||||||
 | 
					                width: 100%;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            .ERROR{
 | 
				
			||||||
 | 
					                background-color: #FAA;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            .OK{
 | 
				
			||||||
 | 
					                background-color: #AFA;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        </style';
 | 
				
			||||||
 | 
					        print " </head>";
 | 
				
			||||||
 | 
					        print " <body>";
 | 
				
			||||||
 | 
					        print $content;
 | 
				
			||||||
 | 
					        print " </body>";
 | 
				
			||||||
 | 
					        print "</html>";
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					?>
 | 
				
			||||||
		Reference in New Issue
	
	Block a user